#ifndef SYSUTMP_H_INCLUDED
#define SYSUTMP_H_INCLUDED
+#include <freeradius-devel/ident.h>
+RCSIDH(sysutmp_h, "$Id$")
+
+/*
+ * If we have BOTH utmp.h and utmpx.h, then
+ * we prefer to use utmp.h, but only on systems other than Solaris.
+ */
+#if !defined(sun) && !defined(sgi) && !defined(hpux)
#ifdef HAVE_UTMP_H
+#undef HAVE_UTMPX_H
+#endif
+#endif
+
+#if defined(HAVE_UTMP_H) || defined(HAVE_UTMPX_H)
/* UTMP stuff. Uses utmpx on svr4 */
-#ifdef __svr4__
+#ifdef HAVE_UTMPX_H
# include <utmpx.h>
# include <sys/fcntl.h>
# define utmp utmpx
# define UT_NAMESIZE 32
# define UT_LINESIZE 32
# define UT_HOSTSIZE 257
+#ifdef hpux
+# define ut_name ut_user
+#endif
#else
# include <utmp.h>
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifdef __osf__
# define UT_NAMESIZE 32
# define UT_LINESIZE 32
# define UT_HOSTSIZE 64
#endif
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(bsdi) || defined(__OpenBSD__)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(bsdi) || defined(__OpenBSD__) || defined(__APPLE__)
# ifndef UTMP_FILE
# define UTMP_FILE "/var/run/utmp"
# endif
#endif /* HAVE_UTMP_H */
+#ifdef __cplusplus
+}
+#endif
+
#endif /* SYSUTMP_H_INCLUDED */