1 /* 2 * BATCH.H - A structure to preserve the context of a batch file 3 */ 4 5 #pragma once 6 7 typedef struct _BATCH_CONTEXT 8 { 9 struct _BATCH_CONTEXT *prev; 10 char *mem; /* batchfile content in memory */ 11 DWORD memsize; /* size of batchfile */ 12 DWORD mempos; /* current position to read from */ 13 BOOL memfree; /* true if it need to be freed when exitbatch is called */ 14 TCHAR BatchFilePath[MAX_PATH]; 15 LPTSTR params; 16 LPTSTR raw_params; /* Holds the raw params given by the input */ 17 INT shiftlevel[10]; 18 BOOL bEcho; /* Preserve echo flag across batch calls */ 19 REDIRECTION *RedirList; 20 PARSED_COMMAND *current; 21 struct _SETLOCAL *setlocal; 22 } BATCH_CONTEXT, *PBATCH_CONTEXT; 23 24 typedef struct _FOR_CONTEXT 25 { 26 struct _FOR_CONTEXT *prev; 27 TCHAR firstvar; 28 UINT varcount; 29 LPTSTR *values; 30 } FOR_CONTEXT, *PFOR_CONTEXT; 31 32 33 /* 34 * The stack of current batch contexts. 35 * NULL when no batch is active. 36 */ 37 extern PBATCH_CONTEXT bc; 38 extern PFOR_CONTEXT fc; 39 40 extern BOOL bEcho; /* The echo flag */ 41 42 #define BATCH_BUFFSIZE 8192 43 44 extern TCHAR textline[BATCH_BUFFSIZE]; /* Buffer for reading Batch file lines */ 45 46 47 LPTSTR FindArg(TCHAR, BOOL *); 48 VOID ExitBatch(VOID); 49 VOID ExitAllBatches(VOID); 50 INT Batch(LPTSTR, LPTSTR, LPTSTR, PARSED_COMMAND *); 51 BOOL BatchGetString(LPTSTR lpBuffer, INT nBufferLength); 52 LPTSTR ReadBatchLine(VOID); 53 VOID AddBatchRedirection(REDIRECTION **); 54