mirror of
https://github.com/SEPPDROID/DR-DOS-OpenDOS.git
synced 2025-10-22 16:04:20 +00:00
239 lines
8.0 KiB
C
239 lines
8.0 KiB
C
/*
|
|
; File : $Workfile$
|
|
;
|
|
; Description :
|
|
;
|
|
; Original Author : DIGITAL RESEARCH
|
|
;
|
|
; Last Edited By : $CALDERA$
|
|
;
|
|
;-----------------------------------------------------------------------;
|
|
; Copyright Work of Caldera, Inc. All Rights Reserved.
|
|
;
|
|
; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL,
|
|
; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC.
|
|
; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES
|
|
; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF
|
|
; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO
|
|
; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE
|
|
; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE
|
|
; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED,
|
|
; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED,
|
|
; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST,
|
|
; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF
|
|
; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT
|
|
; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND
|
|
; CIVIL LIABILITY.
|
|
;-----------------------------------------------------------------------;
|
|
;
|
|
; *** Current Edit History ***
|
|
; *** End of Current Edit History ***
|
|
;
|
|
; $Log$
|
|
;
|
|
; ENDLOG
|
|
*/
|
|
|
|
#define SWITCH_ENABLED 1
|
|
#define DOSPLUS 1
|
|
#define BETA 1
|
|
#define PASSWORD 1
|
|
|
|
/*
|
|
* DOS Plus Command Line Processor definitions
|
|
*/
|
|
#define PIPE_CHAR '|' /* Invoke PIPE handling */
|
|
#define MULTI_CHAR '!' /* Character allows multiple commands on */
|
|
/* one command line or in batch file line */
|
|
#define BACK_CHAR '&' /* This character forces the preceeding */
|
|
/* command to be placed into the background. */
|
|
#define ESC_CHAR '~' /* Do not process the following character */
|
|
|
|
#define MAX_PATHLEN 131 /* Maximum length of a Path "x:\...." */
|
|
#define MAX_FILELEN 140 /* Maximum length of full file specification */
|
|
/* ie "x:\....\nnnnnnnn.eee;password" */
|
|
#define MAX_ENVLEN 255 /* Maximum length of environment entry */
|
|
|
|
#define DEFAULT_PROMPT "$n$g" /* Default Prompt string */
|
|
|
|
#define MAX_MEMSIZE 1000 /* Maximum Memory Size */
|
|
#define MAX_LIMSIZE 8192 /* Max LIM Memory */
|
|
|
|
/*
|
|
* The following definitions are used to control console redirection,
|
|
* pipes, echo status etc.
|
|
*/
|
|
#define REDIR_ACTIVE 0x0001 /* Redirection Enabled */
|
|
#define REDIR_BATCH 0x0002 /* Redirect Complete Batch File */
|
|
#define REDIR_PIPE 0x0004 /* Redirection from PIPE command*/
|
|
#define REDIR_FOR 0x0008 /* Redirection from FOR command */
|
|
|
|
#define ECHO_ON 0x0001 /* Turn Echo ON unconditionally */
|
|
#define ECHO_OFF 0x0000 /* Permanently Turn Echo OFF */
|
|
|
|
#define XBATCH_ON 0x0001 /* Turn Echo ON unconditionally */
|
|
#define XBATCH_OFF 0x0000 /* Permanently Turn Echo OFF */
|
|
|
|
|
|
/*
|
|
* The following definitions are "LONGJMP" error codes used
|
|
* to specify the cause of the Internal Abort.
|
|
*/
|
|
#define IA_BREAK 1 /* Control-C "BREAK" termination */
|
|
#define IA_STACK 2 /* Stack Overflow */
|
|
#define IA_HEAP 3 /* Heap Overflow */
|
|
#define IA_FILENAME 4 /* FileName specification Error */
|
|
|
|
/*.pa*/
|
|
#define SYSDATE struct sysdate
|
|
SYSDATE {
|
|
WORD year; /* Current Year 1980 - 2099 */
|
|
BYTE month; /* Month (1 - 12) */
|
|
BYTE day; /* Day (1 - 31) */
|
|
BYTE dow; /* Day of the Week (0 - 6) (Sun - Sat) */
|
|
};
|
|
|
|
#define SYSTIME struct systime
|
|
SYSTIME {
|
|
BYTE hour; /* Hour (0 - 23) */
|
|
BYTE min; /* Minute (0 - 59) */
|
|
BYTE sec; /* Second (0 - 59) */
|
|
BYTE hsec; /* Hundredth of a second (0 - 99) */
|
|
};
|
|
|
|
#define DTA struct dta
|
|
DTA { /* 128 Data Transfer Buffer in Search */
|
|
BYTE resvd[21]; /* First - Search Next format */
|
|
BYTE fattr;
|
|
WORD ftime;
|
|
WORD fdate;
|
|
LONG fsize;
|
|
BYTE fname[13];
|
|
};
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* The following structure is initialized by the COMMAND.COM */
|
|
/* kernel via a call to MS_S_COUNTRY. It is needed for */
|
|
/* date/time conversions and directory displays... */
|
|
/* */
|
|
/************************************************************************/
|
|
#define INTERNAT struct internat
|
|
INTERNAT {
|
|
WORD dt_fmt; /* 0=MM/DD/YY 1=DD/MM/YY 2=YY/MM/DD */
|
|
BYTE currcy[5]; /* currency symbol + nulls */
|
|
BYTE d1000[2]; /* thousands delimiter + null */
|
|
BYTE ddecm[2]; /* decimal delimiter + null */
|
|
BYTE ddate[2]; /* date delimiter + null */
|
|
BYTE dtime[2]; /* time delimiter + null */
|
|
BYTE cflg; /* currcy sym bits: 01 trailing, 02 = spaced */
|
|
BYTE cdec; /* number of decimal places in currency */
|
|
BYTE ampm; /* 0=am/pm 1=24h clock */
|
|
BYTE internl[14];
|
|
UWORD code;
|
|
};
|
|
|
|
|
|
/* Possible values of needparam in S_CMD. */
|
|
#define PARAM_NONE 0
|
|
#define PARAM_NEEDFILE 1
|
|
#define PARAM_NEEDPATH 2
|
|
#define PARAM_NEEDDEV 3
|
|
#define PARAM_SYNTAX 4
|
|
#define PARAM_IFCONTEXT 6
|
|
|
|
#define S_CMD struct s_cmd
|
|
S_CMD {
|
|
#if defined(MWC)
|
|
BYTE *cmnd; /* ASCII command string */
|
|
CDECL VOID (* CDECL func)(BYTE *, BYTE *);
|
|
UWORD needparm; /* Pointer to Null command line msg */
|
|
WORD help_index; /* help msg index */
|
|
#else
|
|
#if defined(__WATCOMC__)
|
|
BYTE *cmnd; /* ASCII command string */
|
|
VOID CDECL (*func)(BYTE *, BYTE *);
|
|
UWORD needparm; /* Pointer to Null command line msg */
|
|
WORD help_index; /* help msg index */
|
|
#else
|
|
BYTE *cmnd; /* ASCII command string */
|
|
VOID (* CDECL func)(); /* corresponding 'C' function */
|
|
UWORD needparm; /* Pointer to Null command line msg */
|
|
WORD help_index; /* help msg index */
|
|
#endif
|
|
#endif
|
|
};
|
|
|
|
#define N_CMD struct n_cmd
|
|
N_CMD {
|
|
#if defined(MWC)
|
|
BYTE *string; /* ASCII command string */
|
|
CDECL VOID (* CDECL func)(BYTE *);
|
|
#else
|
|
#if defined(__WATCOMC__)
|
|
BYTE *string; /* ASCII command string */
|
|
VOID CDECL (*func)(BYTE *);
|
|
#else
|
|
BYTE *string; /* ASCII command string */
|
|
VOID (* CDECL func)(); /* corresponding 'C' function */
|
|
#endif
|
|
#endif
|
|
};
|
|
|
|
#if defined(CDOSTMP)
|
|
#define INVALID_DRV(drv) (drv < 0 || drv > 25 || (drv == *SYSDATB(SRCHDISK)))
|
|
#else
|
|
#define INVALID_DRV(drv) (drv < 0 || drv > 31)
|
|
#endif
|
|
|
|
/* DOS file attribute bit masks */
|
|
|
|
#define ATTR_RO 0x0001 /* file is read/only */
|
|
#define ATTR_HID 0x0002 /* file is hidden */
|
|
#define ATTR_SYS 0x0004 /* file system is system */
|
|
#define ATTR_STD (ATTR_SYS | ATTR_RO)
|
|
#define ATTR_ALL 0x0014 /* find all but labels & hidden */
|
|
#define ATTR_LBL 0x0008 /* find labels */
|
|
#define ATTR_DIR 0x0010 /* find directories, too */
|
|
#define ATTR_DEV 0x0040 /* Attribute returned for Device*/
|
|
|
|
#define STDIN 0 /* Standard Console Input Handle */
|
|
#define STDOUT 1 /* Standard Console Output Handle */
|
|
#define STDERR 2 /* Standard Error Output */
|
|
#define STDAUX 3 /* Auxilary Device Handle */
|
|
#define STDPRN 4 /* Printer Device Handle */
|
|
#define STDCON 5 /* Internal Console Handle */
|
|
|
|
#define OPEN_RO 0x0000 /* Open in Read Only */
|
|
#define OPEN_WO 0x0001 /* Open in Write Only */
|
|
#define OPEN_RW 0x0002 /* Open in Read/Write mode */
|
|
|
|
#define OPEN_DRW 0x0010 /* Deny Read/Write Access */
|
|
#define OPEN_DW 0x0020 /* Deny Write Access */
|
|
#define OPEN_DR 0x0030 /* Deny Read Access */
|
|
#define OPEN_DN 0x0040 /* Deny None */
|
|
|
|
#define OPEN_NI 0x0080 /* Prevent Child Inheriting */
|
|
|
|
#define OPEN_READ (OPEN_RO | OPEN_DW) /* Open Read Only */
|
|
#define OPEN_WRITE (OPEN_WO | OPEN_DRW) /* Open Write Only */
|
|
#define OPEN_RDWR (OPEN_RW | OPEN_DRW) /* Open Read and Write */
|
|
|
|
/*
|
|
* Set STACK to 1 to use dynamic string storage fuunction STACK
|
|
* which will reserve a any number of bytes on the stack for
|
|
* the life of the calling function. However this routine relies
|
|
* on a certain type of function exit code and cannot be used
|
|
* with all compilers
|
|
*/
|
|
#define STACK defined(MSC)
|
|
|
|
/* macros to break 'far' pointers into segment and offset components */
|
|
|
|
#define FP_OFF(__p) ((unsigned)(__p))
|
|
#define FP_SEG(__p) ((unsigned)((unsigned long)(void far*)(__p) >> 16))
|
|
|
|
/* make a far pointer from segment and offset */
|
|
#define MK_FP(__s,__o) ((void far*)(((unsigned long)(__s)<<16)|(unsigned)(__o)))
|
|
|