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/src/compositor.c b/src/compositor.c
index 64d0830..fb5cb2c 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2951,8 +2951,7 @@
 WL_EXPORT int
 weston_compositor_init(struct weston_compositor *ec,
 		       struct wl_display *display,
-		       int argc,
-		       char *argv[],
+		       int *argc, char *argv[],
 		       const char *config_file)
 {
 	struct wl_event_loop *loop;
@@ -3336,7 +3335,7 @@
 	struct sigaction segv_action;
 	struct weston_compositor
 		*(*backend_init)(struct wl_display *display,
-				 int argc, char *argv[], const char *config_file);
+				 int *argc, char *argv[], const char *config_file);
 	int i;
 	char *backend = NULL;
 	const char *modules = "desktop-shell.so", *option_modules = NULL;
@@ -3366,8 +3365,7 @@
 		{ WESTON_OPTION_BOOLEAN, "version", 0, &version },
 	};
 
-	argc = parse_options(core_options,
-			     ARRAY_LENGTH(core_options), argc, argv);
+	parse_options(core_options, ARRAY_LENGTH(core_options), &argc, argv);
 
 	if (help)
 		usage(EXIT_SUCCESS);
@@ -3419,7 +3417,7 @@
 	if (!backend_init)
 		exit(EXIT_FAILURE);
 
-	ec = backend_init(display, argc, argv, config_file);
+	ec = backend_init(display, &argc, argv, config_file);
 	if (ec == NULL) {
 		weston_log("fatal: failed to create compositor\n");
 		exit(EXIT_FAILURE);
@@ -3431,9 +3429,10 @@
 	sigaction(SIGSEGV, &segv_action, NULL);
 	segv_compositor = ec;
 
-	for (i = 1; argv[i]; i++)
+
+	for (i = 1; i < argc; i++)
 		weston_log("fatal: unhandled option: %s\n", argv[i]);
-	if (argv[1]) {
+	if (argc > 1) {
 		ret = EXIT_FAILURE;
 		goto out;
 	}