summaryrefslogtreecommitdiffstats
path: root/lib/colors.c
diff options
context:
space:
mode:
authorKarel Zak2014-08-13 10:09:08 +0200
committerKarel Zak2014-08-13 10:09:08 +0200
commitb8731ebcf2d825fd64ad772c1e5b5bb154ab0255 (patch)
tree1454143fc5a17924071215b133cf5d303f9b897b /lib/colors.c
parentlibblkid: (gpt) fix PT offset (diff)
downloadkernel-qcow2-util-linux-b8731ebcf2d825fd64ad772c1e5b5bb154ab0255.tar.gz
kernel-qcow2-util-linux-b8731ebcf2d825fd64ad772c1e5b5bb154ab0255.tar.xz
kernel-qcow2-util-linux-b8731ebcf2d825fd64ad772c1e5b5bb154ab0255.zip
lib/colors: add function to return color from scheme
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'lib/colors.c')
-rw-r--r--lib/colors.c33
1 files changed, 26 insertions, 7 deletions
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
*/