/* * BATCH.H - A structure to preserve the context of a batch file */ #pragma once typedef struct tagBATCHCONTEXT { struct tagBATCHCONTEXT *prev; char *mem; /* batchfile content in memory */ DWORD memsize; /* size of batchfile */ DWORD mempos; /* current position to read from */ BOOL memfree; /* true if it need to be freed when exitbatch is called */ TCHAR BatchFilePath[MAX_PATH]; LPTSTR params; LPTSTR raw_params; /* Holds the raw params given by the input */ INT shiftlevel[10]; BOOL bEcho; /* Preserve echo flag across batch calls */ REDIRECTION *RedirList; PARSED_COMMAND *current; struct _SETLOCAL *setlocal; } BATCH_CONTEXT, *LPBATCH_CONTEXT; typedef struct tagFORCONTEXT { struct tagFORCONTEXT *prev; TCHAR firstvar; UINT varcount; LPTSTR *values; } FOR_CONTEXT, *LPFOR_CONTEXT; /* * The stack of current batch contexts. * NULL when no batch is active */ extern LPBATCH_CONTEXT bc; extern LPFOR_CONTEXT fc; extern BOOL bEcho; /* The echo flag */ #define BATCH_BUFFSIZE 8192 extern TCHAR textline[BATCH_BUFFSIZE]; /* Buffer for reading Batch file lines */ LPTSTR FindArg (TCHAR, BOOL *); LPTSTR BatchParams (LPTSTR, LPTSTR); VOID ExitBatch (VOID); INT Batch (LPTSTR, LPTSTR, LPTSTR, PARSED_COMMAND *); BOOL BatchGetString (LPTSTR lpBuffer, INT nBufferLength); LPTSTR ReadBatchLine(VOID); VOID AddBatchRedirection(REDIRECTION **);