summaryrefslogtreecommitdiffstats
path: root/private/mvdm/dos/command/cmd.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/mvdm/dos/command/cmd.h')
-rw-r--r--private/mvdm/dos/command/cmd.h292
1 files changed, 292 insertions, 0 deletions
diff --git a/private/mvdm/dos/command/cmd.h b/private/mvdm/dos/command/cmd.h
new file mode 100644
index 000000000..8ace02a73
--- /dev/null
+++ b/private/mvdm/dos/command/cmd.h
@@ -0,0 +1,292 @@
+/* cmd.h - main include file for command.lib
+ *
+ * Modification History
+ *
+ * Sudeepb 17-Sep-1991 Created
+ */
+
+/*
+#define WIN
+#define FLAT_32
+#include <nt.h>
+#include <ntrtl.h>
+#include <nturtl.h>
+
+#define _WINDOWS
+#include <windows.h>
+
+*/
+
+#ifdef DOS
+#define SIGNALS
+#endif
+
+#ifdef OS2_16
+#define OS2
+#define SIGNALS
+#endif
+
+#ifdef OS2_32
+#define OS2
+#define FLAT_32
+#endif
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <malloc.h>
+#include <process.h>
+
+#ifdef WIN_16
+#define WIN
+#define API16
+#endif
+
+#ifdef WIN_32
+#define WIN
+#define FLAT_32
+#define TRUE_IF_WIN32 1
+#include <nt.h>
+#include <ntrtl.h>
+#include <nturtl.h>
+#else
+#define TRUE_IF_WIN32 0
+#endif
+
+#ifdef FLAT_32
+#ifndef i386
+#define ALIGN_32
+#else
+#define NOALIGN_32
+#endif
+#endif
+
+#ifdef WIN
+#define _WINDOWS
+#include <windows.h>
+#endif
+
+#ifdef SIGNALS
+#include <conio.h>
+#include <signal.h>
+#endif
+
+#ifdef OS2_32
+#include <excpt.h>
+#define XCPT_SIGNAL 0xC0010003
+#endif
+
+#include <vdmapi.h>
+
+#define COPY_STD_OUT 1
+#define COPY_STD_ERR 2
+
+#define CLOSE_ALL_HANDLES 1
+#define CLOSE_STD_OUT 2
+#define CLOSE_STD_ERR 4
+
+#define DEFAULT_REDIRECTION_SIZE 1024
+#define MAX_SHORTCUT_SIZE 128
+#define STDIN_BUF_SIZE 512
+
+/** Command Macros **/
+
+/** Command Basic Typedefs **/
+
+typedef VOID (*PFNSVC)(VOID);
+
+#pragma pack(1)
+
+typedef struct _PARAMBLOCK {
+ USHORT SegEnv;
+ USHORT OffCmdTail;
+ USHORT SegCmdTail;
+ ULONG pFCB1;
+ ULONG pFCB2;
+} PARAMBLOCK,*PPARAMBLOCK;
+
+typedef struct _SCSINFO {
+ CHAR SCS_ComSpec [64];
+ CHAR SCS_CmdTail [128];
+ PARAMBLOCK SCS_ParamBlock;
+ CHAR SCS_ToSync;
+} SCSINFO, *PSCSINFO;
+
+typedef struct _STD_HANDLES {
+ ULONG hStdErr;
+ ULONG hStdOut;
+ ULONG hStdIn;
+} STD_HANDLES, *PSTD_HANDLES;
+
+#define PIPE_INPUT_BUFFER_SIZE 512
+#define PIPE_OUTPUT_BUFFER_SIZE PIPE_INPUT_BUFFER_SIZE
+#define PIPE_INPUT_TIMEOUT 55
+#define PIPE_OUTPUT_TIMEOUT PIPE_INPUT_TIMEOUT
+
+typedef struct _PIPE_INPUT{
+ struct _PIPE_INPUT *Next;
+ HANDLE hFileRead;
+ HANDLE hFileWrite;
+ HANDLE hPipe;
+ HANDLE hDataEvent;
+ HANDLE hThread;
+ CHAR *pFileName;
+ DWORD BufferSize;
+ BOOL fEOF;
+ BOOL WaitData;
+ BYTE *Buffer;
+ CRITICAL_SECTION CriticalSection;
+} PIPE_INPUT, *PPIPE_INPUT;
+
+typedef struct _PIPE_OUTPUT {
+ HANDLE hFile;
+ HANDLE hPipe;
+ HANDLE hExitEvent;
+ CHAR *pFileName;
+ DWORD BufferSize;
+ BYTE *Buffer;
+} PIPE_OUTPUT, *PPIPE_OUTPUT;
+
+typedef struct _RedirComplete_Info {
+ HANDLE ri_hStdErr;
+ HANDLE ri_hStdOut;
+ HANDLE ri_hStdIn;
+ HANDLE ri_hStdErrFile;
+ HANDLE ri_hStdOutFile;
+ HANDLE ri_hStdInFile;
+ HANDLE ri_hStdOutThread;
+ HANDLE ri_hStdErrThread;
+ PPIPE_INPUT ri_pPipeStdIn;
+ PPIPE_OUTPUT ri_pPipeStdOut;
+ PPIPE_OUTPUT ri_pPipeStdErr;
+
+} REDIRCOMPLETE_INFO, *PREDIRCOMPLETE_INFO;
+
+typedef struct _VDMENVBLK {
+ DWORD cchEnv;
+ DWORD cchRemain;
+ CHAR *lpszzEnv;
+} VDMENVBLK, *PVDMENVBLK;
+
+#pragma pack()
+
+/** Command Function Prototypes */
+
+
+VOID cmdComSpec (VOID);
+VOID cmdGetEnv (VOID);
+VOID cmdGetNextCmd (VOID);
+VOID cmdGetNextCmdForSeparateWow (VOID);
+VOID cmdGetStdHandle (VOID);
+VOID cmdExec (VOID);
+VOID cmdExecComspec32 (VOID);
+VOID cmdExitVDM (VOID);
+VOID cmdReturnExitCode (VOID);
+VOID cmdSaveWorld (VOID);
+VOID cmdSetInfo (VOID);
+VOID cmdGetCurrentDir (VOID);
+VOID cmdSetDirectories (PCHAR,VDMINFO *);
+VOID CheckDotExeForWOW (LPSTR);
+BOOL cmdCheckCopyForRedirection (PREDIRCOMPLETE_INFO);
+BOOL cmdCreateTempFile (PHANDLE,PCHAR *);
+VOID cmdCheckBinary (VOID);
+VOID cmdInitConsole (VOID);
+VOID nt_init_event_thread (VOID);
+VOID cmdExec32 (PCHAR,PCHAR);
+VOID cmdCreateProcess (VOID);
+USHORT cmdMapCodePage (ULONG);
+VOID cmdCheckForPIF (PVDMINFO);
+VOID cmdGetConfigSys (VOID);
+VOID cmdGetAutoexecBat (VOID);
+VOID DeleteConfigFiles (VOID);
+VOID cmdGetKbdLayout (VOID);
+BOOL cmdXformEnvironment (PCHAR, PANSI_STRING);
+VOID cmdGetInitEnvironment (VOID);
+VOID cmdUpdateCurrentDirectories (BYTE);
+BOOL cmdCreateVDMEnvironment (PVDMENVBLK);
+DWORD cmdGetEnvironmentVariable (PVDMENVBLK, PCHAR, PCHAR, DWORD);
+BOOL cmdSetEnvironmentVariable (PVDMENVBLK, PCHAR, PCHAR);
+DWORD cmdExpandEnvironmentStrings (PVDMENVBLK, PCHAR, PCHAR, DWORD);
+PREDIRCOMPLETE_INFO cmdCheckStandardHandles (PVDMINFO,USHORT UNALIGNED *);
+VOID cmdGetStartInfo (VOID);
+BOOL cmdHandleStdinWithPipe (PREDIRCOMPLETE_INFO);
+BOOL cmdHandleStdOutErrWithPipe (PREDIRCOMPLETE_INFO, USHORT);
+LPSTR cmdSkipOverPathName (LPSTR);
+BOOL cmdPipeFileDataEOF (HANDLE, BOOL *);
+BOOL cmdPipeFileEOF (HANDLE);
+VOID cmdPipeInThread (LPVOID);
+VOID cmdPipeOutThread (LPVOID);
+
+/** Command Externs **/
+
+extern USHORT nDrives;
+extern BOOL IsFirstVDMInSystem;
+extern BOOL VDMForWOW;
+extern CHAR lpszComSpec[];
+extern USHORT cbComSpec;
+extern BOOL IsFirstCall;
+extern BOOL IsRepeatCall;
+extern BOOL IsFirstWOWCheckBinary;
+extern BOOL IsFirstVDMInSystem;
+extern BOOL SaveWorldCreated;
+extern PCHAR pSCS_ToSync;
+extern BOOL fBlock;
+extern PCHAR pCommand32;
+extern PCHAR pEnv32;
+extern DWORD dwExitCode32;
+extern PSCSINFO pSCSInfo;
+extern HANDLE hFileStdOut;
+extern HANDLE hFileStdOutDup;
+extern HANDLE hFileStdErr;
+extern HANDLE hFileStdErrDup;
+extern VDMINFO VDMInfo;
+extern PSZ pszFileStdOut;
+extern PSZ pszFileStdErr;
+extern CHAR cmdHomeDirectory[];
+extern HANDLE SCS_hStdIn;
+extern HANDLE SCS_hStdOut;
+extern HANDLE SCS_hStdErr;
+extern CHAR chDefaultDrive;
+extern BOOL DontCheckDosBinaryType;
+extern WORD Exe32ActiveCount;
+extern BOOL fSoftpcRedirection;
+extern BOOL fSoftpcRedirectionOnShellOut;
+extern VOID nt_std_handle_notification (BOOL);
+extern VOID cmdPushExitInConsoleBuffer (VOID);
+
+
+// control handler state, defined in nt_event.h, nt_event.c
+extern ULONG CntrlHandlerState;
+#define CNTRL_SHELLCOUNT 0x0FFFF // The LOWORD is used for shell count
+#define CNTRL_PIFALLOWCLOSE 0x10000
+#define CNTRL_VDMBLOCKED 0x20000
+#define CNTRL_SYSTEMROOTCONSOLE 0x40000
+#define CNTRL_PUSHEXIT 0x80000
+
+
+// Temporary variable till we standardized on wowexec
+extern ULONG iWOWTaskId;
+extern CHAR comspec[];
+extern CHAR ShortCutInfo[];
+
+extern VOID nt_pif_callout (LPVOID);
+extern CHAR *lpszzInitEnvironment;
+extern WORD cchInitEnvironment;
+extern CHAR *lpszzCurrentDirectories;
+extern DWORD cchCurrentDirectories;
+extern BYTE * pIsDosBinary;
+extern WORD * pFDAccess;
+extern CHAR *lpszzcmdEnv16;
+extern BOOL DosEnvCreated;
+extern BOOL IsFirstVDM;
+extern VDMENVBLK cmdVDMEnvBlk;
+extern CHAR *lpszzVDMEnv32;
+extern DWORD cchVDMEnv32;
+extern UINT VdmExitCode;
+
+// application path name extention type.
+#define EXTENTION_STRING_LEN 4
+#define BAT_EXTENTION_STRING ".BAT"
+#define EXE_EXTENTION_STRING ".EXE"
+#define COM_EXTENTION_STRING ".COM"