From e9a78825e20c569d1a995083ca3f8f2b8b0b5fe3 Mon Sep 17 00:00:00 2001
From: Ankit Kumar <ankitkumar.iitbhu@gmail.com>
Date: Thu, 17 May 2012 23:18:03 +0530
Subject: [PATCH] [PATCH] implemented mk_utils_getenv to fetch value
 ofMK_TRACE_BACKGROUND to switch trace colors depending
 onshell background to improve readability

Signed-off-by: Ankit Kumar <ankitkumar.iitbhu@gmail.com>
---
 src/mk_utils.c |   52 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/src/mk_utils.c b/src/mk_utils.c
index d62b06b..cd52f89 100644
--- a/src/mk_utils.c
+++ b/src/mk_utils.c
@@ -292,6 +292,18 @@ char *mk_utils_url_decode(mk_pointer uri)
     return buf;
 }
 
+/*robust get environment variable that also checks __secure_getenv() */
+char *mk_utils_getenv(const char *arg)
+{
+
+ #ifdef HAVE___SECURE_GETENV
+        return __secure_getenv(arg);
+ #else
+        return getenv(arg);
+ #endif
+
+}
+
 #ifdef TRACE
 #include <sys/time.h>
 void mk_utils_trace(const char *component, int color, const char *function,
@@ -323,15 +335,37 @@ void mk_utils_trace(const char *component, int color, const char *function,
     gettimeofday(&tv, &tz);
 
     /* Switch message color */
-    switch(color) {
-    case MK_TRACE_CORE:
-        color_function = ANSI_YELLOW;
-        color_fileline = ANSI_WHITE;
-        break;
-    case MK_TRACE_PLUGIN:
-        color_function = ANSI_BLUE;
-        color_fileline = ANSI_WHITE;
-        break;
+
+    char* bgcolortype = mk_utils_getenv("MK_TRACE_BACKGROUND");
+
+    /*  */
+    if(!bgcolortype)
+    bgcolortype = "dark"; 
+
+    if(!strcmp(bgcolortype,"light")) {
+        switch(color) {
+        case MK_TRACE_CORE:
+            color_function = ANSI_MAGENTA;
+            color_fileline = ANSI_GREEN;
+            break;
+        case MK_TRACE_PLUGIN:
+            color_function = ANSI_BLUE;
+            color_fileline = ANSI_GREEN;
+            break;
+            }
+    }
+        /* covering 'dark' and garbage values defaulting to 'dark' cases */
+    else {
+        switch(color) {
+        case MK_TRACE_CORE:
+            color_function = ANSI_YELLOW;
+            color_fileline = ANSI_WHITE;
+            break;
+        case MK_TRACE_PLUGIN:
+            color_function = ANSI_BLUE;
+            color_fileline = ANSI_WHITE;
+            break;
+        }
     }
 
     /* Only print colors to a terminal */
-- 
1.7.5.4

