+/**
+ * Initialize color mode if necessary.
+ *
+ * \param color_arg The argument given to --color.
+ * \param color_arg_auto The value for automatic color detection.
+ * \param color_arg_no The value to disable colored log messages.
+ * \param logfile_given In auto mode colors are disabled if this value is true.
+ * \param log_color_argv Color specifiers given to --log-color.
+ * \param argc Number of color specifiers in \a log_color_argv.
+ *
+ * If \a color_arg equals \a color_arg_no, color mode is disabled, i.e., calls
+ * to \a para_log() will not produce colored output. If \a color_arg == \a
+ * color_arg_auto, the function autodetects whether to activate colors.
+ * Otherwise color mode is enabled.
+ *
+ * If color mode is to be enabled, the strings in \a log_color_argv are parsed
+ * and the color scheme is updated accordingly. For each loglevel, the default
+ * colors apply if there is no log_color_argv for this loglevel.
+ */
+void daemon_init_colors_or_die(int color_arg, int color_arg_auto,
+ int color_arg_no, bool logfile_given, char **log_color_argv,
+ int argc)
+{
+ int i;
+
+ if (color_arg == color_arg_no)
+ return;
+ if (color_arg == color_arg_auto) {
+ if (logfile_given)
+ return;
+ if (!isatty(STDERR_FILENO))
+ return;
+ }
+ daemon_set_flag(DF_COLOR_LOG);
+ daemon_set_default_log_colors();
+ for (i = 0; i < argc; i++)
+ daemon_set_log_color_or_die(log_color_argv[i]);
+}
+