diff --git a/common/drm.c b/common/drm.c index 2fbadd5..06d6720 100644 --- a/common/drm.c +++ b/common/drm.c @@ -21,7 +21,7 @@ int drm_drop_master(int fd) { return ioctl(fd, DRM_IOCTL_DROP_MASTER, 0); } -#if defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__linux__) || defined(__NetBSD__) int path_is_drm(const char *path) { if (STR_HAS_PREFIX("/dev/dri/", path)) return 1; diff --git a/common/evdev.c b/common/evdev.c index a77bf36..7ec0fe2 100644 --- a/common/evdev.c +++ b/common/evdev.c @@ -25,7 +25,7 @@ int path_is_evdev(const char *path) { int evdev_revoke(int fd) { return ioctl(fd, EVIOCREVOKE, NULL); } -#elif defined(__NetBSD__) || defined(__OpenBSD__) +#elif defined(__NetBSD__) int path_is_evdev(const char *path) { (void)path; return 0; diff --git a/common/terminal.c b/common/terminal.c index 5aac2dd..fa220a2 100644 --- a/common/terminal.c +++ b/common/terminal.c @@ -26,12 +26,6 @@ #define K_ENABLE K_XLATE #define K_DISABLE K_RAW #define FRSIG 0 // unimplemented -#elif defined(__OpenBSD__) -#include -#include -#define K_ENABLE K_XLATE -#define K_DISABLE K_RAW -#define FRSIG SIGIO #else #error Unsupported platform #endif @@ -153,30 +147,16 @@ static int get_tty_path(int tty, char path[static TTYPATHLEN]) { } return 0; } -#elif defined(__OpenBSD__) -static int get_tty_path(int tty, char path[static TTYPATHLEN]) { - assert(tty >= 0); - if (snprintf(path, TTYPATHLEN, "/dev/ttyC%d", tty) == -1) { - return -1; - } - return 0; -} #else #error Unsupported platform #endif int terminal_open(int vt) { char path[TTYPATHLEN]; - log_debugf("terminal_open vt %d", vt); -#ifdef __OpenBSD__ - if (vt > 0) - vt--; -#endif if (get_tty_path(vt, path) == -1) { log_errorf("Could not generate tty path: %s", strerror(errno)); return -1; } - log_debugf("terminal_open path %s", path); int fd = open(path, O_RDWR | O_NOCTTY); if (fd == -1) { log_errorf("Could not open target tty: %s", strerror(errno)); @@ -186,7 +166,7 @@ int terminal_open(int vt) { } int terminal_current_vt(int fd) { -#if defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__linux__) || defined(__NetBSD__) struct vt_stat st; int res = ioctl(fd, VT_GETSTATE, &st); close(fd); @@ -264,20 +244,11 @@ int terminal_ack_acquire(int fd) { int terminal_set_keyboard(int fd, bool enable) { log_debugf("Setting KD keyboard state to %d", enable); -#ifndef __OpenBSD1__ if (ioctl(fd, KDSKBMODE, enable ? K_ENABLE : K_DISABLE) == -1) { log_errorf("Could not set KD keyboard mode to %s: %s", enable ? "enabled" : "disabled", strerror(errno)); return -1; } -#else - int mode = enable ? WSKBD_RAW : WSKBD_TRANSLATED; - if (ioctl(fd, WSKBDIO_SETMODE, &mode) == -1) { - log_errorf("Could not set keyboard mode to %s: %s", - enable ? "translated" : "raw", strerror(errno)); - return -1; - } -#endif #if defined(__FreeBSD__) struct termios tios; if (tcgetattr(fd, &tios) == -1) { @@ -300,19 +271,10 @@ int terminal_set_keyboard(int fd, bool enable) { int terminal_set_graphics(int fd, bool enable) { log_debugf("Setting KD graphics state to %d", enable); -#ifndef __OpenBSD1__ if (ioctl(fd, KDSETMODE, enable ? KD_GRAPHICS : KD_TEXT) == -1) { log_errorf("Could not set KD graphics mode to %s: %s", enable ? "graphics" : "text", strerror(errno)); return -1; } -#else - int mode = enable ? WSDISPLAYIO_MODE_MAPPED : WSDISPLAYIO_MODE_EMUL; - if (ioctl(fd, WSDISPLAYIO_SMODE, &mode) == -1) { - log_errorf("Could not set graphics mode to %s: %s", - enable ? "mapped" : "emul", strerror(errno)); - return -1; - } -#endif return 0; } diff --git a/common/wscons.c b/common/wscons.c index 121074c..33c757e 100644 --- a/common/wscons.c +++ b/common/wscons.c @@ -10,7 +10,7 @@ #define STRLEN(s) ((sizeof(s) / sizeof(s[0])) - 1) -#if defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__NetBSD__) int path_is_wscons(const char *path) { static const char wskbd[] = "/dev/wskbd"; static const char wsmouse[] = "/dev/wsmouse"; diff --git a/meson.build b/meson.build index fcd85de..0c6c823 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project( 'seatd', 'c', - version: '0.8.0', + version: '0.7.0', license: 'MIT', meson_version: '>=0.60.0', default_options: [ @@ -29,7 +29,7 @@ cc = meson.get_compiler('c') add_project_arguments( [ '-D_XOPEN_SOURCE=700', - '-D_BSD_SOURCE', + '-D__BSD_VISIBLE', '-D_NETBSD_SOURCE', '-DSEATD_VERSION="@0@"'.format(meson.project_version()), '-DSEATD_DEFAULTPATH="@0@"'.format(defaultpath), @@ -158,8 +158,8 @@ if get_option('libseat-logind') != 'disabled' endif # needed for cross-compilation -# realtime = meson.get_compiler('c').find_library('rt') -# private_deps += realtime +realtime = meson.get_compiler('c').find_library('rt') +private_deps += realtime if with_builtin libseat_c_args += '-DBUILTIN_ENABLED=1' @@ -220,14 +220,14 @@ if with_server [ server_files, 'seatd/seatd.c' ], include_directories: [include_directories('.', 'include')], install: true, -# dependencies: [realtime], + dependencies: [realtime], ) executable( 'seatd-launch', [ 'seatd-launch/seatd-launch.c' ], include_directories: [include_directories('.', 'include')], install: true, -# dependencies: [realtime], + dependencies: [realtime], ) endif diff --git a/seatd/client.c b/seatd/client.c index 481704e..a33bfe7 100644 --- a/seatd/client.c +++ b/seatd/client.c @@ -55,23 +55,6 @@ static int get_peer(int fd, pid_t *pid, uid_t *uid, gid_t *gid) { *uid = cred.unp_euid; *gid = cred.unp_egid; return 0; -#elif defined(__OpenBSD__) - struct sockpeercred peercred; - socklen_t len = sizeof(peercred); - if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &peercred, &len) == -1) { - // assume builtin backend - if (errno == EINVAL) { - *pid = getpid(); - *uid = getuid(); - *gid = getgid(); - return 0; - } - return -1; - } - *pid = peercred.pid; - *uid = peercred.uid; - *gid = peercred.gid; - return 0; #elif defined(__FreeBSD__) struct xucred cred; socklen_t len = sizeof cred; @@ -327,7 +310,7 @@ static int handle_switch_session(struct client *client, int session) { log_error("Protocol error: no seat associated with client"); return -1; } - log_debugf("handle_switch_session %d", session); + if (seat_set_next_session(client, session) == -1) { goto error; } @@ -370,7 +353,6 @@ static int handle_ping(struct client *client) { static int client_handle_opcode(struct client *client, uint16_t opcode, size_t size) { int res = 0; - log_debugf("client_handle_opcode: %d\n", opcode); switch (opcode) { case CLIENT_OPEN_SEAT: { if (size != 0) { diff --git a/seatd/seat.c b/seatd/seat.c index 8820992..7a66a20 100644 --- a/seatd/seat.c +++ b/seatd/seat.c @@ -87,8 +87,8 @@ static int vt_close(int vt) { return -1; } terminal_set_process_switching(ttyfd, true); - terminal_set_graphics(ttyfd, false); terminal_set_keyboard(ttyfd, true); + terminal_set_graphics(ttyfd, false); close(ttyfd); return 0; } @@ -107,7 +107,6 @@ static int vt_switch(struct seat *seat, int vt) { static int vt_ack(struct seat *seat, bool release) { int tty0fd = terminal_open(seat->cur_vt); - log_debugf("vt_ack VT %d %d\n", seat->cur_vt, release); if (tty0fd == -1) { log_errorf("Could not open tty0 to ack VT signal: %s", strerror(errno)); return -1; @@ -538,7 +537,7 @@ static int seat_disable_client(struct client *client) { errno = EBUSY; return -1; } - assert(seat->active_client == client); + assert(seat->active_client = client); // We *deactivate* all remaining fds. These may later be reactivated. // The reason we cannot just close them is that certain device fds, such diff --git a/tests/poller.c b/tests/poller.c index dd36c7d..382d9d2 100644 --- a/tests/poller.c +++ b/tests/poller.c @@ -123,10 +123,6 @@ static int test_signal_event(int signal, void *data) { return 0; } -#ifdef __OpenBSD__ -#define SIGRTMIN SIGUSR1 -#endif - static void test_poller_single_signal(void) { struct poller poller; test_assert(poller_init(&poller) == 0);