text plugin: add color support
[babeltrace.git] / common / common.c
index 47186e164a74e23b83270ed882d38209fc87a173..1d7eea43cf84a4777746e26631d737b2d3de55f6 100644 (file)
@@ -22,6 +22,7 @@
  * SOFTWARE.
  */
 
+#include <unistd.h>
 #include <string.h>
 #include <sys/types.h>
 #include <pwd.h>
@@ -29,6 +30,7 @@
 #include <assert.h>
 #include <glib.h>
 #include <babeltrace/babeltrace-internal.h>
+#include <babeltrace/common-internal.h>
 
 #define SYSTEM_PLUGIN_PATH     INSTALL_LIBDIR "/babeltrace/plugins"
 #define HOME_ENV_VAR           "HOME"
@@ -163,3 +165,148 @@ error:
 end:
        return ret;
 }
+
+BT_HIDDEN
+bool bt_common_colors_supported(void)
+{
+       static bool supports_colors = false;
+       static bool supports_colors_set = false;
+       const char *term;
+
+       if (supports_colors_set) {
+               goto end;
+       }
+
+       supports_colors_set = true;
+
+       term = getenv("TERM");
+       if (!term) {
+               goto end;
+       }
+
+       if (strncmp(term, "xterm", 5) != 0 &&
+                       strncmp(term, "rxvt", 4) != 0 &&
+                       strncmp(term, "konsole", 7) != 0 &&
+                       strncmp(term, "gnome", 5) != 0) {
+               goto end;
+       }
+
+       if (!isatty(1)) {
+               goto end;
+       }
+
+       supports_colors = true;
+
+end:
+       return supports_colors;
+}
+
+BT_HIDDEN
+const char *bt_common_color_reset(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_RESET : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bold(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BOLD : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_default(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_FG_DEFAULT : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_red(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_FG_RED : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_green(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_FG_GREEN : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_yellow(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_FG_YELLOW : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_blue(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_FG_BLUE : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_magenta(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_FG_MAGENTA : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_cyan(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_FG_CYAN : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_fg_light_gray(void)
+{
+       return bt_common_colors_supported() ?
+               BT_COMMON_COLOR_FG_LIGHT_GRAY : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_default(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BG_DEFAULT : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_red(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BG_RED : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_green(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BG_GREEN : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_yellow(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BG_YELLOW : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_blue(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BG_BLUE : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_magenta(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BG_MAGENTA : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_cyan(void)
+{
+       return bt_common_colors_supported() ? BT_COMMON_COLOR_BG_CYAN : "";
+}
+
+BT_HIDDEN
+const char *bt_common_color_bg_light_gray(void)
+{
+       return bt_common_colors_supported() ?
+               BT_COMMON_COLOR_BG_LIGHT_GRAY : "";
+}
This page took 0.029733 seconds and 4 git commands to generate.