diff options
author | ryoon <ryoon@pkgsrc.org> | 2014-05-05 21:19:40 +0000 |
---|---|---|
committer | ryoon <ryoon@pkgsrc.org> | 2014-05-05 21:19:40 +0000 |
commit | e533c793ebacdcd1e631993a6d50290935245c5e (patch) | |
tree | a4fd3e1312ad63a02caf82b151e79d3cef772c51 | |
parent | 26c987bdf69babe8e51f34a41bf8120f01d4d6ac (diff) | |
download | pkgsrc-e533c793ebacdcd1e631993a6d50290935245c5e.tar.gz |
Support OpenBSD
* Borrow code from OpenBSD Ports
-rw-r--r-- | sysutils/consolekit/Makefile | 3 | ||||
-rw-r--r-- | sysutils/consolekit/distinfo | 10 | ||||
-rw-r--r-- | sysutils/consolekit/files/ck-sysdeps-openbsd.c | 471 | ||||
-rw-r--r-- | sysutils/consolekit/patches/patch-aa | 22 | ||||
-rw-r--r-- | sysutils/consolekit/patches/patch-ab | 13 | ||||
-rw-r--r-- | sysutils/consolekit/patches/patch-ac | 10 | ||||
-rw-r--r-- | sysutils/consolekit/patches/patch-ae | 26 |
7 files changed, 530 insertions, 25 deletions
diff --git a/sysutils/consolekit/Makefile b/sysutils/consolekit/Makefile index d85227d2f46..d6fc5d5f550 100644 --- a/sysutils/consolekit/Makefile +++ b/sysutils/consolekit/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.21 2013/05/31 12:41:59 wiz Exp $ +# $NetBSD: Makefile,v 1.22 2014/05/05 21:19:40 ryoon Exp $ # CONSOLEKIT_VER= 0.3.0 @@ -40,6 +40,7 @@ CONFIGURE_ARGS+= --localstatedir=${VARBASE} post-extract: ${CP} ${FILESDIR}/ck-sysdeps-netbsd.c ${WRKSRC}/src/ + ${CP} ${FILESDIR}/ck-sysdeps-openbsd.c ${WRKSRC}/src/ pre-configure: cd ${WRKSRC} && autoreconf -vi ${AUTORECONF_ARGS} diff --git a/sysutils/consolekit/distinfo b/sysutils/consolekit/distinfo index ba22e29a7ff..7084f4146b1 100644 --- a/sysutils/consolekit/distinfo +++ b/sysutils/consolekit/distinfo @@ -1,13 +1,13 @@ -$NetBSD: distinfo,v 1.8 2010/12/26 20:53:14 markd Exp $ +$NetBSD: distinfo,v 1.9 2014/05/05 21:19:40 ryoon Exp $ SHA1 (ConsoleKit-0.3.0.tar.bz2) = e3b6156622cc14ebca7382a55b8ed15f2f2bad98 RMD160 (ConsoleKit-0.3.0.tar.bz2) = 7a1ebd2f4bfb65690e70138c9923c3fd2fcaf671 Size (ConsoleKit-0.3.0.tar.bz2) = 393694 bytes -SHA1 (patch-aa) = a1589faf05d5358a0820da6d7da20f09ce4cec1b -SHA1 (patch-ab) = 2e9fe9de1f27c635a4eefa77af8322cb8a02ab35 -SHA1 (patch-ac) = 0595a9cd1c4013eb4761e044b4b4b01b613f7d2b +SHA1 (patch-aa) = f6b56bcb12d89ad794feaf345bef04e8a2edbfb0 +SHA1 (patch-ab) = 9ba984009ee9424b35fcb2c3454df4063dbbd953 +SHA1 (patch-ac) = 42a098a1210ad17f992713b03b834ea355c9b06d SHA1 (patch-ad) = a1c1a1d0452945550065da3eac2390318c1eb7be -SHA1 (patch-ae) = 8a9612cd35d1ec86240fd17dfa6963c20edc0ad0 +SHA1 (patch-ae) = 775a3b460db0f2cd305882fcb782d666b8670d8a SHA1 (patch-af) = e86c63147798d61f7560cfe7547b0d06d18d5583 SHA1 (patch-ag) = 724e2eb95f7ca78c5659fde1eec2f2c5c6bc5002 SHA1 (patch-ah) = f62d8c661732a4ea47e29b99f883b539fb5c7468 diff --git a/sysutils/consolekit/files/ck-sysdeps-openbsd.c b/sysutils/consolekit/files/ck-sysdeps-openbsd.c new file mode 100644 index 00000000000..067e0f0b859 --- /dev/null +++ b/sysutils/consolekit/files/ck-sysdeps-openbsd.c @@ -0,0 +1,471 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2006 William Jon McCann <mccann@jhu.edu> + * Copyright (C) 2007 Joe Marcus Clarke <marcus@FreeBSD.org> + * Copyright (C) 2008 Jared D. McNeill <jmcneill@NetBSD.org> + * Copyright (C) 2009 Robert Nagy <robert@openbsd.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <fcntl.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> +#include <paths.h> +#include <ttyent.h> +#include <kvm.h> +#include <sys/param.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/sysctl.h> +#include <sys/user.h> +#include <sys/ioctl.h> + +#ifdef __OpenBSD__ +#include <sys/stdint.h> +#endif + +#include <dev/wscons/wsdisplay_usl_io.h> + +#define DEV_ENCODE(M,m) ( \ + ( (M&0xfff) << 8) | ( (m&0xfff00) << 12) | (m&0xff) \ +) + +#include "ck-sysdeps.h" + +#ifndef ERROR +#define ERROR -1 +#endif + +/* adapted from procps */ +struct _CkProcessStat +{ + int pid; + int ppid; /* stat,status pid of parent process */ + char state; /* stat,status single-char code for process state (S=sleeping) */ + char cmd[16]; /* stat,status basename of executable file in call to exec(2) */ + unsigned long long utime; /* stat user-mode CPU time accumulated by process */ + unsigned long long stime; /* stat kernel-mode CPU time accumulated by process */ + unsigned long long cutime; /* stat cumulative utime of process and reaped children */ + unsigned long long cstime; /* stat cumulative stime of process and reaped children */ + unsigned long long start_time; /* stat start time of process -- seconds since 1-1-70 */ + unsigned long start_code; /* stat address of beginning of code segment */ + unsigned long end_code; /* stat address of end of code segment */ + unsigned long start_stack; /* stat address of the bottom of stack for the process */ + unsigned long kstk_esp; /* stat kernel stack pointer */ + unsigned long kstk_eip; /* stat kernel instruction pointer */ + unsigned long wchan; /* stat (special) address of kernel wait channel proc is sleeping in */ + long priority; /* stat kernel scheduling priority */ + long nice; /* stat standard unix nice level of process */ + long rss; /* stat resident set size from /proc/#/stat (pages) */ + long alarm; /* stat ? */ + unsigned long rtprio; /* stat real-time priority */ + unsigned long sched; /* stat scheduling class */ + unsigned long vsize; /* stat number of pages of virtual memory ... */ + unsigned long rss_rlim; /* stat resident set size limit? */ + unsigned long flags; /* stat kernel flags for the process */ + unsigned long min_flt; /* stat number of minor page faults since process start */ + unsigned long maj_flt; /* stat number of major page faults since process start */ + unsigned long cmin_flt; /* stat cumulative min_flt of process and child processes */ + unsigned long cmaj_flt; /* stat cumulative maj_flt of process and child processes */ + int pgrp; /* stat process group id */ + int session; /* stat session id */ + int nlwp; /* stat number of threads, or 0 if no clue */ + int tty; /* stat full device number of controlling terminal */ + int tpgid; /* stat terminal process group id */ + int exit_signal; /* stat might not be SIGCHLD */ + int processor; /* stat current (or most recent?) CPU */ + uintptr_t penv; /* stat address of initial environment vector */ + char tty_text[11]; /* stat device name */ + +}; + +pid_t +ck_process_stat_get_ppid (CkProcessStat *stat) +{ + g_return_val_if_fail (stat != NULL, -1); + + return stat->ppid; +} + +char * +ck_process_stat_get_cmd (CkProcessStat *stat) +{ + g_return_val_if_fail (stat != NULL, NULL); + + return g_strdup (stat->cmd); +} + +char * +ck_process_stat_get_tty (CkProcessStat *stat) +{ + g_return_val_if_fail (stat != NULL, NULL); + + return g_strdup (stat->tty_text); +} + +static gboolean +get_kinfo_proc (pid_t pid, + struct kinfo_proc *p) +{ + size_t len; + + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid, + sizeof(struct kinfo_proc), 0 }; + +#ifndef nitems +#define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) +#endif + + if (sysctl(mib, nitems(mib), NULL, &len, NULL, 0) < 0) + return FALSE; + + mib[5] = (len / sizeof(struct kinfo_proc)); + + if (sysctl(mib, nitems(mib), p, &len, NULL, 0) < 0) + return FALSE; + + return TRUE; +} + +/* return 1 if it works, or 0 for failure */ +static gboolean +stat2proc (pid_t pid, + CkProcessStat *P) +{ + struct kinfo_proc p; + char *ttname; + int num; + int tty_maj; + int tty_min; + + if (! get_kinfo_proc (pid, &p)) { + return FALSE; + } + + num = KI_MAXCOMLEN; + if (num >= sizeof P->cmd) { + num = sizeof P->cmd - 1; + } + + memcpy (P->cmd, p.p_comm, num); + + P->cmd[num] = '\0'; + P->pid = p.p_pid; + P->ppid = p.p_ppid; + P->pgrp = p.p__pgid; + P->session = p.p_sid; + P->rss = p.p_vm_rssize; + P->vsize = p.p_vm_dsize + p.p_vm_dsize + p.p_vm_ssize; /* XXX */ + P->start_time = p.p_ustart_sec; + P->wchan = (unsigned long) p.p_wchan; + P->state = p.p_stat; + P->nice = p.p_nice; + P->flags = p.p_psflags; + P->tpgid = p.p_tpgid; + P->processor = p.p_cpuid; + + /* we like it Linux-encoded :-) */ + tty_maj = major (p.p_tdev); + tty_min = minor (p.p_tdev); + P->tty = DEV_ENCODE (tty_maj,tty_min); + + snprintf (P->tty_text, sizeof P->tty_text, "%3d,%-3d", tty_maj, tty_min); + + if (p.p_tdev != NODEV && (ttname = devname (p.p_tdev, S_IFCHR)) != NULL) { + memcpy (P->tty_text, ttname, sizeof P->tty_text); + } + + if (p.p_tdev == NODEV) { + /* XXX how do we associate X with its tty? */ +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) + memcpy (P->tty_text, "/dev/ttyC4", sizeof P->tty_text); +#else + memcpy (P->tty_text, "/dev/ttyC0", sizeof P->tty_text); +#endif + } + + if (P->pid != pid) { + return FALSE; + } + + return TRUE; +} + +gboolean +ck_process_stat_new_for_unix_pid (pid_t pid, + CkProcessStat **stat, + GError **error) +{ + gboolean res; + CkProcessStat *proc; + + g_return_val_if_fail (pid > 1, FALSE); + + if (stat == NULL) { + return FALSE; + } + + proc = g_new0 (CkProcessStat, 1); + proc->pid = pid; + res = stat2proc (pid, proc); + if (res) { + *stat = proc; + } else { + *stat = NULL; + } + + return res; +} + +void +ck_process_stat_free (CkProcessStat *stat) +{ + g_free (stat); +} + +GHashTable * +ck_unix_pid_get_env_hash (pid_t pid) +{ + GHashTable *hash = NULL; + char **penv; + char errbuf[_POSIX2_LINE_MAX]; + kvm_t *kd; + struct kinfo_proc p; + int i; + + kd = kvm_openfiles (NULL, NULL, NULL, O_RDONLY, errbuf); + if (kd == NULL) { + g_warning ("kvm_openfiles failed: %s", errbuf); + return NULL; + } + + if (! get_kinfo_proc (pid, &p)) { + g_warning ("get_kinfo_proc failed: %s", g_strerror (errno)); + goto fail; + } + + penv = kvm_getenvv (kd, &p, 0); + if (penv == NULL) { + g_warning ("kvm_getenvv failed: %s", kvm_geterr (kd)); + goto fail; + } + + hash = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_free); + + for (i = 0; penv[i] != NULL; i++) { + char **vals; + + if (!penv[i][0]) continue; + + vals = g_strsplit (penv[i], "=", 2); + if (vals != NULL) { + g_hash_table_insert (hash, + g_strdup (vals[0]), + g_strdup (vals[1])); + g_strfreev (vals); + } + } + +fail: + kvm_close (kd); + + return hash; +} + +char * +ck_unix_pid_get_env (pid_t pid, + const char *var) +{ + GHashTable *hash; + char *val = NULL; + + /* + * Would probably be more efficient to just loop through the + * environment and return the value, avoiding building the hash + * table, but this works for now. + */ + hash = ck_unix_pid_get_env_hash (pid); + if (hash == NULL) + return val; + val = g_strdup (g_hash_table_lookup (hash, var)); + g_hash_table_destroy (hash); + + return val; +} + +uid_t +ck_unix_pid_get_uid (pid_t pid) +{ + uid_t uid; + gboolean res; + struct kinfo_proc p; + + g_return_val_if_fail (pid > 1, 0); + + uid = -1; + + res = get_kinfo_proc (pid, &p); + + if (res) { + uid = p.p_uid; + } + + return uid; +} + +gboolean +ck_unix_pid_get_login_session_id (pid_t pid, + char **idp) +{ + g_return_val_if_fail (pid > 1, FALSE); + + return FALSE; +} + +gboolean +ck_get_max_num_consoles (guint *num) +{ + int max_consoles; + int res; + gboolean ret; + struct ttyent *t; + + ret = FALSE; + max_consoles = 0; + + res = setttyent (); + if (res == 0) { + goto done; + } + + while ((t = getttyent ()) != NULL) { + if (t->ty_status & TTY_ON && strncmp (t->ty_name, "ttyC", 4) == 0) + max_consoles++; + } + + /* Increment one more so that all consoles are properly counted + * this is arguable a bug in vt_add_watches(). + */ + max_consoles++; + + ret = TRUE; + + endttyent (); + +done: + if (num != NULL) { + *num = max_consoles; + } + + return ret; +} + +gboolean +ck_supports_activatable_consoles (void) +{ + return TRUE; +} + +char * +ck_get_console_device_for_num (guint num) +{ + char *device; + +/* VT are only available on i386, amd64 and macppc */ +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) + /* The device number is always one less than the VT number. */ + num--; +#endif + + device = g_strdup_printf ("/dev/ttyC%u", num); + + return device; +} + +gboolean +ck_get_console_num_from_device (const char *device, + guint *num) +{ + guint n; + gboolean ret; + + n = 0; + ret = FALSE; + + if (device == NULL) { + return FALSE; + } + + if (sscanf (device, "/dev/ttyC%u", &n) == 1) { +/* VT are only available on i386, amd64 and macppc */ +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) + /* The VT number is always one more than the device number. */ + n++; +#endif + ret = TRUE; + } + + if (num != NULL) { + *num = n; + } + + 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; + +/* VT are only available on i386, amd64 and macppc */ +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) + res = ioctl (console_fd, VT_GETACTIVE, &active); + if (res == ERROR) { + perror ("ioctl VT_GETACTIVE"); + goto out; + } + + g_debug ("Active VT is: %d (ttyC%d)", active, active - 1); +#else + res = 0; + g_debug ("Active console is: ttyC%d", active); +#endif + ret = TRUE; + + out: + if (num != NULL) { + *num = active; + } + + return ret; +} diff --git a/sysutils/consolekit/patches/patch-aa b/sysutils/consolekit/patches/patch-aa index 2e8cbc0433b..2ed0796bb07 100644 --- a/sysutils/consolekit/patches/patch-aa +++ b/sysutils/consolekit/patches/patch-aa @@ -1,8 +1,8 @@ -$NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $ +$NetBSD: patch-aa,v 1.4 2014/05/05 21:19:40 ryoon Exp $ ---- configure.ac.orig 2008-07-30 20:35:53.000000000 -0400 -+++ configure.ac 2008-12-23 16:40:06.000000000 -0500 -@@ -68,10 +68,21 @@ +--- configure.ac.orig 2008-07-31 00:35:53.000000000 +0000 ++++ configure.ac +@@ -68,10 +68,21 @@ AC_SUBST(HAVE_POLKIT) PKG_CHECK_MODULES(LIBDBUS, dbus-1 >= $DBUS_REQUIRED_VERSION ) @@ -25,7 +25,7 @@ $NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $ PKG_CHECK_MODULES(HISTORY, glib-2.0 >= $GLIB_REQUIRED_VERSION -@@ -190,12 +201,20 @@ +@@ -190,13 +201,30 @@ case "$host" in *-*-solaris*) CK_BACKEND="solaris" ;; @@ -36,6 +36,14 @@ $NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $ + CK_BACKEND="freebsd" + KVM_LIBS="-lkvm" + ;; ++ *-*-openbsd*) ++ CK_BACKEND="openbsd" ++ AC_CHECK_LIB(kvm, kvm_openfiles, have_kvm=yes, ++ AC_MSG_ERROR([Unable to find libkvm which is needed on OpenBSD])) ++ if test "x$have_kvm" = "xyes"; then ++ KVM_LIBS="-lkvm" ++ fi ++ ;; esac AC_SUBST(KVM_LIBS) @@ -44,9 +52,11 @@ $NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $ AM_CONDITIONAL(CK_COMPILE_FREEBSD, test x$CK_BACKEND = xfreebsd, [Compiling for FreeBSD]) +AM_CONDITIONAL(CK_COMPILE_NETBSD, test x$CK_BACKEND = xnetbsd, [Compiling for NetBSD]) AM_CONDITIONAL(CK_COMPILE_SOLARIS, test x$CK_BACKEND = xsolaris, [Compiling for Solaris]) ++AM_CONDITIONAL(CK_COMPILE_OPENBSD, test x$CK_BACKEND = xopenbsd, [Compiling for OpenBSD]) AC_SUBST(CK_BACKEND) -@@ -441,4 +460,4 @@ + dnl --------------------------------------------------------------------------- +@@ -441,4 +469,4 @@ if test x${have_polkit} = xno -a x${msg_ echo " a huge SECURITY HOLE. I repeat: YOU NEED TO EDIT THE FILE" echo " ConsoleKit.conf to match your distro/site to avoid NASTY SECURITY HOLES." echo "" diff --git a/sysutils/consolekit/patches/patch-ab b/sysutils/consolekit/patches/patch-ab index 28ac7f767ba..bc578b59b99 100644 --- a/sysutils/consolekit/patches/patch-ab +++ b/sysutils/consolekit/patches/patch-ab @@ -1,8 +1,8 @@ -$NetBSD: patch-ab,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $ +$NetBSD: patch-ab,v 1.2 2014/05/05 21:19:40 ryoon Exp $ ---- src/Makefile.am.orig 2008-07-25 14:38:56.000000000 -0400 +--- src/Makefile.am.orig 2008-07-25 18:38:56.000000000 +0000 +++ src/Makefile.am -@@ -56,11 +56,18 @@ libck_la_SOURCES += \ +@@ -56,11 +56,25 @@ libck_la_SOURCES += \ $(NULL) libck_la_LIBADD = $(KVM_LIBS) endif @@ -12,12 +12,19 @@ $NetBSD: patch-ab,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $ + $(NULL) +libck_la_LIBADD = -lkvm +endif ++if CK_COMPILE_OPENBSD ++libck_la_SOURCES += \ ++ ck-sysdeps-openbsd.c \ ++ $(NULL) ++libck_la_LIBADD = $(KVM_LIBS) ++endif EXTRA_libck_la_SOURCES = \ ck-sysdeps-linux.c \ ck-sysdeps-solaris.c \ ck-sysdeps-freebsd.c \ + ck-sysdeps-netbsd.c \ ++ ck-sysdeps-openbsd.c \ $(NULL) sbin_PROGRAMS = \ diff --git a/sysutils/consolekit/patches/patch-ac b/sysutils/consolekit/patches/patch-ac index eba4b802a2c..318799f7dfa 100644 --- a/sysutils/consolekit/patches/patch-ac +++ b/sysutils/consolekit/patches/patch-ac @@ -1,8 +1,8 @@ -$NetBSD: patch-ac,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $ +$NetBSD: patch-ac,v 1.2 2014/05/05 21:19:40 ryoon Exp $ ---- tools/Makefile.am.orig 2008-02-12 22:46:39.000000000 -0500 +--- tools/Makefile.am.orig 2008-02-13 03:46:39.000000000 +0000 +++ tools/Makefile.am -@@ -18,6 +18,10 @@ if CK_COMPILE_SOLARIS +@@ -18,6 +18,14 @@ if CK_COMPILE_SOLARIS SUBDIRS += solaris endif @@ -10,6 +10,10 @@ $NetBSD: patch-ac,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $ +SUBDIRS += freebsd +endif + ++if CK_COMPILE_OPENBSD ++SUBDIRS += freebsd ++endif ++ DIST_SUBDIRS = \ linux \ freebsd \ diff --git a/sysutils/consolekit/patches/patch-ae b/sysutils/consolekit/patches/patch-ae index 6f74bf54d0d..0c3d08c03cf 100644 --- a/sysutils/consolekit/patches/patch-ae +++ b/sysutils/consolekit/patches/patch-ae @@ -1,7 +1,7 @@ -$NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $ +$NetBSD: patch-ae,v 1.6 2014/05/05 21:19:40 ryoon Exp $ ---- src/ck-sysdeps-unix.c.orig 2008-11-27 05:10:25 +0200 -+++ src/ck-sysdeps-unix.c 2008-11-27 05:09:59 +0200 +--- src/ck-sysdeps-unix.c.orig 2008-01-23 14:30:44.000000000 +0000 ++++ src/ck-sysdeps-unix.c @@ -35,6 +35,11 @@ #include <linux/kd.h> #endif @@ -40,7 +40,19 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $ /* Adapted from dbus-sysdeps-unix.c:_dbus_read_credentials_socket() */ gboolean ck_get_socket_peer_credentials (int socket_fd, -@@ -99,7 +123,16 @@ ck_get_socket_peer_credentials (int +@@ -69,7 +93,11 @@ ck_get_socket_peer_credentials (int + ret = FALSE; + + #ifdef SO_PEERCRED ++#if !defined(__OpenBSD__) + struct ucred cr; ++#else ++ struct sockpeercred cr; ++#endif + socklen_t cr_len; + + cr_len = sizeof (cr); +@@ -99,7 +127,16 @@ ck_get_socket_peer_credentials (int if (ucred != NULL) { ucred_free (ucred); } @@ -58,7 +70,7 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $ g_warning ("Socket credentials not supported on this OS\n"); #endif -@@ -126,17 +159,17 @@ ck_get_socket_peer_credentials (int +@@ -126,17 +163,17 @@ ck_get_socket_peer_credentials (int gboolean ck_fd_is_a_console (int fd) { @@ -80,7 +92,7 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $ kb_ok = (ioctl (fd, CONS_GETVERS, &vers) == 0); #else kb_ok = 1; -@@ -172,6 +205,15 @@ ck_get_a_console_fd (void) +@@ -172,6 +209,15 @@ ck_get_a_console_fd (void) fd = -1; @@ -96,7 +108,7 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $ #ifdef __sun /* On Solaris, first try Sun VT device. */ fd = open_a_console ("/dev/vt/active"); -@@ -184,6 +226,14 @@ ck_get_a_console_fd (void) +@@ -184,6 +230,14 @@ ck_get_a_console_fd (void) } #endif |