aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2000-12-12 23:27:48 +0000
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2000-12-12 23:27:48 +0000
commitf8c0bb23056161c2036a7a3713394782b471689c (patch)
tree261f7093500d43f6fac2192b1193900949b5f6a1
parent13ae98c5f9f484fea30e1321afe2383dbbe246ce (diff)
downloadbusybox-w32-f8c0bb23056161c2036a7a3713394782b471689c.tar.gz
busybox-w32-f8c0bb23056161c2036a7a3713394782b471689c.tar.bz2
busybox-w32-f8c0bb23056161c2036a7a3713394782b471689c.zip
Patch from Matt Kraai to fix 'dirname /'
git-svn-id: svn://busybox.net/trunk/busybox@1440 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--coreutils/dirname.c11
-rw-r--r--dirname.c11
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}
diff --git a/dirname.c b/dirname.c
index ceb750cb8..63c557a29 100644
--- a/dirname.c
+++ b/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}