#include #include #include #include #include #include /* mycd */ #include /* mykill */ #include #include #include /* isdigit */ /* myps */ #include #include #include /* myls */ /* uid lookup */ #include /* gid lookup */ #include #define TRUE 1 #define FALSE 0 #define OKAY 1 #define ERROR 0 #define MAXLINE 200 /* Maximum length of input line */ #define MAXARG 20 /* Max number of args for each simple command */ #define PIPELINE 5 /* Max number of simple commands in a pipeline */ #define MAXNAME 100 /* Maximum length of i/o redirection filename */ char line[MAXLINE+1]; /* User typed input line */ char *lineptr; /* Pointer to current position in line[] */ char avline[MAXLINE+1]; /* Argv strings taken from line[] */ char *avptr; /* Pointer to current position in avline[] */ char infile[MAXNAME+1]; /* Input redirection filename */ char outfile[MAXNAME+1]; /* Ouput redirection filename */ int backgnd; /* TRUE if & ends pipeline else FALSE */ int lastpid; /* PID of last simple command in pipeline */ int append; /* TRUE for append redirection (?) else FALSE */ struct cmd { char *av[MAXARG]; int infd; int outfd; } cmdlin[PIPELINE]; /* Argvs and fds, one per simple command */ /* simple.c method prototypes */ void initcold(void); void initwarm(void); int getline(void); int parse(void); void command(int i); void execute(int j); void forkexec(struct cmd *ptr); int check (char *ptr); int getname(char *name); /* added */ int builtin(struct cmd *ptr); void mycd(char **argv); int mykill(char **argv); int mypwd(char **argv); int myps(char **argv); int myls (char **argv); /* myls function declarations */ int fullDetails(struct dirent *link, struct stat buf, char current[]); void sortList(char *list[], int count); int cmp(const void *s1, const void *s2);