diff options
author | Michael Nottebrock <lofi@FreeBSD.org> | 2004-08-29 22:54:38 +0000 |
---|---|---|
committer | Michael Nottebrock <lofi@FreeBSD.org> | 2004-08-29 22:54:38 +0000 |
commit | 2acccefd8eb0a19e254d17ef2fe1591fdf709795 (patch) | |
tree | c03faabebbde09e967dea5f00bb750d36be19596 /sysutils/libutempter | |
parent | abab1efce8ef424338aae5a47e4aa4c59d0c1be3 (diff) | |
download | ports-2acccefd8eb0a19e254d17ef2fe1591fdf709795.tar.gz ports-2acccefd8eb0a19e254d17ef2fe1591fdf709795.zip |
Add libutempter, an interface to record user sessions to utmp and wtmp files
Notes
Notes:
svn path=/head/; revision=117607
Diffstat (limited to 'sysutils/libutempter')
-rw-r--r-- | sysutils/libutempter/Makefile | 20 | ||||
-rw-r--r-- | sysutils/libutempter/distinfo | 2 | ||||
-rw-r--r-- | sysutils/libutempter/files/patch-Makefile | 47 | ||||
-rw-r--r-- | sysutils/libutempter/files/patch-iface.c | 18 | ||||
-rw-r--r-- | sysutils/libutempter/files/patch-utempter.c | 76 | ||||
-rw-r--r-- | sysutils/libutempter/pkg-descr | 12 | ||||
-rw-r--r-- | sysutils/libutempter/pkg-plist | 7 |
7 files changed, 182 insertions, 0 deletions
diff --git a/sysutils/libutempter/Makefile b/sysutils/libutempter/Makefile new file mode 100644 index 000000000000..b6d0328d603e --- /dev/null +++ b/sysutils/libutempter/Makefile @@ -0,0 +1,20 @@ +# New ports collection makefile for: libutempter +# Date created: 18 Aug 2004 14:50:41 CEST +# Whom: Michael Nottebrock <lofi@freebsd.org>, +# David Malone <dwmalone@maths.tcd.ie> +# $FreeBSD$ + +PORTNAME= libutempter +PORTVERSION= 1.1.1 +CATEGORIES= sysutils +MASTER_SITES= ftp://ftp.altlinux.org/pub/people/ldv/utempter/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Interface to record user sessions to utmp and wtmp files + +USE_BZIP2= yes +USE_GMAKE= yes +INSTALLS_SHLIB= yes +NO_FILTER_SHLIBS=yes + +.include <bsd.port.mk> diff --git a/sysutils/libutempter/distinfo b/sysutils/libutempter/distinfo new file mode 100644 index 000000000000..a7328eae405d --- /dev/null +++ b/sysutils/libutempter/distinfo @@ -0,0 +1,2 @@ +MD5 (libutempter-1.1.1.tar.bz2) = 0d472416e0234ece562c38a037fbaba0 +SIZE (libutempter-1.1.1.tar.bz2) = 13668 diff --git a/sysutils/libutempter/files/patch-Makefile b/sysutils/libutempter/files/patch-Makefile new file mode 100644 index 000000000000..e93763181dd3 --- /dev/null +++ b/sysutils/libutempter/files/patch-Makefile @@ -0,0 +1,47 @@ +--- Makefile.orig Tue Dec 24 12:25:11 2002 ++++ Makefile Wed Aug 18 15:54:06 2004 +@@ -30,12 +30,12 @@ + TARGETS = $(PROJECT) $(SHAREDLIB) $(STATICLIB) + + INSTALL = install +-libdir = /usr/lib +-libexecdir = /usr/lib +-includedir = /usr/include +-DESTDIR = ++libdir = /lib ++libexecdir = /libexec ++includedir = /include ++DESTDIR = $(PREFIX) + +-CFLAGS = $(RPM_OPT_FLAGS) -DLIBEXECDIR=\"$(libexecdir)\" ++CFLAGS+= -DLIBEXECDIR=\"$(PREFIX)$(libexecdir)\" + + all: $(TARGETS) + +@@ -51,13 +51,21 @@ + + iface.o: iface.c utempter.h + ++$(PROJECT).o: $(PROJECT).c ++ ++$(PROJECT): $(PROJECT).o ++ $(LINK.o) $(PROJECT).o -o $(PROJECT) -lutil ++ ++ + install: +- $(INSTALL) -pD -m2711 $(PROJECT) $(DESTDIR)$(libexecdir)/$(PROJECT)/$(PROJECT) +- $(INSTALL) -pD -m644 $(PROJECT).h $(DESTDIR)$(includedir)/$(PROJECT).h +- $(INSTALL) -pD -m755 $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SHAREDLIB).$(VERSION) +- $(INSTALL) -pD -m644 $(STATICLIB) $(DESTDIR)$(libdir)/$(STATICLIB) ++ mkdir -p $(DESTDIR)$(libexecdir)/$(PROJECT) $(DESTDIR)$(includedir) \ ++ $(DESTDIR)$(libdir) ++ $(INSTALL) -m4711 $(PROJECT) $(DESTDIR)$(libexecdir)/$(PROJECT)/$(PROJECT) ++ $(INSTALL) -m644 $(PROJECT).h $(DESTDIR)$(includedir)/$(PROJECT).h ++ $(INSTALL) -m755 $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SHAREDLIB).$(VERSION) ++ $(INSTALL) -m644 $(STATICLIB) $(DESTDIR)$(libdir)/$(STATICLIB) + ln -s $(SHAREDLIB).$(VERSION) $(DESTDIR)$(libdir)/$(SONAME) + ln -s $(SONAME) $(DESTDIR)$(libdir)/$(SHAREDLIB) + + clean: +- $(RM) $(TARGETS) iface.o iface.os core *~ ++ $(RM) $(TARGETS) $(PROJECT).o iface.o iface.os core *~ diff --git a/sysutils/libutempter/files/patch-iface.c b/sysutils/libutempter/files/patch-iface.c new file mode 100644 index 000000000000..1c214aacb334 --- /dev/null +++ b/sysutils/libutempter/files/patch-iface.c @@ -0,0 +1,18 @@ +--- iface.c.orig Wed Aug 18 16:09:25 2004 ++++ iface.c Wed Aug 18 16:11:38 2004 +@@ -32,6 +32,15 @@ + #include <sys/wait.h> + #include <sys/types.h> + ++#ifndef TEMP_FAILURE_RETRY ++#define TEMP_FAILURE_RETRY(expression) \ ++ (__extension__ \ ++ ({ long int __result; \ ++ do __result = (long int) (expression); \ ++ while (__result == -1L && errno == EINTR); \ ++ __result; })) ++#endif ++ + extern int getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid); + + #include "utempter.h" diff --git a/sysutils/libutempter/files/patch-utempter.c b/sysutils/libutempter/files/patch-utempter.c new file mode 100644 index 000000000000..7b89e73506d9 --- /dev/null +++ b/sysutils/libutempter/files/patch-utempter.c @@ -0,0 +1,76 @@ +--- utempter.c.orig Wed Aug 18 15:04:15 2004 ++++ utempter.c Wed Aug 18 15:16:18 2004 +@@ -29,11 +29,11 @@ + #include <string.h> + #include <unistd.h> + #include <fcntl.h> +-#include <pty.h> + #include <pwd.h> + #include <sys/ioctl.h> + #include <sys/stat.h> + #include <utmp.h> ++#include <libutil.h> + + #define DEV_PREFIX "/dev/" + #define DEV_PREFIX_LEN (sizeof(DEV_PREFIX)-1) +@@ -102,42 +102,29 @@ + pid_t pid, int add) + { + struct utmp ut; +- int offset = strlen (term) - sizeof (ut.ut_id); + + memset (&ut, 0, sizeof (ut)); + +- strncpy (ut.ut_user, user, sizeof (ut.ut_user)); ++ strncpy (ut.ut_name, user, sizeof (ut.ut_name)); + + strncpy (ut.ut_line, term, sizeof (ut.ut_line)); + +- if (offset < 0) +- offset = 0; +- strncpy (ut.ut_id, term + offset, sizeof (ut.ut_id)); +- + if (host) + strncpy (ut.ut_host, host, sizeof (ut.ut_host)); + +- if (add) +- ut.ut_type = USER_PROCESS; +- else +- ut.ut_type = DEAD_PROCESS; +- +- ut.ut_pid = pid; +- +- gettimeofday (&ut.ut_tv, 0); ++ time (&ut.ut_time); + +- setutent (); +- if (!pututline (&ut)) +- { ++ if (add) { ++ login (&ut); ++ } else { ++ if (logout (term) != 1) { + #ifdef UTEMPTER_DEBUG +- fprintf (stderr, "utempter: pututline: %s\n", +- strerror (errno)); ++ fprintf (stderr, "utempter: logout: %s\n", ++ strerror (errno)); + #endif + exit (EXIT_FAILURE); ++ } + } +- endutent (); +- +- updwtmp (_PATH_WTMP, &ut); + + #ifdef UTEMPTER_DEBUG + fprintf (stderr, +@@ -203,7 +190,7 @@ + exit (EXIT_FAILURE); + } + +- device = ptsname (STDIN_FILENO); ++ device = ttyname (STDIN_FILENO); + if (!device) + { + #ifdef UTEMPTER_DEBUG diff --git a/sysutils/libutempter/pkg-descr b/sysutils/libutempter/pkg-descr new file mode 100644 index 000000000000..78235d39adaa --- /dev/null +++ b/sysutils/libutempter/pkg-descr @@ -0,0 +1,12 @@ +The libutempter library provides interface for terminal emulators such as +screen and xterm to record user sessions to utmp and wtmp files. + +The utempter is a privileged helper used by libutempter library to manipulate +utmp and wtmp files. + +This implementation is based on ideas of RedHat's utempter by Erik Troan +(version 0.5.2 at the moment of writing). + +There are two interfaces supported: old and new. +New API is recommended for new applications, old - for compatibility with +old software. diff --git a/sysutils/libutempter/pkg-plist b/sysutils/libutempter/pkg-plist new file mode 100644 index 000000000000..c52e0300e9da --- /dev/null +++ b/sysutils/libutempter/pkg-plist @@ -0,0 +1,7 @@ +include/utempter.h +lib/libutempter.a +lib/libutempter.so +lib/libutempter.so.0 +lib/libutempter.so.1.1.1 +libexec/utempter/utempter +@dirrm libexec/utempter |