Skip site navigation (1)Skip section navigation (2)
Date:      Sat,  6 Nov 1999 01:35:12 -0800 (PST)
From:      tkato@prontomail.ne.jp
To:        freebsd-gnats-submit@freebsd.org
Subject:   ports/14740: Update port: x11/wdm to 1.19
Message-ID:  <19991106093512.79D9C14CAE@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         14740
>Category:       ports
>Synopsis:       Update port: x11/wdm to 1.19
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Nov  6 01:40:01 PST 1999
>Closed-Date:
>Last-Modified:
>Originator:     KATO Tsuguru
>Release:        3.3-RELEASE i386
>Organization:
>Environment:
>Description:
* Updated version 1.0 to 1.19
* Fixed MASTER_SITES
* Added WWW: line into pkg/DESCR

New file:
patches/patch-aa  patches/patch-ac  patches/patch-ae

Remoce file:
patches/patch-af  patches/patch-ag  patches/patches-ah  patches/patch-ai

NOTE:
ports/14366 should be closed, since CSRG_BASED is defined at CPPFLAGS 
line of Makefile.

>How-To-Repeat:

>Fix:
diff -urN /usr/ports/x11/wdm/Makefile x11/wdm/Makefile
--- /usr/ports/x11/wdm/Makefile	Thu Oct  7 21:08:38 1999
+++ x11/wdm/Makefile	Sat Nov  6 14:33:35 1999
@@ -1,15 +1,14 @@
 # New ports collection makefile for:	wdm
-# Version required:	1.0
+# Version required:	1.19
 # Date created:		August 31, 1998
 # Whom:			Thomas Gellekum <tg@FreeBSD.org>
 #
 # $FreeBSD: ports/x11/wdm/Makefile,v 1.29 1999/10/07 03:58:28 cpiazza Exp $
 
-DISTNAME=	wdm-1.0
+DISTNAME=	wdm-1.19
 CATEGORIES=	x11 windowmaker
-MASTER_SITES=	${MASTER_SITE_WINDOWMAKER} \
+MASTER_SITES=	http://cortex.unice.fr/~jerome/WindowMaker/wdm/ \
 		http://www.de.freebsd.org/de/gif/bsd/
-MASTER_SITE_SUBDIR=	contrib/srcs/utils
 DISTFILES=	${DISTNAME}${EXTRACT_SUFX} ${DAEMONPIC}
 
 MAINTAINER=	ports@FreeBSD.org
@@ -21,29 +20,32 @@
 		tiff.4:${PORTSDIR}/graphics/tiff \
 		wraster.3:${PORTSDIR}/x11-wm/windowmaker \
 		PropList.2:${PORTSDIR}/devel/libPropList
+BUILD_DEPENDS=	automake:${PORTSDIR}/devel/automake
 
 EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}
 DIST_SUBDIR=	wdm
 USE_X_PREFIX=	yes
-GNU_CONFIGURE=	yes
-CONFIGURE_ENV=	CFLAGS="${CFLAGS} -DHAS_SETUSERCONTEXT"
-CONFIGURE_ARGS=	--with-gfx-libs="-L${LOCALBASE}/lib -lgif -lpng -ltiff -lXpm" \
-		--with-gfx-incs="-I${LOCALBASE}/include" \
-		--with-tiff-libs="-ljpeg" \
-		--with-logdir=/var/log \
+USE_AUTOCONF=	yes
+CONFIGURE_ENV=	CPPFLAGS='-I${LOCALBASE}/include \
+			-DCSRG_BASED -DHAS_SETUSERCONTEXT' \
+		LIBS='-L${LOCALBASE}/lib'
+CONFIGURE_ARGS=	--with-logdir=/var/log \
 		--with-runlockdir=/var/run \
 		--with-wdmdir=${PREFIX}/lib/X11/wdm \
 		--with-Logo=Earth200x130.xpm \
 		--with-defuserpath=/bin:/usr/bin:/sbin:/usr/sbin:${X11BASE}/bin:${LOCALBASE}/bin \
 		--with-defsystempath=/bin:/usr/bin:/sbin:/usr/sbin:${X11BASE}/bin \
-		--with-wmlist=wmaker:afterstep:ctwm:enlightenment:fvwm:fvwm2:fvwm95:olvwm:qvwm:tvtwm
+		--with-wmlist=wmaker:afterstep:blackbox:ctwm:enlightenment:fvwm:fvwm2:fvwm95:olvwm:qvwm:tvtwm
 
 MAN1=	wdm.1 wdmLogin.1
 
 DAEMONPIC=	daemon1-HQ-1280x960.jpg
 
-post-extract:
-	@(cd ${WRKSRC}; ${TAR} xzf xdm-332.tar.gz)
+post-patch:
+	@${PERL} -pi -e 's|%%X11BASE%%|${X11BASE}|g' ${WRKSRC}/doc/*.man
+
+pre-configure:
+	@(cd ${WRKSRC}; automake -a --include-deps)
 
 post-install:
 	${INSTALL_DATA} ${_DISTDIR}/${DAEMONPIC} ${PREFIX}/lib/X11/wdm/pixmaps
diff -urN /usr/ports/x11/wdm/files/md5 x11/wdm/files/md5
--- /usr/ports/x11/wdm/files/md5	Wed Sep 23 10:34:00 1998
+++ x11/wdm/files/md5	Sat Nov  6 14:20:03 1999
@@ -1,2 +1,2 @@
-MD5 (wdm/wdm-1.0.tar.gz) = 0c128c2e0035fe4a2dd991ce97594237
+MD5 (wdm/wdm-1.19.tar.gz) = eacbfec965f2ccf1840ad457cb04a67e
 MD5 (wdm/daemon1-HQ-1280x960.jpg) = b38f175cf6b7167484afac423837ed1a
diff -urN /usr/ports/x11/wdm/patches/patch-aa x11/wdm/patches/patch-aa
--- /usr/ports/x11/wdm/patches/patch-aa	Wed Nov 25 11:18:00 1998
+++ x11/wdm/patches/patch-aa	Thu Jan  1 09:00:00 1970
@@ -1,20 +0,0 @@
---- configure.orig	Sun Sep 13 17:41:26 1998
-+++ configure	Sat Sep 26 02:41:44 1998
-@@ -2784,7 +2784,7 @@
- 
- XLFLAGS="$X_LIBS"
- 
--XLIBS="$X_EXTRA_LIBS -lXext -lXt -lX11 -lm"
-+XLIBS="$X_PRE_LIBS $X_EXTRA_LIBS -lXext -lXt -lX11 -lm"
- 
- XDM_EXTRA_LIBS="-lXmu -lXau -lXdmcp"
- 
-@@ -3587,7 +3587,7 @@
- EOF
- 
- cat >> confdefs.h <<EOF
--#define DEF_AUTH_DIR "$DMDIR/authdir"
-+#define DEF_AUTH_DIR "$DMDIR"
- EOF
- 
- 
diff -urN /usr/ports/x11/wdm/patches/patch-ab x11/wdm/patches/patch-ab
--- /usr/ports/x11/wdm/patches/patch-ab	Fri Sep 11 10:25:00 1998
+++ x11/wdm/patches/patch-ab	Sat Nov  6 14:20:04 1999
@@ -1,16 +1,16 @@
---- src/config/wdm-config.in.orig	Sun Aug 30 17:15:53 1998
-+++ src/config/wdm-config.in	Fri Sep 11 09:22:53 1998
-@@ -25,11 +25,12 @@
+--- src/config/wdm-config.in.orig	Thu Sep 16 16:27:58 1999
++++ src/config/wdm-config.in	Sat Oct 30 12:41:26 1999
+@@ -25,11 +25,11 @@
  ! display screen background--if not set or set to none, then the
  !                            background is not set by wdm.
- ! DisplayManager*wdmBg:		none
--DisplayManager*wdmBg:		solid:RoyalBlue
-+! DisplayManager*wdmBg:		solid:RoyalBlue
- ! DisplayManager*wdmBg:		dgradient:RoyalBlue,FireBrick,Black
- ! DisplayManager*wdmBg:		hgradient:RoyalBlue,FireBrick,Black
- ! DisplayManager*wdmBg:		vgradient:RoyalBlue,FireBrick,Black
- ! DisplayManager*wdmBg:		pixmap:#configdir#/pixmaps/Stars.jpg
-+DisplayManager*wdmBg:		pixmap:#configdir#/pixmaps/daemon1-HQ-1280x960.jpg
+ ! DisplayManager*wdmBg:         none
+-DisplayManager*wdmBg:           solid:RoyalBlue
++! DisplayManager*wdmBg:         solid:RoyalBlue
+ ! DisplayManager*wdmBg:         dgradient:RoyalBlue,FireBrick,Black
+ ! DisplayManager*wdmBg:         hgradient:RoyalBlue,FireBrick,Black
+ ! DisplayManager*wdmBg:         vgradient:RoyalBlue,FireBrick,Black
+-! DisplayManager*wdmBg:         pixmap:#configdir#/pixmaps/Stars.jpg
++DisplayManager*wdmBg:           pixmap:#configdir#/pixmaps/daemon1-HQ-1280x960.jpg
  !
  ! optional pixmap for logo
- #pixmapcomment#DisplayManager*wdmLogo: 	#configdir#/pixmaps/#pixmapfile#
+ #pixmapcomment#DisplayManager*wdmLogo:  #configdir#/pixmaps/#pixmapfile#
diff -urN /usr/ports/x11/wdm/patches/patch-ac x11/wdm/patches/patch-ac
--- /usr/ports/x11/wdm/patches/patch-ac	Fri Jun  4 21:11:35 1999
+++ x11/wdm/patches/patch-ac	Thu Jan  1 09:00:00 1970
@@ -1,29 +0,0 @@
---- src/Login.c.orig	Sun Sep  6 22:50:31 1998
-+++ src/Login.c	Fri Jun  4 09:42:45 1999
-@@ -985,7 +985,7 @@
- static void setBG()
- {
-     Window root_window;
--    int cpc=4, render_mode = RM_MATCH, default_depth=8;
-+    int cpc=4, render_mode = RBestMatchRendering, default_depth=8;
-     RContextAttributes rattr;
-     RContext *rcontext;
-     RImage *image;
-@@ -1002,7 +1002,7 @@
-     root_window = RootWindow(dpy, screen_number);
-     default_depth = DefaultDepth(dpy, screen_number);
-     if (default_depth<=8)
--	render_mode = RM_DITHER;
-+	render_mode = RDitheredRendering;
-     rattr.flags = RC_RenderMode | RC_ColorsPerChannel;
-     rattr.render_mode = render_mode;
-     rattr.colors_per_channel = cpc;
-@@ -1010,7 +1010,7 @@
-     if (rcontext==NULL) {
- 	fprintf(stderr, 
- 	   "%s could not initialize graphics library context: %s\n",
--	   ProgName, RErrorString);
-+	   ProgName, RMessageForError(RErrorCode));
- 	return;
-     }
-     
diff -urN /usr/ports/x11/wdm/patches/patch-ad x11/wdm/patches/patch-ad
--- /usr/ports/x11/wdm/patches/patch-ad	Sat May 22 12:54:35 1999
+++ x11/wdm/patches/patch-ad	Sat Nov  6 14:20:04 1999
@@ -5,7 +5,7 @@
  scaled to use the full screen.
  .SH FILES
 -\fBwdmLogin\fP can be customized by modifying \fI/etc/X11/wdm/wdm-config\fP.
-+\fBwdmLogin\fP can be customized by modifying \fI/usr/X11R6/lib/X11/wdm/wdm-config\fP.
++\fBwdmLogin\fP can be customized by modifying \fI%%X11BASE%%/lib/X11/wdm/wdm-config\fP.
  .SH SEE ALSO
  .BR wdm (1x)
  .SH AUTHOR
diff -urN /usr/ports/x11/wdm/patches/patch-ae x11/wdm/patches/patch-ae
--- /usr/ports/x11/wdm/patches/patch-ae	Tue Oct  5 19:20:30 1999
+++ x11/wdm/patches/patch-ae	Thu Jan  1 09:00:00 1970
@@ -1,184 +0,0 @@
---- xdm/session.c.orig	Mon Mar  2 20:56:36 1998
-+++ xdm/session.c	Sun Oct  3 05:18:56 1999
-@@ -487,6 +487,149 @@
-     exit (status);
- }
- 
-+#ifdef HAS_SETUSERCONTEXT
-+/*
-+ * copied from
-+ * $FreeBSD: ports/x11/wdm/patches/patch-ae,v 1.1 1999/10/05 10:20:30 tg Exp $
-+ */
-+
-+#undef	UNKNOWN
-+#define	UNKNOWN	"su"
-+
-+static struct login_vars {
-+    const char *tag;
-+    const char *var;
-+    const char *def;
-+} pathvars[] = {
-+    { "path",		"PATH",	      NULL    },
-+    { "cdpath",		"CDPATH",     NULL    },
-+    { "manpath",	"MANPATH",    NULL    },
-+    { NULL,		NULL,	      NULL    }
-+}, envars[] = {
-+    { "lang",		"LANG",	      NULL    },
-+    { "charset",	"MM_CHARSET", NULL    },
-+    { "timezone",	"TZ",	      NULL    },
-+    { "term",		"TERM",       UNKNOWN },
-+    { NULL,		NULL,	      NULL    }
-+};
-+
-+static char *
-+substvar(char * var, const struct passwd * pwd, int hlen, int pch, int nlen)
-+{
-+    char    *np = NULL;
-+
-+    if (var != NULL) {
-+	int	tildes = 0;
-+	int	dollas = 0;
-+	char	*p;
-+
-+	if (pwd != NULL) {
-+	    /* Count the number of ~'s in var to substitute */
-+	    p = var;
-+	    for (p = var; (p = strchr(p, '~')) != NULL; p++)
-+		++tildes;
-+	    /* Count the number of $'s in var to substitute */
-+	    p = var;
-+	    for (p = var; (p = strchr(p, '$')) != NULL; p++)
-+		++dollas;
-+	}
-+
-+	np = malloc(strlen(var) + (dollas * nlen)
-+		    - dollas + (tildes * (pch+hlen))
-+		    - tildes + 1);
-+
-+	if (np != NULL) {
-+	    p = strcpy(np, var);
-+
-+	    if (pwd != NULL) {
-+		/*
-+		 * This loop does user username and homedir substitutions
-+		 * for unescaped $ (username) and ~ (homedir)
-+		 */
-+		while (*(p += strcspn(p, "~$")) != '\0') {
-+		    int	l = strlen(p);
-+
-+		    if (p > np && *(p-1) == '\\')  /* Escaped: */
-+			memmove(p - 1, p, l + 1); /* Slide-out the backslash */
-+		    else if (*p == '~') {
-+			int	v = pch && *(p+1) != '/'; /* Avoid double // */
-+			memmove(p + hlen + v, p + 1, l);  /* Subst homedir */
-+			memmove(p, pwd->pw_dir, hlen);
-+			if (v)
-+			    p[hlen] = '/';
-+			p += hlen + v;
-+		    }
-+		    else /* if (*p == '$') */ {
-+			memmove(p + nlen, p + 1, l);	/* Subst username */
-+			memmove(p, pwd->pw_name, nlen);
-+			p += nlen;
-+		    }
-+		}
-+	    }
-+	}
-+    }
-+
-+    return np;
-+}
-+
-+
-+void
-+setclassEnvironment(login_cap_t *lc, const struct passwd * pwd, int paths,
-+		    struct verify_info *verify)
-+{
-+    char *getEnv ();
-+    struct login_vars	*vars = paths ? pathvars : envars;
-+    int			hlen = pwd ? strlen(pwd->pw_dir) : 0;
-+    int			nlen = pwd ? strlen(pwd->pw_name) : 0;
-+    char pch = 0;
-+
-+    if (hlen && pwd->pw_dir[hlen-1] != '/')
-+	++pch;
-+
-+    while (vars->tag != NULL) {
-+	char * var = paths ? login_getpath(lc, vars->tag, NULL)
-+	    		   : login_getcapstr(lc, vars->tag, NULL, NULL);
-+
-+	char * np  = substvar(var, pwd, hlen, pch, nlen);
-+
-+	if (np != NULL) {
-+	    verify->userEnviron = setEnv(verify->userEnviron, vars->var, np);
-+	    free(np);
-+	} else if (vars->def != NULL) {
-+	    if (getEnv(verify->userEnviron, vars->var) == NULL)
-+		setEnv(verify->userEnviron, vars->var, vars->def);
-+	}
-+	++vars;
-+    }
-+
-+    /*
-+     * If we're not processing paths, then see if there is a setenv list by
-+     * which the admin and/or user may set an arbitrary set of env vars.
-+     */
-+    if (!paths) {
-+	char	**set_env = login_getcaplist(lc, "setenv", ",");
-+
-+	if (set_env != NULL) {
-+	    while (*set_env != NULL) {
-+		char	*p = strchr(*set_env, '=');
-+
-+		if (p != NULL) {  /* Discard invalid entries */
-+		    char	*np;
-+
-+		    *p++ = '\0';
-+		    if ((np = substvar(p, pwd, hlen, pch, nlen)) != NULL) {
-+	    	        verify->userEnviron = setEnv(verify->userEnviron,
-+						     *set_env, np);
-+			free(np);
-+		    }
-+		}
-+		++set_env;
-+	    }
-+	}
-+    }
-+}
-+#endif
-+
- static Bool
- StartClient (verify, d, pidp, name, passwd)
-     struct verify_info	*verify;
-@@ -559,12 +702,26 @@
- 	pwd = getpwnam(name);
- 	if (pwd)
- 	{
--	    if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0)
--	    {
--		LogError("setusercontext for \"%s\" failed, errno=%d\n", name,
--			 errno);
--		return(0);
-+    	    login_cap_t *lc;
-+	
-+	    lc = login_getpwclass(pwd);
-+	    if (setusercontext(lc, pwd, pwd->pw_uid,
-+		LOGIN_SETALL & ~(LOGIN_SETPATH | LOGIN_SETENV)) < 0) {
-+		    LogError("setusercontext for \"%s\" failed, errno=%d\n",
-+			     name, errno);
-+		    login_close(lc);
-+		    return(0);
-+	    }
-+	    setclassEnvironment(lc, pwd, 1, verify);
-+	    setclassEnvironment(lc, pwd, 0, verify);
-+	    login_close(lc);
-+
-+	    if ((lc = login_getuserclass(pwd)) != NULL) {
-+	        setclassEnvironment(lc, pwd, 1, verify);
-+	        setclassEnvironment(lc, pwd, 0, verify);
-+		login_close(lc);
- 	    }
-+
- 	    endpwent();
- 	}
- 	else
diff -urN /usr/ports/x11/wdm/patches/patch-af x11/wdm/patches/patch-af
--- /usr/ports/x11/wdm/patches/patch-af	Thu Jan  1 09:00:00 1970
+++ x11/wdm/patches/patch-af	Sat Nov  6 14:20:04 1999
@@ -0,0 +1,11 @@
+--- aclocal.m4.orig	Thu Sep 16 16:56:32 1999
++++ aclocal.m4	Sun Oct 31 23:41:54 1999
+@@ -20,7 +20,7 @@
+ dnl AM_INIT_AUTOMAKE(package,version, [no-define])
+ 
+ AC_DEFUN(AM_INIT_AUTOMAKE,
+-[AC_REQUIRE([AM_PROG_INSTALL])
++[AC_REQUIRE([AC_PROG_INSTALL])
+ PACKAGE=[$1]
+ AC_SUBST(PACKAGE)
+ VERSION=[$2]
diff -urN /usr/ports/x11/wdm/patches/patch-ag x11/wdm/patches/patch-ag
--- /usr/ports/x11/wdm/patches/patch-ag	Thu Jan  1 09:00:00 1970
+++ x11/wdm/patches/patch-ag	Sat Nov  6 14:20:04 1999
@@ -0,0 +1,20 @@
+--- configure.in.orig	Tue Sep 21 23:16:21 1999
++++ configure.in	Mon Nov  1 05:26:32 1999
+@@ -183,7 +183,7 @@
+ 
+ XLFLAGS="$X_LIBS"
+ 
+-XLIBS="$X_EXTRA_LIBS -lXext -lXt -lX11 -lm"
++XLIBS="$X_PRE_LIBS $X_EXTRA_LIBS -lXext -lXt -lX11 -lm"
+ 
+ XDM_EXTRA_LIBS="-lXmu -lXau -lXdmcp"
+ 
+@@ -504,7 +504,7 @@
+ AC_DEFINE_UNQUOTED(WDMDIR,"$DMDIR")
+ AC_DEFINE_UNQUOTED(DEF_XDM_CONFIG,"$DMDIR/wdm-config")
+ AC_DEFINE_UNQUOTED(DEF_CHOOSER,"$DMDIR/chooser")
+-AC_DEFINE_UNQUOTED(DEF_AUTH_DIR,"$DMDIR/authdir")
++AC_DEFINE_UNQUOTED(DEF_AUTH_DIR,"$DMDIR")
+ 
+ AC_SUBST(DMDIR)
+ 
diff -urN /usr/ports/x11/wdm/patches/patch-ah x11/wdm/patches/patch-ah
--- /usr/ports/x11/wdm/patches/patch-ah	Thu Jan  1 09:00:00 1970
+++ x11/wdm/patches/patch-ah	Sat Nov  6 14:20:04 1999
@@ -0,0 +1,207 @@
+--- patches/xdm-3.3.2-session.patch.orig	Wed Sep  8 23:20:47 1999
++++ patches/xdm-3.3.2-session.patch	Wed Nov  3 10:16:13 1999
+@@ -1,6 +1,158 @@
+---- xdm/session.c	Mon Mar  2 12:56:36 1998
+-+++ src/session.c	Sun Sep  5 10:06:22 1999
+-@@ -500,6 +500,8 @@
++--- xdm/session.c	Mon Mar  2 20:56:36 1998
+++++ src/session.c	Wed Nov  3 10:13:16 1999
++@@ -487,6 +487,151 @@
++     exit (status);
++ }
++ 
+++#ifdef HAS_SETUSERCONTEXT
+++#if defined (__FreeBSD__)
+++/*
+++ * copied from FreeBSD CVS Tree:
+++ * src/lib/libutil/login_class.c,v 1.10.2.2 1999/08/29 14:57:53
+++ */
+++
+++#undef UNKNOWN
+++#define	UNKNOWN "su"
+++
+++static struct login_vars {
+++    const char *tag;
+++    const char *var;
+++    const char *def;
+++} pathvars[] = {
+++    { "path",		"PATH",	      NULL    },
+++    { "cdpath",		"CDPATH",     NULL    },
+++    { "manpath",	"MANPATH",    NULL    },
+++    { NULL,		NULL,	      NULL    }
+++}, envars[] = {
+++    { "lang",		"LANG",	      NULL    },
+++    { "charset",	"MM_CHARSET", NULL    },
+++    { "timezone",	"TZ",	      NULL    },
+++    { "term",		"TERM",	      UNKNOWN },
+++    { NULL,		NULL,	      NULL    }
+++};
+++
+++static char *
+++substvar(char * var, const struct passwd * pwd, int hlen, int pch, int nlen)
+++{
+++    char    *np = NULL;  
+++  
+++    if (var != NULL) { 
+++
+++	int	tildes = 0;     
+++	int	dollas = 0;
+++	char	*p;      
+++
+++	if (pwd != NULL) {
+++	    /* Count the number of ~'s in var to substitute */
+++	    p = var;          
+++	    for (p = var; (p = strchr(p, '~')) != NULL; p++)
+++		++tildes;            
+++	    /* Count the number of $'s in var to substitute */
+++	    p = var;          
+++	    for (p = var; (p = strchr(p, '$')) != NULL; p++)
+++		++dollas;            
+++	}        
+++
+++	np = malloc(strlen(var) + (dollas * nlen)
+++		    - dollas + (tildes * (pch+hlen))
+++		    - tildes + 1);   
+++                   
+++	if (np != NULL) {
+++	    p = strcpy(np, var);
+++                       
+++	    if (pwd != NULL) {
+++		/*                  
+++		 * This loop does user username and homedir substitutions
+++		 * for unescaped $ (username) and ~ (homedir)
+++		 */                  
+++		while (*(p += strcspn(p, "~$")) != '\0') {
+++		    int	l = strlen(p);
+++
+++		    if (p > np && *(p-1) == '\\')  /* Escaped: */
+++			memmove(p - 1, p, l + 1); /* Slide-out the backslash */
+++		    else if (*p == '~') {
+++			int	v = pch && *(p+1) != '/'; /* Avoid double // */
+++			memmove(p + hlen + v, p + 1, l);  /* Subst homedir */
+++			memmove(p, pwd->pw_dir, hlen);
+++			if (v)
+++			    p[hlen] = '/';
+++			p += hlen + v;
+++		    }
+++		    else /* if (*p == '$') */ {
+++			memmove(p + nlen, p + 1, l);	/* Subst username */
+++			memmove(p, pwd->pw_name, nlen);
+++			p += nlen;
+++		    }
+++		}
+++	    }
+++	}
+++    }
+++
+++    return np;
+++
+++}
+++
+++
+++void
+++setclassEnvironment(login_cap_t *lc, const struct passwd * pwd, int paths,
+++		    struct verify_info *verify)
+++{     
+++    char *getEnv ();
+++    struct login_vars	*vars = paths ? pathvars : envars;
+++    int			hlen = pwd ? strlen(pwd->pw_dir) : 0;
+++    int			nlen = pwd ? strlen(pwd->pw_name) : 0;
+++    char pch = 0;
+++      
+++    if (hlen && pwd->pw_dir[hlen-1] != '/')
+++	++pch;
+++
+++    while (vars->tag != NULL) {
+++	char * var = paths ? login_getpath(lc, vars->tag, NULL)
+++	    		   : login_getcapstr(lc, vars->tag, NULL, NULL);
+++      
+++	char * np  = substvar(var, pwd, hlen, pch, nlen);
+++      
+++	if (np != NULL) {
+++	    setenv(vars->var, np, 1);
+++	    free(np);
+++	} else if (vars->def != NULL) {
+++	    setenv(vars->var, vars->def, 0);
+++	}
+++	++vars;
+++    }
+++
+++    /*
+++     * If we're not processing paths, then see if there is a setenv list by
+++     * which the admin and/or user may set an arbitrary set of env vars.
+++     */
+++    if (!paths) {
+++	char	**set_env = login_getcaplist(lc, "setenv", ",");
+++      
+++	if (set_env != NULL) {
+++	    while (*set_env != NULL) {
+++		char	*p = strchr(*set_env, '=');
+++      
+++		if (p != NULL) {  /* Discard invalid entries */
+++		    char	*np;
+++      
+++		    *p++ = '\0';
+++		    if ((np = substvar(p, pwd, hlen, pch, nlen)) != NULL) {
+++			setenv(*set_env, np, 1);
+++			free(np);
+++		    }
+++		}
+++		++set_env;
+++	    }
+++	}
+++    }
+++}
+++#endif
+++#endif
+++
++ static Bool
++ StartClient (verify, d, pidp, name, passwd)
++     struct verify_info	*verify;
++@@ -500,6 +645,8 @@
+      int	pid;
+  #ifdef HAS_SETUSERCONTEXT
+      struct passwd* pwd;
+@@ -9,7 +161,7 @@
+  #endif
+  
+      if (verify->argv) {
+-@@ -556,6 +558,8 @@
++@@ -556,15 +703,39 @@
+  	 * Set the user's credentials: uid, gid, groups,
+  	 * environment variables, resource limits, and umask.
+  	 */
+@@ -18,9 +170,32 @@
+  	pwd = getpwnam(name);
+  	if (pwd)
+  	{
+-@@ -565,6 +569,7 @@
+++#if defined (__FreeBSD__)
+++    	    login_cap_t *lc;
+++
+++	    lc = login_getpwclass(pwd);
+++	    if (setusercontext(lc, pwd, pwd->pw_uid,
+++		LOGIN_SETALL & ~(LOGIN_SETPATH | LOGIN_SETENV)) < 0) {
+++		    LogError("setusercontext for \"%s\" failed, errno=%d\n",
+++			     name, errno);
+++		    login_close(lc);
+++		    return(0);
+++	    }
+++	    setclassEnvironment(lc, pwd, 1, verify);
+++	    setclassEnvironment(lc, pwd, 0, verify);
+++	    login_close(lc);
+++
+++	    if ((lc = login_getuserclass(pwd)) != NULL) {
+++	        setclassEnvironment(lc, pwd, 1, verify);
+++	        setclassEnvironment(lc, pwd, 0, verify);
+++	        login_close(lc);
+++#else
++ 	    if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0)
++ 	    {
++ 		LogError("setusercontext for \"%s\" failed, errno=%d\n", name,
+  			 errno);
+  		return(0);
+++#endif
+  	    }
+ +            verify->userEnviron = environ;    
+  	    endpwent();
diff -urN /usr/ports/x11/wdm/patches/patch-ai x11/wdm/patches/patch-ai
--- /usr/ports/x11/wdm/patches/patch-ai	Thu Jan  1 09:00:00 1970
+++ x11/wdm/patches/patch-ai	Sat Nov  6 14:20:04 1999
@@ -0,0 +1,20 @@
+--- src/Greet.c.orig	Tue Sep 21 23:16:21 1999
++++ src/Greet.c	Wed Nov  3 08:03:00 1999
+@@ -260,7 +260,7 @@
+         }
+         
+         execle(wdmLogin, tmp, DisplayName, 
+-			 Wm, Logo, HelpFile, DefaultUser, Bg, Animate,
++			 Wm, Logo, Bg, Animate, HelpFile, DefaultUser,
+                          NULL, env);
+         
+         LogError ("Greet cannot exec %s\n", wdmLogin);
+@@ -405,7 +405,7 @@
+                                 "%s exit(%s) by %s\n", 
+                                 PACKAGE, exitArg, name);
+ #endif
+-#if 0
++#if 1
+                         SessionExit (d, UNMANAGE_DISPLAY, FALSE);
+ #else
+                         Debug ("Killing parent process %d\n", getppid());
diff -urN /usr/ports/x11/wdm/pkg/DESCR x11/wdm/pkg/DESCR
--- /usr/ports/x11/wdm/pkg/DESCR	Fri Sep  4 07:17:00 1998
+++ x11/wdm/pkg/DESCR	Sat Nov  6 14:20:05 1999
@@ -4,5 +4,7 @@
 
 This is a modification of XFree86's xdm package for graphically
 handling authentication and system login.  Most of xdm has been
-preserved (XFree86 3.3.2) with the Login interface based on a WINGs
+preserved (XFree86 3.3.2.3) with the Login interface based on a WINGs
 implementation using Tom Rothamel's "external greet" interface.
+
+WWW: http://www.tuffguy.net/~wdm/


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


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991106093512.79D9C14CAE>