 
/*
 * SHELL.H
 *
 * Matthew Dillon, 24 Feb 1986
 * version 2.01A (Manx ver) by Steve Drew 27 Sep 1986
 * mods for 16 bit compiling 4 Oct 1986. Steve Drew.
 *
 */

/* set one of these two symbols depending on to use dos Execute() func.
 * or manx fexecv() function. This flexibility provided because of
 * rumors that fexecv() doesnt work under 1.2 so can be a temporary
 * workaround. 
 */

#define USE_FEXEC   1			/* best way to go */
#define USE_EXECUTE 0


#include <stdio.h>
#include <time.h> 
#include <exec/types.h>
#include <exec/exec.h>
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <exec/memory.h>
#include <exec/tasks.h>
#include <functions.h>

#define bmov   movmem
 
#define MAXAV        200            /* Max. # arguments             */
#define MAXSRC       5              /* Max. # of source file levels */
#define MAXIF        10             /* Max. # of if levels          */
 
#define LEVEL_SET    0
#define LEVEL_ALIAS  1
#define LEVEL_LABEL  2
 
#define M_RESET      0
#define M_CONT       1
 
#define V_PROMPT     "_prompt"      /* Special variable names */
#define V_HIST       "_history"
#define V_DEBUG      "_debug"
#define V_VERBOSE    "_verbose"
#define V_LASTERROR  "_lasterror"
 
#define FL_DOLLAR    0x01  /* One of the following */
#define FL_BANG      0x02
#define FL_PERCENT   0x04
#define FL_QUOTE     0x08
#define FL_IDOLLAR   0x10  /* Any or all of the following may be set */
#define FL_EOC       0x20
#define FL_EOL       0x40
#define FL_OVERIDE   0x80
#define FL_WILD      0x100
#define FL_MASK      (FL_DOLLAR|FL_BANG|FL_PERCENT|FL_QUOTE)
 
#define VERSION   "V2.01A  (c)1986 Matthew Dillon. Manx ver(A) By Steve Drew"
 
#undef NULL
#define NULL ((void *)0)

 
#define CHECKBREAK() ( breakcheck() ? (printf("^C\n"),1) : 0)
 
 
struct HIST {
   struct HIST *next, *prev;     /* doubly linked list */
   char *line;                   /* line in history    */
};
 
struct PERROR {
   int errnum;                   /* Format of global error lookup */
   char *errstr;
};
 
struct DPTR {                    /* Format of directory fetch pointer */
   struct FileLock *lock;        /* lock on directory   */
   struct FileInfoBlock *fib;    /* mod'd fib for entry */
};
 
extern struct HIST *H_head, *H_tail;
extern struct PERROR Perror[];
extern struct DPTR *dopen();
extern char *set_var(), *get_var(), *next_word();
extern char *get_history(), *compile_av();
char *malloc(), *strcpy(), *index(), *strcat(), *strncpy();
extern char **expand();
 
extern char *av[];
extern char *Current;
extern int  H_len, H_tail_base, H_stack;
extern int  Src_stack, If_stack;
extern int  ac;
extern int  debug, Rval, Verbose, disable, Faillevel, Quit;
extern int  S_histlen;
extern long Uniq;
extern struct Process *Myprocess;
extern long Cin, Cout;
extern char *Cin_name, *Cout_name;
extern char *Pipe1, *Pipe2;
 
extern long Src_base[MAXSRC];
extern long Src_pos[MAXSRC];
extern char If_base[MAXIF];



