/* main: {{{2 */ int main( int argc, char **argv) { Initdbg((&argc,argv)); rdcolor(); f1(0); f2(); Rdbg(("main 0")); return 0; }
/** * Fonction principale * @param argc nombre d'arguments * @param argv tableau d'arguments * @return program exit code */ int main(int argc, char *argv[]) { /* debug trace start */ Edbg(("main(argc=%d, argv=%s)", argc, argv[0])); Initdbg((&argc, argv)); int c; char display_opengl = FALSE; int ret; static struct sigaction act; /* on récupère les options */ while ( (c = getopt(argc, argv, "hga:z:")) >= 0) { switch (c) { case 'h': /* print help */ print_usage(); Rdbg(("main return EXIT_SUCCESS")); return EXIT_SUCCESS; case 'g': /* display in OpenGL */ display_opengl = TRUE; break; case 'z': /* display in OpenGL */ g_zoomim = strtod(optarg, (char **)NULL); break; case 'a': /* nombre de keyframes dans l'animation OpenGL */ g_anim_nb_keyframes = strtol(optarg, (char **)NULL, 10);; break; } } /* il faut le nom du fichier de commandes dans les arguments */ if ((argc-optind) != 1) { print_usage(); Rdbg(("main return EXIT_FAILURE")); return EXIT_FAILURE; } /* on catche le Ctrl-C */ act.sa_handler = terminate_program_catch; sigfillset(&(act.sa_mask)); sigaction(SIGINT, &act, NULL); /* on charge les commandes */ ret = execute_commands(argv[optind]); if (ret != RETURN_SUCCESS) { destroy_cameras(); return EXIT_FAILURE; } /* on vérifie qu'il y a bien au moins 2 caméras chargées */ if (g_cameras.nb < 2) { fprintf(stderr, "Il faut charger au moins 2 caméras!\n"); destroy_cameras(); return EXIT_FAILURE; } /* affichage */ if (TRUE == display_opengl) { /* on utilise atexit car glut ne dit pas quand il quitte le programme * (ce gros malin...) * cf 3.070 http://users.frii.com/martz/oglfaq/glut.htm * update: depuis j'utilise SDL mais je garde quand même atexit... */ atexit(terminate_program); init_display(); start_display(); destroy_display(); } /* nettoyage */ destroy_cameras(); /* debug trace end */ Rdbg(("main EXIT_SUCCESS")); return EXIT_SUCCESS; }