log: Factorize check_color_terminal() out
authorLuca Barbato <lu_zero@gentoo.org>
Fri, 26 Apr 2013 13:12:05 +0000 (15:12 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 3 Apr 2014 18:04:34 +0000 (20:04 +0200)
libavutil/log.c

index a0bb5e4..af293e7 100644 (file)
@@ -113,33 +113,36 @@ static const uint32_t color[16 + AV_CLASS_CATEGORY_NB] = {
 #endif
 static int use_color = -1;
 
-static void colored_fputs(int level, const char *str)
+static void check_color_terminal(void)
 {
-    if (!*str)
-        return;
-
-    if (use_color < 0) {
 #if HAVE_SETCONSOLETEXTATTRIBUTE
-        CONSOLE_SCREEN_BUFFER_INFO con_info;
-        con = GetStdHandle(STD_ERROR_HANDLE);
-        use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR") &&
-                    !getenv("AV_LOG_FORCE_NOCOLOR");
-        if (use_color) {
-            GetConsoleScreenBufferInfo(con, &con_info);
-            attr_orig  = con_info.wAttributes;
-            background = attr_orig & 0xF0;
-        }
+    CONSOLE_SCREEN_BUFFER_INFO con_info;
+    con = GetStdHandle(STD_ERROR_HANDLE);
+    use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR") &&
+                !getenv("AV_LOG_FORCE_NOCOLOR");
+    if (use_color) {
+        GetConsoleScreenBufferInfo(con, &con_info);
+        attr_orig  = con_info.wAttributes;
+        background = attr_orig & 0xF0;
+    }
 #elif HAVE_ISATTY
-        use_color = !getenv("NO_COLOR") && !getenv("AV_LOG_FORCE_NOCOLOR") &&
-                    (getenv("TERM") && isatty(2) ||
-                     getenv("AV_LOG_FORCE_COLOR"));
-        if (getenv("AV_LOG_FORCE_256COLOR"))
-            use_color *= 256;
+    use_color = !getenv("NO_COLOR") && !getenv("AV_LOG_FORCE_NOCOLOR") &&
+                (getenv("TERM") && isatty(2) || getenv("AV_LOG_FORCE_COLOR"));
+    if (getenv("AV_LOG_FORCE_256COLOR"))
+        use_color *= 256;
 #else
-        use_color = getenv("AV_LOG_FORCE_COLOR") && !getenv("NO_COLOR") &&
-                   !getenv("AV_LOG_FORCE_NOCOLOR");
+    use_color = getenv("AV_LOG_FORCE_COLOR") && !getenv("NO_COLOR") &&
+               !getenv("AV_LOG_FORCE_NOCOLOR");
 #endif
-    }
+}
+
+static void colored_fputs(int level, const char *str)
+{
+    if (!*str)
+        return;
+
+    if (use_color < 0)
+        check_color_terminal();
 
 #if HAVE_SETCONSOLETEXTATTRIBUTE
     if (use_color && level != AV_LOG_INFO/8)