/* Conditionally execute a command based on machine and OS from gcconfig.h */ # include "private/gc_priv.h" # include # include # include #ifdef __cplusplus # define EXECV_ARGV_T char** #else /* The 2nd argument of execvp() prototype may be either char**, or */ /* char* const*, or const char* const*. */ # define EXECV_ARGV_T void* #endif int main(int argc, char **argv) { if (argc < 4) goto Usage; if (strcmp(MACH_TYPE, argv[1]) != 0) return 0; if (strlen(OS_TYPE) > 0 && strlen(argv[2]) > 0 && strcmp(OS_TYPE, argv[2]) != 0) return 0; fprintf(stderr, "^^^^Starting command^^^^\n"); fflush(stdout); execvp(TRUSTED_STRING(argv[3]), (EXECV_ARGV_T)(argv + 3)); perror("Couldn't execute"); Usage: fprintf(stderr, "Usage: %s mach_type os_type command\n", argv[0]); fprintf(stderr, "Currently mach_type = %s, os_type = %s\n", MACH_TYPE, OS_TYPE); return 1; }