Pass argc pointer to parse_options()
authorKristian Høgsberg <krh@bitplanet.net>
Wed, 20 Feb 2013 20:27:49 +0000 (15:27 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 20 Feb 2013 20:27:49 +0000 (15:27 -0500)
This lets us keep argc up to date as the backend picks out arguments
from the argv array.

30 files changed:
clients/calibrator.c
clients/clickdot.c
clients/cliptest.c
clients/desktop-shell.c
clients/dnd.c
clients/editor.c
clients/eventdemo.c
clients/flower.c
clients/gears.c
clients/image.c
clients/keyboard.c
clients/resizor.c
clients/smoke.c
clients/tablet-shell.c
clients/terminal.c
clients/transformed.c
clients/view.c
clients/window.c
clients/window.h
clients/wscreensaver.c
shared/config-parser.h
shared/option-parser.c
src/compositor-drm.c
src/compositor-fbdev.c
src/compositor-headless.c
src/compositor-rpi.c
src/compositor-wayland.c
src/compositor-x11.c
src/compositor.c
src/compositor.h

index 3b9f2fc..cc6f4ed 100644 (file)
@@ -238,7 +238,7 @@ main(int argc, char *argv[])
        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");
index c74bc91..714b4b9 100644 (file)
@@ -297,7 +297,7 @@ main(int argc, char *argv[])
        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;
index 4dd4380..b824715 100644 (file)
@@ -890,7 +890,7 @@ main(int argc, char *argv[])
        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;
index 1cae789..41e7daa 100644 (file)
@@ -1094,7 +1094,7 @@ int main(int argc, char *argv[])
        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;
index 4aad070..140f3f4 100644 (file)
@@ -614,7 +614,7 @@ main(int argc, char *argv[])
        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;
index 32c3f9b..0de2500 100644 (file)
@@ -1056,7 +1056,7 @@ main(int argc, char *argv[])
        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;
index e59b076..05ad5dc 100644 (file)
@@ -390,11 +390,11 @@ main(int argc, char *argv[])
        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;
index 21c38bf..87a1a00 100644 (file)
@@ -159,7 +159,7 @@ int main(int argc, char *argv[])
        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;
index a622cda..e7249eb 100644 (file)
@@ -474,7 +474,7 @@ int main(int argc, char *argv[])
 {
        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;
index e25a665..cbd466c 100644 (file)
@@ -410,7 +410,7 @@ main(int argc, char *argv[])
        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;
index 3760ff7..ad34b85 100644 (file)
@@ -706,7 +706,7 @@ main(int argc, char *argv[])
 
        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;
index d02ab29..27879a0 100644 (file)
@@ -281,7 +281,7 @@ main(int argc, char *argv[])
        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;
index 80b8c58..5d7333d 100644 (file)
@@ -279,7 +279,7 @@ int main(int argc, char *argv[])
        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;
index 993da7c..f756cbc 100644 (file)
@@ -459,7 +459,7 @@ int main(int argc, char *argv[])
        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;
index 664df5d..e80e0e5 100644 (file)
@@ -2683,10 +2683,10 @@ int main(int argc, char *argv[])
                          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;
index 75c1250..8983bb5 100644 (file)
@@ -264,7 +264,7 @@ int main(int argc, char *argv[])
                        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;
index 1bb9b9b..c8ced15 100644 (file)
@@ -295,10 +295,9 @@ main(int argc, char *argv[])
 
        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;
index d917550..249ba6f 100644 (file)
@@ -4329,7 +4329,7 @@ handle_display_data(struct task *task, uint32_t events)
 }
 
 struct display *
-display_create(int argc, char *argv[])
+display_create(int *argc, char *argv[])
 {
        struct display *d;
 
index 646b3dd..c2946d8 100644 (file)
@@ -53,7 +53,7 @@ struct rectangle {
 };
 
 struct display *
-display_create(int argc, char *argv[]);
+display_create(int *argc, char *argv[]);
 
 void
 display_destroy(struct display *display);
index e0c165a..9a2c47a 100644 (file)
@@ -310,10 +310,10 @@ int main(int argc, char *argv[])
 
        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;
index 7fa9c3f..314057a 100644 (file)
@@ -67,7 +67,7 @@ struct weston_option {
 
 int
 parse_options(const struct weston_option *options,
-             int count, int argc, char *argv[]);
+             int count, int *argc, char *argv[]);
 
 #endif /* CONFIGPARSER_H */
 
index 600f110..a7e497f 100644 (file)
@@ -51,11 +51,11 @@ handle_option(const struct weston_option *option, char *value)
 
 int
 parse_options(const struct weston_option *options,
-             int count, int argc, char *argv[])
+             int count, int *argc, char *argv[])
 {
        int i, j, k, len = 0;
 
-       for (i = 1, j = 1; i < argc; i++) {
+       for (i = 1, j = 1; i < *argc; i++) {
                for (k = 0; k < count; k++) {
                        if (options[k].name)
                                len = strlen(options[k].name);
@@ -77,6 +77,7 @@ parse_options(const struct weston_option *options,
                        argv[j++] = argv[i];
        }
        argv[j] = NULL;
+       *argc = j;
 
        return j;
 }
index c170f97..a824324 100644 (file)
@@ -2134,7 +2134,7 @@ planes_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
 static struct weston_compositor *
 drm_compositor_create(struct wl_display *display,
                      int connector, const char *seat, int tty, int pixman,
-                     int argc, char *argv[], const char *config_file)
+                     int *argc, char *argv[], const char *config_file)
 {
        struct drm_compositor *ec;
        struct udev_device *drm_device;
@@ -2430,7 +2430,7 @@ output_section_done(void *data)
 }
 
 WL_EXPORT struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
+backend_init(struct wl_display *display, int *argc, char *argv[],
             const char *config_file)
 {
        int connector = 0, tty = 0, use_pixman = 0;
index 1df3bbc..070d187 100644 (file)
@@ -826,7 +826,7 @@ switch_vt_binding(struct wl_seat *seat, uint32_t time, uint32_t key, void *data)
 }
 
 static struct weston_compositor *
-fbdev_compositor_create(struct wl_display *display, int argc, char *argv[],
+fbdev_compositor_create(struct wl_display *display, int *argc, char *argv[],
                         const char *config_file, struct fbdev_parameters *param)
 {
        struct fbdev_compositor *compositor;
@@ -897,7 +897,7 @@ out_free:
 }
 
 WL_EXPORT struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
+backend_init(struct wl_display *display, int *argc, char *argv[],
             const char *config_file)
 {
        /* TODO: Ideally, available frame buffers should be enumerated using
index 03bd0a4..1e286fa 100644 (file)
@@ -152,7 +152,7 @@ headless_destroy(struct weston_compositor *ec)
 static struct weston_compositor *
 headless_compositor_create(struct wl_display *display,
                          int width, int height, const char *display_name,
-                         int argc, char *argv[], const char *config_file)
+                         int *argc, char *argv[], const char *config_file)
 {
        struct headless_compositor *c;
 
@@ -187,7 +187,7 @@ err_free:
 }
 
 WL_EXPORT struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
+backend_init(struct wl_display *display, int *argc, char *argv[],
             const char *config_file)
 {
        int width = 1024, height = 640;
index 208271f..d3767b9 100644 (file)
@@ -1423,7 +1423,7 @@ struct rpi_parameters {
 };
 
 static struct weston_compositor *
-rpi_compositor_create(struct wl_display *display, int argc, char *argv[],
+rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
                      const char *config_file, struct rpi_parameters *param)
 {
        struct rpi_compositor *compositor;
@@ -1536,7 +1536,7 @@ out_free:
 #define DEFAULT_MAX_PLANES 80
 
 WL_EXPORT struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
+backend_init(struct wl_display *display, int *argc, char *argv[],
             const char *config_file)
 {
        struct rpi_parameters param = {
index af493e7..66e9695 100644 (file)
@@ -622,7 +622,7 @@ wayland_destroy(struct weston_compositor *ec)
 static struct weston_compositor *
 wayland_compositor_create(struct wl_display *display,
                          int width, int height, const char *display_name,
-                         int argc, char *argv[], const char *config_file)
+                         int *argc, char *argv[], const char *config_file)
 {
        struct wayland_compositor *c;
        struct wl_event_loop *loop;
@@ -697,7 +697,7 @@ err_free:
 }
 
 WL_EXPORT struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
+backend_init(struct wl_display *display, int *argc, char *argv[],
             const char *config_file)
 {
        int width = 1024, height = 640;
index 9cc41fd..1119934 100644 (file)
@@ -1366,7 +1366,7 @@ x11_compositor_create(struct wl_display *display,
                      int fullscreen,
                      int no_input,
                      int use_pixman,
-                     int argc, char *argv[], const char *config_file)
+                     int *argc, char *argv[], const char *config_file)
 {
        struct x11_compositor *c;
        struct x11_configured_output *o;
@@ -1556,7 +1556,7 @@ err_free:
 }
 
 WL_EXPORT struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
+backend_init(struct wl_display *display, int *argc, char *argv[],
             const char *config_file)
 {
        int fullscreen = 0;
index 64d0830..fb5cb2c 100644 (file)
@@ -2951,8 +2951,7 @@ log_uname(void)
 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 @@ int main(int argc, char *argv[])
        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 @@ int main(int argc, char *argv[])
                { 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 @@ int main(int argc, char *argv[])
        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 @@ int main(int argc, char *argv[])
        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;
        }
index fdde762..11afbb9 100644 (file)
@@ -714,7 +714,7 @@ weston_compositor_get_time(void);
 
 int
 weston_compositor_init(struct weston_compositor *ec, struct wl_display *display,
-                      int argc, char *argv[], const char *config_file);
+                      int *argc, char *argv[], const char *config_file);
 void
 weston_compositor_shutdown(struct weston_compositor *ec);
 void
@@ -839,8 +839,8 @@ int
 noop_renderer_init(struct weston_compositor *ec);
 
 struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
-           const char *config_file);
+backend_init(struct wl_display *display, int *argc, char *argv[],
+            const char *config_file);
 
 int
 module_init(struct weston_compositor *compositor);