From b8731ebcf2d825fd64ad772c1e5b5bb154ab0255 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 13 Aug 2014 10:09:08 +0200 Subject: lib/colors: add function to return color from scheme Signed-off-by: Karel Zak --- lib/colors.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'lib/colors.c') diff --git a/lib/colors.c b/lib/colors.c index 8de1d2fbe..7349063d0 100644 --- a/lib/colors.c +++ b/lib/colors.c @@ -65,6 +65,9 @@ struct ul_color_ctl { int scores[__UL_COLORFILE_COUNT]; /* the best match */ }; +/* + * Control struct, globally shared. + */ static struct ul_color_ctl ul_colors; static void colors_free_schemes(struct ul_color_ctl *cc); @@ -597,12 +600,15 @@ done: return rc; } -/* +/** + * colors_init: + * @mode: UL_COLORMODE_* + * @name: util argv[0] + * * Initialize private color control struct and initialize the colors * status. The color schemes are parsed on demand by colors_get_scheme(). * - * @mode: UL_COLORMODE_* - * @name: util argv[0] + * Returns: >0 on success. */ int colors_init(int mode, const char *name) { @@ -676,19 +682,32 @@ void color_fenable(const char *seq, FILE *f) } /* - * Enable color by logical @name + * Returns escape sequence by logical @name, if undefined then returns @dflt. */ -void color_scheme_fenable(const char *name, const char *dflt, FILE *f) +const char *color_scheme_get_sequence(const char *name, const char *dflt) { struct ul_color_scheme *cs; if (ul_colors.disabled || !ul_colors.has_colors) - return; + return NULL; cs = colors_get_scheme(&ul_colors, name); - color_fenable(cs && cs->seq ? cs->seq : dflt, f); + return cs && cs->seq ? cs->seq : dflt; +} + +/* + * Enable color by logical @name, if undefined enable @dflt. + */ +void color_scheme_fenable(const char *name, const char *dflt, FILE *f) +{ + const char *seq = color_scheme_get_sequence(name, dflt); + + if (!seq) + return; + color_fenable(seq, f); } + /* * Disable previously enabled color */ -- cgit v1.2.3-55-g7522