Compare commits
No commits in common. "obsd" and "openbsd-20230813" have entirely different histories.
obsd
...
openbsd-20
4 changed files with 7 additions and 39 deletions
|
@ -21,17 +21,11 @@
|
|||
#define K_ENABLE K_XLATE
|
||||
#define K_DISABLE K_RAW
|
||||
#define FRSIG SIGIO
|
||||
#elif defined(__NetBSD__)
|
||||
#elif defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
#include <dev/wscons/wsdisplay_usl_io.h>
|
||||
#define K_ENABLE K_XLATE
|
||||
#define K_DISABLE K_RAW
|
||||
#define FRSIG 0 // unimplemented
|
||||
#elif defined(__OpenBSD__)
|
||||
#include <dev/wscons/wsconsio.h>
|
||||
#include <dev/wscons/wsdisplay_usl_io.h>
|
||||
#define K_ENABLE K_XLATE
|
||||
#define K_DISABLE K_RAW
|
||||
#define FRSIG SIGIO
|
||||
#else
|
||||
#error Unsupported platform
|
||||
#endif
|
||||
|
@ -167,16 +161,10 @@ static int get_tty_path(int tty, char path[static TTYPATHLEN]) {
|
|||
|
||||
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 +174,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);
|
||||
|
@ -195,7 +183,7 @@ int terminal_current_vt(int fd) {
|
|||
return -1;
|
||||
}
|
||||
return st.v_active;
|
||||
#elif defined(__FreeBSD__)
|
||||
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||
int vt;
|
||||
int res = ioctl(fd, VT_GETACTIVE, &vt);
|
||||
close(fd);
|
||||
|
@ -264,20 +252,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 +279,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;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
project(
|
||||
'seatd',
|
||||
'c',
|
||||
version: '0.8.0',
|
||||
version: '0.7.0',
|
||||
license: 'MIT',
|
||||
meson_version: '>=0.60.0',
|
||||
default_options: [
|
||||
|
|
|
@ -327,7 +327,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 +370,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) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue