59 lines
1.3 KiB
C
59 lines
1.3 KiB
C
|
/* Conditionally execute the command argv[2] based if the file argv[1] */
|
||
|
/* does not exist. If the command is omitted (and the file does not */
|
||
|
/* exist) then just exit with a non-zero code. */
|
||
|
|
||
|
# include "private/gc_priv.h"
|
||
|
# include <stdio.h>
|
||
|
# include <stdlib.h>
|
||
|
# include <unistd.h>
|
||
|
#ifdef __DJGPP__
|
||
|
#include <dirent.h>
|
||
|
#endif /* __DJGPP__ */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
# define EXECV_ARGV_T char**
|
||
|
#else
|
||
|
# define EXECV_ARGV_T void* /* see the comment in if_mach.c */
|
||
|
#endif
|
||
|
|
||
|
int main(int argc, char **argv)
|
||
|
{
|
||
|
FILE * f;
|
||
|
#ifdef __DJGPP__
|
||
|
DIR * d;
|
||
|
#endif /* __DJGPP__ */
|
||
|
char *fname;
|
||
|
|
||
|
if (argc < 2 || argc > 3)
|
||
|
goto Usage;
|
||
|
|
||
|
fname = TRUSTED_STRING(argv[1]);
|
||
|
f = fopen(fname, "rb");
|
||
|
if (f != NULL) {
|
||
|
fclose(f);
|
||
|
return(0);
|
||
|
}
|
||
|
f = fopen(fname, "r");
|
||
|
if (f != NULL) {
|
||
|
fclose(f);
|
||
|
return(0);
|
||
|
}
|
||
|
#ifdef __DJGPP__
|
||
|
if ((d = opendir(fname)) != 0) {
|
||
|
closedir(d);
|
||
|
return(0);
|
||
|
}
|
||
|
#endif
|
||
|
printf("^^^^Starting command^^^^\n");
|
||
|
fflush(stdout);
|
||
|
if (argc == 2)
|
||
|
return(2); /* the file does not exist but no command is given */
|
||
|
|
||
|
execvp(TRUSTED_STRING(argv[2]), (EXECV_ARGV_T)(argv + 2));
|
||
|
exit(1);
|
||
|
|
||
|
Usage:
|
||
|
fprintf(stderr, "Usage: %s file_name [command]\n", argv[0]);
|
||
|
return(1);
|
||
|
}
|