diff options
author | Eric Andersen | 2000-07-13 18:42:58 +0000 |
---|---|---|
committer | Eric Andersen | 2000-07-13 18:42:58 +0000 |
commit | f4c022649b73fcc05f4b8f7ae3dc7036f58de96d (patch) | |
tree | e7047c841eafc5a6c224ac1685f878ed377c26ef /cp_mv.c | |
parent | 55380700d884358c42ca8d286b36699fd3745480 (diff) | |
download | busybox-f4c022649b73fcc05f4b8f7ae3dc7036f58de96d.zip busybox-f4c022649b73fcc05f4b8f7ae3dc7036f58de96d.tar.gz |
Patch from Marc Nijdam <marc_nijdam@hp.com>
> First (of many more) patch of cp_mv to getopt use. I'm using the most
> simplistic approach, just get getopt used, then worry about a cleaner
> option parsing style using getopt later.
>
> Marc
Diffstat (limited to 'cp_mv.c')
-rw-r--r-- | cp_mv.c | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -41,6 +41,7 @@ #include <string.h> #include <unistd.h> #include <errno.h> +#include <getopt.h> #define is_cp 0 #define is_mv 1 @@ -189,21 +190,21 @@ rm_Action(const char *fileName, struct stat *statbuf, void* junk) extern int cp_mv_main(int argc, char **argv) { + int i; + char c; + if (*applet_name == 'c' && *(applet_name + 1) == 'p') dz_i = is_cp; else dz_i = is_mv; if (argc < 3) usage(cp_mv_usage[dz_i]); - argc--; - argv++; if (dz_i == is_cp) { recursiveFlag = preserveFlag = forceFlag = FALSE; followLinks = TRUE; - while (*argv && **argv == '-') { - while (*++(*argv)) { - switch (**argv) { + while ((c = getopt(argc, argv, "adpRf")) != EOF) { + switch (c) { case 'a': followLinks = FALSE; preserveFlag = TRUE; @@ -224,11 +225,8 @@ extern int cp_mv_main(int argc, char **argv) default: usage(cp_mv_usage[is_cp]); } - } - argc--; - argv++; } - if (argc < 2) { + if ((argc - optind) < 2) { usage(cp_mv_usage[dz_i]); } } else { /* (dz_i == is_mv) */ @@ -252,12 +250,12 @@ extern int cp_mv_main(int argc, char **argv) goto exit_false; } - while (argc-- > 1) { + for (i = optind; i < (argc-1); i++) { size_t srcLen; volatile int flags_memo; int status; - baseSrcName = *(argv++); + baseSrcName=argv[i]; if ((srcLen = strlen(baseSrcName)) > BUFSIZ) name_too_long__exit(); |