[BusyBox] cp_mv - geyopt patch

Marc Nijdam marc_nijdam at hp.com
Wed Jul 12 23:09:50 UTC 2000


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
-------------- next part --------------
Index: cp_mv.c
===================================================================
RCS file: /var/cvs/busybox/cp_mv.c,v
retrieving revision 1.14
diff -u -r1.14 cp_mv.c
--- cp_mv.c	2000/07/12 00:53:06	1.14
+++ cp_mv.c	2000/07/12 22:58:24
@@ -189,21 +189,21 @@
 
 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 +224,8 @@
 				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 +249,12 @@
 		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();


More information about the busybox mailing list