From ea849862a85e1751206c20254e9126cf3e8096b5 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Thu, 11 May 2023 22:09:49 +0200 Subject: Fix languages - Enumerate windows on screen. - Build with optimizations. --- src/dged/path.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/dged/path.h (limited to 'src/dged/path.h') diff --git a/src/dged/path.h b/src/dged/path.h new file mode 100644 index 0000000..d74f723 --- /dev/null +++ b/src/dged/path.h @@ -0,0 +1,38 @@ +#include +#include +#include + +static char *expanduser(const char *path) { + // replace tilde + char *res = NULL; + char *tilde_pos = strchr(path, '~'); + if (tilde_pos != NULL) { + char *home = getenv("HOME"); + if (home != NULL) { + // allocate a new string based with the new len + size_t home_len = strlen(home); + size_t path_len = strlen(path); + size_t total_len = path_len + home_len; + res = malloc(total_len); + size_t initial_len = tilde_pos - path; + strncpy(res, path, initial_len); + + strncpy(res + initial_len, home, home_len); + + size_t rest_len = path_len - initial_len - 1; + strncpy(res + initial_len + home_len, path + initial_len + 1, rest_len); + res[total_len-1] = '\0'; + } + } + + return res != NULL ? res : strdup(path); +} + +static char *to_abspath(const char *path) { + char *p = realpath(path, NULL); + if (p != NULL) { + return p; + } else { + return strdup(path); + } +} -- cgit v1.2.3