* SOFTWARE.
*/
+#define BT_LOG_TAG "COMMON"
+#include "logging.h"
+
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
-#include <pwd.h>
#include <unistd.h>
#include <assert.h>
#include <ctype.h>
#include <babeltrace/common-internal.h>
#include <babeltrace/compat/unistd-internal.h>
+#ifndef __MINGW32__
+#include <pwd.h>
+#endif
+
#define SYSTEM_PLUGIN_PATH INSTALL_LIBDIR "/babeltrace/plugins"
#define HOME_ENV_VAR "HOME"
#define HOME_PLUGIN_SUBPATH "/.local/lib/babeltrace/plugins"
return SYSTEM_PLUGIN_PATH;
}
+#ifdef __MINGW32__
+BT_HIDDEN
+bool bt_common_is_setuid_setgid(void)
+{
+ return false;
+}
+#else /* __MINGW32__ */
BT_HIDDEN
bool bt_common_is_setuid_setgid(void)
{
return (geteuid() != getuid() || getegid() != getgid());
}
+#endif /* __MINGW32__ */
-static char *bt_secure_getenv(const char *name)
+static
+char *bt_secure_getenv(const char *name)
{
if (bt_common_is_setuid_setgid()) {
- printf_error("Disregarding %s environment variable for setuid/setgid binary",
- name);
+ BT_LOGD("Disregarding environment variable for setuid/setgid binary: "
+ "name=\"%s\"", name);
return NULL;
}
return getenv(name);
}
-static const char *get_home_dir(void)
+#ifdef __MINGW32__
+static
+const char *bt_get_home_dir(void)
+{
+ return g_get_home_dir();
+}
+#else /* __MINGW32__ */
+static
+const char *bt_get_home_dir(void)
{
char *val = NULL;
struct passwd *pwd;
end:
return val;
}
+#endif /* __MINGW32__ */
BT_HIDDEN
char *bt_common_get_home_plugin_path(void)
{
char *path = NULL;
const char *home_dir;
+ size_t length;
- home_dir = get_home_dir();
+ home_dir = bt_get_home_dir();
if (!home_dir) {
goto end;
}
- if (strlen(home_dir) + strlen(HOME_PLUGIN_SUBPATH) + 1 >= PATH_MAX) {
- printf_error("Home directory path is too long: `%s`\n",
- home_dir);
+ length = strlen(home_dir) + strlen(HOME_PLUGIN_SUBPATH) + 1;
+
+ if (length >= PATH_MAX) {
+ BT_LOGW("Home directory path is too long: length=%zu",
+ length);
goto end;
}
while (at < end) {
GString *path;
- const char *next_colon;
+ const char *next_sep;
- next_colon = strchr(at, ':');
- if (next_colon == at) {
+ next_sep = strchr(at, G_SEARCHPATH_SEPARATOR);
+ if (next_sep == at) {
/*
* Empty path: try next character (supported
* to conform to the typical parsing of $PATH).
*/
at++;
continue;
- } else if (!next_colon) {
- /* No more colon: use the remaining */
- next_colon = paths + strlen(paths);
+ } else if (!next_sep) {
+ /* No more separator: use the remaining */
+ next_sep = paths + strlen(paths);
}
path = g_string_new(NULL);
goto error;
}
- g_string_append_len(path, at, next_colon - at);
- at = next_colon + 1;
+ g_string_append_len(path, at, next_sep - at);
+ at = next_sep + 1;
g_ptr_array_add(dirs, path);
}
static bool supports_colors = false;
static bool supports_colors_set = false;
const char *term;
+ const char *force;
if (supports_colors_set) {
goto end;
supports_colors_set = true;
+ force = getenv("BABELTRACE_FORCE_COLORS");
+ if (force && strcmp(force, "1") == 0) {
+ supports_colors = true;
+ goto end;
+ }
+
term = getenv("TERM");
if (!term) {
goto end;
page_size = bt_sysconf(_SC_PAGESIZE);
if (page_size < 0) {
- printf_error("Cannot get system page size.");
+ BT_LOGF("Cannot get system's page size: ret=%d",
+ page_size);
abort();
}