aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils
diff options
context:
space:
mode:
authorcy <cy@FreeBSD.org>2012-05-02 11:20:35 +0800
committercy <cy@FreeBSD.org>2012-05-02 11:20:35 +0800
commitd60c48b890ee3dedf535d4fcc4a84dae7cfe9ddd (patch)
treed66e57a3978cbf3a3fc673c250fa493ff9938c79 /sysutils
parenteaf8442b96b87d536e85cba8b2a8bee74f85523b (diff)
downloadfreebsd-ports-gnome-d60c48b890ee3dedf535d4fcc4a84dae7cfe9ddd.tar.gz
freebsd-ports-gnome-d60c48b890ee3dedf535d4fcc4a84dae7cfe9ddd.tar.zst
freebsd-ports-gnome-d60c48b890ee3dedf535d4fcc4a84dae7cfe9ddd.zip
Fix utmpx related bug. Built w/o eror but failed to function.
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/doinkd/Makefile10
-rw-r--r--sysutils/doinkd/files/patch-doinkd.c132
-rw-r--r--sysutils/doinkd/files/patch-doinkd.h23
-rw-r--r--sysutils/doinkd/files/utmp-Makefile70
-rw-r--r--sysutils/doinkd/files/utmpx-Makefile70
-rw-r--r--sysutils/doinkd/files/utmpx-doinkd.c33
-rw-r--r--sysutils/doinkd/files/utmpx-doinkd.h10
7 files changed, 154 insertions, 194 deletions
diff --git a/sysutils/doinkd/Makefile b/sysutils/doinkd/Makefile
index 802845244682..2812b451c401 100644
--- a/sysutils/doinkd/Makefile
+++ b/sysutils/doinkd/Makefile
@@ -7,7 +7,7 @@
PORTNAME= doinkd
PORTVERSION= 0.01
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= sysutils
MASTER_SITES= SF/idled/${PORTNAME}/${PORTVERSION}/
@@ -25,14 +25,6 @@ PLIST_DIRSTRY= etc/doinkd
.include <bsd.port.pre.mk>
-.if ${OSVERSION} > 900006
-EXTRA_PATCHES= ${PATCHDIR}/utmpx-Makefile \
- ${PATCHDIR}/utmpx-doinkd.h \
- ${PATCHDIR}/utmpx-doinkd.c
-.else
-EXTRA_PATCHES= ${PATCHDIR}/utmp-Makefile
-.endif
-
post-extract:
(cd ${WRKSRC}; make clean)
diff --git a/sysutils/doinkd/files/patch-doinkd.c b/sysutils/doinkd/files/patch-doinkd.c
index 466a1bee2ed0..96321bf118eb 100644
--- a/sysutils/doinkd/files/patch-doinkd.c
+++ b/sysutils/doinkd/files/patch-doinkd.c
@@ -1,6 +1,134 @@
--- doinkd.c.orig 2006-05-30 00:17:44.000000000 -0700
-+++ doinkd.c 2012-01-04 12:28:11.183448967 -0800
-@@ -651,7 +651,7 @@
++++ doinkd.c 2012-05-01 20:13:50.992115867 -0700
+@@ -2,6 +2,7 @@
+ * Main doinkd routine contols everything.
+ */
+
++#include <sys/param.h>
+ #include <sys/types.h>
+
+ #include <signal.h>
+@@ -147,6 +148,7 @@
+ FILE *logfd;
+ #ifdef HAVE_UTMPX
+ struct utmpx utmpbuf;
++ struct utmpx *utmp_ptr;
+ #else
+ struct utmp utmpbuf;
+ #endif
+@@ -226,9 +228,11 @@
+ (void) signal (SIGQUIT, SIG_IGN);
+
+ /* Trap some error ones */
++#if 0
+ (void) signal (SIGILL, core_time);
+ (void) signal (SIGBUS, core_time);
+ (void) signal (SIGSEGV, core_time);
++#endif
+
+ #if defined(SIGTTOU) && defined(SIGTSTP)
+ (void) signal (SIGTTOU, SIG_IGN);
+@@ -285,11 +289,15 @@
+
+ (void) time (&tempus);
+
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++ setutxent();
++#else
+ if ((utmpfd = open (UTMP_FILE, O_RDONLY, 0)) == SYSERROR)
+ {
+ logfile ("%19.19s: Cannot open %s.",ctime(&tempus),UTMP_FILE);
+ exit (1);
+ }
++#endif
+
+ /* Set our nextcheck time to the max (sleeptime), though it may
+ * be lowered in the coming for loop so that an idle tty gets
+@@ -318,11 +326,15 @@
+ * examine him again.
+ */
+
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++ for (utmptr = 0, userptr = 0; utmp_ptr = getutxent();)
++#else
+ #ifdef HAVE_UTMPX
+ for (utmptr = 0, userptr = 0; (res = read (utmpfd, (char *) &utmpbuf, sizeof (struct utmpx))) > 0;)
+ #else
+ for (utmptr = 0, userptr = 0; (res = read (utmpfd, (char *) &utmpbuf, sizeof (struct utmp))) > 0;)
+ #endif
++#endif __FreeBSD_version
+ {
+ if (utmptr >= MAXUSERS)
+ {
+@@ -330,6 +342,9 @@
+ break;
+ }
+
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++ memcpy(&utmpbuf,utmp_ptr,sizeof(utmpbuf));
++#else
+ #ifdef HAVE_UTMPX
+ if (res != sizeof (struct utmpx))
+ #else
+@@ -339,6 +354,7 @@
+ logfile ("Error reading utmp file, continuing.");
+ break;
+ }
++#endif
+
+ (void) time (&tempus);
+
+@@ -347,24 +363,36 @@
+ if (strcmp(utmpbuf.ut_line,XDM_DEV) == 0)
+ {
+ /* This is the console. Is there a real name attached? */
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++ if (strlen(utmpbuf.ut_user) > 0)
++#else
+ if (strlen(utmpbuf.ut_name) > 0)
++#endif
+ isConsole = TRUE; /* Yes, use it */
+ else
+ strcpy(console_user,""); /* No, clear the console user */
+ }
+ #endif
+
+-#ifdef SYSV
++#if defined(SYSV) || (defined(__FreeBSD_version) && __FreeBSD_version >= 900007)
+ if (utmpbuf.ut_type == USER_PROCESS || isConsole)
+ #else /* SYSV */
+ if (utmpbuf.ut_name[0] != NULL || isConsole)
+ #endif /* SYSV */
+ {
+ user = &users[utmptr];
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++ (void) strncpy (tmpname, utmpbuf.ut_user, NAMELEN);
++#else
+ (void) strncpy (tmpname, utmpbuf.ut_name, NAMELEN);
++#endif
+ tmpname[NAMELEN] = 0;
+
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++ if (!strcmp (user->uid, tmpname) && user->time_on == utmpbuf.ut_tv.tv_sec)
++#else
+ if (!strcmp (user->uid, tmpname) && user->time_on == utmpbuf.ut_xtime)
++#endif
+ {
+ if (new)
+ setlimits (utmptr);
+@@ -414,7 +442,11 @@
+ logfile ("Error: could not get info on supposed user %s.",user->uid);
+ else
+ getgroups_func (pswd->pw_name, user->groups, pswd->pw_gid);
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++ user->time_on = utmpbuf.ut_tv.tv_sec;
++#else
+ user->time_on = utmpbuf.ut_xtime;
++#endif
+ setlimits (utmptr);
+ user->next = tempus;
+ chk_session_refuse(user);
+@@ -651,7 +683,7 @@
int grpcnt = 0;
int tgrpcnt = 0;
diff --git a/sysutils/doinkd/files/patch-doinkd.h b/sysutils/doinkd/files/patch-doinkd.h
new file mode 100644
index 000000000000..6e753fa71a0e
--- /dev/null
+++ b/sysutils/doinkd/files/patch-doinkd.h
@@ -0,0 +1,23 @@
+--- doinkd.h.orig 2006-05-29 23:52:32.000000000 -0700
++++ doinkd.h 2012-05-01 15:58:36.200762985 -0700
+@@ -1,11 +1,20 @@
+ #include <sys/types.h>
+ #include <stdio.h>
+ #include <sys/param.h>
++#if defined(__FreeBSD_version) && __FreeBSD_version >= 900007
++#define HAVE_UTMPX
++#else
+ #include <utmp.h>
++#endif
++
+
++#if defined(__FreeBSD_version) && __FreeBSD_version < 900007
+ #define qelem qelem_sys /* Work around to use our own qelem below */
++#endif
+ #include <stdlib.h>
++#if defined(__FreeBSD_version) && __FreeBSD_version < 900007
+ #undef qelem
++#endif
+
+ #ifdef HAVE_UTMPX
+ #include <utmpx.h>
diff --git a/sysutils/doinkd/files/utmp-Makefile b/sysutils/doinkd/files/utmp-Makefile
deleted file mode 100644
index e71bce0a8206..000000000000
--- a/sysutils/doinkd/files/utmp-Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
---- Makefile.orig 2006-05-30 00:19:28.000000000 -0700
-+++ Makefile 2010-08-27 12:42:08.661284827 -0700
-@@ -2,8 +2,8 @@
- #
-
- # C compiler flags
--CC = cc
--RM = rm
-+CC ?= cc
-+RM ?= rm
- INCLUDE =
-
- ######################################################################
-@@ -81,7 +81,7 @@
- ######################################################################
- # UnixWare 7 -- SVR5 MP
- #DEFS = -DSYSV -DHAVE_PROC_FS -DUTMPPID -DHAVE_SETSID -DHAVE_UTMPX -DUTMPHOST -DUNIXWARE
--DEFS = -DSYSV -DPS_HACK -DRUDE_KILL -DHAVE_SETSID -DHAVE_UTMPX -DUTMPHOST -DUNIXWARE
-+DEFS = -DPS_HACK -DRUDE_KILL -DHAVE_SETSID -DUTMPHOST
- SPECLIBS =
- INSTTYPE = install4
-
-@@ -193,26 +193,26 @@
- # You will need to delete parse.c before compiling! You can either
- # do so by hand, or do a 'make clean' followed by the normal 'make'.
- #DEFS += -O -m486
--#DEFS += -DBSD_OS2 -DHAVE_SETSID -DHAVE_YYRESTART -DPS_HACK
-+DEFS += -DBSD_OS2 -DHAVE_SETSID -DHAVE_YYRESTART -DPS_HACK
- #DEFS += -DPROC_SEARCH_1
- #SPECLIBS = -lkvm
--#INSTTYPE = install1a
-+INSTTYPE = install1a
- #
--#DEST = /usr/local/sbin
--#CFDEST = /etc/doinkd
--#MDEST = /usr/local/man
--#LOGDEST = /var/log
-+DEST = ${PREFIX}/sbin
-+CFDEST = ${PREFIX}/etc/doinkd
-+MDEST = ${PREFIX}/man
-+LOGDEST = /var/log
- #
- #OWNER = root
- #CFOWNER = root
--#MOWNER = man
-+MOWNER = man
- #
--#GROUP = daemon
--#CFGROUP = daemon
-+GROUP = daemon
-+CFGROUP = daemon
- #
--#MODE = 750
--#CFMODE = 664
--#MMODE = 444
-+MODE = 750
-+CFMODE = 664
-+MMODE = 444
-
- ######################################################################
- ######################################################################
-@@ -456,7 +452,7 @@
- # HERE are the big CFLAGS
- # Add -g if you want debugging
- # Add -O or whatever variant for optimization
--CFLAGS = ${DEFS} ${DEBUG} -DCONFIG=\"${CONFIG}\" -DLOGFILE=\"${LOGFILE}\" ${INCLUDE}
-+CFLAGS+= ${DEFS} ${DEBUG} -DCONFIG=\"${CONFIG}\" -DLOGFILE=\"${LOGFILE}\" ${INCLUDE}
-
- # For HP's ANSI C compiler (use -g instead of +O3 for debugging)
- # CFLAGS = +O3 -Aa -D_HPUX_SOURCE ${DEFS} ${DEBUG} -DCONFIG=\"${CONFIG}\" -DLOGFILE=\"${LOGFILE}\" ${INCLUDE}
diff --git a/sysutils/doinkd/files/utmpx-Makefile b/sysutils/doinkd/files/utmpx-Makefile
deleted file mode 100644
index 2b9aa325be0c..000000000000
--- a/sysutils/doinkd/files/utmpx-Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
---- Makefile.orig 2006-05-30 00:19:28.000000000 -0700
-+++ Makefile 2010-11-01 16:40:53.000000000 -0800
-@@ -2,8 +2,8 @@
- #
-
- # C compiler flags
--CC = cc
--RM = rm
-+CC ?= cc
-+RM ?= rm
- INCLUDE =
-
- ######################################################################
-@@ -81,7 +81,7 @@
- ######################################################################
- # UnixWare 7 -- SVR5 MP
- #DEFS = -DSYSV -DHAVE_PROC_FS -DUTMPPID -DHAVE_SETSID -DHAVE_UTMPX -DUTMPHOST -DUNIXWARE
--DEFS = -DSYSV -DPS_HACK -DRUDE_KILL -DHAVE_SETSID -DHAVE_UTMPX -DUTMPHOST -DUNIXWARE
-+DEFS = -DPS_HACK -DRUDE_KILL -DHAVE_SETSID -DHAVE_UTMPX -DUTMPHOST
- SPECLIBS =
- INSTTYPE = install4
-
-@@ -193,26 +193,26 @@
- # You will need to delete parse.c before compiling! You can either
- # do so by hand, or do a 'make clean' followed by the normal 'make'.
- #DEFS += -O -m486
--#DEFS += -DBSD_OS2 -DHAVE_SETSID -DHAVE_YYRESTART -DPS_HACK
-+DEFS += -DBSD_OS2 -DHAVE_SETSID -DHAVE_YYRESTART -DPS_HACK
- #DEFS += -DPROC_SEARCH_1
- #SPECLIBS = -lkvm
--#INSTTYPE = install1a
-+INSTTYPE = install1a
- #
--#DEST = /usr/local/sbin
--#CFDEST = /etc/doinkd
--#MDEST = /usr/local/man
--#LOGDEST = /var/log
-+DEST = ${PREFIX}/sbin
-+CFDEST = ${PREFIX}/etc/doinkd
-+MDEST = ${PREFIX}/man
-+LOGDEST = /var/log
- #
- #OWNER = root
- #CFOWNER = root
--#MOWNER = man
-+MOWNER = man
- #
--#GROUP = daemon
--#CFGROUP = daemon
-+GROUP = daemon
-+CFGROUP = daemon
- #
--#MODE = 750
--#CFMODE = 664
--#MMODE = 444
-+MODE = 750
-+CFMODE = 664
-+MMODE = 444
-
- ######################################################################
- ######################################################################
-@@ -456,7 +456,7 @@
- # HERE are the big CFLAGS
- # Add -g if you want debugging
- # Add -O or whatever variant for optimization
--CFLAGS = ${DEFS} ${DEBUG} -DCONFIG=\"${CONFIG}\" -DLOGFILE=\"${LOGFILE}\" ${INCLUDE}
-+CFLAGS = ${DEFS} ${DEBUG} -DCONFIG=\"${CONFIG}\" -DLOGFILE=\"${LOGFILE}\" ${INCLUDE} -DHAVE_UTMPX -DSYSV
-
- # For HP's ANSI C compiler (use -g instead of +O3 for debugging)
- # CFLAGS = +O3 -Aa -D_HPUX_SOURCE ${DEFS} ${DEBUG} -DCONFIG=\"${CONFIG}\" -DLOGFILE=\"${LOGFILE}\" ${INCLUDE}
diff --git a/sysutils/doinkd/files/utmpx-doinkd.c b/sysutils/doinkd/files/utmpx-doinkd.c
deleted file mode 100644
index 74bada860308..000000000000
--- a/sysutils/doinkd/files/utmpx-doinkd.c
+++ /dev/null
@@ -1,33 +0,0 @@
---- doinkd.c.orig 2010-01-25 16:06:48.000000000 -0800
-+++ doinkd.c 2010-01-25 16:09:39.000000000 -0800
-@@ -335,7 +335,7 @@
- if (strcmp(utmpbuf.ut_line,XDM_DEV) == 0)
- {
- /* This is the console. Is there a real name attached? */
-- if (strlen(utmpbuf.ut_name) > 0)
-+ if (strlen(utmpbuf.ut_user) > 0)
- isConsole = TRUE; /* Yes, use it */
- else
- strcpy(console_user,""); /* No, clear the console user */
-@@ -349,10 +349,10 @@
- #endif /* SYSV */
- {
- user = &users[utmptr];
-- (void) strncpy (tmpname, utmpbuf.ut_name, NAMELEN);
-+ (void) strncpy (tmpname, utmpbuf.ut_user, NAMELEN);
- tmpname[NAMELEN] = 0;
-
-- if (!strcmp (user->uid, tmpname) && user->time_on == utmpbuf.ut_xtime)
-+ if (!strcmp (user->uid, tmpname) && user->time_on == utmpbuf.ut_tv.tv_sec)
- {
- if (new)
- setlimits (utmptr);
-@@ -402,7 +402,7 @@
- logfile ("Error: could not get info on supposed user %s.",user->uid);
- else
- getgroups_func (pswd->pw_name, user->groups, pswd->pw_gid);
-- user->time_on = utmpbuf.ut_xtime;
-+ user->time_on = utmpbuf.ut_tv.tv_sec;
- setlimits (utmptr);
- user->next = tempus;
- chk_session_refuse(user);
diff --git a/sysutils/doinkd/files/utmpx-doinkd.h b/sysutils/doinkd/files/utmpx-doinkd.h
deleted file mode 100644
index 9a3a2d88efa6..000000000000
--- a/sysutils/doinkd/files/utmpx-doinkd.h
+++ /dev/null
@@ -1,10 +0,0 @@
---- doinkd.h.orig 2010-01-25 16:07:42.000000000 -0800
-+++ doinkd.h 2010-01-25 16:07:50.000000000 -0800
-@@ -1,7 +1,6 @@
- #include <sys/types.h>
- #include <stdio.h>
- #include <sys/param.h>
--#include <utmp.h>
-
- #define qelem qelem_sys /* Work around to use our own qelem below */
- #include <stdlib.h>