diff options
Diffstat (limited to 'common.c')
-rw-r--r-- | common.c | 97 |
1 files changed, 0 insertions, 97 deletions
@@ -49,38 +49,6 @@ // --- To be moved to liberty -------------------------------------------------- -#define LIST_INSERT_WITH_TAIL(head, tail, link, following) \ - BLOCK_START \ - if (following) \ - LIST_APPEND_WITH_TAIL ((head), (following)->prev, (link)); \ - else \ - LIST_APPEND_WITH_TAIL ((head), (tail), (link)); \ - (link)->next = (following); \ - BLOCK_END - -#define TRIVIAL_STRXFRM(name, fn) \ - static size_t \ - name (char *dest, const char *src, size_t n) \ - { \ - size_t len = strlen (src); \ - while (n-- && (*dest++ = (fn) (*src++))) \ - ; \ - return len; \ - } - -static void -transform_str (char *s, int (*tolower) (int c)) -{ - for (; *s; s++) - *s = tolower (*s); -} - -static char * -str_cut_until (const char *s, const char *alphabet) -{ - return xstrndup (s, strcspn (s, alphabet)); -} - static void split_str (const char *s, char delimiter, struct str_vector *out) { @@ -102,71 +70,6 @@ str_vector_find (const struct str_vector *v, const char *s) return -1; } -static int -strncasecmp_ascii (const char *a, const char *b, size_t n) -{ - int x; - while (n-- && (*a || *b)) - if ((x = tolower_ascii (*(const unsigned char *) a++) - - tolower_ascii (*(const unsigned char *) b++))) - return x; - return 0; -} - -static int -irc_tolower_strict (int c) -{ - if (c == '[') return '{'; - if (c == ']') return '}'; - if (c == '\\') return '|'; - return c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c; -} - -TRIVIAL_STRXFRM (irc_strxfrm_strict, irc_tolower_strict) - -static char * -resolve_relative_runtime_filename (const char *filename) -{ - struct str path; - str_init (&path); - - const char *runtime_dir = getenv ("XDG_RUNTIME_DIR"); - if (runtime_dir && *runtime_dir == '/') - str_append (&path, runtime_dir); - else - get_xdg_home_dir (&path, "XDG_DATA_HOME", ".local/share"); - str_append_printf (&path, "/%s/%s", PROGRAM_NAME, filename); - - // Try to create the file's ancestors - const char *last_slash = strrchr (path.str, '/'); - if (last_slash && last_slash != path.str) - { - char *copy = xstrndup (path.str, last_slash - path.str); - (void) mkdir_with_parents (copy, NULL); - free (copy); - } - return str_steal (&path); -} - -static char * -resolve_filename (const char *filename, char *(*relative_cb) (const char *)) -{ - // Absolute path is absolute - if (*filename == '/') - return xstrdup (filename); - - // We don't want to use wordexp() for this as it may execute /bin/sh - if (*filename == '~') - { - // Paths to home directories ought to be absolute - char *expanded = try_expand_tilde (filename + 1); - if (expanded) - return expanded; - print_debug ("failed to expand the home directory in `%s'", filename); - } - return relative_cb (filename); -} - // --- Logging ----------------------------------------------------------------- static void |