aboutsummaryrefslogtreecommitdiff
path: root/lib/libulog/ulog.h
diff options
context:
space:
mode:
authorEd Schouten <ed@FreeBSD.org>2009-12-05 19:53:29 +0000
committerEd Schouten <ed@FreeBSD.org>2009-12-05 19:53:29 +0000
commit42782e4717a25302a47979f3058bcdb71c6983e4 (patch)
tree2ce40e829decaf7f7ede480d55ebd830b6fdd8ec /lib/libulog/ulog.h
parent2c201a9afe37d2cec72faa4f00dc640c7b4130b3 (diff)
downloadsrc-42782e4717a25302a47979f3058bcdb71c6983e4.tar.gz
src-42782e4717a25302a47979f3058bcdb71c6983e4.zip
Massively extend libulog:
- Just like struct utmp, store strings inside struct utmpx itself. This is needed to make things like pututxline() work. - Add ut_id and ut_pid fields, even though they have little use in our implementation. - It turns out our "reboot" wtmp entries indicate a system boot, so remove REBOOT_TIME - Implement getutxline() and pututxline - Add getutxuser() and setutxfile(), which allows us to crawl wtmp and lastlog files as well. - Add _ULOG_POSIX_NAMES, so we can already use the POSIX names if we really want to.
Notes
Notes: svn path=/head/; revision=200153
Diffstat (limited to 'lib/libulog/ulog.h')
-rw-r--r--lib/libulog/ulog.h66
1 files changed, 36 insertions, 30 deletions
diff --git a/lib/libulog/ulog.h b/lib/libulog/ulog.h
index 2551f918d1f5..1e45aed3569c 100644
--- a/lib/libulog/ulog.h
+++ b/lib/libulog/ulog.h
@@ -31,6 +31,12 @@
#include <sys/cdefs.h>
#include <sys/_timeval.h>
+#include <sys/_types.h>
+
+#ifndef _PID_T_DECLARED
+typedef __pid_t pid_t;
+#define _PID_T_DECLARED
+#endif
/*
* libulog.
@@ -42,61 +48,61 @@
* processes as well, provided that they hold a file descriptor to a
* pseudo-terminal master device.
*
- * Unlike struct utmpx, the buffers containing the strings are not
- * stored inside struct ulog_utmpx itself. Processes should never
- * handcraft these structures anyway.
- *
* This library (or at least parts of it) will hopefully deprecate over
* time, when we provide the <utmpx.h> API.
*/
-#define _UTX_USERDISPSIZE 16
-#define _UTX_LINEDISPSIZE 8
-#define _UTX_HOSTDISPSIZE 16
-
struct ulog_utmpx {
- char *ut_user;
-#if 0
- char *ut_id;
-#endif
- char *ut_line;
- char *ut_host;
-#if 0
- pid_t ut_pid;
-#endif
- short ut_type;
+ char ut_user[32];
+ char ut_id[8]; /* XXX: unsupported. */
+ char ut_line[32];
+ char ut_host[256];
+ pid_t ut_pid; /* XXX: unsupported. */
+ short ut_type;
#define EMPTY 0
-#if 0
#define BOOT_TIME 1
-#endif
#define OLD_TIME 2
#define NEW_TIME 3
#define USER_PROCESS 4
-#if 0
-#define INIT_PROCESS 5
-#define LOGIN_PROCESS 6
-#endif
+#define INIT_PROCESS 5 /* XXX: unsupported. */
+#define LOGIN_PROCESS 6 /* XXX: unsupported. */
#define DEAD_PROCESS 7
-
#define SHUTDOWN_TIME 8
-#define REBOOT_TIME 9
- struct timeval ut_tv;
+ struct timeval ut_tv;
};
__BEGIN_DECLS
+/* POSIX routines. */
void ulog_endutxent(void);
struct ulog_utmpx *ulog_getutxent(void);
#if 0
-struct ulog_utmpx *ulog_getutxid(const struct ulog_utmpx *id);
-struct ulog_utmpx *ulog_getutxline(const struct ulog_utmpx *line);
-struct ulog_utmpx *ulog_pututxline(const struct ulog_utmpx *utmpx);
+struct ulog_utmpx *ulog_getutxid(const struct ulog_utmpx *);
#endif
+struct ulog_utmpx *ulog_getutxline(const struct ulog_utmpx *);
+struct ulog_utmpx *ulog_pututxline(const struct ulog_utmpx *);
void ulog_setutxent(void);
+/* Extensions. */
+struct ulog_utmpx *ulog_getutxuser(const char *);
+int ulog_setutxfile(int, const char *);
+#define UTXF_UTMP 0
+#define UTXF_WTMP 1
+#define UTXF_LASTLOG 2
+
+/* Login/logout utility functions. */
void ulog_login(const char *, const char *, const char *);
void ulog_login_pseudo(int, const char *);
void ulog_logout(const char *);
void ulog_logout_pseudo(int);
__END_DECLS
+#ifdef _ULOG_POSIX_NAMES
+#define utmpx ulog_utmpx
+#define endutxent ulog_endutxent
+#define getutxent ulog_getutxent
+#define getutxline ulog_getutxline
+#define pututxline ulog_pututxline
+#define setutxent ulog_setutxent
+#endif /* _ULOG_POSIX_NAMES */
+
#endif /* !_ULOG_H_ */