diff options
Diffstat (limited to 'package/busybox/busybox-1.10.1-completion.patch')
-rw-r--r-- | package/busybox/busybox-1.10.1-completion.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.10.1-completion.patch b/package/busybox/busybox-1.10.1-completion.patch new file mode 100644 index 000000000..8557f59a0 --- /dev/null +++ b/package/busybox/busybox-1.10.1-completion.patch @@ -0,0 +1,57 @@ +--- busybox-1.10.1/libbb/lineedit.c Sat Apr 19 05:50:33 2008 ++++ busybox-1.10.1-completion/libbb/lineedit.c Thu Apr 24 06:45:39 2008 +@@ -518,8 +518,8 @@ + + for (i = 0; i < npaths; i++) { + dir = opendir(paths[i]); +- if (!dir) /* Don't print an error */ +- continue; ++ if (!dir) ++ continue; /* don't print an error */ + + while ((next = readdir(dir)) != NULL) { + int len1; +@@ -529,18 +529,21 @@ + if (strncmp(str_found, pfind, strlen(pfind))) + continue; + /* not see .name without .match */ +- if (*str_found == '.' && *pfind == 0) { ++ if (*str_found == '.' && *pfind == '\0') { + if (NOT_LONE_CHAR(paths[i], '/') || str_found[1]) + continue; + str_found = ""; /* only "/" */ + } + found = concat_path_file(paths[i], str_found); +- /* hmm, remover in progress? */ +- if (lstat(found, &st) < 0) ++ /* hmm, remove in progress? */ ++ /* NB: stat() first so that we see is it a directory; ++ * but if that fails, use lstat() so that ++ * we still match dangling links */ ++ if (stat(found, &st) && lstat(found, &st)) + goto cont; + /* find with dirs? */ + if (paths[i] != dirbuf) +- strcpy(found, next->d_name); /* only name */ ++ strcpy(found, next->d_name); /* only name */ + + len1 = strlen(found); + found = xrealloc(found, len1 + 2); +@@ -548,7 +551,7 @@ + found[len1+1] = '\0'; + + if (S_ISDIR(st.st_mode)) { +- /* name is directory */ ++ /* name is a directory */ + if (found[len1-1] != '/') { + found[len1] = '/'; + } +@@ -566,7 +569,7 @@ + closedir(dir); + } + if (paths != path1) { +- free(paths[0]); /* allocated memory only in first member */ ++ free(paths[0]); /* allocated memory is only in first member */ + free(paths); + } + #undef dirbuf |