From: Fernando Tarlá Cardoso Lemos Date: Wed, 1 Dec 2010 00:47:16 +0000 (-0200) Subject: util.c is the proper place for those functions. X-Git-Tag: tree-pr2~159 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=68f906f278aba60c669e2cbcb7185ae970f1aa18;p=i3%2Fi3 util.c is the proper place for those functions. --- diff --git a/include/config.h b/include/config.h index eaa14f60..ccff0fc8 100644 --- a/include/config.h +++ b/include/config.h @@ -129,9 +129,6 @@ struct Config { } bar; }; -char *resolve_tilde(const char *path); -bool path_exists(const char *path); - /** * Reads the configuration from ~/.i3/config or /etc/i3/config if not found. * diff --git a/include/util.h b/include/util.h index fab7e399..46a15655 100644 --- a/include/util.h +++ b/include/util.h @@ -103,6 +103,20 @@ void check_error(xcb_connection_t *conn, xcb_void_cookie_t cookie, */ char *convert_utf8_to_ucs2(char *input, int *real_strlen); +/* + * This function resolves ~ in pathnames. + * It may resolve wildcards in the first part of the path, but if no match + * or multiple matches are found, it just returns a copy of path as given. + * + */ +char *resolve_tilde(const char *path); + +/* + * Checks if the given path exists by calling stat(). + * + */ +bool path_exists(const char *path); + /* * Restart i3 in-place * appends -a to argument list to disable autostart diff --git a/src/config.c b/src/config.c index e60fd9b0..683310c8 100644 --- a/src/config.c +++ b/src/config.c @@ -22,47 +22,6 @@ Config config; struct modes_head modes; - -/* - * This function resolves ~ in pathnames. - * It may resolve wildcards in the first part of the path, but if no match - * or multiple matches are found, it just returns a copy of path as given. - * - */ -char *resolve_tilde(const char *path) { - static glob_t globbuf; - char *head, *tail, *result; - - tail = strchr(path, '/'); - head = strndup(path, tail ? tail - path : strlen(path)); - - int res = glob(head, GLOB_TILDE, NULL, &globbuf); - free(head); - /* no match, or many wildcard matches are bad */ - if (res == GLOB_NOMATCH || globbuf.gl_pathc != 1) - result = sstrdup(path); - else if (res != 0) { - die("glob() failed"); - } else { - head = globbuf.gl_pathv[0]; - result = scalloc(strlen(head) + (tail ? strlen(tail) : 0) + 1); - strncpy(result, head, strlen(head)); - strncat(result, tail, strlen(tail)); - } - globfree(&globbuf); - - return result; -} - -/* - * Checks if the given path exists by calling stat(). - * - */ -bool path_exists(const char *path) { - struct stat buf; - return (stat(path, &buf) == 0); -} - /** * Ungrabs all keys, to be called before re-grabbing the keys because of a * mapping_notify event or a configuration file reload diff --git a/src/util.c b/src/util.c index 0c36cf57..89f55960 100644 --- a/src/util.c +++ b/src/util.c @@ -175,6 +175,46 @@ char *convert_utf8_to_ucs2(char *input, int *real_strlen) { return buffer; } +/* + * This function resolves ~ in pathnames. + * It may resolve wildcards in the first part of the path, but if no match + * or multiple matches are found, it just returns a copy of path as given. + * + */ +char *resolve_tilde(const char *path) { + static glob_t globbuf; + char *head, *tail, *result; + + tail = strchr(path, '/'); + head = strndup(path, tail ? tail - path : strlen(path)); + + int res = glob(head, GLOB_TILDE, NULL, &globbuf); + free(head); + /* no match, or many wildcard matches are bad */ + if (res == GLOB_NOMATCH || globbuf.gl_pathc != 1) + result = sstrdup(path); + else if (res != 0) { + die("glob() failed"); + } else { + head = globbuf.gl_pathv[0]; + result = scalloc(strlen(head) + (tail ? strlen(tail) : 0) + 1); + strncpy(result, head, strlen(head)); + strncat(result, tail, strlen(tail)); + } + globfree(&globbuf); + + return result; +} + +/* + * Checks if the given path exists by calling stat(). + * + */ +bool path_exists(const char *path) { + struct stat buf; + return (stat(path, &buf) == 0); +} + /* * Goes through the list of arguments (for exec()) and checks if the given argument * is present. If not, it copies the arguments (because we cannot realloc it) and