aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cp_mv.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/cp_mv.c b/cp_mv.c
index 3dc637d7f..cd061befb 100644
--- a/cp_mv.c
+++ b/cp_mv.c
@@ -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
190extern int cp_mv_main(int argc, char **argv) 191extern 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();