//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1994 - 1996. // // File: parse.hxx // // Contents: Types and prototypes for command line parsing routines. // // History: 04-20-95 DavidMun Created // //---------------------------------------------------------------------------- #ifndef __PARSE_HXX_ #define __PARSE_HXX_ // // Types // // TOKEN - when words are read from the command line and recognized, they're // assigned a token value. // enum TOKEN { // // The following tokens have a 1:1 mapping to the strings in g_awszTokens // // // Commands // // CAUTION: if you insert before the first or after the last command, // make sure that you update FIRST_COMMAND and LAST_COMMAND appropriately // FIRST_COMMAND, TKN_ABORTJOB = FIRST_COMMAND, TKN_ABORTQUEUE, TKN_ADDJOBTOQUEUE, TKN_CONVERTSAGETASKSTOJOBS, TKN_CREATETRIGGERJOB, TKN_CREATETRIGGERQUEUE, TKN_DELETETRIGGERJOB, TKN_DELETETRIGGERQUEUE, TKN_EDITJOB, TKN_EDITJOBINQUEUE, TKN_ENUMCLONE, TKN_ENUMNEXT, TKN_ENUMRESET, TKN_ENUMSKIP, TKN_GETCREDENTIALS, TKN_GETMACHINE, TKN_LOADJOB, TKN_LOADQUEUE, TKN_NSGETACCOUNTINFO, TKN_NSSETACCOUNTINFO, TKN_PRINTJOB, TKN_PRINTQUEUE, TKN_PRINTRUNTIMEJOB, TKN_PRINTRUNTIMEQUEUE, TKN_PRINTSTRINGJOB, TKN_PRINTSTRINGQUEUE, TKN_PRINTTRIGGERJOB, TKN_PRINTTRIGGERQUEUE, TKN_RUNJOB, TKN_RUNQUEUE, TKN_REMOVEJOBFROMQUEUE, TKN_SCHEDACTIVATE, TKN_SCHEDADDJOB, TKN_SCHEDADDQUEUE, TKN_SETCREDENTIALS, TKN_SCHEDCREATEENUM, TKN_SCHEDDELETE, TKN_SCHEDENUM, TKN_SCHEDISJOBORQUEUE, TKN_SETJOB, TKN_SETMACHINE, TKN_SCHEDNEWJOB, TKN_SCHEDNEWQUEUE, TKN_SETQUEUE, TKN_SETTRIGGERJOB, TKN_SETTRIGGERQUEUE, TKN_SAVEJOB, TKN_SAVEQUEUE, LAST_COMMAND = TKN_SAVEQUEUE, // properties for creating/editing jobs & triggers TKN_APPNAME, TKN_PARAMS, TKN_WORKINGDIRECTORY, TKN_COMMENT, TKN_CREATOR, TKN_PRIORITY, TKN_MAXRUNTIME, TKN_TASKFLAGS, TKN_INTERACTIVE, TKN_DELETEWHENDONE, TKN_SUSPEND, TKN_NETSCHEDULE, TKN_DONTRUNONBATTERIES, TKN_KILLIFGOINGONBATS, TKN_RUNONLYIFLOGGEDON, TKN_HIDDEN, TKN_STARTDATE, TKN_ENDDATE, TKN_STARTTIME, TKN_MINUTESDURATION, TKN_HASENDDATE, TKN_KILLATDURATION, TKN_ONLYIFIDLE, TKN_KILLATIDLEEND, TKN_RESTARTONIDLERESUME, TKN_SYSTEMREQUIRED, TKN_DISABLED, TKN_MINUTESINTERVAL, TKN_TYPE, TKN_TYPEARGUMENTS, TKN_IDLE, TKN_NORMAL, TKN_HIGH, TKN_REALTIME, TKN_ONEDAY, TKN_DAILY, TKN_WEEKLY, TKN_MONTHLYDATE, TKN_MONTHLYDOW, TKN_YEARLYDATE, TKN_YEARLYDOW, TKN_ONIDLE, TKN_ATSTARTUP, TKN_ATLOGON, // misc TKN_TODAY, TKN_NOW, TKN_EQUAL, TKN_ATSIGN, TKN_QUESTION, TKN_COLON, TKN_COMMA, TKN_BANG, // // The following tokens map to more than one string and are therefore not // represented in g_awszTokens. // TKN_SWITCH, TKN_STRING, TKN_NUMBER, // // The following metatokens do not correspond to any specific string. // TKN_EOL, TKN_INVALID }; inline BOOL IsCommandToken(TOKEN tkn) { return tkn >= FIRST_COMMAND && tkn <= LAST_COMMAND; } HRESULT ProcessCommandLine(WCHAR *pwszCommandLine); VOID LogSyntaxError(TOKEN tkn, WCHAR *pwszExpected); TOKEN GetToken(WCHAR **ppwsz); TOKEN PeekToken(WCHAR **ppwsz); HRESULT GetFilename(WCHAR **ppwsz, WCHAR *wszExpected); HRESULT Expect(TOKEN tknExpected, WCHAR **ppwsz, WCHAR *wszExpected); HRESULT ParseDate(WCHAR **ppwsz, WORD *pwMonth, WORD *pwDay, WORD *pwYear); HRESULT ParseTime(WCHAR **ppwsz, WORD *pwHour, WORD *pwMinute); HRESULT ParseDaysOfWeek(WCHAR **ppwsz, WORD *pwDaysOfTheWeek); HRESULT ParseMonths(WCHAR **ppwsz, WORD *pwMonths); HRESULT ParseDaysOfMonth(WCHAR **ppwsz, DWORD *pdwDays); WCHAR *GetTokenStringForLogging(TOKEN tkn); #endif // __PARSE_HXX_