Rename VERBOSE log level to TRACE
[babeltrace.git] / src / common / common.c
index f37bec4112de72b90edb4afa8d50a8859ca92b15..d5f05062968629a31cce75bd2f7e02af9d478455 100644 (file)
@@ -22,8 +22,9 @@
  * SOFTWARE.
  */
 
+#define BT_LOG_OUTPUT_LEVEL log_level
 #define BT_LOG_TAG "COMMON"
-#include "logging.h"
+#include "logging/log.h"
 
 #include <unistd.h>
 #include <string.h>
@@ -39,7 +40,7 @@
 #include <stdio.h>
 #include <wchar.h>
 #include <stdbool.h>
-#include "common/babeltrace.h"
+#include "common/macros.h"
 #include "common/common.h"
 #include "compat/unistd.h"
 
@@ -116,7 +117,7 @@ bool bt_common_is_setuid_setgid(void)
 #endif /* __MINGW32__ */
 
 static
-char *bt_secure_getenv(const char *name)
+char *bt_secure_getenv(const char *name, int log_level)
 {
        if (bt_common_is_setuid_setgid()) {
                BT_LOGD("Disregarding environment variable for setuid/setgid binary: "
@@ -128,18 +129,18 @@ char *bt_secure_getenv(const char *name)
 
 #ifdef __MINGW32__
 static
-const char *bt_get_home_dir(void)
+const char *bt_get_home_dir(int log_level)
 {
        return g_get_home_dir();
 }
 #else /* __MINGW32__ */
 static
-const char *bt_get_home_dir(void)
+const char *bt_get_home_dir(int log_level)
 {
        char *val = NULL;
        struct passwd *pwd;
 
-       val = bt_secure_getenv(HOME_ENV_VAR);
+       val = bt_secure_getenv(HOME_ENV_VAR, log_level);
        if (val) {
                goto end;
        }
@@ -155,13 +156,13 @@ end:
 #endif /* __MINGW32__ */
 
 BT_HIDDEN
-char *bt_common_get_home_plugin_path(void)
+char *bt_common_get_home_plugin_path(int log_level)
 {
        char *path = NULL;
        const char *home_dir;
        size_t length;
 
-       home_dir = bt_get_home_dir();
+       home_dir = bt_get_home_dir(log_level);
        if (!home_dir) {
                goto end;
        }
@@ -169,8 +170,8 @@ char *bt_common_get_home_plugin_path(void)
        length = strlen(home_dir) + strlen(HOME_PLUGIN_SUBPATH) + 1;
 
        if (length >= PATH_MAX) {
-               BT_LOGW("Home directory path is too long: length=%zu",
-                       length);
+               BT_LOGW("Home directory path is too long: "
+                       "length=%zu, max-length=%u", length, PATH_MAX);
                goto end;
        }
 
@@ -1238,7 +1239,7 @@ end:
 #endif
 
 BT_HIDDEN
-size_t bt_common_get_page_size(void)
+size_t bt_common_get_page_size(int log_level)
 {
        int page_size;
 
@@ -1567,3 +1568,106 @@ void bt_common_custom_snprintf(char *buf, size_t buf_size,
                priv_data, fmt, &args);
        va_end(args);
 }
+
+BT_HIDDEN
+void bt_common_sep_digits(char *str, unsigned int digits_per_group, char sep)
+{
+       const char *rd;
+       char *wr;
+       uint64_t i = 0;
+       uint64_t orig_len;
+       uint64_t sep_count;
+       uint64_t new_len;
+
+       BT_ASSERT(digits_per_group > 0);
+       BT_ASSERT(sep != '\0');
+
+       /* Compute new length of `str` */
+       orig_len = strlen(str);
+       BT_ASSERT(orig_len > 0);
+       sep_count = (orig_len - 1) / digits_per_group;
+       new_len = strlen(str) + sep_count;
+
+       /*
+        * Do the work in place. Have the reading pointer `rd` start at
+        * the end of the original string, and the writing pointer `wr`
+        * start at the end of the new string, making sure to also put a
+        * null character there.
+        */
+       rd = str + orig_len - 1;
+       wr = str + new_len;
+       *wr = '\0';
+       wr--;
+
+       /*
+        * Here's what the process looks like (3 digits per group):
+        *
+        *     Source:      12345678
+        *                         ^
+        *     Destination: 12345678#8
+        *                           ^
+        *
+        *     Source:      12345678
+        *                        ^
+        *     Destination: 1234567878
+        *                          ^
+        *
+        *     Source:      12345678
+        *                       ^
+        *     Destination: 1234567678
+        *                         ^
+        *
+        *     Source:      12345678
+        *                      ^
+        *     Destination: 123456,678
+        *                        ^
+        *
+        *     Source:      12345678
+        *                      ^
+        *     Destination: 123455,678
+        *                       ^
+        *
+        *     Source:      12345678
+        *                     ^
+        *     Destination: 123445,678
+        *                      ^
+        *
+        *     Source:      12345678
+        *                    ^
+        *     Destination: 123345,678
+        *                     ^
+        *
+        *     Source:      12345678
+        *                   ^
+        *     Destination: 12,345,678
+        *                    ^
+        *
+        *     Source:      12345678
+        *                   ^
+        *     Destination: 12,345,678
+        *                   ^
+        *
+        *     Source:      12345678
+        *                  ^
+        *     Destination: 12,345,678
+        *                  ^
+        */
+       while (rd != str - 1) {
+               if (i == digits_per_group) {
+                       /*
+                        * Time to append the separator: decrement `wr`,
+                        * but keep `rd` as is.
+                        */
+                       i = 0;
+                       *wr = sep;
+                       wr--;
+                       continue;
+               }
+
+               /* Copy read-side character to write-side character */
+               *wr = *rd;
+               wr--;
+               rd--;
+               i++;
+       }
+}
This page took 0.030851 seconds and 4 git commands to generate.