Pass argc pointer to parse_options()

This lets us keep argc up to date as the backend picks out arguments
from the argv array.
diff --git a/clients/calibrator.c b/clients/calibrator.c
index 3b9f2fc..cc6f4ed 100644
--- a/clients/calibrator.c
+++ b/clients/calibrator.c
@@ -238,7 +238,7 @@
 	struct display *display;
 	struct calibrator *calibrator;
 
-	display = display_create(argc, argv);
+	display = display_create(&argc, argv);
 
 	if (display == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
diff --git a/clients/clickdot.c b/clients/clickdot.c
index c74bc91..714b4b9 100644
--- a/clients/clickdot.c
+++ b/clients/clickdot.c
@@ -297,7 +297,7 @@
 	struct display *display;
 	struct clickdot *clickdot;
 
-	display = display_create(argc, argv);
+	display = display_create(&argc, argv);
 	if (display == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/cliptest.c b/clients/cliptest.c
index 4dd4380..b824715 100644
--- a/clients/cliptest.c
+++ b/clients/cliptest.c
@@ -890,7 +890,7 @@
 	if (argc > 1)
 		return benchmark();
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/desktop-shell.c b/clients/desktop-shell.c
index 1cae789..41e7daa 100644
--- a/clients/desktop-shell.c
+++ b/clients/desktop-shell.c
@@ -1094,7 +1094,7 @@
 	desktop.unlock_task.run = unlock_dialog_finish;
 	wl_list_init(&desktop.outputs);
 
-	desktop.display = display_create(argc, argv);
+	desktop.display = display_create(&argc, argv);
 	if (desktop.display == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/dnd.c b/clients/dnd.c
index 4aad070..140f3f4 100644
--- a/clients/dnd.c
+++ b/clients/dnd.c
@@ -614,7 +614,7 @@
 	struct dnd *dnd;
 	int i;
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/editor.c b/clients/editor.c
index 32c3f9b..0de2500 100644
--- a/clients/editor.c
+++ b/clients/editor.c
@@ -1056,7 +1056,7 @@
 	g_type_init();
 #endif
 
-	editor.display = display_create(argc, argv);
+	editor.display = display_create(&argc, argv);
 	if (editor.display == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/eventdemo.c b/clients/eventdemo.c
index e59b076..05ad5dc 100644
--- a/clients/eventdemo.c
+++ b/clients/eventdemo.c
@@ -390,11 +390,11 @@
 	struct display *d;
 	struct eventdemo *e;
 
-	argc = parse_options(eventdemo_options,
-			     ARRAY_LENGTH(eventdemo_options), argc, argv);
+	parse_options(eventdemo_options,
+		      ARRAY_LENGTH(eventdemo_options), &argc, argv);
 
 	/* Connect to the display and have the arguments parsed */
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/flower.c b/clients/flower.c
index 21c38bf..87a1a00 100644
--- a/clients/flower.c
+++ b/clients/flower.c
@@ -159,7 +159,7 @@
 	struct display *d;
 	struct timeval tv;
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/gears.c b/clients/gears.c
index a622cda..e7249eb 100644
--- a/clients/gears.c
+++ b/clients/gears.c
@@ -474,7 +474,7 @@
 {
 	struct display *d;
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/image.c b/clients/image.c
index e25a665..cbd466c 100644
--- a/clients/image.c
+++ b/clients/image.c
@@ -410,7 +410,7 @@
 	int i;
 	int image_counter = 0;
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/keyboard.c b/clients/keyboard.c
index 3760ff7..ad34b85 100644
--- a/clients/keyboard.c
+++ b/clients/keyboard.c
@@ -706,7 +706,7 @@
 
 	memset(&virtual_keyboard, 0, sizeof virtual_keyboard);
 
-	virtual_keyboard.display = display_create(argc, argv);
+	virtual_keyboard.display = display_create(&argc, argv);
 	if (virtual_keyboard.display == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/resizor.c b/clients/resizor.c
index d02ab29..27879a0 100644
--- a/clients/resizor.c
+++ b/clients/resizor.c
@@ -281,7 +281,7 @@
 	struct display *display;
 	struct resizor *resizor;
 
-	display = display_create(argc, argv);
+	display = display_create(&argc, argv);
 	if (display == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/smoke.c b/clients/smoke.c
index 80b8c58..5d7333d 100644
--- a/clients/smoke.c
+++ b/clients/smoke.c
@@ -279,7 +279,7 @@
 	struct display *d;
 	int size;
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/tablet-shell.c b/clients/tablet-shell.c
index 993da7c..f756cbc 100644
--- a/clients/tablet-shell.c
+++ b/clients/tablet-shell.c
@@ -459,7 +459,7 @@
 	char *config_file;
 	struct output *output;
 
-	display = display_create(argc, argv);
+	display = display_create(&argc, argv);
 	if (display == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/terminal.c b/clients/terminal.c
index 664df5d..e80e0e5 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -2683,10 +2683,10 @@
 			  NULL);
 	free(config_file);
 
-	argc = parse_options(terminal_options,
-			     ARRAY_LENGTH(terminal_options), argc, argv);
+	parse_options(terminal_options,
+		      ARRAY_LENGTH(terminal_options), &argc, argv);
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/transformed.c b/clients/transformed.c
index 75c1250..8983bb5 100644
--- a/clients/transformed.c
+++ b/clients/transformed.c
@@ -264,7 +264,7 @@
 			usage(EXIT_FAILURE);
 	}
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/view.c b/clients/view.c
index 1bb9b9b..c8ced15 100644
--- a/clients/view.c
+++ b/clients/view.c
@@ -295,10 +295,9 @@
 
 	g_type_init();
 
-	argc = parse_options(view_options,
-			     ARRAY_LENGTH(view_options), argc, argv);
+	parse_options(view_options, ARRAY_LENGTH(view_options), &argc, argv);
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return -1;
diff --git a/clients/window.c b/clients/window.c
index d917550..249ba6f 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -4329,7 +4329,7 @@
 }
 
 struct display *
-display_create(int argc, char *argv[])
+display_create(int *argc, char *argv[])
 {
 	struct display *d;
 
diff --git a/clients/window.h b/clients/window.h
index 646b3dd..c2946d8 100644
--- a/clients/window.h
+++ b/clients/window.h
@@ -53,7 +53,7 @@
 };
 
 struct display *
-display_create(int argc, char *argv[]);
+display_create(int *argc, char *argv[]);
 
 void
 display_destroy(struct display *display);
diff --git a/clients/wscreensaver.c b/clients/wscreensaver.c
index e0c165a..9a2c47a 100644
--- a/clients/wscreensaver.c
+++ b/clients/wscreensaver.c
@@ -310,10 +310,10 @@
 
 	init_frand();
 
-	argc = parse_options(wscreensaver_options,
-			     ARRAY_LENGTH(wscreensaver_options), argc, argv);
+	parse_options(wscreensaver_options,
+		      ARRAY_LENGTH(wscreensaver_options), &argc, argv);
 
-	d = display_create(argc, argv);
+	d = display_create(&argc, argv);
 	if (d == NULL) {
 		fprintf(stderr, "failed to create display: %m\n");
 		return EXIT_FAILURE;