configure.ac: check for clock_gettime and CLOCK_MONOTONIC
[gitweb.git] / color.c
diff --git a/color.c b/color.c
index ae687929233a03d2601d1a2a08a55a8d192f6af1..809b359a42d426d61f0452e89725177eadeb54cb 100644 (file)
--- a/color.c
+++ b/color.c
@@ -124,9 +124,11 @@ static int parse_color(struct color *out, const char *name, int len)
 
 static int parse_attr(const char *name, int len)
 {
-       static const int attr_values[] = { 1, 2, 4, 5, 7 };
+       static const int attr_values[] = { 1, 2, 4, 5, 7,
+                                          22, 22, 24, 25, 27 };
        static const char * const attr_names[] = {
-               "bold", "dim", "ul", "blink", "reverse"
+               "bold", "dim", "ul", "blink", "reverse",
+               "nobold", "nodim", "noul", "noblink", "noreverse"
        };
        int i;
        for (i = 0; i < ARRAY_SIZE(attr_names); i++) {
@@ -142,9 +144,6 @@ int color_parse(const char *value, char *dst)
        return color_parse_mem(value, strlen(value), dst);
 }
 
-#define COLOR_FOREGROUND '3'
-#define COLOR_BACKGROUND '4'
-
 /*
  * Write the ANSI color codes for "c" to "out"; the string should
  * already have the ANSI escape code in it. "out" should have enough
@@ -238,17 +237,19 @@ int color_parse_mem(const char *value, int value_len, char *dst)
                        attr &= ~bit;
                        if (sep++)
                                *dst++ = ';';
-                       *dst++ = '0' + i;
+                       dst += sprintf(dst, "%d", i);
                }
                if (!color_empty(&fg)) {
                        if (sep++)
                                *dst++ = ';';
-                       dst = color_output(dst, &fg, COLOR_FOREGROUND);
+                       /* foreground colors are all in the 3x range */
+                       dst = color_output(dst, &fg, '3');
                }
                if (!color_empty(&bg)) {
                        if (sep++)
                                *dst++ = ';';
-                       dst = color_output(dst, &bg, COLOR_BACKGROUND);
+                       /* background colors are all in the 4x range */
+                       dst = color_output(dst, &bg, '4');
                }
                *dst++ = 'm';
        }