home *** CD-ROM | disk | FTP | other *** search
/ Amiga GigaPD 3 / Amiga_GigaPD_v3_3of3.iso / fred_fish / fish_601-700_lha / fish_624.lha / CSH / csh519s.lha / shell.h < prev    next >
C/C++ Source or Header  |  1992-02-07  |  9KB  |  353 lines

  1. /*
  2.  * SHELL.H
  3.  *
  4.  * (c)1986 Matthew Dillon     9 October 1986
  5.  *
  6.  *
  7.  * SHELL include file.. contains shell parameters and extern's
  8.  *
  9.  * Version 2.07M by Steve Drew 10-Sep-87
  10.  * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
  11.  * Version 5.00L by Urban Mueller 16-Mar-91
  12.  *
  13.  */
  14.  
  15. #define RAW_CONSOLE 1   /* Set to 0 to compile out command line editing */
  16.  
  17. #define strlen strlen
  18.  
  19. #ifdef _DCC
  20. # define C_Args
  21. # define FUNCARG(x,y,z) ()
  22. #else
  23. # define FUNCARG(x,y,z) (x,y,z)
  24. # define KICK20
  25. #endif
  26.  
  27.  
  28. #include <exec/types.h>
  29. #include <exec/exec.h>
  30. #include <exec/memory.h>
  31. #include <intuition/intuitionbase.h>
  32. #include <libraries/dos.h>
  33. #include <libraries/dosextens.h>
  34. #include <time.h>
  35. #include <ctype.h>
  36. #include <fcntl.h>
  37. #include <stdio.h>
  38. #include <stdlib.h>
  39. #include <string.h>
  40. #include <math.h>
  41.  
  42. LONG AssignLock( UBYTE *name, BPTR lock );
  43. BOOL AssignLate( UBYTE *name, UBYTE *path );
  44. BOOL AssignPath( UBYTE *name, UBYTE *path );
  45. BOOL AssignAdd ( UBYTE *name, BPTR lock );
  46.  
  47. LONG AllocPattern    (STRPTR, ULONG);
  48. LONG MatchThePattern (LONG, STRPTR);
  49. void FreePattern     (LONG);
  50.  
  51.  
  52. typedef struct FileInfoBlock FIB;
  53.  
  54. #ifdef AZTEC_C
  55. # include <functions.h>
  56. # define DEVTAB(x)    (BPTR)(_devtab[x->_unit].fd)
  57. # define CHARSWAIT(x) (x->_bp < x->_bend)
  58. # define RESETIO(x)   (x->_bp = x->_bend)
  59. # define COMPILER "Aztec C 5.0d"
  60. # pragma amicall(DOSBase, 0x264, AssignLock(d1,d2))
  61. # pragma amicall(DOSBase, 0x26a, AssignLate(d1,d2))
  62. # pragma amicall(DOSBase, 0x270, AssignPath(d1,d2))
  63. # pragma amicall(DOSBase, 0x276, AssignAdd(d1,d2))
  64. # pragma amicall(PatternBase, 0x48, AllocPattern(a0,d0))
  65. # pragma amicall(PatternBase, 0x60, MatchThePattern(d0,a0))
  66. # pragma amicall(PatternBase, 0x66, FreePattern(d0))
  67. #endif
  68.  
  69. #ifdef LATTICE
  70. # include <proto/all.h>
  71. # include <ios1.h>
  72. # define DEVTAB(x)    _ufbs[(x)->_file].ufbfh
  73. # define CHARSWAIT(x) (x->_rcnt != x->_wcnt)
  74. # define RESETIO(x)   (x->_rcnt =  x->_wcnt)
  75.  
  76.   extern struct UFB _ufbs[];
  77. # ifndef memmove
  78. # define memmove(t,f,l) movmem((f),(t),(l))
  79. # endif
  80. # define COMPILER "Lattice C 5.10"
  81. # define index strchr
  82. # define rindex strrchr
  83. # define swapmem(x,y,z) swmem(x,y,z)
  84. # pragma libcall DOSBase AssignLock 264 2102
  85. # pragma libcall DOSBase AssignLate 26a 2102
  86. # pragma libcall DOSBase AssignPath 270 2102
  87. # pragma libcall DOSBase AssignAdd 276 2102
  88. # pragma libcall PatternBase AllocPattern 48 0802
  89. # pragma libcall PatternBase MatchThePattern 60 8002
  90. # pragma libcall PatternBase FreePattern 66 001
  91. #endif
  92.  
  93. #ifdef _DCC
  94. # define COMPILER "DICE 2.06"
  95. # define DEVTAB(x)    (_IoFD[x->sd_Fd].fd_Fh)
  96. # define CHARSWAIT(x) (x->sd_RPtr != x->sd_RBuf)
  97. # define RESETIO(x)   (x->sd_RPtr =  x->sd_RBuf)
  98. # define index strchr
  99. # define rindex strrchr
  100.   void * AllocMem(long byteSize, long requirements);
  101.   struct MsgPort *FindPort( UBYTE *name );
  102. #endif
  103.  
  104. #include <libraries/arpbase.h>
  105.  
  106. #undef  toupper
  107. #define toupper(c)    ((c)>='a'&&(c)<='z'?((c)-('a'-'A')):(c))
  108.  
  109. #ifndef MAX
  110. #define MAX(x,y) ((x)>(y) ? (x) : (y))
  111. #endif
  112.  
  113. #define OPT(x) (options & (x))
  114.  
  115. #define MAXSRC        5        /* Max. # of source file levels    */
  116. #define MAXIF        20        /* Max. # of if levels            */
  117. #define MAXALIAS    20        /* Max. # of alias levels        */
  118. #define MAXMYFILES    9        /* Max. # of internal files        */
  119. #define MAXHASH        32        /* Max. #áof hash chains        */
  120. #define MAXFILENAME 30
  121.  
  122. #define LEVEL_SET        0        /* which variable list to use   */
  123. #define LEVEL_ALIAS        1
  124. #define LEVEL_LABEL        2
  125. #define LEVEL_LOCAL        256
  126.  
  127. #define SBYTE signed char
  128. #define MAXITEMS 16
  129. #define MAXMENUS 6
  130.  
  131. #define VERBOSE_SOURCE 1
  132. #define VERBOSE_ALIAS  2
  133. #define VERBOSE_HILITE 4
  134.  
  135. #define SCAN_FILE     1
  136. #define SCAN_DIR      2
  137. #define SCAN_RECURSE  4
  138. #define SCAN_DIRENTRY 8
  139. #define SCAN_DIREND   16
  140.  
  141. #ifndef NULL
  142. #define NULL 0L
  143. #endif
  144.  
  145. #define CHECKBREAK() dobreak()
  146. #define ISSPACE(c) ((c)==' ' || (c)==9 || (UBYTE)(c)==0xA0)
  147.  
  148. #ifndef AZTEC_C
  149. struct _dev {
  150.     long  fd;
  151.     short mode;
  152.     };
  153. #endif
  154.  
  155. typedef struct hnode {
  156.     struct hnode *next, *prev;    /* doubly linked list */
  157.     char *line;                    /* line in history    */
  158. } HIST;
  159.  
  160. typedef struct PErr {
  161.     int errnum;                    /* Format of global error lookup */
  162.     char *errstr;
  163. } PERROR;
  164.  
  165. typedef struct dirptr {            /* Format of directory fetch pointer */
  166.     BPTR lock;                    /* lock on directory   */
  167.     FIB *fib;                    /* mod'd fib for entry */
  168. } DPTR;
  169.  
  170. extern HIST *H_head, *H_tail;
  171. extern PERROR Perror[];
  172. extern char **av;
  173. extern char *Current;
  174. extern int  H_len, H_tail_base, H_stack, H_num;
  175. extern int  E_stack;
  176. extern int  Src_stack, If_stack, forward_goto;
  177. extern int  ac;
  178. extern int  max_ac;
  179. extern int  debug, Rval, Verbose, disable, Quit;
  180. extern int  Lastresult, atoierr;
  181. extern int  Exec_abortline;
  182. extern int  S_histlen;
  183. extern unsigned int options;
  184.  
  185. extern FILE *Src_base[MAXSRC];
  186. extern long  Src_pos[MAXSRC];
  187. extern short Src_if[MAXSRC], Src_abort[MAXSRC];
  188. extern char  If_base[MAXIF];
  189. extern struct Process *Myprocess;
  190. extern struct CommandLineInterface *Mycli;
  191.  
  192. extern struct ArpBase *ArpBase;
  193.  
  194. extern char v_titlebar[], v_prompt[], v_hist[], v_histnum[], v_debug[],
  195.     v_verbose[], v_stat[], v_lasterr[], v_cwd[], v_except[], v_passed[],
  196.     v_path[], v_gotofwd[], v_linenum[], v_every[], v_lcd[], v_rxpath[],
  197.     v_hilite[], v_scroll[], v_minrows[], v_result[], v_qcd[], v_noreq[],
  198.     v_value[], v_nobreak[], v_bground[], v_pipe[], v_datefmt[], v_ioerr[],
  199.     v_abbrev[], v_rback[], v_insert[], v_failat[];
  200.  
  201. extern char o_hilite[], o_lolite[], o_rback[], *o_csh_qcd, o_internal;
  202. extern char o_aux, o_minrows, o_scroll, o_nowindow, o_noraw, o_vt100;
  203. extern char o_nofastscr, o_kick20, o_nobreak, o_bground, o_resident;
  204. extern char o_pipe[], o_datefmt, o_abbrev, o_insert, *o_every;
  205. extern long o_noreq, o_failat;
  206. extern char Buf[], isalph[], confirmed, *classfile;
  207.  
  208. extern char *MyMem;
  209.  
  210. #define isalphanum(x) isalph[x]
  211.  
  212. typedef struct file_info {
  213.     LONG flags;
  214.     LONG size;
  215.     LONG blocks;
  216.     char class[12];
  217.     struct DateStamp date;
  218. } FILEINFO;
  219.  
  220. typedef struct pattern {
  221.     int  casedep;
  222.     int  queryflag;
  223.     LONG patptr;
  224.     char pattern[1];
  225. } PATTERN;
  226.  
  227. #define INFO_COMMENT (1<<30)
  228. #define INFO_INFO    (1<<29)
  229.  
  230. typedef struct Class {
  231.     struct Class *next;
  232.     char name[1];
  233. } CLASS;
  234.  
  235. extern CLASS *CRoot, *LastCRoot;
  236. extern struct Window *Win;
  237.  
  238. extern long IoError;
  239.  
  240. typedef struct VNode {
  241.     struct VNode *next;
  242.     long len;
  243.     char *text;
  244.     char name[1];
  245. } NODE;
  246.  
  247. typedef struct VRoot {
  248.     NODE         *first[MAXHASH];
  249.     struct VRoot *parent;
  250. } ROOT;
  251.  
  252.  
  253. #if 1
  254. LONG RunCommand( BPTR seg, long stack, UBYTE *paramptr, long paramlen );
  255. struct Segment *FindSegment( UBYTE *name, struct Segment *seg, long system );
  256. BOOL AssignAdd( UBYTE *name, BPTR lock );
  257. LONG System( UBYTE *command, struct TagItem *tags );
  258.  
  259. #ifdef AZTEC_C
  260. # pragma amicall(DOSBase, 0x1f8, RunCommand(d1,d2,d3,d4))
  261. # pragma amicall(DOSBase, 0x30c, FindSegment(d1,d2,d3))
  262. # pragma amicall(DOSBase, 0x276, AssignAdd(d1,d2))
  263. # pragma amicall(DOSBase, 0x25e, System(d1,d2))
  264. #endif
  265.  
  266. #ifdef LATTICE
  267. # pragma libcall DOSBase RunCommand 1f8 432104
  268. # pragma libcall DOSBase FindSegment 30c 32103
  269. # pragma libcall DOSBase AssignAdd 276 2102
  270. # pragma libcall DOSBase System 25e 2102
  271. #endif
  272.  
  273. struct RootNode2x {
  274.     BPTR    rn_TaskArray;
  275.     BPTR    rn_ConsoleSegment;
  276.     struct  DateStamp rn_Time;
  277.     LONG    rn_RestartSeg;
  278.     BPTR    rn_Info;
  279.     BPTR    rn_FileHandlerSegment;
  280.     struct MinList rn_CliList;
  281.     struct MsgPort *rn_BootProc;
  282.     BPTR    rn_ShellSegment;
  283.     LONG    rn_Flags;
  284. };
  285.  
  286.  
  287. struct DosList2x {
  288.     BPTR            dol_Next;
  289.     LONG            dol_Type;
  290.     struct MsgPort *dol_Task;
  291.     BPTR            dol_Lock;
  292.  
  293.     union {
  294.         struct {
  295.             BSTR    dol_Handler;
  296.             LONG    dol_StackSize;
  297.             LONG    dol_Priority;
  298.             ULONG    dol_Startup;
  299.             BPTR    dol_SegList;
  300.             BPTR    dol_GlobVec;
  301.         } dol_handler;
  302.  
  303.         struct {
  304.             struct DateStamp    dol_VolumeDate;
  305.             BPTR                dol_LockList;
  306.             LONG                dol_DiskType;
  307.         } dol_volume;
  308.  
  309.         struct {
  310.             UBYTE     *dol_AssignName;
  311.             struct AssignList *dol_List;
  312.         } dol_assign;
  313.  
  314.     } dol_misc;
  315.  
  316.     BSTR    dol_Name;
  317. };
  318.  
  319. struct AssignList2x {
  320.     struct AssignList *al_Next;
  321.     BPTR           al_Lock;
  322. };
  323.  
  324. #define DLST_DEVICE     0
  325. #define DLST_DIRECTORY  1
  326. #define DLST_VOLUME     2
  327. #define DLST_LATE       3
  328. #define DLST_NONBINDING 4
  329. #define DLST_PRIVATE   -1
  330.  
  331. #define ST_USERDIR      2
  332.  
  333.  
  334. typedef ULONG    Tag;
  335.  
  336. struct TagItem  {
  337.     Tag         ti_Tag;
  338.     ULONG       ti_Data;
  339. };
  340. #define TAG_DONE   (0L)
  341. #define TAG_USER  (1L<<31)
  342.  
  343. #define SYS_Dummy        (TAG_USER + 32)
  344. #define    SYS_Input        (SYS_Dummy + 1) /* specifies the input filehandle  */
  345. #define    SYS_Output        (SYS_Dummy + 2) /* specifies the output filehandle */
  346. #define    SYS_Asynch        (SYS_Dummy + 3) /* run asynch, close input/output on exit(!) */
  347. #define    SYS_UserShell    (SYS_Dummy + 4) /* send to user shell instead of boot shell */
  348. #define    SYS_CustomShell    (SYS_Dummy + 5) /* send to a specific shell (data is name) */
  349.  
  350. #endif
  351.  
  352. #include "proto.h"
  353.