- Fix utmpx on CURRENT
This commit is contained in:
parent
3624693c1d
commit
40d378fcb7
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=248321
2 changed files with 165 additions and 1 deletions
|
@ -25,6 +25,12 @@ ALL_TARGET=
|
|||
DATADIR= ${PREFIX}/${PORTNAME}
|
||||
REINPLACE_SUB= DATADIR="${DATADIR}"
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
.if ${OSVERSION} >= 900007
|
||||
EXTRA_PATCHES= ${FILESDIR}/extra-utmpx
|
||||
.endif
|
||||
|
||||
_MANPREFIX= ${DATADIR}/usr/share/man/5man
|
||||
_MSECS= 1 1b 1m 2 3 4 5 6 7 8
|
||||
|
||||
|
@ -96,4 +102,4 @@ install-doc:
|
|||
#. endfor
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
.include <bsd.port.post.mk>
|
||||
|
|
158
sysutils/heirloom/files/extra-utmpx
Normal file
158
sysutils/heirloom/files/extra-utmpx
Normal file
|
@ -0,0 +1,158 @@
|
|||
--- libcommon/_utmpx.h.orig 2006-01-22 20:06:14.000000000 +0100
|
||||
+++ libcommon/_utmpx.h 2010-01-21 21:50:34.000000000 +0100
|
||||
@@ -26,7 +26,12 @@
|
||||
defined (__DragonFly__) || defined (__APPLE__)
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
-#include <utmp.h>
|
||||
+
|
||||
+#include <sys/param.h>
|
||||
+#if defined(__FreeBSD__) && __FreeBSD_version >= 900007
|
||||
+# include "/usr/include/utmpx.h"
|
||||
+#else
|
||||
+# include <utmp.h>
|
||||
|
||||
#ifndef __dietlibc__
|
||||
struct utmpx {
|
||||
@@ -83,6 +88,7 @@
|
||||
extern struct utmpx *getutxline(const struct utmpx *);
|
||||
extern struct utmpx *pututxline(const struct utmpx *);
|
||||
extern void setutxent(void);
|
||||
+#endif /*!__FreeBSD__ && __FreeBSD_version >= 900007*/
|
||||
extern int utmpxname(const char *);
|
||||
extern void updwtmpx(const char *, const struct utmpx *);
|
||||
#endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __UCLIBC__ ||
|
||||
--- libcommon/utmpx.c.orig 2006-01-22 20:06:14.000000000 +0100
|
||||
+++ libcommon/utmpx.c 2010-01-21 21:58:07.000000000 +0100
|
||||
@@ -28,14 +28,16 @@
|
||||
defined (__DragonFly__) || defined (__APPLE__)
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
-#include <utmp.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "utmpx.h"
|
||||
|
||||
static FILE *utfp;
|
||||
static struct utmpx utx;
|
||||
-static const char *utmpfile = _PATH_UTMP;
|
||||
+static const char *utmpfile = NULL;
|
||||
+
|
||||
+#include <sys/param.h>
|
||||
+#if !(defined(__FreeBSD__) && __FreeBSD_version >= 900007)
|
||||
|
||||
static FILE *
|
||||
init(void)
|
||||
@@ -198,13 +200,6 @@
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
-int
|
||||
-utmpxname(const char *name)
|
||||
-{
|
||||
- utmpfile = strdup(name);
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
extern struct utmpx *
|
||||
pututxline(const struct utmpx *up)
|
||||
{
|
||||
@@ -235,6 +230,15 @@
|
||||
return rp;
|
||||
}
|
||||
|
||||
+#endif /*!__FreeBSD__ && __FreeBSD_version >= 900007*/
|
||||
+
|
||||
+int
|
||||
+utmpxname(const char *name)
|
||||
+{
|
||||
+ utmpfile = strdup(name);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
extern void
|
||||
updwtmpx(const char *name, const struct utmpx *up)
|
||||
{
|
||||
--- who/who.c.orig 2010-01-21 22:02:24.000000000 +0100
|
||||
+++ who/who.c 2010-01-21 22:07:45.000000000 +0100
|
||||
@@ -129,8 +129,11 @@
|
||||
|
||||
if (u->ut_type == LOGIN_PROCESS)
|
||||
cp = "LOGIN";
|
||||
- else if (u->ut_type == BOOT_TIME || u->ut_type == RUN_LVL ||
|
||||
- u->ut_user[0] == '\0')
|
||||
+#if defined(__FreeBSD__) && __FreeBSD_version >= 900007
|
||||
+ else if (u->ut_type == BOOT_TIME || u->ut_user[0] == '\0')
|
||||
+#else
|
||||
+ else if (u->ut_type == BOOT_TIME || u->ut_type == RUN_LVL || u->ut_user[0] == '\0')
|
||||
+#endif
|
||||
cp = " .";
|
||||
else
|
||||
cp = u->ut_user;
|
||||
@@ -147,11 +150,16 @@
|
||||
} else
|
||||
c = ' ';
|
||||
printf("%c ", c);
|
||||
+
|
||||
+#if !(defined(__FreeBSD__) && __FreeBSD_version >= 900007)
|
||||
if (u->ut_type == RUN_LVL) {
|
||||
snprintf(buf, sizeof buf, "run-level %c",
|
||||
(int)(u->ut_pid & 0377));
|
||||
cp = buf;
|
||||
- } else if (u->ut_type == BOOT_TIME)
|
||||
+ } else
|
||||
+
|
||||
+#endif
|
||||
+ if (u->ut_type == BOOT_TIME)
|
||||
cp = "system boot";
|
||||
else if (u->ut_line[0] == '\0')
|
||||
cp = " .";
|
||||
@@ -189,7 +197,11 @@
|
||||
cp = " . ";
|
||||
printf(" %s", cp);
|
||||
}
|
||||
- if (u->ut_type != RUN_LVL && u->ut_type != BOOT_TIME
|
||||
+ if (
|
||||
+#if !(defined(__FreeBSD__) && __FreeBSD_version >= 900007)
|
||||
+ u->ut_type != RUN_LVL &&
|
||||
+#endif
|
||||
+ u->ut_type != BOOT_TIME
|
||||
#ifdef ACCOUNTING
|
||||
&& u->ut_type != ACCOUNTING
|
||||
#endif /* ACCOUNTING */
|
||||
@@ -203,7 +215,7 @@
|
||||
#endif /* __hpux */
|
||||
printf(" id=%4.4s term=%-3d exit=%d",
|
||||
u->ut_id,
|
||||
-#if !defined (_AIX) || !defined (__APPLE__)
|
||||
+#if (!defined (_AIX) || !defined (__APPLE__)) && !defined(__FreeBSD__)
|
||||
u->ut_exit.e_termination,
|
||||
u->ut_exit.e_exit
|
||||
#else /* _AIX, __APPLE__ */
|
||||
@@ -213,9 +225,12 @@
|
||||
);
|
||||
else if (u->ut_type == INIT_PROCESS && !sflag)
|
||||
printf(" id=%4.4s", u->ut_id);
|
||||
+
|
||||
+#if !(defined(__FreeBSD__) && __FreeBSD_version >= 900007)
|
||||
else if (u->ut_type == RUN_LVL)
|
||||
printf(" %c %-4ld %c", (int)(u->ut_pid & 0377),
|
||||
0L, (int)((u->ut_pid & 0177777) / 0400));
|
||||
+#endif
|
||||
if (Rflag && u->ut_host[0])
|
||||
printf("\t(%.*s)", (int)sizeof u->ut_host, u->ut_host);
|
||||
putchar('\n');
|
||||
@@ -227,10 +242,13 @@
|
||||
enum okay val = STOP;
|
||||
|
||||
switch (u->ut_type) {
|
||||
+
|
||||
+#if !(defined(__FreeBSD__) && __FreeBSD_version >= 900007)
|
||||
case RUN_LVL:
|
||||
if (flags & FL_r)
|
||||
val = OKAY;
|
||||
break;
|
||||
+#endif
|
||||
case BOOT_TIME:
|
||||
if (flags & FL_b)
|
||||
val = OKAY;
|
Loading…
Reference in a new issue