From a62b3c15de6b48619d9cee17b391c497b4a4cf7a Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 12 Sep 2014 16:07:23 -0700 Subject: Minor cleanup in locale.c --- locale/programs/locale.c | 263 +++++++++++++++++++++++------------------------ 1 file changed, 128 insertions(+), 135 deletions(-) (limited to 'locale') diff --git a/locale/programs/locale.c b/locale/programs/locale.c index 4b3d15a..c9660e9 100644 --- a/locale/programs/locale.c +++ b/locale/programs/locale.c @@ -792,188 +792,181 @@ print_assignment (const char *name, const char *val, bool dquote) static void show_locale_vars (void) { - size_t cat_no; - const char *lcall = getenv ("LC_ALL") ? : ""; - const char *lang = getenv ("LANG") ? : ""; - - auto void get_source (const char *name); - - void get_source (const char *name) - { - char *val = getenv (name); - - if (lcall[0] != '\0' || val == NULL) - print_assignment (name, lcall[0] ? lcall : lang[0] ? lang : "POSIX", - true); - else - print_assignment (name, val, false); - } + const char *lcall = getenv ("LC_ALL") ?: ""; + const char *lang = getenv ("LANG") ?: ""; /* LANG has to be the first value. */ print_assignment ("LANG", lang, false); /* Now all categories in an unspecified order. */ - for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) + for (size_t cat_no = 0; cat_no < NCATEGORIES; ++cat_no) if (cat_no != LC_ALL) - get_source (category[cat_no].name); + { + const char *name = category[cat_no].name; + const char *val = getenv (name); + + if (lcall[0] != '\0' || val == NULL) + print_assignment (name, + lcall[0] != '\0' ? lcall + : lang[0] != '\0' ? lang + : "POSIX", + true); + else + print_assignment (name, val, false); + } /* The last is the LC_ALL value. */ print_assignment ("LC_ALL", lcall, false); } -/* Show the information request for NAME. */ +/* Subroutine of show_info, below. */ static void -show_info (const char *name) +print_item (struct cat_item *item) { - size_t cat_no; - - auto void print_item (struct cat_item *item); - - void print_item (struct cat_item *item) + switch (item->value_type) { - switch (item->value_type) - { - case string: - if (show_keyword_name) - printf ("%s=\"", item->name); - fputs (nl_langinfo (item->item_id) ? : "", stdout); - if (show_keyword_name) - putchar ('"'); - putchar ('\n'); - break; - case stringarray: - { - int cnt; - const char *val; - - if (show_keyword_name) - printf ("%s=\"", item->name); + case string: + if (show_keyword_name) + printf ("%s=\"", item->name); + fputs (nl_langinfo (item->item_id) ? : "", stdout); + if (show_keyword_name) + putchar ('"'); + putchar ('\n'); + break; + case stringarray: + { + const char *val; + int cnt; - for (cnt = 0; cnt < item->max - 1; ++cnt) - { - val = nl_langinfo (item->item_id + cnt); - if (val != NULL) - fputs (val, stdout); - putchar (';'); - } + if (show_keyword_name) + printf ("%s=\"", item->name); + for (cnt = 0; cnt < item->max - 1; ++cnt) + { val = nl_langinfo (item->item_id + cnt); if (val != NULL) fputs (val, stdout); - - if (show_keyword_name) - putchar ('"'); - putchar ('\n'); + putchar (';'); } - break; - case stringlist: + + val = nl_langinfo (item->item_id + cnt); + if (val != NULL) + fputs (val, stdout); + + if (show_keyword_name) + putchar ('"'); + putchar ('\n'); + } + break; + case stringlist: + { + int first = 1; + const char *val = nl_langinfo (item->item_id) ? : ""; + + if (show_keyword_name) + printf ("%s=", item->name); + + for (int cnt = 0; cnt < item->max && *val != '\0'; ++cnt) { - int first = 1; - const char *val = nl_langinfo (item->item_id) ? : ""; - int cnt; - - if (show_keyword_name) - printf ("%s=", item->name); - - for (cnt = 0; cnt < item->max && *val != '\0'; ++cnt) - { - printf ("%s%s%s%s", first ? "" : ";", - show_keyword_name ? "\"" : "", val, - show_keyword_name ? "\"" : ""); - val = strchr (val, '\0') + 1; - first = 0; - } - putchar ('\n'); + printf ("%s%s%s%s", first ? "" : ";", + show_keyword_name ? "\"" : "", val, + show_keyword_name ? "\"" : ""); + val = strchr (val, '\0') + 1; + first = 0; } - break; - case byte: - { - const char *val = nl_langinfo (item->item_id); + putchar ('\n'); + } + break; + case byte: + { + const char *val = nl_langinfo (item->item_id); - if (show_keyword_name) - printf ("%s=", item->name); + if (show_keyword_name) + printf ("%s=", item->name); - if (val != NULL) - printf ("%d", *val == '\377' ? -1 : *val); - putchar ('\n'); - } - break; - case bytearray: + if (val != NULL) + printf ("%d", *val == '\377' ? -1 : *val); + putchar ('\n'); + } + break; + case bytearray: + { + const char *val = nl_langinfo (item->item_id); + int cnt = val ? strlen (val) : 0; + + if (show_keyword_name) + printf ("%s=", item->name); + + while (cnt > 1) { - const char *val = nl_langinfo (item->item_id); - int cnt = val ? strlen (val) : 0; + printf ("%d;", *val == '\177' ? -1 : *val); + --cnt; + ++val; + } - if (show_keyword_name) - printf ("%s=", item->name); + printf ("%d\n", cnt == 0 || *val == '\177' ? -1 : *val); + } + break; + case word: + { + union { unsigned int word; char *string; } val; + val.string = nl_langinfo (item->item_id); + if (show_keyword_name) + printf ("%s=", item->name); - while (cnt > 1) - { - printf ("%d;", *val == '\177' ? -1 : *val); - --cnt; - ++val; - } + printf ("%d\n", val.word); + } + break; + case wordarray: + { + int first = 1; + union { unsigned int *wordarray; char *string; } val; - printf ("%d\n", cnt == 0 || *val == '\177' ? -1 : *val); - } - break; - case word: - { - union { unsigned int word; char *string; } val; - val.string = nl_langinfo (item->item_id); - if (show_keyword_name) - printf ("%s=", item->name); + val.string = nl_langinfo (item->item_id); + if (show_keyword_name) + printf ("%s=", item->name); - printf ("%d\n", val.word); - } - break; - case wordarray: + for (int cnt = 0; cnt < item->max; ++cnt) { - int first = 1; - union { unsigned int *wordarray; char *string; } val; - int cnt; - - val.string = nl_langinfo (item->item_id); - if (show_keyword_name) - printf ("%s=", item->name); - - for (cnt = 0; cnt < item->max; ++cnt) - { - printf ("%s%d", first ? "" : ";", val.wordarray[cnt]); - first = 0; - } - putchar ('\n'); + printf ("%s%d", first ? "" : ";", val.wordarray[cnt]); + first = 0; } - break; - case wstring: - case wstringarray: - case wstringlist: - /* We don't print wide character information since the same - information is available in a multibyte string. */ - default: - break; - - } + putchar ('\n'); + } + break; + case wstring: + case wstringarray: + case wstringlist: + /* We don't print wide character information since the same + information is available in a multibyte string. */ + default: + break; } +} - for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) +/* Show the information request for NAME. */ +static void +show_info (const char *name) +{ + for (size_t cat_no = 0; cat_no < NCATEGORIES; ++cat_no) if (cat_no != LC_ALL) { - size_t item_no; - if (strcmp (name, category[cat_no].name) == 0) /* Print the whole category. */ { if (show_category_name != 0) puts (category[cat_no].name); - for (item_no = 0; item_no < category[cat_no].number; ++item_no) + for (size_t item_no = 0; + item_no < category[cat_no].number; + ++item_no) print_item (&category[cat_no].item_desc[item_no]); return; } - for (item_no = 0; item_no < category[cat_no].number; ++item_no) + for (size_t item_no = 0; item_no < category[cat_no].number; ++item_no) if (strcmp (name, category[cat_no].item_desc[item_no].name) == 0) { if (show_category_name != 0) -- cgit v1.1