aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2008-12-27 12:46:51 +0000
committerHolger Freyther <zecke@selfish.org>2008-12-27 12:46:51 +0000
commitb332f61f0d79b4285e0d872f79d99e4046ef8d4b (patch)
tree7d7079b605a60d563e32f75f5d940424a33116dd /src
parent5ee72eeeb1d513c5702c72e19ba6becd47d02158 (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.
Diffstat (limited to 'src')
-rw-r--r--src/bsc_hack.c53
-rw-r--r--src/debug.c5
2 files changed, 58 insertions, 0 deletions
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