home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / mint / mntlib16.lzh / MNTLIB16 / EXEC.C < prev    next >
C/C++ Source or Header  |  1993-08-03  |  2KB  |  96 lines

  1. /*
  2.     execxxx stuff for MiNT/TOS; written by Eric R. Smith, and
  3.     placed in the public domain
  4. */
  5.  
  6. #include <stdarg.h>
  7. #include <process.h>
  8. #include <stdio.h>
  9. #include <errno.h>
  10.  
  11. extern char **environ;
  12.  
  13. int
  14. execve(path, argv, envp)
  15.     char    *path;
  16.     char    **argv;
  17.     char    **envp;
  18. {
  19.     return _spawnve(P_OVERLAY, path, argv, envp);
  20. }
  21.  
  22. int
  23. execv(path, argv)
  24.     char *path;
  25.     char **argv;
  26. {
  27.     return _spawnve(P_OVERLAY, path, argv, environ);
  28. }
  29.  
  30. #ifdef __STDC__
  31. int execle(char *path, ...)
  32. #else
  33. int execle(path)
  34.     char    *path;
  35. #endif
  36. {
  37.     va_list args;
  38.     char    ***envp;
  39.  
  40.     va_start(args, path);
  41.  
  42.     for (envp = (char ***) args ; *envp ; envp++)
  43.         ;
  44.     return _spawnve(P_OVERLAY, path, (char **)args, *(envp+1));
  45. }
  46.  
  47. #ifdef __STDC__
  48. int execl(char *path, ...)
  49. #else
  50. int execl(path)
  51.     char    *path;
  52. #endif
  53. {
  54.     va_list args;
  55.  
  56.     va_start(args, path);
  57.     return _spawnve(P_OVERLAY, path, (char **)args, environ);
  58. }
  59.  
  60. /* execvp, execlp: try to execute a program on the default system
  61.    execution path. WARNING: the current directory is always searched
  62.    first.
  63. */
  64.  
  65. extern char *findfile(), *getenv();
  66.  
  67. static char *extensions[] = { "ttp", "prg", "tos", NULL };
  68.  
  69. int
  70. execvp(name, argv)
  71.     char *name;
  72.     char **argv;
  73. {
  74.     char *execname;
  75.  
  76.     execname = findfile(name, getenv("PATH"), extensions);
  77.     if (!execname) {
  78.         errno = ENOENT;
  79.         return -1;        /* file not found */
  80.     }
  81.     return _spawnve(P_OVERLAY, execname, argv, (char **)NULL);
  82. }
  83.  
  84. #ifdef __STDC__
  85. int execlp(char *name, ...)
  86. #else
  87. int execlp(name)
  88.     char    *name;
  89. #endif
  90. {
  91.     va_list args;
  92.  
  93.     va_start(args, name);
  94.     return execvp(name, (char **)args);
  95. }
  96.