X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttv%2Flttv%2Foption.c;h=11eb56a71f8624202a602c1885195e1f7551d04f;hb=3667f07d4ba2bc2bae9729ca3d60451475e2a434;hp=148b4c88ad1c4c69d21d4fc7ceea07e4517273d1;hpb=8b0a0cc80e207156081d4aee7b8e52d8f3b22e2f;p=lttv.git diff --git a/lttv/lttv/option.c b/lttv/lttv/option.c index 148b4c88..11eb56a7 100644 --- a/lttv/lttv/option.c +++ b/lttv/lttv/option.c @@ -61,6 +61,20 @@ static void free_option(LttvOption *option) g_free(option); } +static gboolean compare_short_option(gpointer key, + gpointer value, + gpointer user_data) +{ + LttvOption *option = value; + const char short_option = *(const char *)user_data; + + + if(option->char_name == short_option) { + return TRUE; + } else { + return FALSE; + } +} void lttv_option_add(const char *long_name, const char char_name, const char *description, const char *arg_description, @@ -71,9 +85,16 @@ void lttv_option_add(const char *long_name, const char char_name, g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "Add option %s", long_name); if(g_hash_table_lookup(options, long_name) != NULL) { - g_warning("duplicate option"); + g_warning("duplicate long-option: %s", long_name); return; } + if(char_name && g_hash_table_find(options, compare_short_option, (gpointer)&char_name) != NULL) { + g_warning("duplicate short-option: %c for option %s", + char_name, + long_name); + return; + } + option = g_new(LttvOption, 1); option->long_name = g_strdup(long_name);