/* Declarations for GNU's read utmp module.
- Copyright (C) 1992-2000 Free Software Foundation, Inc.
+
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003 Free Software Foundation, Inc.
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
#ifndef __READUTMP_H__
# define __READUTMP_H__
-# ifndef PARAMS
-# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
-# define PARAMS(Args) Args
-# else
-# define PARAMS(Args) ()
-# endif
-# endif
-
# include <sys/types.h>
+/* AIX 4.3.3 has both utmp.h and utmpx.h, but only struct utmp
+ has the ut_exit member. */
+# if (HAVE_UTMPX_H && HAVE_UTMP_H && HAVE_STRUCT_UTMP_UT_EXIT \
+ && ! HAVE_STRUCT_UTMPX_UT_EXIT)
+# undef HAVE_UTMPX_H
+# endif
+
# ifdef HAVE_UTMPX_H
+# ifdef HAVE_UTMP_H
+ /* HPUX 10.20 needs utmp.h, for the definition of e.g., UTMP_FILE. */
+# include <utmp.h>
+# endif
# include <utmpx.h>
# define UTMP_STRUCT_NAME utmpx
# define UT_TIME_MEMBER(UT_PTR) ((UT_PTR)->ut_tv.tv_sec)
# ifdef HAVE_UTMPXNAME
# define UTMP_NAME_FUNCTION utmpxname
# endif
+
+# if HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination)
+# else
+# if HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination)
+# else
+# define UT_EXIT_E_TERMINATION(U) 0
+# endif
+# endif
+
+# if HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit)
+# else
+# if HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit)
+# else
+# define UT_EXIT_E_EXIT(U) 0
+# endif
+# endif
+
# else
# include <utmp.h>
+# if !HAVE_DECL_GETUTENT
+ struct utmp *getutent();
+# endif
# define UTMP_STRUCT_NAME utmp
# define UT_TIME_MEMBER(UT_PTR) ((UT_PTR)->ut_time)
# define SET_UTMP_ENT setutent
# ifdef HAVE_UTMPNAME
# define UTMP_NAME_FUNCTION utmpname
# endif
+
+# if HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination)
+# else
+# if HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination)
+# else
+# define UT_EXIT_E_TERMINATION(U) 0
+# endif
+# endif
+
+# if HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit)
+# else
+# if HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit)
+# else
+# define UT_EXIT_E_EXIT(U) 0
+# endif
+# endif
+
# endif
/* Accessor macro for the member named ut_user or ut_name. */
# endif
+# define HAVE_STRUCT_XTMP_UT_EXIT \
+ (HAVE_STRUCT_UTMP_UT_EXIT \
+ || HAVE_STRUCT_UTMPX_UT_EXIT)
+
+# define HAVE_STRUCT_XTMP_UT_ID \
+ (HAVE_STRUCT_UTMP_UT_ID \
+ || HAVE_STRUCT_UTMPX_UT_ID)
+
+# define HAVE_STRUCT_XTMP_UT_PID \
+ (HAVE_STRUCT_UTMP_UT_PID \
+ || HAVE_STRUCT_UTMPX_UT_PID)
+
+# define HAVE_STRUCT_XTMP_UT_TYPE \
+ (HAVE_STRUCT_UTMP_UT_TYPE \
+ || HAVE_STRUCT_UTMPX_UT_TYPE)
+
typedef struct UTMP_STRUCT_NAME STRUCT_UTMP;
# include <time.h>
# define WTMP_FILE "/etc/wtmp"
# endif
-# undef PARAMS
-# if defined (__STDC__) && __STDC__
-# define PARAMS(Args) Args
-# else
-# define PARAMS(Args) ()
-# endif
-
-extern char *extract_trimmed_name PARAMS ((const STRUCT_UTMP *ut));
-extern int read_utmp PARAMS ((const char *filename,
- int *n_entries, STRUCT_UTMP **utmp_buf));
+char *extract_trimmed_name (const STRUCT_UTMP *ut);
+int read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf);
#endif /* __READUTMP_H__ */