On Mon, Mar 10, 2008 at 18:19:43 +0100, Julien Cristau wrote:

> On Tue, Mar  4, 2008 at 18:51:33 -0800, Alan Coopersmith wrote:
> 
> > I'd have no objections to using openlog() on other OS'es too, though I'd
> > prefer an autoconf test for the openlog() function over just adding 
> > __linux__
> > (or just making it non-conditional for all OS'es if everyone has openlog()).
> > 
> Hi,
> 
> the attached patch adds a configure check for openlog, and changes the
> greeter code to use #ifdef HAVE_OPENLOG instead of __OpenBSD__.  I don't
> know if additional checks for <syslog.h> or LOG_AUTH are needed, though,
> but that should be easy to fix if necessary.
> 
Updated version, with a check for <syslog.h> in addition to openlog().

Cheers,
Julien
>From 83a6107916e1285c0750e50eb286ae0793e08031 Mon Sep 17 00:00:00 2001
From: Julien Cristau <[EMAIL PROTECTED]>
Date: Mon, 10 Mar 2008 17:51:15 +0100
Subject: [PATCH] Add support for syslog on more than openbsd.

Also use LOG_AUTHPRIV by default, if that exists.
---
 configure.ac    |    4 ++--
 greeter/greet.c |   17 +++++++++++------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/configure.ac b/configure.ac
index 329c8e8..4f2845b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -76,8 +76,8 @@ if test "x$HAS_SETUSERCONTEXT" = "xyes" ; then
 		[Define to 1 if you have the 'setusercontext' function.])
 fi
 
-AC_CHECK_FUNCS([daemon sigaction])
-AC_CHECK_HEADERS([grp.h])
+AC_CHECK_FUNCS([daemon sigaction openlog])
+AC_CHECK_HEADERS([grp.h syslog.h])
 AC_TYPE_SIGNAL
 
 XTRANS_CONNECTION_FLAGS
diff --git a/greeter/greet.c b/greeter/greet.c
index 0aabec7..852e1eb 100644
--- a/greeter/greet.c
+++ b/greeter/greet.c
@@ -83,8 +83,15 @@ from The Open Group.
 #include "greet.h"
 #include "Login.h"
 
-#ifdef __OpenBSD__
+#ifdef HAVE_OPENLOG && HAVE_SYSLOG_H
+#define USE_SYSLOG
 #include <syslog.h>
+#ifndef LOG_AUTHPRIV
+#define LOG_AUTHPRIV LOG_AUTH
+#endif
+#ifndef LOG_PID
+#define LOG_PID 0
+#endif
 #endif
 
 #if defined(SECURE_RPC) && defined(sun)
@@ -408,9 +415,7 @@ Greet (struct display *d, struct greet_info *greet)
 static void
 FailedLogin (struct display *d, struct greet_info *greet)
 {
-#ifdef __OpenBSD__
-    syslog(LOG_NOTICE, "LOGIN FAILURE ON %s",
-	   d->name);
+#ifdef USE_SYSLOG
     syslog(LOG_AUTHPRIV|LOG_NOTICE,
 	   "LOGIN FAILURE ON %s, %s",
 	   d->name, greet->name);
@@ -485,8 +490,8 @@ greet_user_rtn GreetUser(
 	LogError ("Cannot reopen display %s for greet window\n", d->name);
 	exit (RESERVER_DISPLAY);
     }
-#ifdef __OpenBSD__
-    openlog("xdm", LOG_ODELAY, LOG_AUTH);
+#ifdef USE_SYSLOG
+    openlog("xdm", LOG_ODELAY|LOG_PID, LOG_AUTHPRIV);
 #endif
 
     for (;;) {
-- 
1.5.5.4

Reply via email to