diff options
Diffstat (limited to 'cp_mv.c')
-rw-r--r-- | cp_mv.c | 51 |
1 files changed, 28 insertions, 23 deletions
@@ -203,37 +203,42 @@ extern int cp_mv_main(int argc, char **argv) | |||
203 | if (dz_i == is_cp) { | 203 | if (dz_i == is_cp) { |
204 | recursiveFlag = preserveFlag = forceFlag = FALSE; | 204 | recursiveFlag = preserveFlag = forceFlag = FALSE; |
205 | followLinks = TRUE; | 205 | followLinks = TRUE; |
206 | while (**argv == '-') { | 206 | while (--argc >= 0 && *argv && **argv) { |
207 | while (*++(*argv)) { | 207 | while (**argv == '-') { |
208 | switch (**argv) { | 208 | while (*++(*argv)) { |
209 | case 'a': | 209 | switch (**argv) { |
210 | followLinks = FALSE; | 210 | case 'a': |
211 | preserveFlag = TRUE; | 211 | followLinks = FALSE; |
212 | recursiveFlag = TRUE; | 212 | preserveFlag = TRUE; |
213 | break; | 213 | recursiveFlag = TRUE; |
214 | case 'd': | 214 | break; |
215 | followLinks = FALSE; | 215 | case 'd': |
216 | break; | 216 | followLinks = FALSE; |
217 | case 'p': | 217 | break; |
218 | preserveFlag = TRUE; | 218 | case 'p': |
219 | break; | 219 | preserveFlag = TRUE; |
220 | case 'R': | 220 | break; |
221 | recursiveFlag = TRUE; | 221 | case 'R': |
222 | break; | 222 | recursiveFlag = TRUE; |
223 | case 'f': | 223 | break; |
224 | forceFlag = TRUE; | 224 | case 'f': |
225 | break; | 225 | forceFlag = TRUE; |
226 | default: | 226 | break; |
227 | usage(cp_mv_usage[is_cp]); | 227 | default: |
228 | usage(cp_mv_usage[is_cp]); | ||
229 | } | ||
228 | } | 230 | } |
229 | } | 231 | } |
230 | argc--; | ||
231 | argv++; | 232 | argv++; |
232 | } | 233 | } |
234 | if (argc < 1) { | ||
235 | fatalError("cp: missing file argument\n"); | ||
236 | } | ||
233 | } else { /* (dz_i == is_mv) */ | 237 | } else { /* (dz_i == is_mv) */ |
234 | recursiveFlag = preserveFlag = TRUE; | 238 | recursiveFlag = preserveFlag = TRUE; |
235 | followLinks = FALSE; | 239 | followLinks = FALSE; |
236 | } | 240 | } |
241 | |||
237 | 242 | ||
238 | if (strlen(argv[argc - 1]) > BUFSIZ) { | 243 | if (strlen(argv[argc - 1]) > BUFSIZ) { |
239 | fprintf(stderr, name_too_long, "cp"); | 244 | fprintf(stderr, name_too_long, "cp"); |