lib/colors: add colormode_or_err()
... to make the code easy to use in utils. Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
a971fa18b6
commit
b7faf99128
|
@ -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);
|
||||
|
|
24
lib/colors.c
24
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue