-static int want_colors(void)
-{
- if (conf.color_arg == color_arg_no)
- return 0;
- if (conf.color_arg == color_arg_yes)
- return 1;
- if (logfile)
- return 0;
- return isatty(STDERR_FILENO);
-}
-
-static int get_loglevel_by_name(const char *txt, size_t n)
-{
- if (!strncasecmp(txt, "debug", n))
- return LL_DEBUG;
- if (!strncasecmp(txt, "info", n))
- return LL_INFO;
- if (!strncasecmp(txt, "notice", n))
- return LL_NOTICE;
- if (!strncasecmp(txt, "warning", n))
- return LL_WARNING;
- if (!strncasecmp(txt, "error", n))
- return LL_ERROR;
- if (!strncasecmp(txt, "crit", n))
- return LL_CRIT;
- if (!strncasecmp(txt, "emerg", n))
- return LL_EMERG;
- return -1;
-}
-
-static char log_colors[NUM_LOGLEVELS][COLOR_MAXLEN];
-
-static void init_colors_or_die(void)
-{
- int ret, i;
- static const char *default_log_colors[NUM_LOGLEVELS] = {
- [LL_DEBUG] = "normal",
- [LL_INFO] = "white bold",
- [LL_NOTICE] = "cyan bold",
- [LL_WARNING] = "green bold",
- [LL_ERROR] = "yellow bold",
- [LL_CRIT] = "magenta bold",
- [LL_EMERG] = "red bold",
- };
-
- for (i = 0; i < NUM_LOGLEVELS; i++) {
- ret = color_parse(default_log_colors[i], log_colors[i]);
- assert(ret >= 0);
- }
-
- for (i = 0; i < conf.log_color_given; i++) {
- char *arg = conf.log_color_arg[i], *p = strchr(arg, ':');
- int ll;
- if (!p)
- goto err;
- ret = get_loglevel_by_name(arg, p - arg);
- if (ret < 0)
- goto err;
- ll = ret;
- p++;
- ret = color_parse(p, log_colors[ll]);
- if (ret < 0)
- goto err;
- }
- return;
-err:
- PARA_EMERG_LOG("color syntax error, arg %d (%s)\n", i,
- conf.log_color_arg[i]);
- exit(EXIT_FAILURE);
-}
-