From cbc6b96639dad37c6b7ef037ae7b16a9bd7af450 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Thu, 16 May 2019 12:29:20 +0200 Subject: [PATCH] more debug output in Get_config_directory() and Get_program_directory() readlink() returns the number of bytes written --- src/setup.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/setup.c b/src/setup.c index a978e3b4..23ec35b7 100644 --- a/src/setup.c +++ b/src/setup.c @@ -49,6 +49,7 @@ #elif defined(__linux__) #include #include + #include #elif defined(__HAIKU__) #include #endif @@ -113,14 +114,20 @@ char * Get_program_directory(const char * argv0) #elif defined(__linux__) if (argv0[0]!='/') { + ssize_t path_len; char path[PATH_MAX]; - if (readlink("/proc/self/exe", path, sizeof(path)) >= 0) + path_len = readlink("/proc/self/exe", path, sizeof(path)); + if (path_len >= 0) { + path[path_len] = '\0'; // add null terminating char + GFX2_Log(GFX2_DEBUG, "binary path resolved to : %s\n", path); program_dir = Extract_path(NULL, path); - return program_dir; } + else + GFX2_Log(GFX2_WARNING, "readlink(%s) failed : %s\n", "/proc/self/exe", strerror(errno)); } - program_dir = Extract_path(NULL, argv0); + else + program_dir = Extract_path(NULL, argv0); // Others: The part of argv[0] before the executable name. // Keep the last \ or /. @@ -283,9 +290,10 @@ char * Get_config_directory(const char * program_dir) } if (!Directory_exists(config_dir)) { - // Tentative de création + // try to create it if (Create_ConfigDirectory(config_dir) < 0) { + GFX2_Log(GFX2_WARNING, "Failed to create directory \"%s\"\n", config_dir); // Echec: on se rabat sur le repertoire de l'executable. Portable_Installation_Detected = 1; free(config_dir); @@ -297,6 +305,7 @@ char * Get_config_directory(const char * program_dir) config_dir = strdup(program_dir); #endif } + GFX2_Log(GFX2_INFO, "\"%s\" directory created.\n", config_dir); } } }