diff options
Diffstat (limited to 'coreutils/ln.c')
-rw-r--r-- | coreutils/ln.c | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/coreutils/ln.c b/coreutils/ln.c index 29ff938..d4fa473 100644 --- a/coreutils/ln.c +++ b/coreutils/ln.c @@ -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) { |