summaryrefslogtreecommitdiffstats
path: root/src/ck-sysdeps-freebsd.c
diff options
context:
space:
mode:
authorWilliam Jon McCann <mccann@jhu.edu>2007-08-27 16:34:45 -0400
committerWilliam Jon McCann <mccann@jhu.edu>2007-08-27 16:34:45 -0400
commit5e0f4848e5bfd325840d405582bdedf3a27b98f8 (patch)
treee51bdb438578cb63c8e1cecb62cde6e718edcf26 /src/ck-sysdeps-freebsd.c
parent54b545beb4b7e65f852f03dd5da025d5eae7ef8f (diff)
move some of the freebsd specific stuff into sysdeps
Diffstat (limited to 'src/ck-sysdeps-freebsd.c')
-rw-r--r--src/ck-sysdeps-freebsd.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/ck-sysdeps-freebsd.c b/src/ck-sysdeps-freebsd.c
index 0e7f845..99a1791 100644
--- a/src/ck-sysdeps-freebsd.c
+++ b/src/ck-sysdeps-freebsd.c
@@ -35,6 +35,9 @@
#include <sys/stat.h>
#include <sys/sysctl.h>
#include <sys/user.h>
+#include <sys/ioctl.h>
+
+#include <sys/consio.h>
#define DEV_ENCODE(M,m) ( \
( (M&0xfff) << 8) | ( (m&0xfff00) << 12) | (m&0xff) \
@@ -42,6 +45,10 @@
#include "ck-sysdeps.h"
+#ifndef ERROR
+#define ERROR -1
+#endif
+
/* adapted from procps */
struct _CkProcessStat
{
@@ -412,3 +419,33 @@ ck_get_console_num_from_device (const char *device,
return ret;
}
+
+gboolean
+ck_get_active_console_num (int console_fd,
+ guint *num)
+{
+ gboolean ret;
+ int res;
+ int active;
+
+ g_assert (console_fd != -1);
+
+ active = 0;
+ ret = FALSE;
+
+ res = ioctl (console_fd, VT_GETACTIVE, &active);
+ if (res == ERROR) {
+ perror ("ioctl VT_GETACTIVE");
+ goto out;
+ }
+
+ g_debug ("Active VT is: ttyv%d", active);
+ ret = TRUE;
+
+ out:
+ if (num != NULL) {
+ *num = active;
+ }
+
+ return ret;
+}