fix cmd build
[reactos.git] / reactos / base / shell / cmd / cmd.h
index 8446e6d..9d57384 100644 (file)
 /* global variables */
 extern HANDLE hOut;
 extern HANDLE hIn;
-extern HANDLE hConsole;
+extern LPTSTR lpOriginalEnvironment;
 extern WORD   wColor;
 extern WORD   wDefColor;
 extern BOOL   bCtrlBreak;
 extern BOOL   bIgnoreEcho;
 extern BOOL   bExit;
+extern BOOL   bDisableBatchEcho;
+extern BOOL   bDelayedExpansion;
 extern INT    nErrorLevel;
 extern SHORT  maxx;
 extern SHORT  maxy;
 extern OSVERSIONINFO osvi;
-
+extern BOOL bUnicodeOutput;
 
 
 /* Prototypes for ALIAS.C */
 VOID ExpandAlias (LPTSTR, INT);
 INT CommandAlias (LPTSTR);
 
+/* Prototypes for ASSOC.C */
+INT CommandAssoc (LPTSTR);
+
 /* Prototypes for ATTRIB.C */
 INT CommandAttrib (LPTSTR);
 
@@ -95,14 +100,18 @@ INT cmd_cls (LPTSTR);
 
 
 /* Prototypes for CMD.C */
-INT ConvertULargeInteger (ULARGE_INTEGER num, LPTSTR des, INT len, BOOL bPutSeperator);
+INT ConvertULargeInteger(ULONGLONG num, LPTSTR des, INT len, BOOL bPutSeperator);
+HANDLE RunFile(DWORD, LPTSTR, LPTSTR, LPTSTR, INT);
 VOID ParseCommandLine (LPTSTR);
 struct _PARSED_COMMAND;
 BOOL ExecuteCommand(struct _PARSED_COMMAND *Cmd);
 LPCTSTR GetEnvVarOrSpecial ( LPCTSTR varName );
 VOID AddBreakHandler (VOID);
 VOID RemoveBreakHandler (VOID);
-BOOL DoCommand (LPTSTR line);
+BOOL SubstituteVars(TCHAR *Src, TCHAR *Dest, TCHAR Delim);
+BOOL SubstituteForVars(TCHAR *Src, TCHAR *Dest);
+LPTSTR DoDelayedExpansion(LPTSTR Line);
+BOOL DoCommand(LPTSTR first, LPTSTR rest, struct _PARSED_COMMAND *Cmd);
 BOOL ReadLine(TCHAR *commandline, BOOL bMore);
 int cmd_main (int argc, const TCHAR *argv[]);
 
@@ -110,7 +119,7 @@ extern HANDLE CMD_ModuleHandle;
 
 
 /* Prototypes for CMDINPUT.C */
-VOID ReadCommand (LPTSTR, INT);
+BOOL ReadCommand (LPTSTR, INT);
 
 
 /* Prototypes for CMDTABLE.C */
@@ -146,6 +155,8 @@ VOID ConInString (LPTSTR, DWORD);
 
 VOID ConOutChar (TCHAR);
 VOID ConOutPuts (LPTSTR);
+VOID ConPrintf(LPTSTR, va_list, DWORD);
+INT ConPrintfPaging(BOOL NewPage, LPTSTR, va_list, DWORD);
 VOID ConOutPrintf (LPTSTR, ...);
 INT ConOutPrintfPaging (BOOL NewPage, LPTSTR, ...);
 VOID ConErrChar (TCHAR);
@@ -185,6 +196,8 @@ INT CommandDelay (LPTSTR);
 
 
 /* Prototypes for DIR.C */
+INT FormatDate (TCHAR *, LPSYSTEMTIME, BOOL);
+INT FormatTime (TCHAR *, LPSYSTEMTIME);
 INT CommandDir (LPTSTR);
 
 
@@ -198,6 +211,7 @@ INT  CommandDirs (LPTSTR);
 
 
 /* Prototypes for ECHO.C */
+BOOL OnOffCommand(LPTSTR param, LPBOOL flag, INT message);
 INT  CommandEcho (LPTSTR);
 INT  CommandEchos (LPTSTR);
 INT  CommandEchoerr (LPTSTR);
@@ -208,7 +222,7 @@ INT  CommandEchoserr (LPTSTR);
 VOID ErrorMessage (DWORD, LPTSTR, ...);
 
 VOID error_no_pipe (VOID);
-VOID error_bad_command (VOID);
+VOID error_bad_command (LPTSTR);
 VOID error_invalid_drive (VOID);
 VOID error_req_param_missing (VOID);
 VOID error_sfile_not_found (LPTSTR);
@@ -235,7 +249,12 @@ VOID CompleteFilename (LPTSTR, BOOL, LPTSTR, UINT);
 
 
 /* Prototypes for FOR.C */
+#define FOR_DIRS      1 /* /D */
+#define FOR_F         2 /* /F */
+#define FOR_LOOP      4 /* /L */
+#define FOR_RECURSIVE 8 /* /R */
 INT cmd_for (LPTSTR);
+BOOL ExecuteFor(struct _PARSED_COMMAND *Cmd);
 
 
 /* Prototypes for FREE.C */
@@ -293,8 +312,8 @@ extern INT nNumberGroups;
 
 
 VOID InitLocale (VOID);
-VOID PrintDate (VOID);
-VOID PrintTime (VOID);
+LPTSTR GetDateString (VOID);
+LPTSTR GetTimeString (VOID);
 
 /* cache codepage */
 extern UINT InputCodePage;
@@ -304,9 +323,13 @@ extern UINT OutputCodePage;
 INT CommandMemory (LPTSTR);
 
 
+/* Prototypes for MKLINK.C */
+INT cmd_mklink(LPTSTR);
+
+
 /* Prototypes for MISC.C */
 INT GetRootPath(TCHAR *InPath,TCHAR *OutPath,INT size);
-BOOL SetRootPath(TCHAR *InPath);
+BOOL SetRootPath(TCHAR *oldpath,TCHAR *InPath);
 TCHAR  cgetchar (VOID);
 BOOL   CheckCtrlBreak (INT);
 BOOL add_entry (LPINT ac, LPTSTR **arg, LPCTSTR entry);
@@ -340,7 +363,7 @@ INT CommandMsgbox (LPTSTR);
 
 
 /* Prototypes from PARSER.C */
-enum { C_COMMAND, C_QUIET, C_BLOCK, C_MULTI, C_IFFAILURE, C_IFSUCCESS, C_PIPE, C_IF };
+enum { C_COMMAND, C_QUIET, C_BLOCK, C_MULTI, C_IFFAILURE, C_IFSUCCESS, C_PIPE, C_IF, C_FOR };
 typedef struct _PARSED_COMMAND
 {
        struct _PARSED_COMMAND *Subcommands;
@@ -351,8 +374,8 @@ typedef struct _PARSED_COMMAND
        {
                struct
                {
-                       TCHAR *Tail;
-                       TCHAR CommandLine[];
+                       TCHAR *Rest;
+                       TCHAR First[];
                } Command;
                struct
                {
@@ -361,10 +384,19 @@ typedef struct _PARSED_COMMAND
                        TCHAR *LeftArg;
                        TCHAR *RightArg;
                } If;
+               struct
+               {
+                       BYTE Switches;
+                       TCHAR Variable;
+                       LPTSTR Params;
+                       LPTSTR List;
+                       struct tagFORCONTEXT *Context;
+               } For;
        };
 } PARSED_COMMAND;
 PARSED_COMMAND *ParseCommand(LPTSTR Line);
 VOID EchoCommand(PARSED_COMMAND *Cmd);
+TCHAR *Unparse(PARSED_COMMAND *Cmd, TCHAR *Out, TCHAR *OutEnd);
 VOID FreeCommand(PARSED_COMMAND *Cmd);
 
 
@@ -407,6 +439,7 @@ INT CommandScreen (LPTSTR);
 INT cmd_set (LPTSTR);
 
 /* Prototypes for SETLOCAL.C */
+LPTSTR DuplicateEnvironment(VOID);
 INT cmd_setlocal (LPTSTR);
 INT cmd_endlocal (LPTSTR);