static void handle_options(int argc, char **argv) { while (1) { int option_index = 0, c; static struct option long_options[] = { {"help", 0, 0, 'h'}, {"debug", 1, 0, 'd'}, {"daemonize", 0, 0, 'D'}, {"config-file", 1, 0, 'c'}, {"disable-color", 0, 0, 's'}, {"timestamp", 0, 0, 'T'}, {"local", 1, 0, 'l'}, {"log-level", 1, 0, 'e'}, {"rf-ctl", 1, 0, 'r'}, {"testmode", 0, 0, 't'}, {0, 0, 0, 0} }; c = getopt_long(argc, argv, "hd:DsTc:e:r:t", long_options, &option_index); if (c == -1) break; switch (c) { case 'h': print_usage(); print_help(); exit(0); case 's': log_set_use_color(osmo_stderr_target, 0); break; case 'd': log_parse_category_mask(osmo_stderr_target, optarg); break; case 'D': daemonize = 1; break; case 'c': config_file = strdup(optarg); break; case 'T': log_set_print_timestamp(osmo_stderr_target, 1); break; case 'e': log_set_log_level(osmo_stderr_target, atoi(optarg)); break; case 'r': rf_ctl = optarg; break; default: /* ignore */ break; } } }
int main(int argc, char **argv) { void *ctx = talloc_named_const(NULL, 0, "oap_client_test"); msgb_talloc_ctx_init(ctx, 0); osmo_init_logging2(ctx, &info); OSMO_ASSERT(osmo_stderr_target); log_set_use_color(osmo_stderr_target, 0); log_set_print_timestamp(osmo_stderr_target, 0); log_set_print_filename(osmo_stderr_target, 0); log_set_print_category(osmo_stderr_target, 1); log_parse_category_mask(osmo_stderr_target, "DLOAP,1"); test_oap_api(); printf("Done\n"); return 0; }
/** * Initialize the logging system for the virtual physical layer. */ int ms_log_init(char *cat_mask) { struct log_target *stderr_target; log_init(&ms_log_info, NULL); stderr_target = log_target_create_stderr(); if (!stderr) return -1; log_add_target(stderr_target); log_set_all_filter(stderr_target, 1); //log_set_log_level(stderr_target, 1); log_set_print_filename(stderr_target, 1); log_set_use_color(stderr_target, 0); log_set_print_timestamp(stderr_target, 1); log_set_print_category(stderr_target, 1); if (cat_mask) log_parse_category_mask(stderr_target, cat_mask); return 0; }
static void handle_options(struct cmdline_cfg *ccfg, int argc, char **argv) { while (1) { int option_index = 0, c; static struct option long_options[] = { {"help", 0, 0, 'h'}, {"debug", 1, 0, 'd'}, {"daemonize", 0, 0, 'D'}, {"config-file", 1, 0, 'c'}, {"disable-color", 0, 0, 's'}, {"timestamp", 0, 0, 'T'}, {"log-level", 1, 0, 'e'}, {"restart-file", 1, 0, 'r'}, {NULL, 0, 0, 0} }; c = getopt_long(argc, argv, "hd:Dc:sTe:r:", long_options, &option_index); if (c == -1) { if (optind < argc) { LOGP(DGTPHUB, LOGL_FATAL, "Excess commandline arguments ('%s').\n", argv[optind]); exit(2); } break; } switch (c) { case 'h': //print_usage(); print_help(ccfg); exit(0); case 's': log_set_use_color(osmo_stderr_target, 0); break; case 'd': if (strcmp("list", optarg) == 0) { list_categories(); exit(0); } else log_parse_category_mask(osmo_stderr_target, optarg); break; case 'D': ccfg->daemonize = 1; break; case 'c': ccfg->config_file = optarg; break; case 'T': log_set_print_timestamp(osmo_stderr_target, 1); break; case 'e': log_set_log_level(osmo_stderr_target, atoi(optarg)); break; case 'r': ccfg->restart_counter_file = optarg; break; default: LOGP(DGTPHUB, LOGL_FATAL, "Invalid command line argument, abort.\n"); exit(1); break; } } }
/* FIXME: finally get some option parsing code into libosmocore */ static void handle_options(int argc, char **argv) { char *argv_out[argc]; int argc_out = 0; argv_out[argc_out++] = argv[0]; /* disable generation of error messages on encountering unknown * options */ opterr = 0; while (1) { int option_idx = 0, c; static const struct option long_options[] = { /* FIXME: all those are generic Osmocom app options */ { "help", 0, 0, 'h' }, { "debug", 1, 0, 'd' }, { "daemonize", 0, 0, 'D' }, { "config-file", 1, 0, 'c' }, { "disable-color", 0, 0, 's' }, { "timestamp", 0, 0, 'T' }, { "version", 0, 0, 'V' }, { "log-level", 1, 0, 'e' }, /* FIXME: generic BTS app options */ { "gsmtap-ip", 1, 0, 'i' }, { "trx-num", 1, 0, 't' }, { "realtime", 1, 0, 'r' }, { 0, 0, 0, 0 } }; c = getopt_long(argc, argv, "-hc:d:Dc:sTVe:i:t:r:", long_options, &option_idx); if (c == -1) break; switch (c) { case 'h': print_help(); exit(0); break; case 's': log_set_use_color(osmo_stderr_target, 0); break; case 'd': log_parse_category_mask(osmo_stderr_target, optarg); break; case 'D': daemonize = 1; break; case 'c': config_file = optarg; break; case 'T': log_set_print_timestamp(osmo_stderr_target, 1); break; case 'V': print_version(1); exit(0); break; case 'e': log_set_log_level(osmo_stderr_target, atoi(optarg)); break; case 'r': rt_prio = atoi(optarg); break; case 'i': gsmtap_ip = optarg; break; case 't': trx_num = atoi(optarg); if (trx_num < 1) trx_num = 1; break; case '?': case 1: /* prepare argv[] for bts_model */ argv_out[argc_out++] = argv[optind-1]; break; default: break; } } /* re-set opt-ind for new parsig round */ optind = 1; /* enable error-checking for the following getopt call */ opterr = 1; if (bts_model_handle_options(argc_out, argv_out)) { print_help(); exit(1); } }