int main(int argc, char ** argv) {
    
    CU_ErrorCode rc;
    
    /* acknowledge+hide "unused parameter" compiler warnings */
    ACKNOWLEDGED_UNUSED(argc);
    ACKNOWLEDGED_UNUSED(argv);
    
    /* seed rng */
    srand((unsigned int)time(NULL));
    
    /* initialize the CUnit test registry */
    if (CUE_SUCCESS != CU_initialize_registry())
    {
        return CU_get_error();
    }
    
    
    /* ================ Add Test Suites to registry ================= */
    
    /* Test suite for Parallel Libmboard */
    if(testsuite_mb_parallel() != CUE_SUCCESS) return clean_quit();
 

    /* -------------------------------------------------------------- */
    
    
    /* Run all tests using the CUnit Basic interface */
    CU_basic_set_mode(CU_BRM_VERBOSE);
    rc = CU_basic_run_tests();
    
    /* clean up registry and quit */
    return clean_quit();
}
Esempio n. 2
0
/*!
 *\brief	this handler will probably evolve into
 *		something better.
 */
static void crash_handler(int sig)
{
    pid_t pid;
    static volatile unsigned long crashed_ = 0;

    /*
     * let's hope argv0 aren't trashed.
     * both are defined in main.c.
     */
    extern gchar *argv0;


    /*
     * besides guarding entrancy it's probably also better
     * to mask off signals
     */
    if (crashed_) return;

    crashed_++;

#ifdef SIGTERM
    if (sig == SIGTERM)
        clean_quit(NULL);
#endif

    /*
     * gnome ungrabs focus, and flushes gdk. mmmh, good idea.
     */
    gdk_pointer_ungrab(GDK_CURRENT_TIME);
    gdk_keyboard_ungrab(GDK_CURRENT_TIME);
    gdk_flush();

    if (0 == (pid = fork())) {
        char buf[50];
        char *args[5];

        /*
         * probably also some other parameters (like GTK+ ones).
         * also we pass the full startup dir and the real command
         * line typed in (argv0)
         */
        args[0] = argv0;
        args[1] = "--debug";
        args[2] = "--crash";
        sprintf(buf, "%d,%d,%s", getppid(), sig, argv0);
        args[3] = buf;
        args[4] = NULL;

        chdir(sylpheed_get_startup_dir());
        setgid(getgid());
        setuid(getuid());
        execvp(argv0, args);
    } else {
        waitpid(pid, NULL, 0);
        crash_cleanup_exit();
        _exit(253);
    }

    _exit(253);
}