diff options
author | Holger Freyther <zecke@selfish.org> | 2008-12-27 12:46:51 +0000 |
---|---|---|
committer | Holger Freyther <zecke@selfish.org> | 2008-12-27 12:46:51 +0000 |
commit | b332f61f0d79b4285e0d872f79d99e4046ef8d4b (patch) | |
tree | 7d7079b605a60d563e32f75f5d940424a33116dd | |
parent | 5ee72eeeb1d513c5702c72e19ba6becd47d02158 (diff) |
Use getopt in the bsc_hack to parse options
Current options include a draft of the help screen, an option
to disable the colors and to specify the debug categories to
show.
-rw-r--r-- | include/openbsc/debug.h | 1 | ||||
-rw-r--r-- | src/bsc_hack.c | 53 | ||||
-rw-r--r-- | src/debug.c | 5 |
3 files changed, 59 insertions, 0 deletions
diff --git a/include/openbsc/debug.h b/include/openbsc/debug.h index dcb74c03f..018a11657 100644 --- a/include/openbsc/debug.h +++ b/include/openbsc/debug.h @@ -19,5 +19,6 @@ void debugp(unsigned int subsys, char *file, int line, const char *format, ...); void debug_parse_category_mask(const char* mask); +void debug_use_color(int use_color); #endif /* _DEBUG_H */ diff --git a/src/bsc_hack.c b/src/bsc_hack.c index aa2b58506..a8f5a8962 100644 --- a/src/bsc_hack.c +++ b/src/bsc_hack.c @@ -27,6 +27,9 @@ #include <string.h> #include <errno.h> +#define _GNU_SOURCE +#include <getopt.h> + #include <openbsc/gsm_data.h> #include <openbsc/select.h> #include <openbsc/abis_rsl.h> @@ -581,8 +584,58 @@ static int bootstrap_network(void) return 0; } +static void print_usage() +{ + printf("Usage: bsc_hack\n"); +} + +static void print_help() +{ + printf(" Some useful help...\n"); + printf(" -d option --debug=DRLL:DCC:DMM:DRR:DRSL:DNM enable debugging\n"); + printf(" -n --disable-color\n"); + printf(" -h --help this text\n"); +} + +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'}, + {"disable-color", 0, 0, 'n'}, + {0, 0, 0, 0} + }; + + c = getopt_long(argc, argv, "hnd:", + long_options, &option_index); + if (c == -1) + break; + + switch (c) { + case 'h': + print_usage(); + print_help(); + exit(0); + case 'n': + debug_use_color(0); + break; + case 'd': + debug_parse_category_mask(optarg); + break; + default: + /* ignore */ + break; + } + } +} + int main(int argc, char **argv) { + /* parse options */ + handle_options(argc, argv); + bootstrap_network(); while (1) { diff --git a/src/debug.c b/src/debug.c index c1bebcab1..27fdb9ceb 100644 --- a/src/debug.c +++ b/src/debug.c @@ -53,6 +53,11 @@ static const struct debug_info debug_info[] = { static int use_color = 1; +void debug_use_color(int color) +{ + use_color = color; +} + /* * Parse the category mask. * category1:category2:category3 |