diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-12-12 23:27:48 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-12-12 23:27:48 +0000 |
commit | 483262f633837f98c02261fb035dd25845cbe893 (patch) | |
tree | 261f7093500d43f6fac2192b1193900949b5f6a1 | |
parent | 4d4b3b1d88296efab67e789a676feb61b7929412 (diff) | |
download | busybox-w32-483262f633837f98c02261fb035dd25845cbe893.tar.gz busybox-w32-483262f633837f98c02261fb035dd25845cbe893.tar.bz2 busybox-w32-483262f633837f98c02261fb035dd25845cbe893.zip |
Patch from Matt Kraai to fix 'dirname /'
-rw-r--r-- | coreutils/dirname.c | 11 | ||||
-rw-r--r-- | dirname.c | 11 |
2 files changed, 12 insertions, 10 deletions
diff --git a/coreutils/dirname.c b/coreutils/dirname.c index ceb750cb8..63c557a29 100644 --- a/coreutils/dirname.c +++ b/coreutils/dirname.c | |||
@@ -32,13 +32,14 @@ extern int dirname_main(int argc, char **argv) | |||
32 | argv++; | 32 | argv++; |
33 | 33 | ||
34 | s=*argv+strlen(*argv)-1; | 34 | s=*argv+strlen(*argv)-1; |
35 | while (s && *s == '/') { | 35 | while (s != *argv && *s == '/') { |
36 | *s = '\0'; | 36 | *s-- = '\0'; |
37 | s=*argv+strlen(*argv)-1; | ||
38 | } | 37 | } |
39 | s = strrchr(*argv, '/'); | 38 | s = strrchr(*argv, '/'); |
40 | if (s && *s) | 39 | if (s != NULL && s == *argv) |
40 | s[1] = '\0'; | ||
41 | else if (s != NULL) | ||
41 | *s = '\0'; | 42 | *s = '\0'; |
42 | printf("%s\n", (s)? *argv : "."); | 43 | puts(s ? *argv : "."); |
43 | return EXIT_SUCCESS; | 44 | return EXIT_SUCCESS; |
44 | } | 45 | } |
@@ -32,13 +32,14 @@ extern int dirname_main(int argc, char **argv) | |||
32 | argv++; | 32 | argv++; |
33 | 33 | ||
34 | s=*argv+strlen(*argv)-1; | 34 | s=*argv+strlen(*argv)-1; |
35 | while (s && *s == '/') { | 35 | while (s != *argv && *s == '/') { |
36 | *s = '\0'; | 36 | *s-- = '\0'; |
37 | s=*argv+strlen(*argv)-1; | ||
38 | } | 37 | } |
39 | s = strrchr(*argv, '/'); | 38 | s = strrchr(*argv, '/'); |
40 | if (s && *s) | 39 | if (s != NULL && s == *argv) |
40 | s[1] = '\0'; | ||
41 | else if (s != NULL) | ||
41 | *s = '\0'; | 42 | *s = '\0'; |
42 | printf("%s\n", (s)? *argv : "."); | 43 | puts(s ? *argv : "."); |
43 | return EXIT_SUCCESS; | 44 | return EXIT_SUCCESS; |
44 | } | 45 | } |