summaryrefslogtreecommitdiff
path: root/src/fe-common/core
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2017-08-29 21:03:42 +0200
committerLemonBoy <thatlemon@gmail.com>2017-08-29 21:03:42 +0200
commit7086eae650a616615bc81e688cdfa44d444463e0 (patch)
tree30845e69690dc699463ef7a5b2a3c4f5730ef25c /src/fe-common/core
parent13471013f31be1e2f459dfce9bc7425800b2824b (diff)
downloadirssi-7086eae650a616615bc81e688cdfa44d444463e0.zip
Complete filenames ending with a slash
Diffstat (limited to 'src/fe-common/core')
-rw-r--r--src/fe-common/core/completion.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/fe-common/core/completion.c b/src/fe-common/core/completion.c
index 78b1b24b..e78fe7d5 100644
--- a/src/fe-common/core/completion.c
+++ b/src/fe-common/core/completion.c
@@ -321,6 +321,10 @@ GList *filename_complete(const char *path, const char *default_path)
g_return_val_if_fail(path != NULL, NULL);
+ if (path[0] == '\0') {
+ return NULL;
+ }
+
list = NULL;
/* get directory part of the path - expand ~/ */
@@ -350,7 +354,14 @@ GList *filename_complete(const char *path, const char *default_path)
g_free_and_null(dir);
}
- basename = g_path_get_basename(path);
+ len = strlen(path);
+ /* g_path_get_basename() returns the component before the last slash if
+ * the path ends with a directory separator, that's not what we want */
+ if (len > 0 && path[len - 1] == G_DIR_SEPARATOR) {
+ basename = g_strdup("");
+ } else {
+ basename = g_path_get_basename(path);
+ }
len = strlen(basename);
/* add all files in directory to completion list */