GLOBALS.H
上传用户:dcs7469208
上传日期:2010-01-02
资源大小:443k
文件大小:9k
源码类别:

操作系统开发

开发平台:

DOS

  1. /****************************************************************/
  2. /* */
  3. /*     globals.h */
  4. /* */
  5. /*        Global data structures and declarations */
  6. /* */
  7. /*      Copyright (c) 1995, 1996 */
  8. /*     Pasquale J. Villani */
  9. /* All Rights Reserved */
  10. /* */
  11. /* This file is part of DOS-C. */
  12. /* */
  13. /* DOS-C is free software; you can redistribute it and/or */
  14. /* modify it under the terms of the GNU General Public License */
  15. /* as published by the Free Software Foundation; either version */
  16. /* 2, or (at your option) any later version. */
  17. /* */
  18. /* DOS-C is distributed in the hope that it will be useful, but */
  19. /* WITHOUT ANY WARRANTY; without even the implied warranty of */
  20. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See */
  21. /* the GNU General Public License for more details. */
  22. /* */
  23. /* You should have received a copy of the GNU General Public */
  24. /* License along with DOS-C; see the file COPYING.  If not, */
  25. /* write to the Free Software Foundation, 675 Mass Ave, */
  26. /* Cambridge, MA 02139, USA. */
  27. /****************************************************************/
  28. /* $Logfile:   C:/dos-c/src/command/globals.h_v  $ */
  29. /* $Log:   C:/dos-c/src/command/globals.h_v  $
  30.    
  31.       Rev 1.7   31 Jan 1998  8:12:30   patv
  32.    Put preprocessor switch for version strings and changed log strings
  33.    
  34.       Rev 1.6   06 Feb 1997 21:58:28   patv
  35.    Modified version format string
  36.    
  37.       Rev 1.5   06 Feb 1997 21:29:20   patv
  38.    Modified version command for new version designation
  39.    
  40.       Rev 1.4   22 Jan 1997 12:50:46   patv
  41.    Changed to support revision.h
  42.    
  43.       Rev 1.3   29 Aug 1996 13:07:02   patv
  44.    Bug fixes for v0.91b
  45.    
  46.       Rev 1.2   19 Feb 1996  3:18:58   patv
  47.    Added NLS, int2f and config.sys processing
  48.    
  49.       Rev 1.1   01 Sep 1995 18:04:46   patv
  50.    First GPL release.
  51.    
  52.       Rev 1.0   02 Jul 1995 10:02:34   patv
  53.    Initial revision.
  54.  */
  55. /* $EndLog$ */
  56. #ifdef MAIN
  57. # ifdef VERSION_STRINGS
  58. static BYTE *Globals_hRcsId = "$Header:   C:/dos-c/src/command/globals.h_v   1.7   31 Jan 1998  8:12:30   patv  $";
  59. # endif
  60. #endif
  61. #include "../../hdr/device.h"
  62. #include "../../hdr/mcb.h"
  63. #include "../../hdr/pcb.h"
  64. #include "../../hdr/date.h"
  65. #include "../../hdr/time.h"
  66. #include "../../hdr/fat.h"
  67. #include "../../hdr/fcb.h"
  68. #include "../../hdr/kbd.h"
  69. #include "../../hdr/tail.h"
  70. #include "../../hdr/process.h"
  71. #include "../../hdr/dcb.h"
  72. #include "../../hdr/sft.h"
  73. #include "../../hdr/exe.h"
  74. #include "../../hdr/fnode.h"
  75. #include "../../hdr/dirmatch.h"
  76. #include "../../hdr/error.h"
  77. #include "../../hdr/file.h"
  78. #include "../../hdr/version.h"
  79. /* */
  80. /* Convience switch for maintaining variables in a single location */
  81. /* */
  82. #ifdef MAIN
  83. #define GLOBAL
  84. #else
  85. #define GLOBAL extern
  86. #endif
  87. /* */
  88. /* Convience definitions of TRUE and FALSE */
  89. /* */
  90. #ifndef TRUE
  91. #define TRUE (1)
  92. #endif
  93. #ifndef FALSE
  94. #define FALSE (0)
  95. #endif
  96. /* */
  97. /* Constants and macros */
  98. /* */
  99. /* Defaults and limits - System wide */
  100. #define NFILES 16 /* number of files in table */
  101. #define NDEVS 4 /* number of supported devices */
  102. #define NAMEMAX 64 /* Maximum path for CDS */
  103. /* 0 = CON, standard input, can be redirected */
  104. /* 1 = CON, standard output, can be redirected */
  105. /* 2 = CON, standard error */
  106. /* 3 = AUX, auxiliary */
  107. /* 4 = PRN, list device */
  108. /* 5 = 1st user file ... */
  109. #define STDIN 0
  110. #define STDOUT 1
  111. #define STDERR 2
  112. #define STDAUX 3
  113. #define STDPRN 4
  114. #define MAX_CMDLINE 128
  115. #define MAX_LABELS 20
  116. #define NPARAMS 16
  117. #define LABELSIZE  9
  118. #define ENV_DEFAULT 256
  119. /* some defines for protability from ASCII */
  120. #define ESC_CHAR 0x1b
  121. typedef struct
  122. {
  123. BYTE lb_name[LABELSIZE];
  124. LONG lb_posit;
  125. } symbol;
  126. GLOBAL symbol labels[MAX_LABELS];
  127. GLOBAL COUNT
  128. default_drive, /* The current selected drive */
  129. label_cnt, /* Number of labels found */
  130. shift_offset, /* To determine %1 if shift was called  */
  131. EnvSize; /* Startup environment size */
  132. GLOBAL BYTE
  133. dflt_path_string[MAX_CMDLINE],  /* generates "No Path" */
  134. *path,
  135. FAR *lpEnviron,
  136. prompt_string[MAX_CMDLINE],
  137. switchchar,
  138. *tail,
  139. cmd_line[MAX_CMDLINE],
  140. args[NPARAMS][MAX_CMDLINE],
  141. posparam[NPARAMS][MAX_CMDLINE];
  142. GLOBAL BOOL
  143. at_FLAG, /* @ at beginning of command line */
  144. batch_FLAG,
  145. dosoptplus; /* TRUE if more non-white in tail */
  146. GLOBAL BYTE *dflt_pr_string
  147. #ifdef MAIN
  148.  =
  149. # ifdef SHWR
  150. "[Shareware DOS-C] $p$g ";
  151. # else
  152. "$p$g ";
  153. # endif
  154. #else
  155.  ;
  156. #endif
  157. #define ANNOUNCE "nDOS-C Command Shelln%s"
  158. GLOBAL BYTE *copyright
  159. #ifdef MAIN
  160. ="(C) Copyright 1995, 1996, 1997, 1998n
  161. Pasquale J. VillaninAll Rights Reservedn";
  162. #else
  163. ;
  164. #endif
  165. GLOBAL BYTE *version
  166. #ifdef MAIN
  167. ="Compatibility level %d.%02d";
  168. #else
  169. ;
  170. #endif
  171. GLOBAL BYTE *dosc_version
  172. #ifdef MAIN
  173. ="DOS-C version %d.%d.%dn";
  174. #else
  175. ;
  176. #endif
  177. /* Error messages */
  178. #define MAX_ERR_STR_LEN 50 /* Maximum length of %s  */
  179. #define MAX_ERR_MESS_LEN 80 /* Maximum length fixed message */
  180. GLOBAL BYTE
  181. *error_mess_str;
  182. GLOBAL COUNT
  183. rtn_errlvl; /* error level returned from external command */
  184. enum error_mess {
  185. ACCESS_DENIED = 0,
  186. BAD_CMD_FILE_NAME,
  187. BAD_CMD_INTERPRETER,
  188. BOOT_ERROR,
  189. CANNOT_REMOVE,
  190. CANNOT_DELETE,
  191. CANNOT_FIND_SYS_FILES,
  192. CANNOT_LOAD_COMMAND,
  193. CANNOT_READ_FAT,
  194. INV_NUM_PARAMS,
  195. INV_PARAM,
  196. INV_PARAM_COMBO,
  197. CURRENT_DRIVE_NUM,
  198. INV_DRIVE,
  199. INV_COMMAND,
  200. INV_CMD,
  201. INV_DIR,
  202. INV_TIME,
  203. INV_DATE,
  204. INV_DISK_CHANGE,
  205. INV_FILE,
  206. INV_FUNCTION_PARAM,
  207. INV_PARTITION,
  208. INV_PATH,
  209. INV_SWITCH,
  210. INV_SYNTAX,
  211. NOT_DIR,
  212. NOT_EMPTY_DIR,
  213. INV_KEYWORD,
  214. DATA_ERR,
  215. EXEC_ERR,
  216. OS_ERR,
  217. READ_DIR_ERR,
  218. READ_SYS_ERR,
  219. WRITE_DEVICE_ERR,
  220. EXEC_FAIL,
  221. BAD_FAT,
  222. FILE_ON_ITSELF,
  223. FILE_CREATE_ERR,
  224. FILE_NOT_FOUND,
  225. GEN_FAIL,
  226. DOS_VER,
  227. INSUFF_DISK,
  228. INSUFF_MEM,
  229. FILE_PIPE_ERR,
  230. INTERNAL_ERR,
  231. MALLOC_ERR,
  232. ON_OFF,
  233. NO_FIXED_DISK,
  234. NO_DIR_ROOM,
  235. NON_SYS_DISK,
  236. OUT_ENV_SPACE,
  237. PARAM_FORMAT,
  238. PARAM_NOT_ALLOWED,
  239. PARAM_RANGE_ERR,
  240. PARAM_NOT_COMPAT,
  241. PARSE_ERR,
  242. PATH_NOT_FOUND,
  243. PRINTER_ERR,
  244. PROG_TOO_BIG,
  245. READ_FAULT,
  246. REQ_PARAM,
  247. PARAM_TWICE,
  248. SECTOR_NOT,
  249. SEEK_ERR,
  250. SHARE_ERR,
  251. SEARCH_DIR_ERR,
  252. SYNTAX_ERR,
  253. TOO_FILES_OPEN,
  254. TOO_MANY_PARAMS,
  255. TOO_MANY_REDIRECTS,
  256. PARENT_ABORT,
  257. UNREC_CMD_CONFIG,
  258. UNRECOV_W_R,
  259. WRITE_FAULT,
  260. WRITE,
  261. INV_LABEL,
  262. LABEL_NOT_FOUND,
  263. DUP_FILE
  264. }; /* end error message enum */
  265. GLOBAL BYTE *error_messages[]
  266. #ifdef MAIN
  267. = {
  268. "Access denied",
  269. "Bad command or file name",
  270. "Bad or missing command interpreter",
  271. "Boot error",
  272. "Cannot remove "%s"",
  273. "Cannot delete "%s"",
  274. "Cannot find system files", 
  275. "Cannot load command,system halted",
  276. "Cannot read file allocation table",
  277. "Invalid number of parameters",
  278. "Invalid parameter(s)",
  279. "Invalid parameter combination",
  280. "Current drive is no longer valid",
  281. "Invalid drive specification",
  282. "Invalid command.com",
  283. "Invalid command name",
  284. "Invalid directory",
  285. "Invalid time parameter",
  286. "Invalid date parameter",
  287. "Invalid disk change",
  288. "Invalid file name",
  289. "Invalid function parameter",
  290. "Invalid partion table",
  291. "Invalid path",
  292. "Invalid switch - %s",
  293. "Invalid syntax",
  294. "Not directory",
  295. "Directory not empty",
  296. "Invalid keyword",
  297. "Data error",
  298. "Error in exec file",
  299. "Error loading operating system",
  300. "Error reading directory",
  301. "Error reading system file",
  302. "Error writing to device",
  303. "Exec failure",
  304. "File allocation table bad",
  305. "File cannot not be copied onto itself",
  306. "File creation error - "%s"",
  307. "File not found",
  308. "General failure",
  309. "Incorrect DOS version",
  310. "Insufficient disk space",
  311. "Insufficient memory",
  312. "Intermediate file error during pipe",
  313. "Internal error",
  314. "Memory allocation error",
  315. "Must specify ON or OFF",
  316. "No fixed disks present",
  317. "No room in directory",
  318. "Non-system disk or disk error",
  319. "Out of environment space",
  320. "Parameter format not correct",
  321. "Parameter value not allowed",
  322. "Parameter value not in allowed range",
  323. "Parameter not compatible",
  324. "Parse error",
  325. "Path not found",
  326. "Printer error",
  327. "Program too big to fit in memory",
  328. "Read fault error",
  329. "Required parameter missing",
  330. "Same parameter entered twice",
  331. "Sector not found",
  332. "Seek error",
  333. "Sharing violation",
  334. "Specified command search directory bad",
  335. "Syntax error",
  336. "Too many files open",
  337. "Too many parameters",
  338. "Too many redirections",
  339. "Top level process aborted, cannot continue",
  340. "Unrecognized command in config.sys",
  341. "Unrecoverable read or write error",
  342. "Write fault error",
  343. "Write protection error",
  344. "Invalid label",
  345. "Label not found",
  346. "Duplicate file name or file not found"
  347. };
  348. #else
  349. ;
  350. #endif