windows-nt/Source/XPSP1/NT/admin/services/sched/test/jt/help.cxx
2020-09-26 16:20:57 +08:00

373 lines
9.2 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1994 - 1996.
//
// File: help.cxx
//
// Contents: Routines to display help info.
//
// History: 04-04-95 DavidMun Created
//
// Notes: TO CHANGE THE HELP TEXT FOR A COMMAND:
// - edit the command's RCDATA block in jt.rc.
//
// TO ADD HELP FOR A NEW COMMAND:
// - Add a RC_<command_name> identifier to resource.h
// - Add an RCDATA block for RC_<command_name> in jt.rc
// - Add a case statement in the DoHelp() function (below)
// for the new command.
//
//----------------------------------------------------------------------------
#include <headers.hxx>
#pragma hdrstop
#include "jt.hxx"
#include "resource.h"
//+---------------------------------------------------------------------------
//
// Function: DisplayHelp
//
// Synopsis: Print help strings with RCDATA identifier [usResourceID] on
// the console.
//
// Arguments: [usResourceID] - identifier for RCDATA block containing
// printf style string to print.
// [...] - arguments for vprintf
//
// History: 03-11-96 DavidMun Created
//
//----------------------------------------------------------------------------
VOID DisplayHelp(USHORT usResourceID, ...)
{
va_list varArgs;
HRSRC hResource = NULL;
HGLOBAL hgResource = NULL;
LPSTR psz = NULL;
va_start(varArgs, usResourceID);
do
{
hResource = FindResource(NULL, (LPCTSTR) usResourceID, RT_RCDATA);
if (!hResource)
{
g_Log.Write(LOG_ERROR, "FindResource (%u)", GetLastError());
break;
}
hgResource = LoadResource(NULL, hResource);
if (!hgResource)
{
g_Log.Write(LOG_ERROR, "LoadResource (%u)", GetLastError());
break;
}
psz = (LPSTR) LockResource(hgResource);
if (!psz)
{
g_Log.Write(LOG_ERROR, "LockResource (%u)", GetLastError());
break;
}
while (*psz)
{
vprintf(psz, varArgs);
psz += lstrlenA(psz) + 1;
}
} while (0);
va_end(varArgs);
if (hgResource)
{
FreeResource(hgResource);
}
}
//+---------------------------------------------------------------------------
//
// Function: DisplayUsage
//
// Synopsis: Print usage instructions for this exe on the console
//
// History: 02-18-94 DavidMun Created
// 03-31-95 DavidMun Rewrite
//
//----------------------------------------------------------------------------
VOID DisplayUsage()
{
DisplayHelp(
RC_USAGE1,
#if (DBG == 1)
"as a debug build",
#else
"as a retail build",
#endif
#ifdef _CHICAGO_
"Windows 95 or Windows 98"
#else
#ifndef RES_KIT
"Windows NT"
#else
"the Windows NT Resource Kit"
#endif
#endif
);
DisplayHelp(RC_USAGE2, NUM_ENUMERATOR_SLOTS - 1);
}
//+---------------------------------------------------------------------------
//
// Function: DoHelp
//
// Synopsis: Process the HELP command
//
// Arguments: [ppwsz] - token stream
//
// Modifies: *[ppwsz]
//
// History: 04-10-95 DavidMun Created
//
//----------------------------------------------------------------------------
VOID DoHelp(WCHAR **ppwsz)
{
TOKEN tkn;
BOOL fGotToken = FALSE;
do
{
do
{
tkn = GetToken(ppwsz);
} while (tkn != TKN_EOL &&
tkn != TKN_ATSIGN &&
!IsCommandToken(tkn));
#ifdef RES_KIT
if ((tkn == TKN_ADDJOBTOQUEUE) ||
(tkn == TKN_REMOVEJOBFROMQUEUE) ||
(tkn == TKN_SETQUEUE) ||
(tkn == TKN_ABORTQUEUE) ||
(tkn == TKN_CONVERTSAGETASKSTOJOBS) ||
(tkn == TKN_EDITJOB) ||
(tkn == TKN_ENUMCLONE) ||
(tkn == TKN_ENUMNEXT) ||
(tkn == TKN_ENUMRESET) ||
(tkn == TKN_ENUMSKIP) ||
(tkn == TKN_CREATETRIGGERQUEUE) ||
(tkn == TKN_DELETETRIGGERQUEUE) ||
(tkn == TKN_EDITJOBINQUEUE) ||
(tkn == TKN_LOADQUEUE) ||
(tkn == TKN_PRINTQUEUE) ||
(tkn == TKN_PRINTRUNTIMEQUEUE) ||
(tkn == TKN_PRINTSTRINGQUEUE) ||
(tkn == TKN_PRINTTRIGGERQUEUE) ||
(tkn == TKN_RUNQUEUE) ||
(tkn == TKN_SCHEDADDQUEUE) ||
(tkn == TKN_SCHEDCREATEENUM) ||
(tkn == TKN_SCHEDISJOBORQUEUE) ||
(tkn == TKN_SAVEQUEUE) ||
(tkn == TKN_SCHEDNEWQUEUE) ||
(tkn == TKN_SETTRIGGERQUEUE))
{
continue;
}
#endif
if (tkn != TKN_EOL)
{
fGotToken = TRUE;
}
switch (tkn)
{
// case TKN_ADDJOBTOQUEUE:
// case TKN_REMOVEJOBFROMQUEUE:
// case TKN_SETQUEUE:
// DisplayHelp(RC_NOTIMPL);
// break;
case TKN_ABORTJOB:
// case TKN_ABORTQUEUE:
DisplayHelp(RC_ABORT);
break;
case TKN_ATSIGN:
DisplayHelp(RC_ATSIGN);
break;
#ifndef RES_KIT
case TKN_CONVERTSAGETASKSTOJOBS:
DisplayHelp(
RC_CONVERTSAGE,
#ifdef _CHICAGO_
"Win9x"
#else
"Windows NT"
#endif
);
break;
#endif // RES_KIT not defined
case TKN_CREATETRIGGERJOB:
// case TKN_CREATETRIGGERQUEUE:
DisplayHelp(RC_CREATETRIGGER1);
DisplayHelp(RC_TRIGPROPS, TIME_NOW_INCREMENT);
DisplayHelp(RC_CREATETRIGGER2);
break;
case TKN_DELETETRIGGERJOB:
// case TKN_DELETETRIGGERQUEUE:
DisplayHelp(RC_DELETETRIGGER);
break;
#ifndef RES_KIT
case TKN_EDITJOB:
// case TKN_EDITJOBINQUEUE:
DisplayHelp(RC_EDITJOB);
break;
case TKN_ENUMCLONE:
DisplayHelp(RC_ENUMCLONE);
break;
case TKN_ENUMNEXT:
DisplayHelp(RC_ENUMNEXT);
break;
case TKN_ENUMRESET:
DisplayHelp(RC_ENUMRESET);
break;
case TKN_ENUMSKIP:
DisplayHelp(RC_ENUMSKIP);
break;
#endif // RES_KIT not defined
case TKN_GETCREDENTIALS:
DisplayHelp(RC_GETCREDENTIALS);
break;
case TKN_GETMACHINE:
DisplayHelp(RC_GETMACHINE);
break;
#ifndef RES_KIT
case TKN_SCHEDISJOBORQUEUE:
DisplayHelp(RC_ISJOBORQUEUE);
break;
#endif // RES_KIT not defined
case TKN_LOADJOB:
// case TKN_LOADQUEUE:
DisplayHelp(RC_LOAD);
break;
case TKN_PRINTJOB:
// case TKN_PRINTQUEUE:
DisplayHelp(RC_PRINT);
break;
case TKN_PRINTRUNTIMEJOB:
// case TKN_PRINTRUNTIMEQUEUE:
DisplayHelp(RC_PRINTRUNTIME);
break;
case TKN_PRINTSTRINGJOB:
// case TKN_PRINTSTRINGQUEUE:
DisplayHelp(RC_PRINTSTRING);
break;
case TKN_PRINTTRIGGERJOB:
// case TKN_PRINTTRIGGERQUEUE:
DisplayHelp(RC_PRINTTRIGGER);
break;
case TKN_RUNJOB:
// case TKN_RUNQUEUE:
DisplayHelp(RC_RUN);
break;
case TKN_SCHEDACTIVATE:
DisplayHelp(RC_ACTIVATE);
break;
case TKN_SCHEDADDJOB:
// case TKN_SCHEDADDQUEUE:
DisplayHelp(RC_ADD);
break;
#ifndef RES_KIT
case TKN_SCHEDCREATEENUM:
DisplayHelp(
RC_CREATEENUM,
NUM_ENUMERATOR_SLOTS - 1,
NUM_ENUMERATOR_SLOTS,
NUM_ENUMERATOR_SLOTS - 1);
break;
#endif // RES_KIT not defined
case TKN_SCHEDDELETE:
DisplayHelp(RC_DELETE);
break;
case TKN_SCHEDENUM:
DisplayHelp(RC_ENUM);
break;
case TKN_SETCREDENTIALS:
DisplayHelp(RC_SETCREDENTIALS);
break;
case TKN_SETJOB:
DisplayHelp(RC_SETJOB);
break;
case TKN_SAVEJOB:
// case TKN_SAVEQUEUE:
DisplayHelp(RC_SAVE);
break;
case TKN_SETMACHINE:
DisplayHelp(RC_SETMACHINE);
break;
case TKN_SCHEDNEWJOB:
// case TKN_SCHEDNEWQUEUE:
DisplayHelp(RC_NEW);
break;
case TKN_SETTRIGGERJOB:
// case TKN_SETTRIGGERQUEUE:
DisplayHelp(RC_SETTRIGGER1);
DisplayHelp(RC_TRIGPROPS, TIME_NOW_INCREMENT);
DisplayHelp(RC_SETTRIGGER2);
break;
default:
if (!fGotToken)
{
DisplayUsage();
}
break;
}
} while (tkn != TKN_EOL);
}