ports/164660: utmpx fix

Denis Generalov gd at rambler-co.ru
Tue Jan 31 09:40:11 UTC 2012


>Number:         164660
>Category:       ports
>Synopsis:       utmpx fix
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jan 31 09:40:11 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Denis Generalov
>Release:        9.0-STABLE
>Organization:
Rambler
>Environment:
FreeBSD tyl2.park.rambler.ru 9.0-STABLE FreeBSD 9.0-STABLE #0: Sat Jan 14 02:35:27 MSK 2012     root at tyl2.park.rambler.ru:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
port marked as broken due to changes in accounting system
>How-To-Repeat:
su2 -r or su2 -s
>Fix:


Patch attached with submission follows:

===> Generating patch
===> Viewing diff with more
diff -ruN --exclude=CVS /usr/ports/sysutils/su2/Makefile /tmp/gd/su2/Makefile
--- /usr/ports/sysutils/su2/Makefile	2010-03-20 17:31:50.000000000 +0300
+++ /tmp/gd/su2/Makefile	2012-01-31 00:59:18.000000000 +0400
@@ -7,23 +7,20 @@
 
 PORTNAME=	su2
 PORTVERSION=	1.3
+PORTREVISION=	1
 CATEGORIES=	sysutils security
 MASTER_SITES=	ftp://ftp.ccs.neu.edu/pub/sysadmin/
 
 MAINTAINER=	ports at FreeBSD.org
 COMMENT=	An enhanced su, allows users to su with own password + more
 
-NO_CDROM=	"Don't sell for profit"
+NO_CDROM=	Don't sell for profit
 
 MAN1=		su2.1
 PLIST_FILES=	bin/su2
 
 .include <bsd.port.pre.mk>
 
-.if ${OSVERSION} > 900007
-BROKEN=		fails to build with new utmpx
-.endif
-
 post-patch:
 	${REINPLACE_CMD} -e 's,/etc/super,${PREFIX}/etc/super,g' ${WRKSRC}/su2.man
 
diff -ruN --exclude=CVS /usr/ports/sysutils/su2/files/patch-ad /tmp/gd/su2/files/patch-ad
--- /usr/ports/sysutils/su2/files/patch-ad	1970-01-01 03:00:00.000000000 +0300
+++ /tmp/gd/su2/files/patch-ad	2012-01-31 01:59:00.000000000 +0400
@@ -0,0 +1,69 @@
+--- su2.c.orig	2012-01-31 01:37:47.000000000 +0400
++++ su2.c	2012-01-31 01:39:14.000000000 +0400
+@@ -151,7 +151,12 @@
+ #include <fcntl.h>
+ #include <stdio.h>
+ #include <time.h>
++#include <osreldate.h>
++#if defined(__FreeBSD_version) && __FreeBSD_version > 900007
++#include <utmpx.h>
++#else
+ #include <utmp.h>
++#endif
+ #include <signal.h>
+ #ifdef IOCTL
+ #include <sys/ioctl.h>
+@@ -383,7 +388,7 @@
+     if (FullTTY == (char *) 0)
+ 	FullTTY = "/dev/TTY??";
+ 
+-    TTY = strrchr (FullTTY, '/') + 1;
++    TTY = strchr (FullTTY + 1, '/') + 1;
+ 
+     Debug (1, "-> FullTTY=\"%s\"\n", FullTTY);
+     Debug (1, "-> TTY=\"%s\"\n", TTY);
+@@ -1315,7 +1320,11 @@
+  *	Copies name into an internal static buffer.
+  */
+ 
++#if defined(__FreeBSD_version) && __FreeBSD_version > 900007
++#define MAXNAME sizeof(((struct utmpx *)nptr)->ut_user)
++#else
+ #define MAXNAME sizeof(((struct utmp *)nptr)->ut_name)
++#endif
+ 
+ #ifdef BROKENCUSERID
+ char *mycuserid ()
+@@ -1432,6 +1441,24 @@
+ ModifyUtmp (NewUserName)
+ register char  *NewUserName;
+ {
++#if defined(__FreeBSD_version) && __FreeBSD_version > 900007
++    struct utmpx ut, *utr;
++
++    strncpy(ut.ut_line, TTY, sizeof(ut.ut_line));
++    setutxent();
++    if ((utr = getutxline(&ut)) == NULL) {
++        endutxent();
++        (void) fprintf (stderr, "Terminal %s not found\n", ut.ut_line);
++        return (1);
++    }
++    strncpy(utr->ut_user, NewUserName, sizeof(utr->ut_user));
++    if (pututxline(utr) == NULL) {
++        endutxent();
++        (void) fprintf (stderr, "pututxline failed\n");
++        return (1);
++    }
++    endutxent();
++#else
+     register int    fd;		/* /etc/utmp file */
+     register int    i;		/* index */
+ #ifdef hpux
+@@ -1482,6 +1509,7 @@
+ 
+     (void) write (fd, (char *) & Utmp, sizeof (Utmp));
+     (void) close (fd);
++#endif
+     return (0);
+ }
+ 
===> Done


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list