diff options
-rw-r--r-- | cp_mv.c | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -41,6 +41,7 @@ | |||
41 | #include <string.h> | 41 | #include <string.h> |
42 | #include <unistd.h> | 42 | #include <unistd.h> |
43 | #include <errno.h> | 43 | #include <errno.h> |
44 | #include <getopt.h> | ||
44 | 45 | ||
45 | #define is_cp 0 | 46 | #define is_cp 0 |
46 | #define is_mv 1 | 47 | #define is_mv 1 |
@@ -189,21 +190,21 @@ rm_Action(const char *fileName, struct stat *statbuf, void* junk) | |||
189 | 190 | ||
190 | extern int cp_mv_main(int argc, char **argv) | 191 | extern int cp_mv_main(int argc, char **argv) |
191 | { | 192 | { |
193 | int i; | ||
194 | char c; | ||
195 | |||
192 | if (*applet_name == 'c' && *(applet_name + 1) == 'p') | 196 | if (*applet_name == 'c' && *(applet_name + 1) == 'p') |
193 | dz_i = is_cp; | 197 | dz_i = is_cp; |
194 | else | 198 | else |
195 | dz_i = is_mv; | 199 | dz_i = is_mv; |
196 | if (argc < 3) | 200 | if (argc < 3) |
197 | usage(cp_mv_usage[dz_i]); | 201 | usage(cp_mv_usage[dz_i]); |
198 | argc--; | ||
199 | argv++; | ||
200 | 202 | ||
201 | if (dz_i == is_cp) { | 203 | if (dz_i == is_cp) { |
202 | recursiveFlag = preserveFlag = forceFlag = FALSE; | 204 | recursiveFlag = preserveFlag = forceFlag = FALSE; |
203 | followLinks = TRUE; | 205 | followLinks = TRUE; |
204 | while (*argv && **argv == '-') { | 206 | while ((c = getopt(argc, argv, "adpRf")) != EOF) { |
205 | while (*++(*argv)) { | 207 | switch (c) { |
206 | switch (**argv) { | ||
207 | case 'a': | 208 | case 'a': |
208 | followLinks = FALSE; | 209 | followLinks = FALSE; |
209 | preserveFlag = TRUE; | 210 | preserveFlag = TRUE; |
@@ -224,11 +225,8 @@ extern int cp_mv_main(int argc, char **argv) | |||
224 | default: | 225 | default: |
225 | usage(cp_mv_usage[is_cp]); | 226 | usage(cp_mv_usage[is_cp]); |
226 | } | 227 | } |
227 | } | ||
228 | argc--; | ||
229 | argv++; | ||
230 | } | 228 | } |
231 | if (argc < 2) { | 229 | if ((argc - optind) < 2) { |
232 | usage(cp_mv_usage[dz_i]); | 230 | usage(cp_mv_usage[dz_i]); |
233 | } | 231 | } |
234 | } else { /* (dz_i == is_mv) */ | 232 | } else { /* (dz_i == is_mv) */ |
@@ -252,12 +250,12 @@ extern int cp_mv_main(int argc, char **argv) | |||
252 | goto exit_false; | 250 | goto exit_false; |
253 | } | 251 | } |
254 | 252 | ||
255 | while (argc-- > 1) { | 253 | for (i = optind; i < (argc-1); i++) { |
256 | size_t srcLen; | 254 | size_t srcLen; |
257 | volatile int flags_memo; | 255 | volatile int flags_memo; |
258 | int status; | 256 | int status; |
259 | 257 | ||
260 | baseSrcName = *(argv++); | 258 | baseSrcName=argv[i]; |
261 | 259 | ||
262 | if ((srcLen = strlen(baseSrcName)) > BUFSIZ) | 260 | if ((srcLen = strlen(baseSrcName)) > BUFSIZ) |
263 | name_too_long__exit(); | 261 | name_too_long__exit(); |