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
This commit is contained in:
Eric Andersen 2000-06-06 16:15:23 +00:00
parent c389d91181
commit 815e904470
11 changed files with 123 additions and 98 deletions

View file

@ -59,25 +59,30 @@ extern int ln_main(int argc, char **argv)
argv++;
/* Parse any options */
while (**argv == '-') {
while (*++(*argv))
switch (**argv) {
case 's':
symlinkFlag = TRUE;
break;
case 'f':
removeoldFlag = TRUE;
break;
case 'n':
followLinks = FALSE;
break;
default:
usage(ln_usage);
}
argc--;
while (--argc >= 0 && *argv && **argv) {
while (**argv == '-') {
while (*++(*argv))
switch (**argv) {
case 's':
symlinkFlag = TRUE;
break;
case 'f':
removeoldFlag = TRUE;
break;
case 'n':
followLinks = FALSE;
break;
default:
usage(ln_usage);
}
}
argv++;
}
if (argc < 1) {
fatalError("ln: missing file argument\n");
}
linkName = argv[argc - 1];
if (strlen(linkName) > BUFSIZ) {