
/*
 * 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);
}


