Exemplo n.º 1
0
/**
 *  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;
}
Exemplo n.º 2
0
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;
}