diff options
author | Peter Korsgaard <jacmet@sunsite.dk> | 2008-04-29 06:53:55 +0000 |
---|---|---|
committer | Peter Korsgaard <jacmet@sunsite.dk> | 2008-04-29 06:53:55 +0000 |
commit | 8fdb0e25e683b26990cb9d9a4c14e5422d7a3834 (patch) | |
tree | fac77f1532268b3eb132eb9ff094d13e71ed1231 /package/busybox/busybox-1.10.1-completion.patch | |
parent | 509fe4a6de108464aed16e7b49aa44e779c5e11a (diff) |
busybox: 1.10.1 patches
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 |