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; }
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; }