aboutsummaryrefslogtreecommitdiff
path: root/ln.c
diff options
context:
space:
mode:
Diffstat (limited to 'ln.c')
-rw-r--r--ln.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/ln.c b/ln.c
index 29ff93863..d4fa47306 100644
--- a/ln.c
+++ b/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) {