ports/143310: utmp.h -> utmpx.h migration in FreeBSD 9
Konrad Heuer
kheuer at gwdg.de
Thu Jan 28 11:40:07 UTC 2010
>Number: 143310
>Category: ports
>Synopsis: utmp.h -> utmpx.h migration in FreeBSD 9
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Thu Jan 28 11:40:06 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Konrad Heuer
>Release: FreeBSD 8.0-RELEASE-p1 i386
>Organization:
GWDG
>Environment:
>Description:
port does not build because of change in utmp interface
>How-To-Repeat:
cd bin; make -f ../Makefile rmonitor
cc -O2 -pipe -fno-strict-aliasing -c ../src/rmonitor.c
In file included from ../src/rmonitor.c:91:
/usr/include/utmp.h:2:2: error: #error "<utmp.h> has been replaced by
<utmpx.h>"
../src/rmonitor.c: In function 'getstat':
../src/rmonitor.c:314: error: storage size of 'utmprec' isn't known
...
>Fix:
Patch was provided by Ed Schouten <ed at 80386.nl> since I've no shell
access to a FreeBSD 9 system.
Thanks to him!
diff -uN gives:
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/sysutils/rmonitor/Makefile,v
retrieving revision 1.6
diff -u -r1.6 Makefile
--- Makefile 20 Feb 2009 15:06:15 -0000 1.6
+++ Makefile 28 Jan 2010 10:46:39 -0000
@@ -7,7 +7,7 @@
PORTNAME= rmonitor
PORTVERSION= 1.2
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= sysutils
MASTER_SITES= ftp://gwdu111.gwdg.de/pub/FreeBSD/misc/ \
ftp://gwdu112.gwdg.de/pub/FreeBSD/misc/
@@ -20,4 +20,10 @@
#CFLAGS+= -w
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} >= 900007
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-utmpx
+.endif
+
+.include <bsd.port.post.mk>
Index: files/extra-patch-utmpx
===================================================================
RCS file: files/extra-patch-utmpx
diff -N files/extra-patch-utmpx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/extra-patch-utmpx 28 Jan 2010 10:46:39 -0000
@@ -0,0 +1,51 @@
+--- src/rmonitor.c
++++ src/rmonitor.c
+@@ -88,7 +88,7 @@
+ #include <sys/vmmeter.h>
+ #include <time.h>
+ #include <unistd.h>
+-#include <utmp.h>
++#include <utmpx.h>
+
+
+ #define DEFTOL 2.5 /* default tolerance */
+@@ -300,7 +300,7 @@
+ int memfre = 0;
+ int memtot = 0;
+ int memuse = 0;
+- int nu = -1;
++ int nu = 0;
+ int np = -1;
+ int openf = -1;
+ int pgcnt = 0;
+@@ -309,9 +309,8 @@
+ int pgsize = 0;
+ int slvl = 0;
+ int vn[3];
+- int utfd;
+ time_t ct;
+- struct utmp utmprec;
++ struct utmpx *utmprec;
+
+ union {
+ char buf[STRLEN];
+@@ -402,14 +401,12 @@
+
+ if (getloadavg(lavg, samples) != samples) errmsg("getloadavg");
+
+- if ((utfd = open(_PATH_UTMP, O_RDONLY)) >= 0) {
+- nu = 0;
+- while (read(utfd, &utmprec, sizeof utmprec) > 0)
+- if (*(utmprec.ut_name)) nu++;
+- if (close(utfd) < 0) errmsg("close");
++ setutxent();
++ while ((utmprec = getutxent()) != NULL) {
++ if (utmprec->ut_type == USER_PROCESS)
++ nu++;
+ }
+- else
+- errmsg("open");
++ endutxent();
+
+ #if __FreeBSD_version >= 420000
+ snprintf(stat, STRLEN,
>Release-Note:
>Audit-Trail:
>Unformatted:
>System: FreeBSD 9
More information about the freebsd-ports-bugs
mailing list