GLOBAL.C
上传用户:xiaogehua
上传日期:2007-01-08
资源大小:1183k
文件大小:6k
源码类别:

操作系统开发

开发平台:

Asm

  1. /*
  2. ;    File              : $Workfile: GLOBAL.C$
  3. ;
  4. ;    Description       :
  5. ;
  6. ;    Original Author   : DIGITAL RESEARCH
  7. ;
  8. ;    Last Edited By    : $CALDERA$
  9. ;
  10. ;-----------------------------------------------------------------------;
  11. ;    Copyright Work of Caldera, Inc. All Rights Reserved.
  12. ;      
  13. ;    THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL,
  14. ;    PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC.
  15. ;    ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES
  16. ;    WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF
  17. ;    THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO
  18. ;    HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE
  19. ;    AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE
  20. ;    AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED,
  21. ;    COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED,
  22. ;    CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST,
  23. ;    TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF
  24. ;    CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT
  25. ;    AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND
  26. ;    CIVIL LIABILITY.
  27. ;-----------------------------------------------------------------------;
  28. ;
  29. ;    *** Current Edit History ***
  30. ;    *** End of Current Edit History ***
  31. ;
  32. ;    $Log$
  33. */
  34. /*
  35.    Date     Comments
  36.  ---------  ------------------------------------------------------------
  37.  21 Mar 88  Modify IN_PIPE and OUT_PIPE to be compatible with NOVELL 2.1
  38.  21 Sep 88  Change the default ECHO state to be ON.
  39. */
  40. #include "defines.h"
  41. #include <portab.h>
  42. #include <command.h> /* Command Definitions */
  43. /*.pa*/
  44. /* General Purpose Variables */
  45. GLOBAL BOOLEAN initflg = FALSE; /* Initial Load Flag      */
  46. GLOBAL WORD drive = 0; /* Current default Drive      */
  47. GLOBAL UWORD echoflg = ECHO_ON; /* Current Echo Status      */
  48. GLOBAL BOOLEAN crlfflg = FALSE;  /* No CR/LF Required before prompt   */
  49. /* Batch File Processing Variables */
  50. GLOBAL UWORD batchflg = 0; /* Currently processing Batch File   */
  51. /* FOR Sub-Command Variables */
  52. GLOBAL BOOLEAN for_flag = NO; /* FOR Sub-command Active */
  53. /* I/O Redirection Control  */
  54. GLOBAL WORD in_flag = NULL;
  55. GLOBAL WORD out_flag = NULL;
  56. GLOBAL UWORD in_handle = NULL;
  57. GLOBAL UWORD out_handle = NULL;
  58. /* Pipe Control Data */
  59. GLOBAL BOOLEAN pipe_out = NO; /* Activate Pipe output         */
  60. GLOBAL BOOLEAN pipe_in = NO; /* Activate Pipe Input        */
  61. GLOBAL BOOLEAN preserve_pipe = NO;
  62. /*
  63.  * The following two structures are patched by NOVELL Version 2.1
  64.  * to force the creation of the PIPE files in the current sub-directory
  65.  * rather than the root. The '/' is patched to a '.' by the NET3.COM
  66.  * program.
  67.  */
  68. GLOBAL BYTE out_pipe[64] = "_:/_______.___"; /* Output Pipe Name "x:filename.ext"  */
  69. GLOBAL BYTE *old_pipe; /* old pipe file name */
  70. GLOBAL BYTE pathchar[] = "\"; /* The current path character. This */
  71. /* can be accessed as a byte using  */
  72. /* "*pathchar" or as a string using */
  73. /* "pathchar".     */
  74. #if defined(PASSWORD)
  75. GLOBAL BYTE pwdchar[] = ";"; /* The Password delimiter. Which can*/
  76. /* be accessed in the same way as   */
  77. /* pathchar.     */
  78. #endif
  79. GLOBAL BYTE switchar[] = "/"; /* Switch Character     */
  80. GLOBAL BYTE dotdot[] = "..";
  81. GLOBAL BYTE d_slash_stardotstar[] = "x:\*.*";
  82. GLOBAL BOOLEAN back_flag = FALSE; /* Execute a BackGround Task*/
  83. GLOBAL BOOLEAN  execed;   
  84. GLOBAL WORD page_len = 24; /* Screen Length     */
  85. GLOBAL WORD page_wid = 80; /* Screen Width      */
  86. GLOBAL BOOLEAN break_flag;
  87. GLOBAL BOOLEAN err_flag;
  88. GLOBAL UWORD err_ret;
  89. GLOBAL WORD ddrive;
  90. GLOBAL BYTE FAR *bufaddr; /* External Copy Buffer Address */
  91. GLOBAL UWORD bufsize;  /* External Copy Buffer Size */
  92. GLOBAL INTERNAT country; /* country data structure      */
  93. #if defined(DOSPLUS)
  94. GLOBAL BYTE *ftypes[] = { "com", "exe", "bat", NULL};
  95. #else
  96. GLOBAL BYTE *ftypes[] = { "cmd", "com", "exe", "bat", NULL};
  97. #endif
  98. /* This pointer is initialized by the Startup routine and   */
  99. /* would be defined there if I could persuade the compiler  */
  100. /* to reference it correctly.     */
  101. #if !defined(DOSPLUS)
  102. #include <pd.h> /* PD Structure Declaration */
  103. GLOBAL PD FAR * CDECL pd = (PD FAR *) 1234L; /* FAR pointer to our PD    */
  104. GLOBAL WORD CDECL sysdat_seg = 0; /* Segment address of SYSDAT */
  105. #endif
  106. GLOBAL BOOLEAN c_option = FALSE;
  107. GLOBAL BOOLEAN k_option = FALSE;
  108. GLOBAL BOOLEAN n_option = FALSE;
  109. GLOBAL BOOLEAN allow_pexec = FALSE;
  110. GLOBAL BYTE FAR *gp_far_buff = 0L;
  111. GLOBAL BYTE FAR *show_file_buf = 0L;
  112. GLOBAL UWORD FAR *parent_psp;
  113. GLOBAL UWORD save_parent;
  114. #define FCONTROL struct fcc
  115. MLOCAL FCONTROL {
  116. BOOLEAN  sflg; /* FOR File Search Flag  */
  117. DTA  search; /* FOR Search structure  */
  118. BYTE  *files; /* FOR File list */
  119. BYTE  *cmd; /* FOR Command Line */
  120. BYTE  forvar; /* FOR variable char */
  121. };
  122. #define BCONTROL struct bcc
  123. GLOBAL BCONTROL {
  124. BCONTROL FAR *bcontrol; /* Previous Batch Control Structure  */
  125. BOOLEAN  eof; /* End of File Flag      */
  126. LONG  offset; /* Offset in BATCH file       */
  127. LONG  ret_offset[4]; /* return offset from gosub          */
  128. BYTE  *batcmd; /* Batch File Input parameters      */
  129. UWORD  batshift; /* Shift Offset       */
  130. BYTE  batfile[MAX_PATHLEN]; /* Batch File Name      */
  131. UWORD  stream; /* Stream for this Batch File      */
  132. FCONTROL *fcontrol; /* Pointer to previous FOR command   */
  133. BYTE  *heap_start; /* Heap pointer before extra bytes   */
  134. WORD  heap_size; /* are added to shift to segment     */
  135. BYTE     save_area[1]; /* boundary. - EJH      */
  136. } FAR *batch, FAR *batch_save; /* Master Batch Control Stucture     */
  137. WORD global_link;
  138. WORD global_strat;
  139. WORD global_in_hiload = 0;
  140. WORD hidden_umb[10];