Date: Tue, 31 Jan 2012 09:33:55 GMT From: Denis Generalov <gd@rambler-co.ru> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/164660: utmpx fix Message-ID: <201201310933.q0V9Xth2099659@red.freebsd.org> Resent-Message-ID: <201201310940.q0V9eBIM091311@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201310933.q0V9Xth2099659>