/* * RUN.C * * (c)1986 Matthew Dillon 9 October 1986 * * RUN handles running of external commands. * */ #include "shell.h" #include "libraries/dos.h" extern long *SysRegs; do_run(str) char *str; { int i; if (fexecv(av[0], av, Cin_name, Cout_name, Cout_append) >= 0) { i = wait(); } else { register long lock; char buf[128]; register char *copy; lock = Lock(FindIt(av[0], ".sh", buf), ACCESS_READ); if (lock == NULL) { Eputs("Command Not Found"); return (-1); } UnLock(lock); av[1] = buf; /* particular to do_source() */ copy = malloc(strlen(str)+3); strcpy(copy+2,str); copy[0] = 'x'; copy[1] = ' '; i = do_source(copy); free(copy); } return (i); }