diff options
author | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2000-06-06 16:15:23 +0000 |
---|---|---|
committer | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2000-06-06 16:15:23 +0000 |
commit | 088238cc727a9594cc20e6caed137fc532671188 (patch) | |
tree | 0955917be0c7adc926b7298bf450fedc67e447e6 /ln.c | |
parent | 0763f791683f2323a24e5ec82fc2deafc70b5dd1 (diff) | |
download | busybox-w32-088238cc727a9594cc20e6caed137fc532671188.tar.gz busybox-w32-088238cc727a9594cc20e6caed137fc532671188.tar.bz2 busybox-w32-088238cc727a9594cc20e6caed137fc532671188.zip |
Fixed a bunch of stuff:
* Fixed segfault caused by "touch -c"
* Fixed segfault caused by "rm -f"
* Fixed segfault caused by "ln -s -s" and similar abuses.
* Fixed segfault caused by "cp -a -a" and similar abuses.
* Implemented "rm -- <foo>"
updated docs accordingly.
-Erik
git-svn-id: svn://busybox.net/trunk/busybox@613 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'ln.c')
-rw-r--r-- | ln.c | 37 |
1 files changed, 21 insertions, 16 deletions
@@ -59,25 +59,30 @@ extern int ln_main(int argc, char **argv) | |||
59 | argv++; | 59 | argv++; |
60 | 60 | ||
61 | /* Parse any options */ | 61 | /* Parse any options */ |
62 | while (**argv == '-') { | 62 | while (--argc >= 0 && *argv && **argv) { |
63 | while (*++(*argv)) | 63 | while (**argv == '-') { |
64 | switch (**argv) { | 64 | while (*++(*argv)) |
65 | case 's': | 65 | switch (**argv) { |
66 | symlinkFlag = TRUE; | 66 | case 's': |
67 | break; | 67 | symlinkFlag = TRUE; |
68 | case 'f': | 68 | break; |
69 | removeoldFlag = TRUE; | 69 | case 'f': |
70 | break; | 70 | removeoldFlag = TRUE; |
71 | case 'n': | 71 | break; |
72 | followLinks = FALSE; | 72 | case 'n': |
73 | break; | 73 | followLinks = FALSE; |
74 | default: | 74 | break; |
75 | usage(ln_usage); | 75 | default: |
76 | } | 76 | usage(ln_usage); |
77 | argc--; | 77 | } |
78 | } | ||
78 | argv++; | 79 | argv++; |
79 | } | 80 | } |
80 | 81 | ||
82 | if (argc < 1) { | ||
83 | fatalError("ln: missing file argument\n"); | ||
84 | } | ||
85 | |||
81 | linkName = argv[argc - 1]; | 86 | linkName = argv[argc - 1]; |
82 | 87 | ||
83 | if (strlen(linkName) > BUFSIZ) { | 88 | if (strlen(linkName) > BUFSIZ) { |