summaryrefslogtreecommitdiffstats
path: root/contrib/opie/libopie/getutmpentry.c
diff options
context:
space:
mode:
authorpst <pst@FreeBSD.org>1997-02-06 17:52:29 +0000
committerpst <pst@FreeBSD.org>1997-02-06 17:52:29 +0000
commit2dfcbf193123fd16b26454eeffa4bbd014e52c53 (patch)
treeec9d150c9da4390c2d223a04ac002523cbfd7f36 /contrib/opie/libopie/getutmpentry.c
downloadFreeBSD-src-2dfcbf193123fd16b26454eeffa4bbd014e52c53.zip
FreeBSD-src-2dfcbf193123fd16b26454eeffa4bbd014e52c53.tar.gz
Initial import of OPIE v2.3 from
ftp://ftp.nrl.navy.mil/pub/security/opie/
Diffstat (limited to 'contrib/opie/libopie/getutmpentry.c')
-rw-r--r--contrib/opie/libopie/getutmpentry.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/contrib/opie/libopie/getutmpentry.c b/contrib/opie/libopie/getutmpentry.c
new file mode 100644
index 0000000..8013f87
--- /dev/null
+++ b/contrib/opie/libopie/getutmpentry.c
@@ -0,0 +1,72 @@
+/* getutmpentry.c: The __opiegetutmpentry() library function.
+
+%%% copyright-cmetz
+This software is Copyright 1996 by Craig Metz, All Rights Reserved.
+The Inner Net License Version 2 applies to this software.
+You should have received a copy of the license with this software. If
+you didn't get a copy, you may request one from <license@inner.net>.
+
+ History:
+
+ Created by cmetz for OPIE 2.3 (re-write).
+*/
+
+#include "opie_cfg.h"
+#include <stdio.h>
+#include <sys/types.h>
+#include <utmp.h>
+
+#if DOUTMPX
+#include <utmpx.h>
+#define getutline(x) getutxline(x)
+#define utmp utmpx
+#endif /* DOUTMPX */
+
+#if HAVE_STRING_H
+#include <string.h>
+#endif /* HAVE_STRING_H */
+
+#if DEBUG
+#include <syslog.h>
+#endif /* DEBUG */
+#include "opie.h"
+
+#if !HAVE_GETUTLINE
+struct utmp *getutline __P((struct utmp *));
+#endif /* HAVE_GETUTLINE */
+
+int __opiegetutmpentry FUNCTION((line, utmp), char *line AND struct utmp *utmp)
+{
+ struct utmp u, *pu;
+
+ memset(&u, 0, sizeof(u));
+
+ if (!strncmp(line, "/dev/", 5)) {
+ strncpy(u.ut_line, line + 5, sizeof(u.ut_line));
+ if ((pu = getutline(&u)))
+ goto gotit;
+
+#ifdef hpux
+ strcpy(u.ut_line, "pty/");
+ strncpy(u.ut_line + 4, line + 5, sizeof(u.ut_line) - 4);
+ if ((pu = getutline(&u)))
+ goto gotit;
+#endif /* hpux */
+ }
+
+ strncpy(u.ut_line, line, sizeof(u.ut_line));
+ if ((pu = getutline(&u)))
+ goto gotit;
+
+#if DEBUG
+ syslog(LOG_DEBUG, "__opiegetutmpentry: failed to find entry for line %s", line);
+#endif /* DEBUG */
+ return -1;
+
+gotit:
+#if DEBUG
+ syslog(LOG_DEBUG, "__opiegetutmpentry: succeeded with line %s", pu->ut_line);
+#endif /* DEBUG */
+ memcpy(utmp, pu, sizeof(struct utmp));
+ return 0;
+}
OpenPOWER on IntegriCloud