home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d512 / csh.lha / Csh / Csh515s.lzh / shell.h < prev    next >
C/C++ Source or Header  |  1991-06-02  |  7KB  |  289 lines

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