home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / mint / mntutl95.lzh / MNTUTL95 / RUN.C < prev    next >
C/C++ Source or Header  |  1993-08-03  |  979b  |  65 lines

  1. /*
  2.  * compiling this requires the GCC library, and/or the spawnvp found
  3.  * in the init directory
  4.  */
  5.  
  6. #include <stdio.h>
  7. #include <process.h>
  8. #include <osbind.h>
  9. #include <errno.h>
  10. #include <mintbind.h>
  11.  
  12. void
  13. usage()
  14. {
  15.     fprintf(stderr, "Usage: run [-o file] program [args ... ]\n");
  16.     exit(2);
  17. }
  18.  
  19. int
  20. main(argc, argv)
  21.     int argc;
  22.     char **argv;
  23. {
  24.     long r;
  25.     int olderr;
  26.     int oldpgrp;
  27.     char *name;
  28.  
  29.     if (!argv[1]) {
  30.         usage();
  31.     }
  32.  
  33.     olderr = Fdup(2);
  34.     argv++;
  35.     name = *argv;
  36.     if (!strcmp(name, "-o")) {
  37.         name = *++argv;
  38.         if (!name) usage();
  39.         r = Fcreate(name, 0);
  40.         if (r < 0) {
  41.             errno = -r;
  42.             perror(name);
  43.             exit(1);
  44.         }
  45.         name = *++argv;
  46.         if (!name) usage();
  47.  
  48.     /* redirect stdin, stdout, stderr, and the control terminal (-1) */
  49.         Fforce(-1, r);
  50.         Fforce(0, r);
  51.         Fforce(1, r);
  52.         Fforce(2, r);
  53.     }
  54.  
  55.     r = spawnvp(P_WAIT, name, argv);
  56.  
  57.     Fforce(2, olderr);
  58.  
  59.     if (r < 0) {
  60.         perror(name);
  61.         exit(2);
  62.     }
  63.     exit(r);
  64. }
  65.