[Piglit] [PATCH 08/14] util: Refactor argv processing out of main()

Chad Versace chad.versace at linux.intel.com
Tue Jun 12 16:02:54 PDT 2012


Move argument processing out of main() into a separate function.  By
simplifying main(), we simplify the transition of main() from
libpiglitutil to test executable.

Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
---
 tests/util/piglit-framework.c |   26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/tests/util/piglit-framework.c b/tests/util/piglit-framework.c
index 6e5ae34..a0ef496 100644
--- a/tests/util/piglit-framework.c
+++ b/tests/util/piglit-framework.c
@@ -67,26 +67,33 @@ delete_arg(char *argv[], int argc, int arg)
 	}
 }
 
-int main(int argc, char *argv[])
+/**
+ * Recognized arguments are removed from @a argv. The updated array
+ * length is returned in @a argc.
+ */
+static void
+process_args(int *argc, char *argv[])
 {
 	int j;
 
 	/* Find/remove "-auto" and "-fbo" from the argument vector.
 	 */
-	for (j = 1; j < argc; j++) {
+	for (j = 1; j < *argc; j++) {
 		if (!strcmp(argv[j], "-auto")) {
 			piglit_automatic = 1;
-			delete_arg(argv, argc--, j--);
+			delete_arg(argv, *argc, j--);
+			*argc -= 1;
 		} else if (!strcmp(argv[j], "-fbo")) {
 			piglit_use_fbo = true;
-			delete_arg(argv, argc--, j--);
+			delete_arg(argv, *argc, j--);
+			*argc -= 1;
 		} else if (!strcmp(argv[j], "-rlimit")) {
 			char *ptr;
 			unsigned long lim;
 			int i;
 
 			j++;
-			if (j >= argc) {
+			if (j >= *argc) {
 				fprintf(stderr,
 					"-rlimit requires an argument\n");
 				piglit_report_result(PIGLIT_FAIL);
@@ -104,13 +111,18 @@ int main(int argc, char *argv[])
 			/* Remove 2 arguments (hence the 'i - 2') from the
 			 * command line.
 			 */
-			for (i = j + 1; i < argc; i++) {
+			for (i = j + 1; i < *argc; i++) {
 				argv[i - 2] = argv[i];
 			}
-			argc -= 2;
+			*argc -= 2;
 			j -= 2;
 		}
 	}
+}
+
+int main(int argc, char *argv[])
+{
+	process_args(&argc, argv);
 
 	if (piglit_use_fbo) {
 		if (!piglit_framework_fbo_init())
-- 
1.7.10.4



More information about the Piglit mailing list