From 7086eae650a616615bc81e688cdfa44d444463e0 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 29 Aug 2017 21:03:42 +0200 Subject: Complete filenames ending with a slash --- src/fe-common/core/completion.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/fe-common/core') 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 */ -- cgit v1.2.3