ports/164660: utmpx fix
GD
gd at powernet.ru
Tue Jan 31 10:40:09 UTC 2012
The following reply was made to PR ports/164660; it has been noted by GNATS.
From: GD <gd at powernet.ru>
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: ports/164660: utmpx fix
Date: Tue, 31 Jan 2012 14:07:08 +0400
This is a multi-part message in MIME format.
--Multipart=_Tue__31_Jan_2012_14_07_08_+0400_SYTPXBou675id2do
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sorry, this patch break su2 for FreeBSD versions before 8.0
I attach new patch.
On Tue, 31 Jan 2012 09:33:55 GMT
Denis Generalov <gd at rambler-co.ru> wrote:
>
> >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:
> _______________________________________________
> freebsd-ports-bugs at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ports-bugs
> To unsubscribe, send any mail to "freebsd-ports-bugs-unsubscribe at freebsd.org"
--
GD <gd at powernet.ru>
--Multipart=_Tue__31_Jan_2012_14_07_08_+0400_SYTPXBou675id2do
Content-Type: text/plain;
name="patch.txt"
Content-Disposition: attachment;
filename="patch.txt"
Content-Transfer-Encoding: 7bit
===> Generating patch
===> Viewing diff with more
diff -ruN --exclude=CVS /usr/ports/sysutils/su2/Makefile /tmp/gd/su2/Makefile
--- /usr/ports/sysutils/su2/Makefile 2012-01-31 13:59:33.000000000 +0400
+++ /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 14:02:53.000000000 +0400
@@ -0,0 +1,72 @@
+--- su2.c.orig 2012-01-31 13:59:38.000000000 +0400
++++ su2.c 2012-01-31 14:02:28.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,11 @@
+ if (FullTTY == (char *) 0)
+ FullTTY = "/dev/TTY??";
+
++#if defined(__FreeBSD_version) && __FreeBSD_version > 800007
++ TTY = strchr (FullTTY + 1, '/') + 1;
++#else
+ TTY = strrchr (FullTTY, '/') + 1;
++#endif
+
+ Debug (1, "-> FullTTY=\"%s\"\n", FullTTY);
+ Debug (1, "-> TTY=\"%s\"\n", TTY);
+@@ -1315,7 +1324,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 +1445,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 +1513,7 @@
+
+ (void) write (fd, (char *) & Utmp, sizeof (Utmp));
+ (void) close (fd);
++#endif
+ return (0);
+ }
+
===> Done
--Multipart=_Tue__31_Jan_2012_14_07_08_+0400_SYTPXBou675id2do--
More information about the freebsd-ports-bugs
mailing list