Ejemplo n.º 1
0
int checkArgs(ARGUMENTS *args, int argc, char **argv)
{
  int i;

  i=1;
  while (i<argc) {
    if (strcmp(argv[i], "--logfile")==0) {
      i++;
      if (i>=argc)
        return RETURNVALUE_PARAM;
      args->logFile=argv[i];
    }
    else if (strcmp(argv[i], "--logtype")==0) {
      i++;
      if (i>=argc)
        return RETURNVALUE_PARAM;
      args->logType=GWEN_Logger_Name2Logtype(argv[i]);
      if (args->logType==GWEN_LoggerType_Unknown) {
        fprintf(stderr,
                I18N("Unknown log type \"%s\"\n"),
                argv[i]);
        return RETURNVALUE_PARAM;
      }
    }
    else if (strcmp(argv[i], "--loglevel")==0) {
      i++;
      if (i>=argc)
        return RETURNVALUE_PARAM;
      args->logLevel=GWEN_Logger_Name2Level(argv[i]);
      if (args->logLevel==GWEN_LoggerLevel_Unknown) {
        fprintf(stderr,
                I18N("Unknown log level \"%s\"\n"),
                argv[i]);
        return RETURNVALUE_PARAM;
      }
    }
    else if (strcmp(argv[i], "-o")==0) {
      i++;
      if (i>=argc)
        return RETURNVALUE_PARAM;
      args->outputFile=argv[i];
    }
    else if (strcmp(argv[i], "-d")==0) {
      i++;
      if (i>=argc)
        return RETURNVALUE_PARAM;
      args->domain=argv[i];
    }
    else if (strcmp(argv[i], "--compact")==0) {
      args->compact=1;
    }
    else if (strcmp(argv[i], "-h")==0 || strcmp(argv[i], "--help")==0) {
      usage(argv[0]);
      return -2;
    }
    else if (strcmp(argv[i], "-V")==0 || strcmp(argv[i], "--version")==0) {
      fprintf(stdout, k_PRG_VERSION_INFO);
      return -2;
    }
    else if (strcmp(argv[i], "-v")==0) {
      args->verbous=1;
    }
    else {
      // otherwise add param
      if (argv[i][0]=='-') {
        fprintf(stderr, I18N("Unknown option \"%s\"\n"), argv[i]);
        return RETURNVALUE_PARAM;
      }
      else
        Arguments_AddParam(args, argv[i]);
    }
    i++;
  } /* while */

  /* that's it */
  return 0;
}
Ejemplo n.º 2
0
int main(int argc, char **argv) {
  int rv;
  GWEN_DB_NODE *db;
  const char *s;
  LC_CLIENT *cl;
  GWEN_LOGGER_LOGTYPE logType;
  GWEN_LOGGER_LEVEL logLevel;
  GWEN_GUI *gui;

  gui=GWEN_Gui_CGui_new();
  GWEN_Gui_SetGui(gui);

  db=GWEN_DB_Group_new("arguments");
  rv=GWEN_Args_Check(argc, argv, 1,
                     GWEN_ARGS_MODE_ALLOW_FREEPARAM,
                     prg_args,
                     db);
  if (rv==GWEN_ARGS_RESULT_HELP) {
    GWEN_BUFFER *ubuf;

    ubuf=GWEN_Buffer_new(0, 256, 0, 1);
    if (GWEN_Args_Usage(prg_args, ubuf, GWEN_ArgsOutType_Txt)) {
      fprintf(stderr, "Could not generate usage string.\n");
      GWEN_Buffer_free(ubuf);
      return RETURNVALUE_PARAM;
    }
    fprintf(stdout,
            I18N("General usage: %s COMMAND [OPTIONS]\n"
                 "Allowed Commands:\n"
                 " This tool accepts the following commands:\n"
                 "  loaded\n"
                 "    show the amount of money stored on the card\n"
                 "  maxload\n"
                 "    show the maximum amount to be stored on the card\n"
                 "  maxxfer\n"
                 "    show the maximum amount which can be transferred "
                 "in one session.\n"
                 "\n"
                 "Allowed Options:\n"),
            argv[0]);
    fprintf(stdout, "%s\n", GWEN_Buffer_GetStart(ubuf));
    GWEN_Buffer_free(ubuf);
    return 0;
  }
  if (rv<1) {
    fprintf(stderr, "ERROR: Error in argument list (%d)\n", rv);
    return RETURNVALUE_PARAM;
  }

  /* setup logging */
  s=GWEN_DB_GetCharValue(db, "loglevel", 0, "warning");
  logLevel=GWEN_Logger_Name2Level(s);
  if (logLevel==GWEN_LoggerLevel_Unknown) {
    fprintf(stderr, "ERROR: Unknown log level (%s)\n", s);
    return RETURNVALUE_PARAM;
  }
  s=GWEN_DB_GetCharValue(db, "logtype", 0, "console");
  logType=GWEN_Logger_Name2Logtype(s);
  if (logType==GWEN_LoggerType_Unknown) {
    fprintf(stderr, "ERROR: Unknown log type (%s)\n", s);
    return RETURNVALUE_PARAM;
  }
  rv=GWEN_Logger_Open(LC_LOGDOMAIN,
		      "geldkarte3",
		      GWEN_DB_GetCharValue(db, "logfile", 0, "geldkarte3.log"),
		      logType,
		      GWEN_LoggerFacility_User);
  if (rv) {
    fprintf(stderr, "ERROR: Could not setup logging (%d).\n", rv);
    return RETURNVALUE_SETUP;
  }
  GWEN_Logger_SetLevel(LC_LOGDOMAIN, logLevel);

  /* get command */
  s=GWEN_DB_GetCharValue(db, "params", 0, 0);
  if (!s) {
    fprintf(stderr, "No command given.\n");
    GWEN_DB_Group_free(db);
    return RETURNVALUE_PARAM;
  }

  cl=LC_Client_new("geldkarte", PROGRAM_VERSION);
  if (LC_Client_Init(cl)) {
    fprintf(stderr, "ERROR: Could not init libchipcard3.\n");
    LC_Client_free(cl);
    GWEN_DB_Group_free(db);
    return RETURNVALUE_SETUP;
  }

  /* handle command */
  if (strcasecmp(s, "loaded")==0) {
    rv=loaded(cl, db);
  }
  else if (strcasecmp(s, "maxload")==0) {
    rv=maxload(cl, db);
  }
  else if (strcasecmp(s, "maxxfer")==0) {
    rv=maxxfer(cl, db);
  }
  else if (strcasecmp(s, "blogs")==0) {
    rv=b_logs(cl, db);
  }
  else {
    fprintf(stderr, "Unknown command \"%s\"", s);
    rv=RETURNVALUE_PARAM;
  }

  LC_Client_free(cl);
  GWEN_DB_Group_free(db);
  return 0;
}