diff options
-rw-r--r-- | include/colors.h | 1 | ||||
-rw-r--r-- | lib/colors.c | 24 | ||||
-rw-r--r-- | sys-utils/dmesg.c | 9 |
3 files changed, 19 insertions, 15 deletions
diff --git a/include/colors.h b/include/colors.h index f9e36fd57..b6c99171a 100644 --- a/include/colors.h +++ b/include/colors.h @@ -48,6 +48,7 @@ enum colortmode { }; extern int colormode_from_string(const char *str); +extern int colormode_or_err(const char *str, const char *errmsg); /* Initialize the global variable OUT_IS_TERM */ extern int colors_init(int mode); diff --git a/lib/colors.c b/lib/colors.c index 57ecae93d..c8075cc1e 100644 --- a/lib/colors.c +++ b/lib/colors.c @@ -61,10 +61,21 @@ int colormode_from_string(const char *str) return -EINVAL; } +int colormode_or_err(const char *str, const char *errmsg) +{ + const char *p = str && *str == '=' ? str + 1 : str; + int colormode; + + colormode = colormode_from_string(p); + if (colormode < 0) + errx(EXIT_FAILURE, "%s: '%s'", errmsg, p); + + return colormode; +} + + #ifdef TEST_PROGRAM # include <getopt.h> -# include <err.h> - int main(int argc, char *argv[]) { static const struct option longopts[] = { @@ -77,13 +88,8 @@ int main(int argc, char *argv[]) switch (c) { case 'c': mode = UL_COLORMODE_AUTO; - if (optarg) { - char *p = *optarg == '=' ? optarg + 1 : optarg; - - mode = colormode_from_string(p); - if (mode < 0) - errx(EXIT_FAILURE, "'%s' unsupported color mode", p); - } + if (optarg) + mode = colormode_or_err(optarg, "unsupported color mode"); break; } } diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index 5d0453300..ae8e93807 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -1241,12 +1241,9 @@ int main(int argc, char *argv[]) break; case 'L': colormode = UL_COLORMODE_AUTO; - if (optarg) { - char *p = *optarg == '=' ? optarg + 1 : optarg; - colormode = colormode_from_string(p); - if (colormode < 0) - errx(EXIT_FAILURE, _("unsupported color mode: '%s'"), p); - } + if (optarg) + colormode = colormode_or_err(optarg, + _("unsupported color mode")); break; case 'l': ctl.fltr_lev= 1; |