/** * Usage: * build <package dir> [--destdir <destination>] [-march=<arch>] --cppflags --cflags -ldflags * */ int main( int argc, char** argv ) { int mem_start = CRuntime_GetAllocationCount(); int mem_stop; int status = 1; Arguments* arguments = Arguments_new( argc, argv ); if ( Arguments_isHelp( arguments ) ) { printUsage(); exit(0); } else if ( Arguments_isInvalid( arguments ) ) { printUsage(); exit(0); } if ( Arguments_isVersion( arguments ) ) { fprintf( stdout, "build %s\n", BuildManager_GetVersion() ); exit(0); } status = dobuild( arguments ); Arguments_delete( arguments ); if ( !status ) { fprintf( stderr, "build: Exiting due to error.\n" ); } mem_stop = CRuntime_GetAllocationCount(); #ifdef DEBUG_MEMORY fprintf( stderr, "build: Memory leaked: %i\n", mem_stop - mem_start ); #endif return !status; }
int main(int argc, char **argv) { ARGUMENTS *args; int rv; FREEPARAM *fp; AQBACKUP *b; AQB_INTERACTOR *ia; CONFIGGROUP *cfg; CONFIGGROUP *outcfg; char configfilebuffer[300]; #ifdef HAVE_GETTEXT_ENVIRONMENT setlocale(LC_ALL,""); if (bindtextdomain("aqbackup", I18N_PATH)==0) { fprintf(stderr," Error bindtextdomain()\n"); } if (textdomain("aqbackup")==0) { fprintf(stderr," Error textdomain()\n"); } #endif args=Arguments_new(); rv=checkArgs(args,argc,argv); if (rv==-1) { Arguments_free(args); return 0; } else if (rv) { Arguments_free(args); return rv; } if (Logger_Open("AQBackup", args->logFile, args->logType, LoggerFacilityUser)) { fprintf(stderr,I18N("Could not setup logging, aborting.\n")); return 2; } Logger_SetLevel(args->logLevel); if (args->configFile==0) { char *p; p=getHomeDir(configfilebuffer, sizeof(configfilebuffer)); if (!p) return 2; p="/.aqbackup"; if (strlen(p)+strlen(configfilebuffer)>=sizeof(configfilebuffer)) { DBG_ERROR("Buffer too small"); return 2; } strcat(configfilebuffer, p); /* check whether that file exists */ if (access(configfilebuffer, F_OK)) args->configFile=AQBACKUPC_CFGFILE; else args->configFile=configfilebuffer; } cfg=Config_new(); rv=Config_ReadFile(cfg, args->configFile, CONFIGMODE_ALLOW_GROUPS | CONFIGMODE_REMOVE_QUOTES | CONFIGMODE_REMOVE_STARTING_BLANKS | CONFIGMODE_REMOVE_TRAILING_BLANKS ); if (rv) { DBG_ERROR("Could not read configuration file."); Arguments_free(args); Config_free(cfg); return 1; } b=AQBackup_new(); /* setup interactor */ ia=AQBInteractor_new(); switch(args->verbosity) { case 0: break; case 1: AQBInteractor_SetLevel(ia, InteractorLevelVerbous); break; case 2: AQBInteractor_SetLevel(ia, InteractorLevelVeryVerbous); break; case 3: default: AQBInteractor_SetLevel(ia, InteractorLevelExtremelyVerbous); break; } /* switch */ AQBackup_SetInteractor(b, ia); rv=AQBackup_Init(b, cfg); if (rv) { DBG_ERROR("Could not init"); AQBackup_free(b); Arguments_free(args); Config_free(cfg); AQBInteractor_free(ia); return 2; } fp=args->params; if (fp) { /* unlink */ args->params=fp->next; if (strcasecmp(fp->param, "store")==0) { rv=store(b, args, cfg); } else if (strcasecmp(fp->param, "restore")==0) { rv=restore(b, args, cfg); } else if (strcasecmp(fp->param, "diff")==0) { rv=showdiffs(b, args, cfg); } else if (strcasecmp(fp->param, "create")==0) { rv=createbak(b, args, cfg); } else { fprintf(stderr, I18N("Unknown command \"%s\"\n"), fp->param); rv=1; } FreeParam_free(fp); } else { usage(argv[0]); } outcfg=Config_new(); if (AQBackup_Fini(b, outcfg)) { DBG_ERROR("Error deinitializing AqBackup"); } if (args->allowSaveCfg && rv==0) { int lrv; lrv=Config_WriteFile(outcfg, args->configFile, CONFIGMODE_ALLOW_GROUPS | CONFIGMODE_OVERWRITE_VARS | CONFIGMODE_REMOVE_QUOTES | CONFIGMODE_REMOVE_STARTING_BLANKS | CONFIGMODE_REMOVE_TRAILING_BLANKS ); if (lrv) { DBG_ERROR("Could not write configuration file."); rv=9; } } Config_free(outcfg); AQBackup_free(b); AQBInteractor_free(ia); Arguments_free(args); Config_free(cfg); return rv; }