/* 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 # include # include #ifdef __DJGPP__ #include #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; }