pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
swc: update to latest commit in
Module Name: pkgsrc-wip
Committed By: Maya Rashish <maya%NetBSD.org@localhost>
Pushed By: coypu
Date: Sun Aug 11 19:56:48 2019 +0300
Changeset: a27983a4b8b91b91860a17a4b6c7a48a0282b1e9
Modified Files:
swc/distinfo
swc/patches/patch-launch_launch.c
swc/patches/patch-libswc_seat-ws.c
Added Files:
swc/patches/patch-libswc_keyboard.c
Log Message:
swc: update to latest commit in
https://github.com/coypoop/swc/tree/wsdisplay
Now we can see velox crashing, for a value of "seeing" which means
reading ktrace output.
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=a27983a4b8b91b91860a17a4b6c7a48a0282b1e9
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
swc/distinfo | 5 +-
swc/patches/patch-launch_launch.c | 539 ++++++++----------------------------
swc/patches/patch-libswc_keyboard.c | 17 ++
swc/patches/patch-libswc_seat-ws.c | 6 +-
4 files changed, 142 insertions(+), 425 deletions(-)
diffs:
diff --git a/swc/distinfo b/swc/distinfo
index e2c0174dad..5abfa3f55f 100644
--- a/swc/distinfo
+++ b/swc/distinfo
@@ -6,10 +6,11 @@ SHA512 (swc-a98426ae69b43396cb22bb62316e270fb1f9d8f1/a98426ae69b43396cb22bb62316
Size (swc-a98426ae69b43396cb22bb62316e270fb1f9d8f1/a98426ae69b43396cb22bb62316e270fb1f9d8f1.zip) = 146116 bytes
SHA1 (patch-Makefile) = 7b79ca023fb6986fff44967169edd6499ffeb825
SHA1 (patch-config.mk) = df6ba39cbd0cb082ec29cd7e917dde061dd0ba54
-SHA1 (patch-launch_launch.c) = 3f2a3197b8cf567cf91af684a40145241030f3ba
+SHA1 (patch-launch_launch.c) = e6569aa14c8b1169439fd6edee5737b081a2d510
SHA1 (patch-launch_protocol.h) = b9c8ef5acfc177178f630ac97c27d8b2914c9499
SHA1 (patch-libswc_drm.c) = a1df17103b418a0ff8980ff5e6ce7becda1eaf55
+SHA1 (patch-libswc_keyboard.c) = e0c181190d75db7bf5efca2ee27d0bea1b970f16
SHA1 (patch-libswc_local.mk) = d42b7958c058d0a67008d21b869c0ebfc2908beb
-SHA1 (patch-libswc_seat-ws.c) = 2fabdff5e3db5fa005b34731a6312201d544420c
+SHA1 (patch-libswc_seat-ws.c) = 2b757d932e7951de8876640cc4ebec137a781113
SHA1 (patch-libswc_seat.c) = d63660b6dc358b2c9d6d5437323af4dc8e2d8548
SHA1 (patch-libswc_shm.c) = 6f524957bcd863e8112470160f3d0b07562b1437
diff --git a/swc/patches/patch-launch_launch.c b/swc/patches/patch-launch_launch.c
index 9261c4c1f1..c074c5db86 100644
--- a/swc/patches/patch-launch_launch.c
+++ b/swc/patches/patch-launch_launch.c
@@ -2,333 +2,144 @@ $NetBSD$
--- launch/launch.c.orig 2019-07-11 06:33:41.000000000 +0000
+++ launch/launch.c
-@@ -1,488 +1,10 @@
- /* swc: launch/launch.c
-- *
-- * Copyright (c) 2013, 2014, 2016 Michael Forney
-- *
-- * Based in part upon weston-launch.c from weston which is:
-- *
-- * Copyright © 2012 Benjamin Franzke
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a copy
-- * of this software and associated documentation files (the "Software"), to deal
-- * in the Software without restriction, including without limitation the rights
-- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-- * copies of the Software, and to permit persons to whom the Software is
-- * furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice shall be included in
-- * all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-- * SOFTWARE.
- */
+@@ -38,21 +38,31 @@
+ #include <stdnoreturn.h>
+ #include <string.h>
+ #include <unistd.h>
++#include <signal.h>
--#include "protocol.h"
--
--#include <errno.h>
--#include <fcntl.h>
--#include <limits.h>
--#include <poll.h>
--#include <spawn.h>
--#include <stdbool.h>
--#include <stdio.h>
- #include <stdlib.h>
--#include <stdnoreturn.h>
--#include <string.h>
--#include <unistd.h>
--
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <sys/ioctl.h>
-#include <sys/sysmacros.h>
--#include <linux/input.h>
--#include <linux/kd.h>
--#include <linux/major.h>
--#include <linux/vt.h>
++#ifdef __NetBSD__
++#include <dev/wscons/wsconsio.h>
++#include <dev/wscons/wsdisplay_usl_io.h>
++extern char **environ;
++#define TTY_MAJOR (47)
++#define WSKBD_MAJOR (48)
++#define WSMOUSE_MAJOR (49)
++#define DRM_MAJOR (180)
++#else
+ #include <linux/input.h>
+ #include <linux/kd.h>
+ #include <linux/major.h>
+ #include <linux/vt.h>
-#include <xf86drm.h>
-
--#ifndef DRM_MAJOR
--#define DRM_MAJOR 226
--#endif
--
--#define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array)[0])
--
--static bool nflag;
--static int sigfd[2], sock[2];
--static int input_fds[128], num_input_fds;
--static int drm_fds[16], num_drm_fds;
--static int tty_fd;
--static bool active;
--
--static struct {
-- bool altered;
-- int vt;
-- long kb_mode;
-- long console_mode;
--} original_vt_state;
--
--static void cleanup(void);
--
--static noreturn void usage(const char *name)
--{
-- fprintf(stderr, "usage: %s [-n] [-t tty] [--] server [args...]\n", name);
-- exit(2);
--}
--
--static noreturn void __attribute__((format(printf, 1, 2)))
--die(const char *format, ...)
--{
-- va_list args;
--
-- va_start(args, format);
-- vfprintf(stderr, format, args);
-- va_end(args);
--
-- if (format[0] && format[strlen(format) - 1] == ':')
-- fprintf(stderr, " %s", strerror(errno));
-- fputc('\n', stderr);
--
-- cleanup();
-- exit(EXIT_FAILURE);
--}
--
--static void
--start_devices(void)
--{
-- int i;
--
-- for (i = 0; i < num_drm_fds; ++i) {
-- if (drmSetMaster(drm_fds[i]) < 0)
-- die("failed to set DRM master");
-- }
--}
--
--static void
--stop_devices(bool fatal)
--{
-- int i;
--
-- for (i = 0; i < num_drm_fds; ++i) {
-- if (drmDropMaster(drm_fds[i]) < 0 && fatal)
-- die("drmDropMaster:");
-- }
-- for (i = 0; i < num_input_fds; ++i) {
-- if (ioctl(input_fds[i], EVIOCREVOKE, 0) < 0 && errno != ENODEV && fatal)
-- die("ioctl EVIOCREVOKE:");
-- close(input_fds[i]);
-- }
-- num_input_fds = 0;
--}
--
--static void
--cleanup(void)
--{
+ #ifndef DRM_MAJOR
+ #define DRM_MAJOR 226
+ #endif
++#endif
++
++#include <sys/socket.h>
++#include <sys/stat.h>
++#include <sys/wait.h>
++#include <sys/ioctl.h>
++#include <xf86drm.h>
+
+ #define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array)[0])
+
+@@ -116,8 +126,10 @@ stop_devices(bool fatal)
+ die("drmDropMaster:");
+ }
+ for (i = 0; i < num_input_fds; ++i) {
++#ifdef EVIOCREVOKE
+ if (ioctl(input_fds[i], EVIOCREVOKE, 0) < 0 && errno != ENODEV && fatal)
+ die("ioctl EVIOCREVOKE:");
++#endif
+ close(input_fds[i]);
+ }
+ num_input_fds = 0;
+@@ -126,20 +138,16 @@ stop_devices(bool fatal)
+ static void
+ cleanup(void)
+ {
- struct vt_mode mode = {.mode = VT_AUTO};
-
- if (!original_vt_state.altered)
- return;
-
-- /* Cleanup VT */
+ /* Cleanup VT */
- ioctl(tty_fd, VT_SETMODE, &mode);
-- ioctl(tty_fd, KDSETMODE, original_vt_state.console_mode);
-- ioctl(tty_fd, KDSKBMODE, original_vt_state.kb_mode);
--
-- /* Stop devices before switching the VT to make sure we have released the DRM
-- * device before the next session tries to claim it. */
-- stop_devices(false);
+ ioctl(tty_fd, KDSETMODE, original_vt_state.console_mode);
+ ioctl(tty_fd, KDSKBMODE, original_vt_state.kb_mode);
+
+ /* Stop devices before switching the VT to make sure we have released the DRM
+ * device before the next session tries to claim it. */
+ stop_devices(false);
- ioctl(tty_fd, VT_ACTIVATE, original_vt_state.vt);
--
-- kill(0, SIGTERM);
--}
--
--static void
--activate(void)
--{
-- struct swc_launch_event event = {.type = SWC_LAUNCH_EVENT_ACTIVATE};
--
-- start_devices();
-- send(sock[0], &event, sizeof(event), 0);
-- active = true;
--}
--
--static void
--deactivate(void)
--{
-- struct swc_launch_event event = {.type = SWC_LAUNCH_EVENT_DEACTIVATE};
--
-- send(sock[0], &event, sizeof(event), 0);
-- stop_devices(true);
-- active = false;
--}
--
--static void
--handle_signal(int sig)
--{
-- write(sigfd[1], (char[]){sig}, 1);
--}
--
--static void
--handle_socket_data(int socket)
--{
-- struct swc_launch_request request;
-- struct swc_launch_event response;
-- char path[PATH_MAX];
-- struct iovec request_iov[2] = {
-- {.iov_base = &request, .iov_len = sizeof(request)},
-- {.iov_base = path, .iov_len = sizeof(path)},
-- };
-- struct iovec response_iov[1] = {
-- {.iov_base = &response, .iov_len = sizeof(response)},
-- };
-- int fd = -1;
-- struct stat st;
-- ssize_t size;
--
-- size = receive_fd(socket, &fd, request_iov, 2);
-- if (size == -1 || size == 0 || size < sizeof(request))
-- return;
-- size -= sizeof(request);
--
-- response.type = SWC_LAUNCH_EVENT_RESPONSE;
-- response.serial = request.serial;
--
-- switch (request.type) {
-- case SWC_LAUNCH_REQUEST_OPEN_DEVICE:
-- if (size == 0 || path[size - 1] != '\0') {
-- fprintf(stderr, "path is not NULL terminated\n");
-- goto fail;
-- }
--
-- if (stat(path, &st) == -1) {
-- fprintf(stderr, "stat %s: %s\n", path, strerror(errno));
-- goto fail;
-- }
--
-- switch (major(st.st_rdev)) {
-- case INPUT_MAJOR:
-- if (!active)
-- goto fail;
-- if (num_input_fds == ARRAY_LENGTH(input_fds)) {
-- fprintf(stderr, "too many input devices opened\n");
-- goto fail;
-- }
-- break;
-- case DRM_MAJOR:
-- if (num_drm_fds == ARRAY_LENGTH(drm_fds)) {
-- fprintf(stderr, "too many DRM devices opened\n");
-- goto fail;
-- }
-- break;
-- default:
-- fprintf(stderr, "device is not an input device\n");
-- goto fail;
-- }
--
-- fd = open(path, request.flags);
--
-- if (fd == -1) {
-- fprintf(stderr, "open %s: %s\n", path, strerror(errno));
-- goto fail;
-- }
--
-- switch (major(st.st_rdev)) {
-- case INPUT_MAJOR:
-- input_fds[num_input_fds++] = fd;
-- break;
-- case DRM_MAJOR:
-- drm_fds[num_drm_fds++] = fd;
-- break;
-- }
--
-- break;
-- case SWC_LAUNCH_REQUEST_ACTIVATE_VT:
-- if (!active)
-- goto fail;
--
-- if (ioctl(tty_fd, VT_ACTIVATE, request.vt) == -1)
-- fprintf(stderr, "failed to activate VT %d: %s\n", request.vt, strerror(errno));
-- break;
-- default:
-- fprintf(stderr, "unknown request %u\n", request.type);
-- goto fail;
-- }
--
-- response.success = true;
-- goto done;
--
--fail:
-- response.success = false;
-- fd = -1;
--done:
-- send_fd(socket, fd, response_iov, 1);
--}
--
--static void
--find_vt(char *vt, size_t size)
--{
-- char *vtnr;
-- int tty0_fd, vt_num;
--
-- /* If we are running from an existing X or wayland session, always open a new
-- * VT instead of using the current one. */
-- if (getenv("DISPLAY") || getenv("WAYLAND_DISPLAY") || !(vtnr = getenv("XDG_VTNR"))) {
++
++ int dispmode = WSDISPLAYIO_MODE_EMUL;
++ ioctl(tty_fd, WSDISPLAYIO_SMODE, &dispmode);
+
+ kill(0, SIGTERM);
+ }
+@@ -208,7 +216,12 @@ handle_socket_data(int socket)
+ }
+
+ switch (major(st.st_rdev)) {
++#ifdef INPUT_MAJOR
+ case INPUT_MAJOR:
++#else
++ case WSKBD_MAJOR:
++ case WSMOUSE_MAJOR:
++#endif
+ if (!active)
+ goto fail;
+ if (num_input_fds == ARRAY_LENGTH(input_fds)) {
+@@ -235,7 +248,12 @@ handle_socket_data(int socket)
+ }
+
+ switch (major(st.st_rdev)) {
++#ifdef INPUT_MAJOR
+ case INPUT_MAJOR:
++#else
++ case WSKBD_MAJOR:
++ case WSMOUSE_MAJOR:
++#endif
+ input_fds[num_input_fds++] = fd;
+ break;
+ case DRM_MAJOR:
+@@ -275,16 +293,16 @@ find_vt(char *vt, size_t size)
+ /* If we are running from an existing X or wayland session, always open a new
+ * VT instead of using the current one. */
+ if (getenv("DISPLAY") || getenv("WAYLAND_DISPLAY") || !(vtnr = getenv("XDG_VTNR"))) {
- tty0_fd = open("/dev/tty0", O_RDWR);
-- if (tty0_fd == -1)
++ tty0_fd = open("/dev/ttyE0", O_RDWR);
+ if (tty0_fd == -1)
- die("open /dev/tty0:");
-- if (ioctl(tty0_fd, VT_OPENQRY, &vt_num) != 0)
-- die("VT open query failed:");
-- close(tty0_fd);
++ die("open /dev/ttyE0:");
+ if (ioctl(tty0_fd, VT_OPENQRY, &vt_num) != 0)
+ die("VT open query failed:");
+ close(tty0_fd);
- if (snprintf(vt, size, "/dev/tty%d", vt_num) >= size)
-- die("VT number is too large");
-- } else {
++ if (snprintf(vt, size, "/dev/ttyE%d", vt_num) >= size)
+ die("VT number is too large");
+ } else {
- if (snprintf(vt, size, "/dev/tty%s", vtnr) >= size)
-- die("XDG_VTNR is too long");
-- }
--}
--
--static int
--open_tty(const char *tty_name)
--{
-- char *stdin_tty;
-- int fd;
--
-- /* Check if we are already running on the desired VT */
-- if ((stdin_tty = ttyname(STDIN_FILENO)) && strcmp(tty_name, stdin_tty) == 0)
-- return STDIN_FILENO;
--
-- fd = open(tty_name, O_RDWR | O_NOCTTY);
-- if (fd < 0)
-- die("open %s:", tty_name);
--
-- return fd;
--}
--
--static void
--setup_tty(int fd)
--{
-- struct stat st;
-- int vt;
++ if (snprintf(vt, size, "/dev/ttyE%s", vtnr) >= size)
+ die("XDG_VTNR is too long");
+ }
+ }
+@@ -311,12 +329,6 @@ setup_tty(int fd)
+ {
+ struct stat st;
+ int vt;
- struct vt_stat state;
- struct vt_mode mode = {
- .mode = VT_PROCESS,
- .relsig = SIGUSR1,
- .acqsig = SIGUSR2
- };
--
-- if (fstat(fd, &st) == -1)
-- die("failed to stat TTY fd:");
-- vt = minor(st.st_rdev);
-- if (major(st.st_rdev) != TTY_MAJOR || vt == 0)
-- die("not a valid VT");
--
+
+ if (fstat(fd, &st) == -1)
+ die("failed to stat TTY fd:");
+@@ -324,50 +336,10 @@ setup_tty(int fd)
+ if (major(st.st_rdev) != TTY_MAJOR || vt == 0)
+ die("not a valid VT");
+
- if (ioctl(fd, VT_GETSTATE, &state) == -1)
- die("failed to get the current VT state:");
- original_vt_state.vt = state.v_active;
@@ -365,7 +176,10 @@ $NetBSD$
- original_vt_state.altered = true;
-
- return;
--
++ int dispmode = WSDISPLAYIO_MODE_DUMBFB;
++ if (ioctl(fd, WSDISPLAYIO_SMODE, &dispmode) < 0)
++ die("Failed to set wsdisplay mode");
+
-error2:
- mode = (struct vt_mode){.mode = VT_AUTO };
- ioctl(fd, VT_SETMODE, &mode);
@@ -373,121 +187,6 @@ $NetBSD$
- ioctl(fd, KDSETMODE, original_vt_state.console_mode);
-error0:
- ioctl(fd, KDSKBMODE, original_vt_state.kb_mode);
-- exit(EXIT_FAILURE);
--}
--
--static void
--run(int fd) {
-- struct pollfd fds[] = {
-- {.fd = fd, .events = POLLIN},
-- {.fd = sigfd[0], .events = POLLIN},
-- };
-- int status;
-- char sig;
--
-- for (;;) {
-- if (poll(fds, ARRAY_LENGTH(fds), -1) < 0) {
-- if (errno == EINTR)
-- continue;
-- die("poll:");
-- }
-- if (fds[0].revents)
-- handle_socket_data(fd);
-- if (fds[1].revents) {
-- if (read(sigfd[0], &sig, 1) <= 0)
-- continue;
-- switch (sig) {
-- case SIGCHLD:
-- wait(&status);
-- cleanup();
-- exit(WEXITSTATUS(status));
-- case SIGUSR1:
-- deactivate();
-- ioctl(tty_fd, VT_RELDISP, 1);
-- break;
-- case SIGUSR2:
-- ioctl(tty_fd, VT_RELDISP, VT_ACKACQ);
-- activate();
-- break;
-- }
-- }
-- }
--}
-
- int
- main(int argc, char *argv[])
- {
-- int option;
-- char *vt = NULL, buf[64];
-- struct sigaction action = {
-- .sa_handler = handle_signal,
-- .sa_flags = SA_RESTART,
-- };
-- sigset_t set;
-- pid_t pid;
-- posix_spawnattr_t attr;
--
-- while ((option = getopt(argc, argv, "nt:")) != -1) {
-- switch (option) {
-- case 'n':
-- nflag = true;
-- break;
-- case 't':
-- vt = optarg;
-- break;
-- default:
-- usage(argv[0]);
-- }
-- }
--
-- if (argc - optind < 1)
-- usage(argv[0]);
--
-- if (socketpair(AF_LOCAL, SOCK_SEQPACKET, 0, sock) == -1)
-- die("socketpair:");
-- if (fcntl(sock[0], F_SETFD, FD_CLOEXEC) == -1)
-- die("failed set CLOEXEC on socket:");
--
-- if (pipe2(sigfd, O_CLOEXEC) == -1)
-- die("pipe:");
-- if (sigaction(SIGCHLD, &action, NULL) == -1)
-- die("sigaction SIGCHLD:");
-- if (sigaction(SIGUSR1, &action, NULL) == -1)
-- die("sigaction SIGUSR1:");
-- if (sigaction(SIGUSR2, &action, NULL) == -1)
-- die("sigaction SIGUSR2:");
--
-- sigfillset(&set);
-- sigdelset(&set, SIGCHLD);
-- sigdelset(&set, SIGUSR1);
-- sigdelset(&set, SIGUSR2);
-- sigprocmask(SIG_SETMASK, &set, NULL);
--
-- if (!vt) {
-- find_vt(buf, sizeof(buf));
-- vt = buf;
-- }
--
-- fprintf(stderr, "running on %s\n", vt);
-- tty_fd = open_tty(vt);
-- setup_tty(tty_fd);
--
-- sprintf(buf, "%d", sock[1]);
-- setenv(SWC_LAUNCH_SOCKET_ENV, buf, 1);
--
-- if ((errno = posix_spawnattr_init(&attr)))
-- die("posix_spawnattr_init:");
-- if ((errno = posix_spawnattr_setflags(&attr, POSIX_SPAWN_RESETIDS|POSIX_SPAWN_SETSIGMASK)))
-- die("posix_spawnattr_setflags:");
-- sigemptyset(&set);
-- if ((errno = posix_spawnattr_setsigmask(&attr, &set)))
-- die("posix_spawnattr_setsigmask:");
-- if ((errno = posix_spawnp(&pid, argv[optind], NULL, &attr, argv + optind, environ)))
-- die("posix_spawnp %s:", argv[optind]);
-- posix_spawnattr_destroy(&attr);
--
-- close(sock[1]);
-- run(sock[0]);
--
- return EXIT_SUCCESS;
+ exit(EXIT_FAILURE);
}
+
diff --git a/swc/patches/patch-libswc_keyboard.c b/swc/patches/patch-libswc_keyboard.c
new file mode 100644
index 0000000000..2e908d1ab8
--- /dev/null
+++ b/swc/patches/patch-libswc_keyboard.c
@@ -0,0 +1,17 @@
+$NetBSD$
+
+--- libswc/keyboard.c.orig 2019-07-11 06:33:41.000000000 +0000
++++ libswc/keyboard.c
+@@ -150,10 +150,12 @@ update_keymap(struct xkb *xkb)
+
+ unlink(keymap_path);
+
++#ifndef __NetBSD__
+ if (posix_fallocate(xkb->keymap.fd, 0, xkb->keymap.size) != 0) {
+ WARNING("Could not resize XKB keymap file\n");
+ goto error2;
+ }
++#endif
+
+ xkb->keymap.area = mmap(NULL, xkb->keymap.size, PROT_READ | PROT_WRITE, MAP_SHARED, xkb->keymap.fd, 0);
+
diff --git a/swc/patches/patch-libswc_seat-ws.c b/swc/patches/patch-libswc_seat-ws.c
index 1de6e4ae36..4386e15624 100644
--- a/swc/patches/patch-libswc_seat-ws.c
+++ b/swc/patches/patch-libswc_seat-ws.c
@@ -1,6 +1,6 @@
$NetBSD$
---- libswc/seat-ws.c.orig 2019-08-10 19:52:23.379366995 +0000
+--- libswc/seat-ws.c.orig 2019-08-11 16:54:52.381600368 +0000
+++ libswc/seat-ws.c
@@ -0,0 +1,332 @@
+/* swc: libswc/seat-ws.c
@@ -242,10 +242,10 @@ $NetBSD$
+static bool
+initialize_wscons(void)
+{
-+ if ((seat.mouse_fd = open("/dev/wsmouse", O_RDONLY | O_NONBLOCK)) == -1) {
++ if ((seat.mouse_fd = launch_open_device("/dev/wsmouse", O_RDONLY | O_NONBLOCK)) == -1) {
+ goto error0;
+ }
-+ if ((seat.kbd_fd = open("/dev/wskbd", O_RDONLY | O_NONBLOCK)) == -1) {
++ if ((seat.kbd_fd = launch_open_device("/dev/wskbd", O_RDONLY | O_NONBLOCK)) == -1) {
+ goto error1;
+ }
+
Home |
Main Index |
Thread Index |
Old Index