From 59d8b48dc3358057859c22588580e926aa68a3ee Mon Sep 17 00:00:00 2001 From: Florent Thoumie Date: Sat, 25 Aug 2007 19:50:54 +0100 Subject: Some more fixes, Now test-vt-monitor works correctly. Submitted by: marcus Signed-off-by: Florent Thoumie --- src/ck-sysdeps-unix.c | 14 +++++++++++--- src/ck-vt-monitor.c | 35 ++++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/ck-sysdeps-unix.c b/src/ck-sysdeps-unix.c index fa18dac..6c9b34c 100644 --- a/src/ck-sysdeps-unix.c +++ b/src/ck-sysdeps-unix.c @@ -35,6 +35,10 @@ #include #endif +#ifdef __FreeBSD__ +#include +#endif + #ifdef HAVE_GETPEERUCRED #include #endif @@ -114,14 +118,18 @@ ck_get_socket_peer_credentials (int socket_fd, gboolean ck_fd_is_a_console (int fd) { - char arg; +#ifdef __linux__ + char arg = 0; +#elif defined(__FreeBSD__) + int vers; +#endif int kb_ok; - arg = 0; - #ifdef __linux__ kb_ok = (ioctl (fd, KDGKBTYPE, &arg) == 0 && ((arg == KB_101) || (arg == KB_84))); +#elif defined(__FreeBSD__) + kb_ok = (ioctl (fd, CONS_GETVERS, &vers) == 0); #else kb_ok = 1; #endif diff --git a/src/ck-vt-monitor.c b/src/ck-vt-monitor.c index f71b7b5..58ca2fa 100644 --- a/src/ck-vt-monitor.c +++ b/src/ck-vt-monitor.c @@ -27,10 +27,10 @@ #include #include #include -#if defined(__linux__) -#include -#elif defined(__FreeBSD__) +#if defined(__FreeBSD__) #include +#else +#include #endif #include @@ -368,7 +368,7 @@ vt_add_watches (CkVtMonitor *vt_monitor) max_consoles = 1; if (! ck_get_max_num_consoles (&max_consoles)) { - /* FIXME: this can fail on solaris */ + /* FIXME: this can fail on solaris and freebsd */ } for (i = 1; i < max_consoles; i++) { @@ -394,25 +394,34 @@ static guint get_active_native (CkVtMonitor *vt_monitor) { int ret; - int active; -#if defined(__linux__) +#if defined(__FreeBSD__) + int active; +#else struct vt_stat stat; +#endif +#if defined(__FreeBSD__) + ret = ioctl (vt_monitor->priv->vfd, VT_GETACTIVE, &active); +#else ret = ioctl (vt_monitor->priv->vfd, VT_GETSTATE, &stat); -#elif defined(__FreeBSD__) - ret = ioctl (vt_monitor->priv->vfd, VT_GETACTIVE, &active); #endif if (ret == ERROR) { +#if defined(__FreeBSD__) + perror ("ioctl VT_GETACTIVE"); +#else perror ("ioctl VT_GETSTATE"); +#endif return -1; } - g_debug ("Current VT: tty%d", active); - -#if defined(__linux__) +#if defined(__FreeBSD__) + g_debug ("Active VT is: ttyv%d", active); + return active; +#else { int i; + g_debug ("Current VT: tty%d", stat.v_active); for (i = 1; i <= 16; i++) { gboolean is_on; is_on = stat.v_state & (1 << i); @@ -420,9 +429,9 @@ get_active_native (CkVtMonitor *vt_monitor) g_debug ("VT %d:%s", i, is_on ? "on" : "off"); } } -#endif - return active; + return stat.v_active; +#endif } static void -- cgit