Something went wrong. Try again.
Reactos
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485/* * BATCH.H - A structure to preserve the context of a batch file */
#pragma once
/* * This batch type enumeration allows us to adjust the behaviour of some commands * depending on whether they are run from within a .BAT or a .CMD file. * The behaviour is selected when the top-level batch file is loaded, * and it remains the same for any child batch file that may be loaded later. * * See https://ss64.com/nt/errorlevel.html for more details. */typedef enum _BATCH_TYPE{ NONE, BAT_TYPE, /* Old-style DOS batch file */ CMD_TYPE /* New-style NT OS/2 batch file */} BATCH_TYPE;
/* Enable this define for Windows' CMD batch-echo behaviour compatibility */#define MSCMD_BATCH_ECHO
typedef struct _BATCH_CONTEXT{ struct _BATCH_CONTEXT *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];#ifndef MSCMD_BATCH_ECHO BOOL bEcho; /* Preserve echo flag across batch calls */#endif REDIRECTION *RedirList; PARSED_COMMAND *current; struct _SETLOCAL *setlocal;} BATCH_CONTEXT, *PBATCH_CONTEXT;
typedef struct _FOR_CONTEXT{ struct _FOR_CONTEXT *prev; TCHAR firstvar; UINT varcount; LPTSTR *values;} FOR_CONTEXT, *PFOR_CONTEXT;
/* * The stack of current batch contexts. * NULL when no batch is active. */extern BATCH_TYPE BatType;extern PBATCH_CONTEXT bc;extern PFOR_CONTEXT fc;
#ifdef MSCMD_BATCH_ECHOextern BOOL bBcEcho;#endif
extern BOOL bEcho; /* The echo flag */
#define BATCH_BUFFSIZE 8192
extern TCHAR textline[BATCH_BUFFSIZE]; /* Buffer for reading Batch file lines */
BOOLFindArg( IN TCHAR Char, OUT PCTSTR* ArgPtr, OUT BOOL* IsParam0);
VOID ExitBatch(VOID);VOID ExitAllBatches(VOID);INT Batch(LPTSTR, LPTSTR, LPTSTR, PARSED_COMMAND *);BOOL BatchGetString(LPTSTR lpBuffer, INT nBufferLength);LPTSTR ReadBatchLine(VOID);VOID AddBatchRedirection(REDIRECTION **);