--- a/src/ck-sysdeps-unix.c +++ b/src/ck-sysdeps-unix.c @@ -100,6 +100,15 @@ if (ucred != NULL) { ucred_free (ucred); } +#elif defined(HAVE_GETPEEREID) + gid_t dummy; + + if (getpeereid (socket_fd, &uid_read, &dummy) == 0) { + ret = TRUE; + } else { + g_warning ("Failed to getpeereid() credentials: %s\n", + g_strerror (errno)); + } #else /* !SO_PEERCRED && !HAVE_GETPEERUCRED */ g_warning ("Socket credentials not supported on this OS\n"); #endif @@ -129,7 +138,7 @@ { #ifdef __linux__ struct vt_stat vts; -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) int vers; #endif int kb_ok; @@ -137,7 +146,7 @@ errno = 0; #ifdef __linux__ kb_ok = (ioctl (fd, VT_GETSTATE, &vts) == 0); -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) kb_ok = (ioctl (fd, CONS_GETVERS, &vers) == 0); #else kb_ok = 1; --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -11,7 +11,7 @@ endif if CK_COMPILE_FREEBSD -SUBDIRS += freebsd +SUBDIRS += linux endif if CK_COMPILE_SOLARIS --- a/configure.ac +++ b/configure.ac @@ -83,10 +83,19 @@ EXTRA_COMPILE_WARNINGS(yes) # Solaris requires libresolv for daemon() -case "$host" in - *-*-solaris*) +case "$host_os" in + solaris*) AC_CHECK_LIB(resolv, daemon, [CONSOLE_KIT_LIBS="$CONSOLE_KIT_LIBS -lresolv"]) ;; + kfreebsd*-gnu) + have_getpeereid=no + AC_CHECK_LIB(bsd, getpeereid, have_getpeereid=yes) + if test "x$have_getpeereid" = "xyes"; then + CONSOLE_KIT_LIBS="${CONSOLE_KIT_LIBS} -lbsd" + TOOLS_LIBS="${TOOLS_LIBS} -lbsd" + AC_DEFINE(HAVE_GETPEEREID, [], [Define if we have getpeereid]) + fi + ;; esac