//
// JAPI WuL[擾API(JmssGetJobQueue֐) TvvO
//  (C)NEC Corporation/NEC Soft, Ltd. 1995,2003
//  
//    2003.7.22 Create by NEC Soft, Ltd.
//

#include <windows.h>

#include "JMSS.H"

//
//  R}hFJGETJOBQ
//  @\FwWuL[̏擾܂B
//        G[ꍇɂ́AG[bZ[WƃG[R[h\܂B
//  FJGETJOBQ /Q:WuL[
//    EIvV
//      /Q:WuL[
//                   擾WuL[w肵܂
//      /?           ȈՃwv\܂B
//
//
//	 IlF 0 I
//			  1 ُI
//

//////////////////////////////////////////////////////////////
//	萔錾
//////////////////////////////////////////////////////////////

// R}hC̍ő咷
#define MAX_LINE_LENGTH             1024
// Rs[^
#define MAX_COMPUTERNAME_LENGTH     15

//     g[N͗p萔
#define TOKEN_SEPARETOR1    ' '     // g[ÑZp[^P()
#define TOKEN_SEPARETOR2    '\t'    // g[ÑZp[^Q(^u)
#define TOKEN1              '\"'    // g[N͂ޕ

// IvV͗p萔
#define OPTION_PREFIX       '/'     // IvVw蕶
#define OPTION_SEPARETER    ':'     // IvVp[^Ƃ̃Zp[^

// IvV
#define OPTION_QUEUE        "/Q:"     // L[
#define OPTION_HELP         "/?"        // wvIvV

// Rs[^
#define	MAX_COMPUTERNAME_LENGTH		15

//  WuL[̏
char    *QueCondition_ca[2] =
  {
    "J",    /* 0 */
    "",    /* 1 */
  };

//  o^
char    *QueEntryStatus_ca[3] =
  {
    "o^\Wu90%ȉ    ",    /* 0 */
    "o^\Wu90%𒴂",    /* 1 */
    "o^\WuɒBĂ ",    /* 2 */
  };


//////////////////////////////////////////////////////////////
//	vg^Cv錾
//////////////////////////////////////////////////////////////
BOOL  PutStdOut(LPSTR);
void JPrintUsage();

//////////////////////////////////////////////////////////////
//	
//////////////////////////////////////////////////////////////

//
// C֐
//
//@F int  argc; R}hC̐
//         char argv; R}hC̕ւ
//                    |C^z
//
//@ԂlF 0 I
//           1 ُI
//
int main(
	int		argc,
	char	*argv[])
{
	JMSSJOBQINFO	JmssJobQInfo;
	char	caJmssJobQueName[MAX_COMPUTERNAME_LENGTH+1];	// 擾JMSST[o
	DWORD	dwResult;										// ֐߂l
	char	caMessage[256];         						// Wo͗pobt@

	// 
    ZeroMemory(&JmssJobQInfo, sizeof(JmssJobQInfo));
	JmssJobQInfo.dwSize = sizeof(JmssJobQInfo);
	
	// p[^Ȃ͊ȈՃwv\ďI
    if (argc == 1)
     {
        JPrintUsage();
        return 1;
      }

    // wvIvVw肳ꂽȈՃwv\
	if (argc == 2)
	{
		if (stricmp(argv[1], OPTION_HELP) == 0)
		{
			JPrintUsage();
			return JMSS_PARAM_ERROR;
		}
	}
	// 3ȏ̏ꍇȈՃwv\
	else if(argc > 2)
	{
        JPrintUsage();
        return JMSS_PARAM_ERROR;
	}

    // /QIvVȊȌꍇȈՃwv\
    if (argc == 2)
	{
        if (strnicmp(argv[1], OPTION_QUEUE, 3) != 0)
		{
            JPrintUsage();
            return JMSS_PARAM_ERROR;
		}
	}

	lstrcpy(caJmssJobQueName, &argv[1][3]);

	// WuL[擾
	dwResult = JmssGetJobQueue(
						NULL,
						caJmssJobQueName,			// WuL[i[̈
						&JmssJobQInfo);				// WuL[i[̈

	// ֐̕ԋpR[h̔
	switch (dwResult)
	  {
		case 0:											// I
			if(0 != lstrcmpi(caJmssJobQueName, JmssJobQInfo.caQueueName))
			{
				wsprintf(caMessage, "WuL[܂(G[R[h:%08lx)\r\n", dwResult);
				PutStdOut(caMessage);
				return 1;
			}
			break;
		case JMSS_PARAM_ERROR:							// w肵p[^s
			wsprintf(caMessage, "w肵p[^słB(G[R[h:%08lx)\r\n", dwResult);
			PutStdOut(caMessage);
			return 1;
		default:										// ُ̑̈
			wsprintf(caMessage, "G[܂(G[R[h:%08lx)\r\n", dwResult);
			PutStdOut(caMessage);
			return 1;
	  }
	  
	// WuL[\
	wsprintf(caMessage, "WuL[F%s\r\n"
		"  ԁF%s\r\n"
		"  őWuL[dxF%ld\r\n"
		"  ݎsWuF%ld\r\n"
		"  őo^WuF%ld\r\n"
		"  ݓo^ς݂̃WuF%ld\r\n"
		"  o^󋵁F%s \r\n", 
		JmssJobQInfo.caQueueName, 
		QueCondition_ca[JmssJobQInfo.dwJobQueCondition], 
		JmssJobQInfo.dwMaxRunningJob,
		JmssJobQInfo.dwCurRunningJob,
		JmssJobQInfo.dwMaxEntryJob,
		JmssJobQInfo.dwCurrentEntryJob,
		QueEntryStatus_ca[JmssJobQInfo.dwEntryStatus]);
	PutStdOut(caMessage);

	return 0;
}

//
// Wo͂Ɏw肳ꂽo͂
//
//@F
//		LPSTR	pStr;	
//
//@ԂlF TRUE  I
//           FALSE ُI
//
BOOL PutStdOut(LPSTR pStr)
{
	DWORD	WriteLength;

	if (WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),		// Wo̓nh
					(LPVOID)pStr,                       // f[^obt@AhX
					strlen(pStr),                       // f[^
					&WriteLength,                       // ܂ꂽoCg
					NULL) == FALSE)                     // dI/OɕKvȍ\̂̃AhX
		return FALSE;

	if (strlen(pStr) != WriteLength)
		return FALSE;

	return TRUE;
}

//
// ȈՃwv\
//
//@F Ȃ
//
//@ԂlF Ȃ
//
void JPrintUsage()
{
    PutStdOut("\r\ngp@FJGETJOBQ.EXE /Q:WuL[\r\n\r\n");
    PutStdOut("@IvVFȉ̃IvVw\łB\r\n");
    PutStdOut("@@/Q:WuL[  WuL[擾WuL[\r\n");
    return;
}
