autodriver/autodriver.c
static int call_program(char *path, char *argv[]) {
    int status;
    pid_t pid = call_program_async(path, argv);

    // TODO: Timeouts?
    waitpid(pid, &status, 0);
    return WEXITSTATUS(status);
}
/**
 * @brief Calls an external program
 *
 * Since this is a setuid binary, we shouldn't use system()
 *
 * @arg path Path to program to run
 * @arg argv NULL terminated array of arguments
 */
@brief Calls an external program
Since this is a setuid binary, we shouldn't use system()

@arg path Path to program to run
@arg argv NULL terminated array of arguments
@brief Calls an external program Since this is a setuid binary we shouldn ' t use system () @arg path Path to program to run @arg argv NULL terminated array of arguments
static int call_program(char *path, char *argv[]) {
    int status;
    pid_t pid = call_program_async(path, argv);
    waitpid(pid, &status, 0);
    return WEXITSTATUS(status);
}
static int call_program ( char * path , char * argv [ ] ) { int status ; pid_t pid = call_program_async ( path , argv ) ; waitpid ( pid , & status , 0 ) ; return WEXITSTATUS ( status ) ; }
@brief Calls an external program
 Since this is a setuid binary, we shouldn't use system()
@brief Calls an external program Since this is a setuid binary we shouldn ' t use system ()
// TODO: Timeouts?