chiark / gitweb /
multi-seat-x: drop a lot of unnecessary code
authorLennart Poettering <lennart@poettering.net>
Fri, 21 Sep 2012 15:03:18 +0000 (17:03 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 21 Sep 2012 15:03:40 +0000 (17:03 +0200)
Makefile.am
src/login/multi-seat-x.c

index 36b33c2..d9049bb 100644 (file)
@@ -3352,8 +3352,7 @@ systemd_multi_seat_x_SOURCES = \
 
 systemd_multi_seat_x_LDADD = \
        libsystemd-label.la \
-       libsystemd-shared.la \
-       libudev.la
+       libsystemd-shared.la
 
 rootlibexec_PROGRAMS += \
        systemd-multi-seat-x
index 370b12f..83760d4 100644 (file)
 #include <string.h>
 #include <unistd.h>
 
-#include <libudev.h>
-
 #include "util.h"
 #include "mkdir.h"
 
 int main(int argc, char *argv[]) {
 
-        struct udev *udev = NULL;
-        struct udev_enumerate *enumerator = NULL;
-        struct udev_list_entry *first, *item;
         int i;
         const char *seat = NULL;
         char **new_argv;
-        char *path = NULL, *device_node = NULL;
+        _cleanup_free_ char *path = NULL;
         int r;
-        FILE *f = NULL;
-
-        /* This binary will go away as soon as X natively supports
-         * display enumeration with udev in a way that covers both PCI
-         * and USB. */
+        _cleanup_fclose_ FILE *f = NULL;
 
-        /* This will simply determine the fb device id of the graphics
-         * device assigned to a seat and write a configuration file
-         * from it and then spawn the real X server. */
+        /* This binary will go away as soon as X natively takes the
+         * arguments in question as command line parameters, instead
+         * of requiring them in the configuration file. */
 
         /* If this file is removed, don't forget to remove the code
          * that invokes this in gdm and other display managers. */
@@ -61,58 +52,6 @@ int main(int argc, char *argv[]) {
                 goto fail;
         }
 
-        udev = udev_new();
-        if (!udev) {
-                log_error("Failed to allocate udev environment.");
-                goto fail;
-        }
-
-        enumerator = udev_enumerate_new(udev);
-        if (!enumerator) {
-                log_error("Failed to allocate udev enumerator.");
-                goto fail;
-        }
-
-        udev_enumerate_add_match_subsystem(enumerator, "graphics");
-        udev_enumerate_add_match_tag(enumerator, seat);
-
-        r = udev_enumerate_scan_devices(enumerator);
-        if (r < 0) {
-                log_error("Failed to enumerate devices.");
-                goto fail;
-        }
-
-        first = udev_enumerate_get_list_entry(enumerator);
-        udev_list_entry_foreach(item, first) {
-                struct udev_device *d;
-                const char *dn;
-
-                d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
-                if (!d)
-                        continue;
-
-                dn = udev_device_get_devnode(d);
-
-                if (dn) {
-                        device_node = strdup(dn);
-                        if (!device_node) {
-                                udev_device_unref(d);
-                                log_oom();
-                                goto fail;
-                        }
-                }
-
-                udev_device_unref(d);
-
-                if (device_node)
-                        break;
-        }
-
-        if (!device_node) {
-                log_error("Failed to find device node for seat %s.", seat);
-                goto fail;
-        }
-
         r = mkdir_safe_label("/run/systemd/multi-session-x", 0755, 0, 0);
         if (r < 0) {
                 log_error("Failed to create directory: %s", strerror(-r));
@@ -152,7 +91,7 @@ int main(int argc, char *argv[]) {
         fclose(f);
         f = NULL;
 
-        new_argv = alloca(sizeof(char*) * (argc + 3 + 1));
+        new_argv = newa(char*, argc + 3 + 1);
         memcpy(new_argv, argv, sizeof(char*) * (argc + 2 + 1));
 
         new_argv[0] = (char*) X_SERVER;
@@ -161,30 +100,9 @@ int main(int argc, char *argv[]) {
         new_argv[argc+2] = (char*) "-sharevts";
         new_argv[argc+3] = NULL;
 
-        udev_enumerate_unref(enumerator);
-        enumerator = NULL;
-
-        udev_unref(udev);
-        udev = NULL;
-
-        free(device_node);
-        device_node = NULL;
-
         execv(X_SERVER, new_argv);
         log_error("Failed to execute real X server: %m");
 
 fail:
-        if (enumerator)
-                udev_enumerate_unref(enumerator);
-
-        if (udev)
-                udev_unref(udev);
-
-        free(path);
-        free(device_node);
-
-        if (f)
-                fclose(f);
-
         return EXIT_FAILURE;
 }