00001 #include <config.h> 00002 00003 #include <stdio.h> 00004 #include <stdlib.h> 00005 #include <string.h> 00006 #include <signal.h> 00007 00008 #include <debug.h> 00009 #include <drive.h> 00010 #include <drivers/drivers.h> 00011 #include <recorder.h> 00012 #include <conf.h> 00013 00015 00021 RETSIGTYPE signal_handler(int signal) { 00022 switch(signal) { 00023 case SIGINT: 00024 case SIGABRT: 00025 case SIGTERM: 00026 recorder_export(); 00027 exit(-1); 00028 default: 00029 break; 00030 } 00031 #if(RETSIGTYPE != void) 00032 return 0; 00033 #endif 00034 } 00035 00037 00044 int main(int argc, char **argv) { 00045 void *data; 00046 00047 read_conf((argc > 1) ? argv[1] : NULL); 00048 00049 recorder_init(); 00050 signal(SIGINT, signal_handler); 00051 signal(SIGABRT, signal_handler); 00052 signal(SIGTERM, signal_handler); 00053 00054 data = conf.driver->alloc(); 00055 00056 drive(conf.driver->drive, data); 00057 00058 conf.driver->free(data); 00059 00060 recorder_export(); 00061 00062 return 0; 00063 }