/*
 * Ostermann's shell header file
 */


#define MAX_ARGS 100


/* This is the definition of a command */
struct command {
    char *command; /* nema of the command of this pipe */
    int argc; /* number of the arguments for this pipe */
    char *argv[MAX_ARGS]; /* content of the arguments for this pipe */
    char *infile; /* infile name for this pipe, NULL for N/A, only valid for first pipe */
    char *outfile; /* outfile name for this pipe, NULL for N/A, only valid for last pipe */ 
    char *errfile; /* error outfile name for this pipe, NULL for N/A */ 

    
    int output_append; /* boolean: append stdout? */
    int error_append;  /* boolean: append stderr? */
    int is_back;       /* boolean: background task?  same valur for all pipe in one line*/

    struct command *nextpipe; /* point point to next pipe */
};


/* externals */
extern int yydebug;


/* global routine decls */
void doline(struct command *pass);
int yyparse(void);