Module Name:    othersrc
Committed By:   agc
Date:           Fri Mar  1 07:19:48 UTC 2013

Modified Files:
        othersrc/external/bsd/getopt2/dist: getopt2.c

Log Message:
increment the sub-index if we're presented with an argument consisting of
single character options, and none is matched: as in "tar -cvzf ..."


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 othersrc/external/bsd/getopt2/dist/getopt2.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: othersrc/external/bsd/getopt2/dist/getopt2.c
diff -u othersrc/external/bsd/getopt2/dist/getopt2.c:1.2 othersrc/external/bsd/getopt2/dist/getopt2.c:1.3
--- othersrc/external/bsd/getopt2/dist/getopt2.c:1.2	Wed Nov 28 06:51:23 2012
+++ othersrc/external/bsd/getopt2/dist/getopt2.c	Fri Mar  1 07:19:47 2013
@@ -29,6 +29,19 @@
 
 #include "getopt2.h"
 
+static void
+increment_index(getopt2_t *options, char **argv, int subind)
+{
+	if (argv[options->optind][subind] == 0x0) {
+		options->optsubind = 0;
+		options->optind += 1;
+	} else {
+		options->optsubind = subind;
+	}
+}
+
+/*******************************************************************/
+
 int
 getopt2_init(getopt2_t *options)
 {
@@ -64,7 +77,9 @@ getopt2(getopt2_t *options, int argc, ch
 		return options->optopt = -1;
 	}
 	if ((opt = strchr(optstring, ch)) == NULL) {
+		/* option given is not one that's recognised */
 		(void) fprintf(stderr, "getopt2: '%c' unknown option\n", ch);
+		increment_index(options, argv, subind);
 		return options->optopt = '?';
 	}
 	switch(*(opt + 1)) {
@@ -94,12 +109,7 @@ getopt2(getopt2_t *options, int argc, ch
 		options->optsubind = 0;
 		break;
 	default:
-		if (argv[options->optind][subind] == 0x0) {
-			options->optsubind = 0;
-			options->optind += 1;
-		} else {
-			options->optsubind = subind;
-		}
+		increment_index(options, argv, subind);
 		options->optarg = NULL;
 		break;
 	}

Reply via email to