diff options
Diffstat (limited to 'ln.c')
-rw-r--r-- | ln.c | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -51,16 +51,14 @@ extern int ln_main(int argc, char **argv) | |||
51 | { | 51 | { |
52 | char *linkName; | 52 | char *linkName; |
53 | int linkIntoDirFlag; | 53 | int linkIntoDirFlag; |
54 | int stopIt = FALSE; | ||
54 | 55 | ||
55 | if (argc < 3) { | ||
56 | usage(ln_usage); | ||
57 | } | ||
58 | argc--; | 56 | argc--; |
59 | argv++; | 57 | argv++; |
60 | 58 | ||
61 | /* Parse any options */ | 59 | /* Parse any options */ |
62 | while (--argc >= 0 && *argv && **argv) { | 60 | while (argc > 0 && stopIt == FALSE) { |
63 | while (**argv == '-') { | 61 | if (**argv == '-') { |
64 | while (*++(*argv)) | 62 | while (*++(*argv)) |
65 | switch (**argv) { | 63 | switch (**argv) { |
66 | case 's': | 64 | case 's': |
@@ -72,15 +70,21 @@ extern int ln_main(int argc, char **argv) | |||
72 | case 'n': | 70 | case 'n': |
73 | followLinks = FALSE; | 71 | followLinks = FALSE; |
74 | break; | 72 | break; |
73 | case '-': | ||
74 | stopIt = TRUE; | ||
75 | break; | ||
75 | default: | 76 | default: |
76 | usage(ln_usage); | 77 | usage(ln_usage); |
77 | } | 78 | } |
79 | argc--; | ||
80 | argv++; | ||
78 | } | 81 | } |
79 | argv++; | 82 | else |
83 | break; | ||
80 | } | 84 | } |
81 | 85 | ||
82 | if (argc < 1) { | 86 | if (argc < 2) { |
83 | fatalError("ln: missing file argument\n"); | 87 | usage(ln_usage); |
84 | } | 88 | } |
85 | 89 | ||
86 | linkName = argv[argc - 1]; | 90 | linkName = argv[argc - 1]; |