aboutsummaryrefslogtreecommitdiff
path: root/x11
diff options
context:
space:
mode:
authorMichael Nottebrock <lofi@FreeBSD.org>2003-08-28 19:39:01 +0000
committerMichael Nottebrock <lofi@FreeBSD.org>2003-08-28 19:39:01 +0000
commit9683be5fc3a68dfd728c35da20a85d9de14a3323 (patch)
treec93721ec3b11bdd86c2a3dcac2a0b87fd7be1b41 /x11
parent2c4631b76344d6e3b336f0a7a36c1d8ea930bca7 (diff)
downloadports-9683be5fc3a68dfd728c35da20a85d9de14a3323.tar.gz
ports-9683be5fc3a68dfd728c35da20a85d9de14a3323.zip
Notes
Diffstat (limited to 'x11')
-rw-r--r--x11/kde4-baseapps/Makefile10
-rw-r--r--x11/kde4-baseapps/files/patch-configure122
-rw-r--r--x11/kde4-baseapps/files/patch-kdm-backend-client.c33
-rw-r--r--x11/kde4-baseapps/files/patch-konsole-konsole-TEPty.cpp172
-rw-r--r--x11/kde4-baseapps/files/patch-konsole-konsole-konsole_grantpty.c62
-rw-r--r--x11/kde4-baseapps/files/patch-konsole-konsole-main.cpp18
-rw-r--r--x11/kde4-baseapps/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c33
-rw-r--r--x11/kde4-baseapps/files/plist.base3
-rw-r--r--x11/kde4-baseapps/files/plist.ldap3
-rw-r--r--x11/kde4-baseapps/pkg-message11
-rw-r--r--x11/kde4-runtime/Makefile10
-rw-r--r--x11/kde4-runtime/files/patch-configure122
-rw-r--r--x11/kde4-runtime/files/patch-kdm-backend-client.c33
-rw-r--r--x11/kde4-runtime/files/patch-konsole-konsole-TEPty.cpp172
-rw-r--r--x11/kde4-runtime/files/patch-konsole-konsole-konsole_grantpty.c62
-rw-r--r--x11/kde4-runtime/files/patch-konsole-konsole-main.cpp18
-rw-r--r--x11/kde4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c33
-rw-r--r--x11/kde4-runtime/files/plist.base3
-rw-r--r--x11/kde4-runtime/files/plist.ldap3
-rw-r--r--x11/kde4-runtime/pkg-message11
-rw-r--r--x11/kde4-workspace/Makefile10
-rw-r--r--x11/kde4-workspace/files/patch-configure122
-rw-r--r--x11/kde4-workspace/files/patch-kdm-backend-client.c33
-rw-r--r--x11/kde4-workspace/files/patch-konsole-konsole-TEPty.cpp172
-rw-r--r--x11/kde4-workspace/files/patch-konsole-konsole-konsole_grantpty.c62
-rw-r--r--x11/kde4-workspace/files/patch-konsole-konsole-main.cpp18
-rw-r--r--x11/kde4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c33
-rw-r--r--x11/kde4-workspace/files/plist.base3
-rw-r--r--x11/kde4-workspace/files/plist.ldap3
-rw-r--r--x11/kde4-workspace/pkg-message11
-rw-r--r--x11/kdebase3/Makefile10
-rw-r--r--x11/kdebase3/files/patch-configure122
-rw-r--r--x11/kdebase3/files/patch-kdm-backend-client.c33
-rw-r--r--x11/kdebase3/files/patch-konsole-konsole-TEPty.cpp172
-rw-r--r--x11/kdebase3/files/patch-konsole-konsole-konsole_grantpty.c62
-rw-r--r--x11/kdebase3/files/patch-konsole-konsole-main.cpp18
-rw-r--r--x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c33
-rw-r--r--x11/kdebase3/files/plist.base3
-rw-r--r--x11/kdebase3/files/plist.ldap3
-rw-r--r--x11/kdebase3/pkg-message11
-rw-r--r--x11/kdebase4-runtime/Makefile10
-rw-r--r--x11/kdebase4-runtime/files/patch-configure122
-rw-r--r--x11/kdebase4-runtime/files/patch-kdm-backend-client.c33
-rw-r--r--x11/kdebase4-runtime/files/patch-konsole-konsole-TEPty.cpp172
-rw-r--r--x11/kdebase4-runtime/files/patch-konsole-konsole-konsole_grantpty.c62
-rw-r--r--x11/kdebase4-runtime/files/patch-konsole-konsole-main.cpp18
-rw-r--r--x11/kdebase4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c33
-rw-r--r--x11/kdebase4-runtime/files/plist.base3
-rw-r--r--x11/kdebase4-runtime/files/plist.ldap3
-rw-r--r--x11/kdebase4-runtime/pkg-message11
-rw-r--r--x11/kdebase4-workspace/Makefile10
-rw-r--r--x11/kdebase4-workspace/files/patch-configure122
-rw-r--r--x11/kdebase4-workspace/files/patch-kdm-backend-client.c33
-rw-r--r--x11/kdebase4-workspace/files/patch-konsole-konsole-TEPty.cpp172
-rw-r--r--x11/kdebase4-workspace/files/patch-konsole-konsole-konsole_grantpty.c62
-rw-r--r--x11/kdebase4-workspace/files/patch-konsole-konsole-main.cpp18
-rw-r--r--x11/kdebase4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c33
-rw-r--r--x11/kdebase4-workspace/files/plist.base3
-rw-r--r--x11/kdebase4-workspace/files/plist.ldap3
-rw-r--r--x11/kdebase4-workspace/pkg-message11
-rw-r--r--x11/kdebase4/Makefile10
-rw-r--r--x11/kdebase4/files/patch-configure122
-rw-r--r--x11/kdebase4/files/patch-kdm-backend-client.c33
-rw-r--r--x11/kdebase4/files/patch-konsole-konsole-TEPty.cpp172
-rw-r--r--x11/kdebase4/files/patch-konsole-konsole-konsole_grantpty.c62
-rw-r--r--x11/kdebase4/files/patch-konsole-konsole-main.cpp18
-rw-r--r--x11/kdebase4/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c33
-rw-r--r--x11/kdebase4/files/plist.base3
-rw-r--r--x11/kdebase4/files/plist.ldap3
-rw-r--r--x11/kdebase4/pkg-message11
70 files changed, 3206 insertions, 63 deletions
diff --git a/x11/kde4-baseapps/Makefile b/x11/kde4-baseapps/Makefile
index c2820dd38b0a..d3157b31a51e 100644
--- a/x11/kde4-baseapps/Makefile
+++ b/x11/kde4-baseapps/Makefile
@@ -8,6 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src
@@ -22,6 +23,7 @@ USE_KDELIBS_VER=3
PREFIX= ${KDE_PREFIX}
KDE_BUILD_PLIST=yes
+USE_OPENLDAP= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_XPM= yes
@@ -39,12 +41,6 @@ CONFIGURE_ARGS+=--without-java \
.include "${.CURDIR}/../../x11/kde3/Makefile.kde"
.include <bsd.port.pre.mk>
-# This enables kio_ldap (needed by kaddresbook).
-.if defined(WITH_LDAP) || exists($(LOCALBASE)/lib/libldap.so)
-LIB_DEPENDS+= ldap:${PORTSDIR}/net/openldap21-client
-PLIST_APPEND+= plist.ldap
-.endif
-
.if exists(${X11BASE}/include/Xm/Xm.h)
WITH_MOTIF= yes
.endif # exists(${X11BASE}/include/Xm/Xm.h)
@@ -85,5 +81,7 @@ post-install:
${CHMOD} u+s ${PREFIX}/bin/kcheckpass
${CHGRP} kmem ${PREFIX}/bin/ksysguardd && \
${CHMOD} g+s ${PREFIX}/bin/ksysguardd
+ @${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
+ | ${SED} -e 's,%%X11BASE%%,${X11BASE},g'
.include <bsd.port.post.mk>
diff --git a/x11/kde4-baseapps/files/patch-configure b/x11/kde4-baseapps/files/patch-configure
new file mode 100644
index 000000000000..fcc7afb4565b
--- /dev/null
+++ b/x11/kde4-baseapps/files/patch-configure
@@ -0,0 +1,122 @@
+--- configure.orig Sat Aug 23 22:55:38 2003
++++ configure Sat Aug 23 22:57:16 2003
+@@ -33894,8 +33894,67 @@
+ echo "$as_me:$LINENO: result: not found" >&5
+ echo "${ECHO_T}not found" >&6
+
+- { echo "$as_me:$LINENO: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&5
+-echo "$as_me: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&2;}
++
++ echo "$as_me:$LINENO: checking for pkg-config" >&5
++echo $ECHO_N "checking for pkg-config... $ECHO_C" >&6
++ if test -n "$PKGCONFIG"; then
++ kde_cv_path="$PKGCONFIG";
++ else
++ kde_cache=`echo pkg-config | sed 'y%./+-%__p_%'`
++
++ if eval "test \"\${kde_cv_path_$kde_cache+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ kde_cv_path="NONE"
++ dirs="${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin"
++ kde_save_IFS=$IFS
++ IFS=':'
++ for dir in $PATH; do
++ dirs="$dirs $dir"
++ done
++ IFS=$kde_save_IFS
++
++ for dir in $dirs; do
++ if test -x "$dir/pkg-config"; then
++ if test -n ""
++ then
++ evalstr="$dir/pkg-config 2>&1 "
++ if eval $evalstr; then
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ else
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ fi
++ done
++
++ eval "kde_cv_path_$kde_cache=$kde_cv_path"
++
++
++fi
++
++
++ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
++
++ fi
++
++ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
++ echo "$as_me:$LINENO: result: not found" >&5
++echo "${ECHO_T}not found" >&6
++
++ { echo "$as_me:$LINENO: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&5
++echo "$as_me: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&2;}
++
++ else
++ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
++echo "${ECHO_T}$kde_cv_path" >&6
++ PKGCONFIG=$kde_cv_path
++
++ fi
++
+
+ else
+ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+@@ -33905,6 +33964,30 @@
+ fi
+
+
++if test -n "$PKGCONFIG"; then
++ vers=`$PKGCONFIG fontconfig --modversion 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
++ if test -n "$vers" && test "$vers" -ge 1000000
++ then
++ LIBFONTCONFIG_LIBS="`$PKGCONFIG fontconfig --libs`"
++ LIBFONTCONFIG_RPATH=
++ for args in $LIBFONTCONFIG_LIBS; do
++ case $args in
++ -L*)
++ LIBFONTCONFIG_RPATH="$LIBFONTCONFIG_RPATH $args"
++ ;;
++ esac
++ done
++ LIBFONTCONFIG_RPATH=`echo $LIBFONTCONFIG_RPATH | sed -e "s/-L/-R/g"`
++ LIBFONTCONFIG_CFLAGS="`$PKGCONFIG fontconfig --cflags`"
++
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_FONTCONFIG 1
++_ACEOF
++
++ fi
++fi
++
+ if test -n "$FONTCONFIG_CONFIG"; then
+ vers=`$FONTCONFIG_CONFIG --version 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+ if test -n "$vers" && test "$vers" -ge 1000000
+@@ -37753,7 +37836,7 @@
+ do
+ for j in ldap.h;
+ do
+- echo "configure: 37756: $i/$j" >&5
++ echo "configure: 37839: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_incdir=$i
+@@ -37775,7 +37858,7 @@
+ do
+ for j in libldap.$ext;
+ do
+- echo "configure: 37778: $i/$j" >&5
++ echo "configure: 37861: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_libdir=$i
+
diff --git a/x11/kde4-baseapps/files/patch-kdm-backend-client.c b/x11/kde4-baseapps/files/patch-kdm-backend-client.c
new file mode 100644
index 000000000000..fe44c4f3831c
--- /dev/null
+++ b/x11/kde4-baseapps/files/patch-kdm-backend-client.c
@@ -0,0 +1,33 @@
+--- kdm/backend/client.c 18 Jun 2003 20:05:15 -0000 2.25.2.4
++++ kdm/backend/client.c 6 Aug 2003 16:02:39 -0000 2.25.2.5
+@@ -1,5 +1,5 @@
+ /* $TOG: verify.c /main/37 1998/02/11 10:00:45 kaleb $ */
+-/* $Id: client.c,v 2.25.2.4 2003/06/18 20:05:15 ossi Exp $ */
++/* $Id: client.c,v 2.25.2.5 2003/08/06 16:02:39 ossi Exp $ */
+ /*
+
+ Copyright 1988, 1998 The Open Group
+@@ -1009,7 +1009,11 @@ StartClient (struct display *d,
+ exit (1);
+ # endif
+ # ifdef USE_PAM
+- pam_setcred(pamh, 0);
++ if (pam_setcred(pamh, 0) != PAM_SUCCESS) {
++ LogError("pam_setcred for %\"s failed, errno=%d\n",
++ name, errno);
++ exit (1);
++ }
+ /* pass in environment variables set by libpam and modules it called */
+ pam_env = pam_getenvlist(pamh);
+ ReInitErrorLog ();
+@@ -1267,7 +1271,9 @@ SessionExit (struct display *d, int stat
+ #ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+- pam_setcred(pamh, PAM_DELETE_CRED);
++ if (pam_setcred(pamh, PAM_DELETE_CRED) != PAM_SUCCESS)
++ LogError("pam_setcred(DELETE_CRED) for %\"s failed, errno=%d\n",
++ d->verify->user, errno);
+ pam_close_session(pamh, 0);
+ pam_end(pamh, PAM_SUCCESS);
+ pamh = NULL;
diff --git a/x11/kde4-baseapps/files/patch-konsole-konsole-TEPty.cpp b/x11/kde4-baseapps/files/patch-konsole-konsole-TEPty.cpp
new file mode 100644
index 000000000000..44642dc8aebc
--- /dev/null
+++ b/x11/kde4-baseapps/files/patch-konsole-konsole-TEPty.cpp
@@ -0,0 +1,172 @@
+--- konsole/konsole/TEPty.cpp 22 Nov 2002 13:17:57 -0000 1.75
++++ konsole/konsole/TEPty.cpp 24 Aug 2003 21:44:00 -0000
+@@ -65,6 +65,9 @@
+ #include <config.h>
+ #endif
+
++// Get the Q_OS_* defines
++#include <qglobal.h>
++
+ #ifdef __sgi
+ #define __svr4__
+ #endif
+@@ -88,6 +91,10 @@
+ #include <sys/types.h>
+ #endif
+
++#ifdef Q_OS_FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -198,9 +205,30 @@ public:
+
+ FILE* syslog_file = NULL; //stdout;
+
+-#define PTY_FILENO 3
++#define DEFAULT_PTY_FILENO 3
++int PTY_FILENO = -1; // None allocated yet.
++
+ #define BASE_CHOWN "konsole_grantpty"
+
++void TEPtyInit()
++{
++/*
++** FreeBSD can't dup2(fd,3) because fd 3 is already in use by
++** some weird pipe. So instead, we get a new throwaway fd
++** that's not in use by anyone.
++*/
++#ifdef Q_OS_FREEBSD
++ PTY_FILENO = open("/dev/null",O_RDWR);
++ if (PTY_FILENO == -1) {
++ perror("konsole:open PTY");
++ /* This won't work either, but hey .. */
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++ }
++#else
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++#endif
++}
++
+ int chownpty(int fd, bool grant)
+ // param fd: the fd of a master pty.
+ // param grant: true to grant, false to revoke
+@@ -212,6 +240,8 @@ int chownpty(int fd, bool grant)
+ newsa.sa_flags = 0;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
++ if (PTY_FILENO == -1) TEPtyInit();
++
+ pid_t pid = fork();
+ if (pid < 0)
+ {
+@@ -225,7 +255,12 @@ int chownpty(int fd, bool grant)
+ /* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
+ if (fd != PTY_FILENO && dup2(fd, PTY_FILENO) < 0) exit(1);
+ QString path = locate("exe", BASE_CHOWN);
+- execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", NULL, NULL);
++ /*
++ ** Because konsole_grantpty now can't expect the fd
++ ** to be constant, we need an additional parameter.
++ */
++ QString fdnumber = QString::number(PTY_FILENO);
++ execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", fdnumber.ascii(), NULL, NULL);
+ exit(1); // should not be reached
+ }
+
+@@ -486,6 +521,16 @@ int TEPty::makePty(bool _addutmp)
+ // open and set all standard files to slave tty
+ int tt = m_SlaveFd; // Already opened?
+
++#ifdef Q_OS_FREEBSD
++ /*
++ ** It seems to be possible for SlaveFd to be closed in error
++ ** somewhere along the line. So check it for "liveness".
++ */
++ struct stat sb;
++ if (fstat(tt,&sb)!=0)
++ tt=-1; // Apparently not alive.
++#endif
++
+ if (tt < 0)
+ tt = open(ttynam, O_RDWR);
+
+@@ -524,14 +569,57 @@ int TEPty::makePty(bool _addutmp)
+ }
+ strncpy(l_struct.ut_name, str_ptr, UT_NAMESIZE);
+
++#ifdef Q_OS_FREEBSD
++ /* FreeBSD until august 22, 2003 returned ENOMEM for too-long
++ ** hostnames. Then sanity prevailed (?) and the error was changed
++ ** to NAMETOOLONG, but this breaks konsole .. again.
++ **
++ ** Instead of bailing out with long hostnames, put in partial
++ ** hostnames (the first UT_HOSTSIZE characters) instead.
++ */
++ char hostnamebuffer[MAXHOSTNAMELEN+1];
++ memset(hostnamebuffer,0,MAXHOSTNAMELEN+1);
++ if (gethostname(hostnamebuffer, MAXHOSTNAMELEN) == -1)
++ {
++ if ( (errno==ENOMEM) || (errno==ENAMETOOLONG) ) {
++ /* ignore it, but very odd */
++ }
++ else {
++ /* Not much chance of this being visible anywhere ... */
++ perror("konsole:gethostname");
++ abort();
++ }
++ }
++ /* Copy hostname, possibly only partially */
++ memset(l_struct.ut_host,0,UT_HOSTSIZE);
++ strncpy(l_struct.ut_host,hostnamebuffer,UT_HOSTSIZE);
++ l_struct.ut_host[UT_HOSTSIZE]=0;
++#else
++ /* Non-FreeBSD systems */
+ if (gethostname(l_struct.ut_host, UT_HOSTSIZE) == -1) {
+- if (errno != ENOMEM)
++ if (errno != ENOMEM)
+ abort();
+ l_struct.ut_host[UT_HOSTSIZE]=0;
+ }
++#endif
+
+ if (! (str_ptr=ttyname(tt)) ) {
++#ifdef Q_OS_FREEBSD
++ /*
++ ** In FreeBSD, the ttyname() call always returns NULL
++ ** for the kinds of devices (ptys) we have opened,
++ ** so don't abort, use a foolish default value instead.
++ ** The call to login() probably won't work _anyway_,
++ ** since normally users can't update the wtmp file.
++ **
++ ** If we were real sticklers for accuracy, we'd copy the
++ ** code from konsole_grantpty that does it's darndest to
++ ** file out the right tty name.
++ */
++ str_ptr = const_cast<char *>("/dev/konsole");
++#else
+ abort();
++#endif
+ }
+ if (strncmp(str_ptr, "/dev/", 5) == 0)
+ str_ptr += 5;
+@@ -607,7 +695,7 @@ void TEPty::startPgm(const char* pgm, QV
+ // #define CERASE 0177
+ // #endif
+
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCGETA,(char *)&ttmode);
+ #else
+ # if defined (_HPUX_SOURCE) || defined(__Lynx__)
+@@ -621,7 +709,7 @@ void TEPty::startPgm(const char* pgm, QV
+ ttmode.c_cc[VINTR] = CTRL('C');
+ ttmode.c_cc[VQUIT] = CTRL('\\');
+ ttmode.c_cc[VERASE] = 0177;
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCSETA,(char *)&ttmode);
+ #else
+ # ifdef _HPUX_SOURCE \ No newline at end of file
diff --git a/x11/kde4-baseapps/files/patch-konsole-konsole-konsole_grantpty.c b/x11/kde4-baseapps/files/patch-konsole-konsole-konsole_grantpty.c
new file mode 100644
index 000000000000..5093a52d277b
--- /dev/null
+++ b/x11/kde4-baseapps/files/patch-konsole-konsole-konsole_grantpty.c
@@ -0,0 +1,62 @@
+--- konsole/konsole/konsole_grantpty.c 2 Sep 2002 01:09:24 -0000 1.7
++++ konsole/konsole/konsole_grantpty.c 24 Aug 2003 21:44:01 -0000
+@@ -40,7 +40,9 @@
+ # include <dirent.h>
+ #endif
+
+-#define PTY_FILENO 3 /* keep in sync with grantpty */
++#define DEFAULT_PTY_FILENO 3 /* keep in sync with TEPty.cpp */
++int PTY_FILENO = DEFAULT_PTY_FILENO;
++
+ #define TTY_GROUP "tty"
+
+ int main (int argc, char *argv[])
+@@ -52,11 +54,13 @@ int main (int argc, char *argv[])
+ uid_t uid;
+ mode_t mod;
+ char* tty;
++ int command_fd; /* which fd to use? */
+
+ /* check preconditions **************************************************/
+- if (argc != 2 || (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
++ if (( (argc != 3) && (argc != 2) /* optional third arg */ ) ||
++ (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
+ {
+- printf("usage: %s (--grant|--revoke)\n",argv[0]);
++ printf("usage: %s (--grant|--revoke) [fd]\n",argv[0]);
+ printf("%s is a helper for\n",argv[0]);
+ printf("konsole and not intented to\n");
+ printf("be called from the command\n");
+@@ -83,6 +87,22 @@ int main (int argc, char *argv[])
+ uid = 0; /* root */
+ mod = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ }
++
++ command_fd = DEFAULT_PTY_FILENO;
++ if (argv[2])
++ {
++ command_fd = atoi(argv[2]);
++ }
++ if (command_fd > 2) /* must be out of stdin,stdout,stderr range */
++ {
++ PTY_FILENO=command_fd;
++ }
++ else
++ {
++ fprintf(stderr,"%s: Bad command fd (seems to be %d)\n",argv[0],command_fd);
++ return 1;
++ }
++
+ /* Get the group ID of the special `tty' group. */
+ p = getgrnam(TTY_GROUP); /* posix */
+ gid = p ? p->gr_gid : getgid (); /* posix */
+@@ -117,6 +137,9 @@ int main (int argc, char *argv[])
+ if (dirp->d_fileno != dsb.st_ino)
+ continue;
+ {
++ /* Else this is the right device file .. any possible memory
++ ** leak here because two files match is unimportant?
++ */
+ int pdlen = strlen(_PATH_DEV), namelen = strlen(dirp->d_name);
+ pty = malloc(pdlen + namelen + 1);
+ if (pty) { \ No newline at end of file
diff --git a/x11/kde4-baseapps/files/patch-konsole-konsole-main.cpp b/x11/kde4-baseapps/files/patch-konsole-konsole-main.cpp
new file mode 100644
index 000000000000..989b34605258
--- /dev/null
+++ b/x11/kde4-baseapps/files/patch-konsole-konsole-main.cpp
@@ -0,0 +1,18 @@
+--- konsole/konsole/main.cpp 29 Jun 2003 21:53:11 -0000 1.243.2.3
++++ konsole/konsole/main.cpp 24 Aug 2003 21:44:02 -0000
+@@ -123,6 +123,7 @@ public:
+ };
+
+
++extern void TEPtyInit();
+
+ /* --| main |------------------------------------------------------ */
+ int main(int argc, char* argv[])
+@@ -137,6 +138,7 @@ int main(int argc, char* argv[])
+ bool scrollbaron = true;
+ QCString wname = PACKAGE;
+
++ TEPtyInit();
+
+ KAboutData aboutData( PACKAGE, I18N_NOOP("Konsole"),
+ VERSION, description, KAboutData::License_GPL_V2,
diff --git a/x11/kde4-baseapps/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kde4-baseapps/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
new file mode 100644
index 000000000000..4f57a705f1f2
--- /dev/null
+++ b/x11/kde4-baseapps/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
@@ -0,0 +1,33 @@
+--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003
++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003
+@@ -168,6 +168,8 @@
+ int mib[4];
+ struct kinfo_proc p;
+ size_t len;
++ size_t buflen = 256;
++ char buf[256];
+
+ if ((ps = findProcessInList(pid)) == 0)
+ {
+@@ -239,10 +241,17 @@
+ #endif
+
+ /* process command line */
+- /* the following line causes segfaults on some FreeBSD systems... why?
+- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
+- */
+- strcpy(ps->cmdline, "????");
++ /* do a sysctl to get the command line args. */
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ARGS;
++ mib[3] = pid;
++
++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen)
++ strcpy(ps->cmdline, "????");
++ else
++ strncpy(ps->cmdline, buf, buflen - 1);
+
+ return (0);
+ }
diff --git a/x11/kde4-baseapps/files/plist.base b/x11/kde4-baseapps/files/plist.base
index 4f9df2e6d51a..ae0ca83e8cd9 100644
--- a/x11/kde4-baseapps/files/plist.base
+++ b/x11/kde4-baseapps/files/plist.base
@@ -277,6 +277,8 @@ lib/kde3/kio_imap4.la
lib/kde3/kio_imap4.so
lib/kde3/kio_info.la
lib/kde3/kio_info.so
+lib/kde3/kio_ldap.la
+lib/kde3/kio_ldap.so
lib/kde3/kio_mac.la
lib/kde3/kio_mac.so
lib/kde3/kio_man.la
@@ -2764,6 +2766,7 @@ share/services/imagethumbnail.desktop
share/services/imap4.protocol
share/services/imaps.protocol
share/services/info.protocol
+share/services/ldap.protocol
share/services/kaccess.desktop
share/services/kded/favicons.desktop
share/services/kded/mountwatcher.desktop
diff --git a/x11/kde4-baseapps/files/plist.ldap b/x11/kde4-baseapps/files/plist.ldap
deleted file mode 100644
index 082395fd0498..000000000000
--- a/x11/kde4-baseapps/files/plist.ldap
+++ /dev/null
@@ -1,3 +0,0 @@
-lib/kde3/kio_ldap.la
-lib/kde3/kio_ldap.so
-share/services/ldap.protocol
diff --git a/x11/kde4-baseapps/pkg-message b/x11/kde4-baseapps/pkg-message
new file mode 100644
index 000000000000..f97e3656f98b
--- /dev/null
+++ b/x11/kde4-baseapps/pkg-message
@@ -0,0 +1,11 @@
+This port has installed fonts into %%PREFIX%%/share/fonts
+
+You'll have to add %%PREFIX%%/share/fonts
+to your X font path by either:
+
+$ xset fp+ %%PREFIX%%/share/fonts
+$ xset fp rehash
+
+or by adding it to your X-server configuration file (usually
+/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and
+restarting the X-server.
diff --git a/x11/kde4-runtime/Makefile b/x11/kde4-runtime/Makefile
index c2820dd38b0a..d3157b31a51e 100644
--- a/x11/kde4-runtime/Makefile
+++ b/x11/kde4-runtime/Makefile
@@ -8,6 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src
@@ -22,6 +23,7 @@ USE_KDELIBS_VER=3
PREFIX= ${KDE_PREFIX}
KDE_BUILD_PLIST=yes
+USE_OPENLDAP= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_XPM= yes
@@ -39,12 +41,6 @@ CONFIGURE_ARGS+=--without-java \
.include "${.CURDIR}/../../x11/kde3/Makefile.kde"
.include <bsd.port.pre.mk>
-# This enables kio_ldap (needed by kaddresbook).
-.if defined(WITH_LDAP) || exists($(LOCALBASE)/lib/libldap.so)
-LIB_DEPENDS+= ldap:${PORTSDIR}/net/openldap21-client
-PLIST_APPEND+= plist.ldap
-.endif
-
.if exists(${X11BASE}/include/Xm/Xm.h)
WITH_MOTIF= yes
.endif # exists(${X11BASE}/include/Xm/Xm.h)
@@ -85,5 +81,7 @@ post-install:
${CHMOD} u+s ${PREFIX}/bin/kcheckpass
${CHGRP} kmem ${PREFIX}/bin/ksysguardd && \
${CHMOD} g+s ${PREFIX}/bin/ksysguardd
+ @${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
+ | ${SED} -e 's,%%X11BASE%%,${X11BASE},g'
.include <bsd.port.post.mk>
diff --git a/x11/kde4-runtime/files/patch-configure b/x11/kde4-runtime/files/patch-configure
new file mode 100644
index 000000000000..fcc7afb4565b
--- /dev/null
+++ b/x11/kde4-runtime/files/patch-configure
@@ -0,0 +1,122 @@
+--- configure.orig Sat Aug 23 22:55:38 2003
++++ configure Sat Aug 23 22:57:16 2003
+@@ -33894,8 +33894,67 @@
+ echo "$as_me:$LINENO: result: not found" >&5
+ echo "${ECHO_T}not found" >&6
+
+- { echo "$as_me:$LINENO: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&5
+-echo "$as_me: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&2;}
++
++ echo "$as_me:$LINENO: checking for pkg-config" >&5
++echo $ECHO_N "checking for pkg-config... $ECHO_C" >&6
++ if test -n "$PKGCONFIG"; then
++ kde_cv_path="$PKGCONFIG";
++ else
++ kde_cache=`echo pkg-config | sed 'y%./+-%__p_%'`
++
++ if eval "test \"\${kde_cv_path_$kde_cache+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ kde_cv_path="NONE"
++ dirs="${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin"
++ kde_save_IFS=$IFS
++ IFS=':'
++ for dir in $PATH; do
++ dirs="$dirs $dir"
++ done
++ IFS=$kde_save_IFS
++
++ for dir in $dirs; do
++ if test -x "$dir/pkg-config"; then
++ if test -n ""
++ then
++ evalstr="$dir/pkg-config 2>&1 "
++ if eval $evalstr; then
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ else
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ fi
++ done
++
++ eval "kde_cv_path_$kde_cache=$kde_cv_path"
++
++
++fi
++
++
++ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
++
++ fi
++
++ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
++ echo "$as_me:$LINENO: result: not found" >&5
++echo "${ECHO_T}not found" >&6
++
++ { echo "$as_me:$LINENO: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&5
++echo "$as_me: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&2;}
++
++ else
++ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
++echo "${ECHO_T}$kde_cv_path" >&6
++ PKGCONFIG=$kde_cv_path
++
++ fi
++
+
+ else
+ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+@@ -33905,6 +33964,30 @@
+ fi
+
+
++if test -n "$PKGCONFIG"; then
++ vers=`$PKGCONFIG fontconfig --modversion 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
++ if test -n "$vers" && test "$vers" -ge 1000000
++ then
++ LIBFONTCONFIG_LIBS="`$PKGCONFIG fontconfig --libs`"
++ LIBFONTCONFIG_RPATH=
++ for args in $LIBFONTCONFIG_LIBS; do
++ case $args in
++ -L*)
++ LIBFONTCONFIG_RPATH="$LIBFONTCONFIG_RPATH $args"
++ ;;
++ esac
++ done
++ LIBFONTCONFIG_RPATH=`echo $LIBFONTCONFIG_RPATH | sed -e "s/-L/-R/g"`
++ LIBFONTCONFIG_CFLAGS="`$PKGCONFIG fontconfig --cflags`"
++
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_FONTCONFIG 1
++_ACEOF
++
++ fi
++fi
++
+ if test -n "$FONTCONFIG_CONFIG"; then
+ vers=`$FONTCONFIG_CONFIG --version 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+ if test -n "$vers" && test "$vers" -ge 1000000
+@@ -37753,7 +37836,7 @@
+ do
+ for j in ldap.h;
+ do
+- echo "configure: 37756: $i/$j" >&5
++ echo "configure: 37839: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_incdir=$i
+@@ -37775,7 +37858,7 @@
+ do
+ for j in libldap.$ext;
+ do
+- echo "configure: 37778: $i/$j" >&5
++ echo "configure: 37861: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_libdir=$i
+
diff --git a/x11/kde4-runtime/files/patch-kdm-backend-client.c b/x11/kde4-runtime/files/patch-kdm-backend-client.c
new file mode 100644
index 000000000000..fe44c4f3831c
--- /dev/null
+++ b/x11/kde4-runtime/files/patch-kdm-backend-client.c
@@ -0,0 +1,33 @@
+--- kdm/backend/client.c 18 Jun 2003 20:05:15 -0000 2.25.2.4
++++ kdm/backend/client.c 6 Aug 2003 16:02:39 -0000 2.25.2.5
+@@ -1,5 +1,5 @@
+ /* $TOG: verify.c /main/37 1998/02/11 10:00:45 kaleb $ */
+-/* $Id: client.c,v 2.25.2.4 2003/06/18 20:05:15 ossi Exp $ */
++/* $Id: client.c,v 2.25.2.5 2003/08/06 16:02:39 ossi Exp $ */
+ /*
+
+ Copyright 1988, 1998 The Open Group
+@@ -1009,7 +1009,11 @@ StartClient (struct display *d,
+ exit (1);
+ # endif
+ # ifdef USE_PAM
+- pam_setcred(pamh, 0);
++ if (pam_setcred(pamh, 0) != PAM_SUCCESS) {
++ LogError("pam_setcred for %\"s failed, errno=%d\n",
++ name, errno);
++ exit (1);
++ }
+ /* pass in environment variables set by libpam and modules it called */
+ pam_env = pam_getenvlist(pamh);
+ ReInitErrorLog ();
+@@ -1267,7 +1271,9 @@ SessionExit (struct display *d, int stat
+ #ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+- pam_setcred(pamh, PAM_DELETE_CRED);
++ if (pam_setcred(pamh, PAM_DELETE_CRED) != PAM_SUCCESS)
++ LogError("pam_setcred(DELETE_CRED) for %\"s failed, errno=%d\n",
++ d->verify->user, errno);
+ pam_close_session(pamh, 0);
+ pam_end(pamh, PAM_SUCCESS);
+ pamh = NULL;
diff --git a/x11/kde4-runtime/files/patch-konsole-konsole-TEPty.cpp b/x11/kde4-runtime/files/patch-konsole-konsole-TEPty.cpp
new file mode 100644
index 000000000000..44642dc8aebc
--- /dev/null
+++ b/x11/kde4-runtime/files/patch-konsole-konsole-TEPty.cpp
@@ -0,0 +1,172 @@
+--- konsole/konsole/TEPty.cpp 22 Nov 2002 13:17:57 -0000 1.75
++++ konsole/konsole/TEPty.cpp 24 Aug 2003 21:44:00 -0000
+@@ -65,6 +65,9 @@
+ #include <config.h>
+ #endif
+
++// Get the Q_OS_* defines
++#include <qglobal.h>
++
+ #ifdef __sgi
+ #define __svr4__
+ #endif
+@@ -88,6 +91,10 @@
+ #include <sys/types.h>
+ #endif
+
++#ifdef Q_OS_FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -198,9 +205,30 @@ public:
+
+ FILE* syslog_file = NULL; //stdout;
+
+-#define PTY_FILENO 3
++#define DEFAULT_PTY_FILENO 3
++int PTY_FILENO = -1; // None allocated yet.
++
+ #define BASE_CHOWN "konsole_grantpty"
+
++void TEPtyInit()
++{
++/*
++** FreeBSD can't dup2(fd,3) because fd 3 is already in use by
++** some weird pipe. So instead, we get a new throwaway fd
++** that's not in use by anyone.
++*/
++#ifdef Q_OS_FREEBSD
++ PTY_FILENO = open("/dev/null",O_RDWR);
++ if (PTY_FILENO == -1) {
++ perror("konsole:open PTY");
++ /* This won't work either, but hey .. */
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++ }
++#else
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++#endif
++}
++
+ int chownpty(int fd, bool grant)
+ // param fd: the fd of a master pty.
+ // param grant: true to grant, false to revoke
+@@ -212,6 +240,8 @@ int chownpty(int fd, bool grant)
+ newsa.sa_flags = 0;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
++ if (PTY_FILENO == -1) TEPtyInit();
++
+ pid_t pid = fork();
+ if (pid < 0)
+ {
+@@ -225,7 +255,12 @@ int chownpty(int fd, bool grant)
+ /* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
+ if (fd != PTY_FILENO && dup2(fd, PTY_FILENO) < 0) exit(1);
+ QString path = locate("exe", BASE_CHOWN);
+- execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", NULL, NULL);
++ /*
++ ** Because konsole_grantpty now can't expect the fd
++ ** to be constant, we need an additional parameter.
++ */
++ QString fdnumber = QString::number(PTY_FILENO);
++ execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", fdnumber.ascii(), NULL, NULL);
+ exit(1); // should not be reached
+ }
+
+@@ -486,6 +521,16 @@ int TEPty::makePty(bool _addutmp)
+ // open and set all standard files to slave tty
+ int tt = m_SlaveFd; // Already opened?
+
++#ifdef Q_OS_FREEBSD
++ /*
++ ** It seems to be possible for SlaveFd to be closed in error
++ ** somewhere along the line. So check it for "liveness".
++ */
++ struct stat sb;
++ if (fstat(tt,&sb)!=0)
++ tt=-1; // Apparently not alive.
++#endif
++
+ if (tt < 0)
+ tt = open(ttynam, O_RDWR);
+
+@@ -524,14 +569,57 @@ int TEPty::makePty(bool _addutmp)
+ }
+ strncpy(l_struct.ut_name, str_ptr, UT_NAMESIZE);
+
++#ifdef Q_OS_FREEBSD
++ /* FreeBSD until august 22, 2003 returned ENOMEM for too-long
++ ** hostnames. Then sanity prevailed (?) and the error was changed
++ ** to NAMETOOLONG, but this breaks konsole .. again.
++ **
++ ** Instead of bailing out with long hostnames, put in partial
++ ** hostnames (the first UT_HOSTSIZE characters) instead.
++ */
++ char hostnamebuffer[MAXHOSTNAMELEN+1];
++ memset(hostnamebuffer,0,MAXHOSTNAMELEN+1);
++ if (gethostname(hostnamebuffer, MAXHOSTNAMELEN) == -1)
++ {
++ if ( (errno==ENOMEM) || (errno==ENAMETOOLONG) ) {
++ /* ignore it, but very odd */
++ }
++ else {
++ /* Not much chance of this being visible anywhere ... */
++ perror("konsole:gethostname");
++ abort();
++ }
++ }
++ /* Copy hostname, possibly only partially */
++ memset(l_struct.ut_host,0,UT_HOSTSIZE);
++ strncpy(l_struct.ut_host,hostnamebuffer,UT_HOSTSIZE);
++ l_struct.ut_host[UT_HOSTSIZE]=0;
++#else
++ /* Non-FreeBSD systems */
+ if (gethostname(l_struct.ut_host, UT_HOSTSIZE) == -1) {
+- if (errno != ENOMEM)
++ if (errno != ENOMEM)
+ abort();
+ l_struct.ut_host[UT_HOSTSIZE]=0;
+ }
++#endif
+
+ if (! (str_ptr=ttyname(tt)) ) {
++#ifdef Q_OS_FREEBSD
++ /*
++ ** In FreeBSD, the ttyname() call always returns NULL
++ ** for the kinds of devices (ptys) we have opened,
++ ** so don't abort, use a foolish default value instead.
++ ** The call to login() probably won't work _anyway_,
++ ** since normally users can't update the wtmp file.
++ **
++ ** If we were real sticklers for accuracy, we'd copy the
++ ** code from konsole_grantpty that does it's darndest to
++ ** file out the right tty name.
++ */
++ str_ptr = const_cast<char *>("/dev/konsole");
++#else
+ abort();
++#endif
+ }
+ if (strncmp(str_ptr, "/dev/", 5) == 0)
+ str_ptr += 5;
+@@ -607,7 +695,7 @@ void TEPty::startPgm(const char* pgm, QV
+ // #define CERASE 0177
+ // #endif
+
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCGETA,(char *)&ttmode);
+ #else
+ # if defined (_HPUX_SOURCE) || defined(__Lynx__)
+@@ -621,7 +709,7 @@ void TEPty::startPgm(const char* pgm, QV
+ ttmode.c_cc[VINTR] = CTRL('C');
+ ttmode.c_cc[VQUIT] = CTRL('\\');
+ ttmode.c_cc[VERASE] = 0177;
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCSETA,(char *)&ttmode);
+ #else
+ # ifdef _HPUX_SOURCE \ No newline at end of file
diff --git a/x11/kde4-runtime/files/patch-konsole-konsole-konsole_grantpty.c b/x11/kde4-runtime/files/patch-konsole-konsole-konsole_grantpty.c
new file mode 100644
index 000000000000..5093a52d277b
--- /dev/null
+++ b/x11/kde4-runtime/files/patch-konsole-konsole-konsole_grantpty.c
@@ -0,0 +1,62 @@
+--- konsole/konsole/konsole_grantpty.c 2 Sep 2002 01:09:24 -0000 1.7
++++ konsole/konsole/konsole_grantpty.c 24 Aug 2003 21:44:01 -0000
+@@ -40,7 +40,9 @@
+ # include <dirent.h>
+ #endif
+
+-#define PTY_FILENO 3 /* keep in sync with grantpty */
++#define DEFAULT_PTY_FILENO 3 /* keep in sync with TEPty.cpp */
++int PTY_FILENO = DEFAULT_PTY_FILENO;
++
+ #define TTY_GROUP "tty"
+
+ int main (int argc, char *argv[])
+@@ -52,11 +54,13 @@ int main (int argc, char *argv[])
+ uid_t uid;
+ mode_t mod;
+ char* tty;
++ int command_fd; /* which fd to use? */
+
+ /* check preconditions **************************************************/
+- if (argc != 2 || (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
++ if (( (argc != 3) && (argc != 2) /* optional third arg */ ) ||
++ (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
+ {
+- printf("usage: %s (--grant|--revoke)\n",argv[0]);
++ printf("usage: %s (--grant|--revoke) [fd]\n",argv[0]);
+ printf("%s is a helper for\n",argv[0]);
+ printf("konsole and not intented to\n");
+ printf("be called from the command\n");
+@@ -83,6 +87,22 @@ int main (int argc, char *argv[])
+ uid = 0; /* root */
+ mod = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ }
++
++ command_fd = DEFAULT_PTY_FILENO;
++ if (argv[2])
++ {
++ command_fd = atoi(argv[2]);
++ }
++ if (command_fd > 2) /* must be out of stdin,stdout,stderr range */
++ {
++ PTY_FILENO=command_fd;
++ }
++ else
++ {
++ fprintf(stderr,"%s: Bad command fd (seems to be %d)\n",argv[0],command_fd);
++ return 1;
++ }
++
+ /* Get the group ID of the special `tty' group. */
+ p = getgrnam(TTY_GROUP); /* posix */
+ gid = p ? p->gr_gid : getgid (); /* posix */
+@@ -117,6 +137,9 @@ int main (int argc, char *argv[])
+ if (dirp->d_fileno != dsb.st_ino)
+ continue;
+ {
++ /* Else this is the right device file .. any possible memory
++ ** leak here because two files match is unimportant?
++ */
+ int pdlen = strlen(_PATH_DEV), namelen = strlen(dirp->d_name);
+ pty = malloc(pdlen + namelen + 1);
+ if (pty) { \ No newline at end of file
diff --git a/x11/kde4-runtime/files/patch-konsole-konsole-main.cpp b/x11/kde4-runtime/files/patch-konsole-konsole-main.cpp
new file mode 100644
index 000000000000..989b34605258
--- /dev/null
+++ b/x11/kde4-runtime/files/patch-konsole-konsole-main.cpp
@@ -0,0 +1,18 @@
+--- konsole/konsole/main.cpp 29 Jun 2003 21:53:11 -0000 1.243.2.3
++++ konsole/konsole/main.cpp 24 Aug 2003 21:44:02 -0000
+@@ -123,6 +123,7 @@ public:
+ };
+
+
++extern void TEPtyInit();
+
+ /* --| main |------------------------------------------------------ */
+ int main(int argc, char* argv[])
+@@ -137,6 +138,7 @@ int main(int argc, char* argv[])
+ bool scrollbaron = true;
+ QCString wname = PACKAGE;
+
++ TEPtyInit();
+
+ KAboutData aboutData( PACKAGE, I18N_NOOP("Konsole"),
+ VERSION, description, KAboutData::License_GPL_V2,
diff --git a/x11/kde4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kde4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
new file mode 100644
index 000000000000..4f57a705f1f2
--- /dev/null
+++ b/x11/kde4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
@@ -0,0 +1,33 @@
+--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003
++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003
+@@ -168,6 +168,8 @@
+ int mib[4];
+ struct kinfo_proc p;
+ size_t len;
++ size_t buflen = 256;
++ char buf[256];
+
+ if ((ps = findProcessInList(pid)) == 0)
+ {
+@@ -239,10 +241,17 @@
+ #endif
+
+ /* process command line */
+- /* the following line causes segfaults on some FreeBSD systems... why?
+- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
+- */
+- strcpy(ps->cmdline, "????");
++ /* do a sysctl to get the command line args. */
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ARGS;
++ mib[3] = pid;
++
++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen)
++ strcpy(ps->cmdline, "????");
++ else
++ strncpy(ps->cmdline, buf, buflen - 1);
+
+ return (0);
+ }
diff --git a/x11/kde4-runtime/files/plist.base b/x11/kde4-runtime/files/plist.base
index 4f9df2e6d51a..ae0ca83e8cd9 100644
--- a/x11/kde4-runtime/files/plist.base
+++ b/x11/kde4-runtime/files/plist.base
@@ -277,6 +277,8 @@ lib/kde3/kio_imap4.la
lib/kde3/kio_imap4.so
lib/kde3/kio_info.la
lib/kde3/kio_info.so
+lib/kde3/kio_ldap.la
+lib/kde3/kio_ldap.so
lib/kde3/kio_mac.la
lib/kde3/kio_mac.so
lib/kde3/kio_man.la
@@ -2764,6 +2766,7 @@ share/services/imagethumbnail.desktop
share/services/imap4.protocol
share/services/imaps.protocol
share/services/info.protocol
+share/services/ldap.protocol
share/services/kaccess.desktop
share/services/kded/favicons.desktop
share/services/kded/mountwatcher.desktop
diff --git a/x11/kde4-runtime/files/plist.ldap b/x11/kde4-runtime/files/plist.ldap
deleted file mode 100644
index 082395fd0498..000000000000
--- a/x11/kde4-runtime/files/plist.ldap
+++ /dev/null
@@ -1,3 +0,0 @@
-lib/kde3/kio_ldap.la
-lib/kde3/kio_ldap.so
-share/services/ldap.protocol
diff --git a/x11/kde4-runtime/pkg-message b/x11/kde4-runtime/pkg-message
new file mode 100644
index 000000000000..f97e3656f98b
--- /dev/null
+++ b/x11/kde4-runtime/pkg-message
@@ -0,0 +1,11 @@
+This port has installed fonts into %%PREFIX%%/share/fonts
+
+You'll have to add %%PREFIX%%/share/fonts
+to your X font path by either:
+
+$ xset fp+ %%PREFIX%%/share/fonts
+$ xset fp rehash
+
+or by adding it to your X-server configuration file (usually
+/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and
+restarting the X-server.
diff --git a/x11/kde4-workspace/Makefile b/x11/kde4-workspace/Makefile
index c2820dd38b0a..d3157b31a51e 100644
--- a/x11/kde4-workspace/Makefile
+++ b/x11/kde4-workspace/Makefile
@@ -8,6 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src
@@ -22,6 +23,7 @@ USE_KDELIBS_VER=3
PREFIX= ${KDE_PREFIX}
KDE_BUILD_PLIST=yes
+USE_OPENLDAP= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_XPM= yes
@@ -39,12 +41,6 @@ CONFIGURE_ARGS+=--without-java \
.include "${.CURDIR}/../../x11/kde3/Makefile.kde"
.include <bsd.port.pre.mk>
-# This enables kio_ldap (needed by kaddresbook).
-.if defined(WITH_LDAP) || exists($(LOCALBASE)/lib/libldap.so)
-LIB_DEPENDS+= ldap:${PORTSDIR}/net/openldap21-client
-PLIST_APPEND+= plist.ldap
-.endif
-
.if exists(${X11BASE}/include/Xm/Xm.h)
WITH_MOTIF= yes
.endif # exists(${X11BASE}/include/Xm/Xm.h)
@@ -85,5 +81,7 @@ post-install:
${CHMOD} u+s ${PREFIX}/bin/kcheckpass
${CHGRP} kmem ${PREFIX}/bin/ksysguardd && \
${CHMOD} g+s ${PREFIX}/bin/ksysguardd
+ @${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
+ | ${SED} -e 's,%%X11BASE%%,${X11BASE},g'
.include <bsd.port.post.mk>
diff --git a/x11/kde4-workspace/files/patch-configure b/x11/kde4-workspace/files/patch-configure
new file mode 100644
index 000000000000..fcc7afb4565b
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-configure
@@ -0,0 +1,122 @@
+--- configure.orig Sat Aug 23 22:55:38 2003
++++ configure Sat Aug 23 22:57:16 2003
+@@ -33894,8 +33894,67 @@
+ echo "$as_me:$LINENO: result: not found" >&5
+ echo "${ECHO_T}not found" >&6
+
+- { echo "$as_me:$LINENO: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&5
+-echo "$as_me: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&2;}
++
++ echo "$as_me:$LINENO: checking for pkg-config" >&5
++echo $ECHO_N "checking for pkg-config... $ECHO_C" >&6
++ if test -n "$PKGCONFIG"; then
++ kde_cv_path="$PKGCONFIG";
++ else
++ kde_cache=`echo pkg-config | sed 'y%./+-%__p_%'`
++
++ if eval "test \"\${kde_cv_path_$kde_cache+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ kde_cv_path="NONE"
++ dirs="${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin"
++ kde_save_IFS=$IFS
++ IFS=':'
++ for dir in $PATH; do
++ dirs="$dirs $dir"
++ done
++ IFS=$kde_save_IFS
++
++ for dir in $dirs; do
++ if test -x "$dir/pkg-config"; then
++ if test -n ""
++ then
++ evalstr="$dir/pkg-config 2>&1 "
++ if eval $evalstr; then
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ else
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ fi
++ done
++
++ eval "kde_cv_path_$kde_cache=$kde_cv_path"
++
++
++fi
++
++
++ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
++
++ fi
++
++ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
++ echo "$as_me:$LINENO: result: not found" >&5
++echo "${ECHO_T}not found" >&6
++
++ { echo "$as_me:$LINENO: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&5
++echo "$as_me: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&2;}
++
++ else
++ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
++echo "${ECHO_T}$kde_cv_path" >&6
++ PKGCONFIG=$kde_cv_path
++
++ fi
++
+
+ else
+ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+@@ -33905,6 +33964,30 @@
+ fi
+
+
++if test -n "$PKGCONFIG"; then
++ vers=`$PKGCONFIG fontconfig --modversion 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
++ if test -n "$vers" && test "$vers" -ge 1000000
++ then
++ LIBFONTCONFIG_LIBS="`$PKGCONFIG fontconfig --libs`"
++ LIBFONTCONFIG_RPATH=
++ for args in $LIBFONTCONFIG_LIBS; do
++ case $args in
++ -L*)
++ LIBFONTCONFIG_RPATH="$LIBFONTCONFIG_RPATH $args"
++ ;;
++ esac
++ done
++ LIBFONTCONFIG_RPATH=`echo $LIBFONTCONFIG_RPATH | sed -e "s/-L/-R/g"`
++ LIBFONTCONFIG_CFLAGS="`$PKGCONFIG fontconfig --cflags`"
++
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_FONTCONFIG 1
++_ACEOF
++
++ fi
++fi
++
+ if test -n "$FONTCONFIG_CONFIG"; then
+ vers=`$FONTCONFIG_CONFIG --version 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+ if test -n "$vers" && test "$vers" -ge 1000000
+@@ -37753,7 +37836,7 @@
+ do
+ for j in ldap.h;
+ do
+- echo "configure: 37756: $i/$j" >&5
++ echo "configure: 37839: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_incdir=$i
+@@ -37775,7 +37858,7 @@
+ do
+ for j in libldap.$ext;
+ do
+- echo "configure: 37778: $i/$j" >&5
++ echo "configure: 37861: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_libdir=$i
+
diff --git a/x11/kde4-workspace/files/patch-kdm-backend-client.c b/x11/kde4-workspace/files/patch-kdm-backend-client.c
new file mode 100644
index 000000000000..fe44c4f3831c
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-kdm-backend-client.c
@@ -0,0 +1,33 @@
+--- kdm/backend/client.c 18 Jun 2003 20:05:15 -0000 2.25.2.4
++++ kdm/backend/client.c 6 Aug 2003 16:02:39 -0000 2.25.2.5
+@@ -1,5 +1,5 @@
+ /* $TOG: verify.c /main/37 1998/02/11 10:00:45 kaleb $ */
+-/* $Id: client.c,v 2.25.2.4 2003/06/18 20:05:15 ossi Exp $ */
++/* $Id: client.c,v 2.25.2.5 2003/08/06 16:02:39 ossi Exp $ */
+ /*
+
+ Copyright 1988, 1998 The Open Group
+@@ -1009,7 +1009,11 @@ StartClient (struct display *d,
+ exit (1);
+ # endif
+ # ifdef USE_PAM
+- pam_setcred(pamh, 0);
++ if (pam_setcred(pamh, 0) != PAM_SUCCESS) {
++ LogError("pam_setcred for %\"s failed, errno=%d\n",
++ name, errno);
++ exit (1);
++ }
+ /* pass in environment variables set by libpam and modules it called */
+ pam_env = pam_getenvlist(pamh);
+ ReInitErrorLog ();
+@@ -1267,7 +1271,9 @@ SessionExit (struct display *d, int stat
+ #ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+- pam_setcred(pamh, PAM_DELETE_CRED);
++ if (pam_setcred(pamh, PAM_DELETE_CRED) != PAM_SUCCESS)
++ LogError("pam_setcred(DELETE_CRED) for %\"s failed, errno=%d\n",
++ d->verify->user, errno);
+ pam_close_session(pamh, 0);
+ pam_end(pamh, PAM_SUCCESS);
+ pamh = NULL;
diff --git a/x11/kde4-workspace/files/patch-konsole-konsole-TEPty.cpp b/x11/kde4-workspace/files/patch-konsole-konsole-TEPty.cpp
new file mode 100644
index 000000000000..44642dc8aebc
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-konsole-konsole-TEPty.cpp
@@ -0,0 +1,172 @@
+--- konsole/konsole/TEPty.cpp 22 Nov 2002 13:17:57 -0000 1.75
++++ konsole/konsole/TEPty.cpp 24 Aug 2003 21:44:00 -0000
+@@ -65,6 +65,9 @@
+ #include <config.h>
+ #endif
+
++// Get the Q_OS_* defines
++#include <qglobal.h>
++
+ #ifdef __sgi
+ #define __svr4__
+ #endif
+@@ -88,6 +91,10 @@
+ #include <sys/types.h>
+ #endif
+
++#ifdef Q_OS_FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -198,9 +205,30 @@ public:
+
+ FILE* syslog_file = NULL; //stdout;
+
+-#define PTY_FILENO 3
++#define DEFAULT_PTY_FILENO 3
++int PTY_FILENO = -1; // None allocated yet.
++
+ #define BASE_CHOWN "konsole_grantpty"
+
++void TEPtyInit()
++{
++/*
++** FreeBSD can't dup2(fd,3) because fd 3 is already in use by
++** some weird pipe. So instead, we get a new throwaway fd
++** that's not in use by anyone.
++*/
++#ifdef Q_OS_FREEBSD
++ PTY_FILENO = open("/dev/null",O_RDWR);
++ if (PTY_FILENO == -1) {
++ perror("konsole:open PTY");
++ /* This won't work either, but hey .. */
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++ }
++#else
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++#endif
++}
++
+ int chownpty(int fd, bool grant)
+ // param fd: the fd of a master pty.
+ // param grant: true to grant, false to revoke
+@@ -212,6 +240,8 @@ int chownpty(int fd, bool grant)
+ newsa.sa_flags = 0;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
++ if (PTY_FILENO == -1) TEPtyInit();
++
+ pid_t pid = fork();
+ if (pid < 0)
+ {
+@@ -225,7 +255,12 @@ int chownpty(int fd, bool grant)
+ /* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
+ if (fd != PTY_FILENO && dup2(fd, PTY_FILENO) < 0) exit(1);
+ QString path = locate("exe", BASE_CHOWN);
+- execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", NULL, NULL);
++ /*
++ ** Because konsole_grantpty now can't expect the fd
++ ** to be constant, we need an additional parameter.
++ */
++ QString fdnumber = QString::number(PTY_FILENO);
++ execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", fdnumber.ascii(), NULL, NULL);
+ exit(1); // should not be reached
+ }
+
+@@ -486,6 +521,16 @@ int TEPty::makePty(bool _addutmp)
+ // open and set all standard files to slave tty
+ int tt = m_SlaveFd; // Already opened?
+
++#ifdef Q_OS_FREEBSD
++ /*
++ ** It seems to be possible for SlaveFd to be closed in error
++ ** somewhere along the line. So check it for "liveness".
++ */
++ struct stat sb;
++ if (fstat(tt,&sb)!=0)
++ tt=-1; // Apparently not alive.
++#endif
++
+ if (tt < 0)
+ tt = open(ttynam, O_RDWR);
+
+@@ -524,14 +569,57 @@ int TEPty::makePty(bool _addutmp)
+ }
+ strncpy(l_struct.ut_name, str_ptr, UT_NAMESIZE);
+
++#ifdef Q_OS_FREEBSD
++ /* FreeBSD until august 22, 2003 returned ENOMEM for too-long
++ ** hostnames. Then sanity prevailed (?) and the error was changed
++ ** to NAMETOOLONG, but this breaks konsole .. again.
++ **
++ ** Instead of bailing out with long hostnames, put in partial
++ ** hostnames (the first UT_HOSTSIZE characters) instead.
++ */
++ char hostnamebuffer[MAXHOSTNAMELEN+1];
++ memset(hostnamebuffer,0,MAXHOSTNAMELEN+1);
++ if (gethostname(hostnamebuffer, MAXHOSTNAMELEN) == -1)
++ {
++ if ( (errno==ENOMEM) || (errno==ENAMETOOLONG) ) {
++ /* ignore it, but very odd */
++ }
++ else {
++ /* Not much chance of this being visible anywhere ... */
++ perror("konsole:gethostname");
++ abort();
++ }
++ }
++ /* Copy hostname, possibly only partially */
++ memset(l_struct.ut_host,0,UT_HOSTSIZE);
++ strncpy(l_struct.ut_host,hostnamebuffer,UT_HOSTSIZE);
++ l_struct.ut_host[UT_HOSTSIZE]=0;
++#else
++ /* Non-FreeBSD systems */
+ if (gethostname(l_struct.ut_host, UT_HOSTSIZE) == -1) {
+- if (errno != ENOMEM)
++ if (errno != ENOMEM)
+ abort();
+ l_struct.ut_host[UT_HOSTSIZE]=0;
+ }
++#endif
+
+ if (! (str_ptr=ttyname(tt)) ) {
++#ifdef Q_OS_FREEBSD
++ /*
++ ** In FreeBSD, the ttyname() call always returns NULL
++ ** for the kinds of devices (ptys) we have opened,
++ ** so don't abort, use a foolish default value instead.
++ ** The call to login() probably won't work _anyway_,
++ ** since normally users can't update the wtmp file.
++ **
++ ** If we were real sticklers for accuracy, we'd copy the
++ ** code from konsole_grantpty that does it's darndest to
++ ** file out the right tty name.
++ */
++ str_ptr = const_cast<char *>("/dev/konsole");
++#else
+ abort();
++#endif
+ }
+ if (strncmp(str_ptr, "/dev/", 5) == 0)
+ str_ptr += 5;
+@@ -607,7 +695,7 @@ void TEPty::startPgm(const char* pgm, QV
+ // #define CERASE 0177
+ // #endif
+
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCGETA,(char *)&ttmode);
+ #else
+ # if defined (_HPUX_SOURCE) || defined(__Lynx__)
+@@ -621,7 +709,7 @@ void TEPty::startPgm(const char* pgm, QV
+ ttmode.c_cc[VINTR] = CTRL('C');
+ ttmode.c_cc[VQUIT] = CTRL('\\');
+ ttmode.c_cc[VERASE] = 0177;
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCSETA,(char *)&ttmode);
+ #else
+ # ifdef _HPUX_SOURCE \ No newline at end of file
diff --git a/x11/kde4-workspace/files/patch-konsole-konsole-konsole_grantpty.c b/x11/kde4-workspace/files/patch-konsole-konsole-konsole_grantpty.c
new file mode 100644
index 000000000000..5093a52d277b
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-konsole-konsole-konsole_grantpty.c
@@ -0,0 +1,62 @@
+--- konsole/konsole/konsole_grantpty.c 2 Sep 2002 01:09:24 -0000 1.7
++++ konsole/konsole/konsole_grantpty.c 24 Aug 2003 21:44:01 -0000
+@@ -40,7 +40,9 @@
+ # include <dirent.h>
+ #endif
+
+-#define PTY_FILENO 3 /* keep in sync with grantpty */
++#define DEFAULT_PTY_FILENO 3 /* keep in sync with TEPty.cpp */
++int PTY_FILENO = DEFAULT_PTY_FILENO;
++
+ #define TTY_GROUP "tty"
+
+ int main (int argc, char *argv[])
+@@ -52,11 +54,13 @@ int main (int argc, char *argv[])
+ uid_t uid;
+ mode_t mod;
+ char* tty;
++ int command_fd; /* which fd to use? */
+
+ /* check preconditions **************************************************/
+- if (argc != 2 || (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
++ if (( (argc != 3) && (argc != 2) /* optional third arg */ ) ||
++ (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
+ {
+- printf("usage: %s (--grant|--revoke)\n",argv[0]);
++ printf("usage: %s (--grant|--revoke) [fd]\n",argv[0]);
+ printf("%s is a helper for\n",argv[0]);
+ printf("konsole and not intented to\n");
+ printf("be called from the command\n");
+@@ -83,6 +87,22 @@ int main (int argc, char *argv[])
+ uid = 0; /* root */
+ mod = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ }
++
++ command_fd = DEFAULT_PTY_FILENO;
++ if (argv[2])
++ {
++ command_fd = atoi(argv[2]);
++ }
++ if (command_fd > 2) /* must be out of stdin,stdout,stderr range */
++ {
++ PTY_FILENO=command_fd;
++ }
++ else
++ {
++ fprintf(stderr,"%s: Bad command fd (seems to be %d)\n",argv[0],command_fd);
++ return 1;
++ }
++
+ /* Get the group ID of the special `tty' group. */
+ p = getgrnam(TTY_GROUP); /* posix */
+ gid = p ? p->gr_gid : getgid (); /* posix */
+@@ -117,6 +137,9 @@ int main (int argc, char *argv[])
+ if (dirp->d_fileno != dsb.st_ino)
+ continue;
+ {
++ /* Else this is the right device file .. any possible memory
++ ** leak here because two files match is unimportant?
++ */
+ int pdlen = strlen(_PATH_DEV), namelen = strlen(dirp->d_name);
+ pty = malloc(pdlen + namelen + 1);
+ if (pty) { \ No newline at end of file
diff --git a/x11/kde4-workspace/files/patch-konsole-konsole-main.cpp b/x11/kde4-workspace/files/patch-konsole-konsole-main.cpp
new file mode 100644
index 000000000000..989b34605258
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-konsole-konsole-main.cpp
@@ -0,0 +1,18 @@
+--- konsole/konsole/main.cpp 29 Jun 2003 21:53:11 -0000 1.243.2.3
++++ konsole/konsole/main.cpp 24 Aug 2003 21:44:02 -0000
+@@ -123,6 +123,7 @@ public:
+ };
+
+
++extern void TEPtyInit();
+
+ /* --| main |------------------------------------------------------ */
+ int main(int argc, char* argv[])
+@@ -137,6 +138,7 @@ int main(int argc, char* argv[])
+ bool scrollbaron = true;
+ QCString wname = PACKAGE;
+
++ TEPtyInit();
+
+ KAboutData aboutData( PACKAGE, I18N_NOOP("Konsole"),
+ VERSION, description, KAboutData::License_GPL_V2,
diff --git a/x11/kde4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kde4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
new file mode 100644
index 000000000000..4f57a705f1f2
--- /dev/null
+++ b/x11/kde4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
@@ -0,0 +1,33 @@
+--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003
++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003
+@@ -168,6 +168,8 @@
+ int mib[4];
+ struct kinfo_proc p;
+ size_t len;
++ size_t buflen = 256;
++ char buf[256];
+
+ if ((ps = findProcessInList(pid)) == 0)
+ {
+@@ -239,10 +241,17 @@
+ #endif
+
+ /* process command line */
+- /* the following line causes segfaults on some FreeBSD systems... why?
+- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
+- */
+- strcpy(ps->cmdline, "????");
++ /* do a sysctl to get the command line args. */
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ARGS;
++ mib[3] = pid;
++
++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen)
++ strcpy(ps->cmdline, "????");
++ else
++ strncpy(ps->cmdline, buf, buflen - 1);
+
+ return (0);
+ }
diff --git a/x11/kde4-workspace/files/plist.base b/x11/kde4-workspace/files/plist.base
index 4f9df2e6d51a..ae0ca83e8cd9 100644
--- a/x11/kde4-workspace/files/plist.base
+++ b/x11/kde4-workspace/files/plist.base
@@ -277,6 +277,8 @@ lib/kde3/kio_imap4.la
lib/kde3/kio_imap4.so
lib/kde3/kio_info.la
lib/kde3/kio_info.so
+lib/kde3/kio_ldap.la
+lib/kde3/kio_ldap.so
lib/kde3/kio_mac.la
lib/kde3/kio_mac.so
lib/kde3/kio_man.la
@@ -2764,6 +2766,7 @@ share/services/imagethumbnail.desktop
share/services/imap4.protocol
share/services/imaps.protocol
share/services/info.protocol
+share/services/ldap.protocol
share/services/kaccess.desktop
share/services/kded/favicons.desktop
share/services/kded/mountwatcher.desktop
diff --git a/x11/kde4-workspace/files/plist.ldap b/x11/kde4-workspace/files/plist.ldap
deleted file mode 100644
index 082395fd0498..000000000000
--- a/x11/kde4-workspace/files/plist.ldap
+++ /dev/null
@@ -1,3 +0,0 @@
-lib/kde3/kio_ldap.la
-lib/kde3/kio_ldap.so
-share/services/ldap.protocol
diff --git a/x11/kde4-workspace/pkg-message b/x11/kde4-workspace/pkg-message
new file mode 100644
index 000000000000..f97e3656f98b
--- /dev/null
+++ b/x11/kde4-workspace/pkg-message
@@ -0,0 +1,11 @@
+This port has installed fonts into %%PREFIX%%/share/fonts
+
+You'll have to add %%PREFIX%%/share/fonts
+to your X font path by either:
+
+$ xset fp+ %%PREFIX%%/share/fonts
+$ xset fp rehash
+
+or by adding it to your X-server configuration file (usually
+/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and
+restarting the X-server.
diff --git a/x11/kdebase3/Makefile b/x11/kdebase3/Makefile
index c2820dd38b0a..d3157b31a51e 100644
--- a/x11/kdebase3/Makefile
+++ b/x11/kdebase3/Makefile
@@ -8,6 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src
@@ -22,6 +23,7 @@ USE_KDELIBS_VER=3
PREFIX= ${KDE_PREFIX}
KDE_BUILD_PLIST=yes
+USE_OPENLDAP= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_XPM= yes
@@ -39,12 +41,6 @@ CONFIGURE_ARGS+=--without-java \
.include "${.CURDIR}/../../x11/kde3/Makefile.kde"
.include <bsd.port.pre.mk>
-# This enables kio_ldap (needed by kaddresbook).
-.if defined(WITH_LDAP) || exists($(LOCALBASE)/lib/libldap.so)
-LIB_DEPENDS+= ldap:${PORTSDIR}/net/openldap21-client
-PLIST_APPEND+= plist.ldap
-.endif
-
.if exists(${X11BASE}/include/Xm/Xm.h)
WITH_MOTIF= yes
.endif # exists(${X11BASE}/include/Xm/Xm.h)
@@ -85,5 +81,7 @@ post-install:
${CHMOD} u+s ${PREFIX}/bin/kcheckpass
${CHGRP} kmem ${PREFIX}/bin/ksysguardd && \
${CHMOD} g+s ${PREFIX}/bin/ksysguardd
+ @${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
+ | ${SED} -e 's,%%X11BASE%%,${X11BASE},g'
.include <bsd.port.post.mk>
diff --git a/x11/kdebase3/files/patch-configure b/x11/kdebase3/files/patch-configure
new file mode 100644
index 000000000000..fcc7afb4565b
--- /dev/null
+++ b/x11/kdebase3/files/patch-configure
@@ -0,0 +1,122 @@
+--- configure.orig Sat Aug 23 22:55:38 2003
++++ configure Sat Aug 23 22:57:16 2003
+@@ -33894,8 +33894,67 @@
+ echo "$as_me:$LINENO: result: not found" >&5
+ echo "${ECHO_T}not found" >&6
+
+- { echo "$as_me:$LINENO: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&5
+-echo "$as_me: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&2;}
++
++ echo "$as_me:$LINENO: checking for pkg-config" >&5
++echo $ECHO_N "checking for pkg-config... $ECHO_C" >&6
++ if test -n "$PKGCONFIG"; then
++ kde_cv_path="$PKGCONFIG";
++ else
++ kde_cache=`echo pkg-config | sed 'y%./+-%__p_%'`
++
++ if eval "test \"\${kde_cv_path_$kde_cache+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ kde_cv_path="NONE"
++ dirs="${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin"
++ kde_save_IFS=$IFS
++ IFS=':'
++ for dir in $PATH; do
++ dirs="$dirs $dir"
++ done
++ IFS=$kde_save_IFS
++
++ for dir in $dirs; do
++ if test -x "$dir/pkg-config"; then
++ if test -n ""
++ then
++ evalstr="$dir/pkg-config 2>&1 "
++ if eval $evalstr; then
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ else
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ fi
++ done
++
++ eval "kde_cv_path_$kde_cache=$kde_cv_path"
++
++
++fi
++
++
++ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
++
++ fi
++
++ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
++ echo "$as_me:$LINENO: result: not found" >&5
++echo "${ECHO_T}not found" >&6
++
++ { echo "$as_me:$LINENO: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&5
++echo "$as_me: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&2;}
++
++ else
++ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
++echo "${ECHO_T}$kde_cv_path" >&6
++ PKGCONFIG=$kde_cv_path
++
++ fi
++
+
+ else
+ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+@@ -33905,6 +33964,30 @@
+ fi
+
+
++if test -n "$PKGCONFIG"; then
++ vers=`$PKGCONFIG fontconfig --modversion 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
++ if test -n "$vers" && test "$vers" -ge 1000000
++ then
++ LIBFONTCONFIG_LIBS="`$PKGCONFIG fontconfig --libs`"
++ LIBFONTCONFIG_RPATH=
++ for args in $LIBFONTCONFIG_LIBS; do
++ case $args in
++ -L*)
++ LIBFONTCONFIG_RPATH="$LIBFONTCONFIG_RPATH $args"
++ ;;
++ esac
++ done
++ LIBFONTCONFIG_RPATH=`echo $LIBFONTCONFIG_RPATH | sed -e "s/-L/-R/g"`
++ LIBFONTCONFIG_CFLAGS="`$PKGCONFIG fontconfig --cflags`"
++
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_FONTCONFIG 1
++_ACEOF
++
++ fi
++fi
++
+ if test -n "$FONTCONFIG_CONFIG"; then
+ vers=`$FONTCONFIG_CONFIG --version 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+ if test -n "$vers" && test "$vers" -ge 1000000
+@@ -37753,7 +37836,7 @@
+ do
+ for j in ldap.h;
+ do
+- echo "configure: 37756: $i/$j" >&5
++ echo "configure: 37839: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_incdir=$i
+@@ -37775,7 +37858,7 @@
+ do
+ for j in libldap.$ext;
+ do
+- echo "configure: 37778: $i/$j" >&5
++ echo "configure: 37861: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_libdir=$i
+
diff --git a/x11/kdebase3/files/patch-kdm-backend-client.c b/x11/kdebase3/files/patch-kdm-backend-client.c
new file mode 100644
index 000000000000..fe44c4f3831c
--- /dev/null
+++ b/x11/kdebase3/files/patch-kdm-backend-client.c
@@ -0,0 +1,33 @@
+--- kdm/backend/client.c 18 Jun 2003 20:05:15 -0000 2.25.2.4
++++ kdm/backend/client.c 6 Aug 2003 16:02:39 -0000 2.25.2.5
+@@ -1,5 +1,5 @@
+ /* $TOG: verify.c /main/37 1998/02/11 10:00:45 kaleb $ */
+-/* $Id: client.c,v 2.25.2.4 2003/06/18 20:05:15 ossi Exp $ */
++/* $Id: client.c,v 2.25.2.5 2003/08/06 16:02:39 ossi Exp $ */
+ /*
+
+ Copyright 1988, 1998 The Open Group
+@@ -1009,7 +1009,11 @@ StartClient (struct display *d,
+ exit (1);
+ # endif
+ # ifdef USE_PAM
+- pam_setcred(pamh, 0);
++ if (pam_setcred(pamh, 0) != PAM_SUCCESS) {
++ LogError("pam_setcred for %\"s failed, errno=%d\n",
++ name, errno);
++ exit (1);
++ }
+ /* pass in environment variables set by libpam and modules it called */
+ pam_env = pam_getenvlist(pamh);
+ ReInitErrorLog ();
+@@ -1267,7 +1271,9 @@ SessionExit (struct display *d, int stat
+ #ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+- pam_setcred(pamh, PAM_DELETE_CRED);
++ if (pam_setcred(pamh, PAM_DELETE_CRED) != PAM_SUCCESS)
++ LogError("pam_setcred(DELETE_CRED) for %\"s failed, errno=%d\n",
++ d->verify->user, errno);
+ pam_close_session(pamh, 0);
+ pam_end(pamh, PAM_SUCCESS);
+ pamh = NULL;
diff --git a/x11/kdebase3/files/patch-konsole-konsole-TEPty.cpp b/x11/kdebase3/files/patch-konsole-konsole-TEPty.cpp
new file mode 100644
index 000000000000..44642dc8aebc
--- /dev/null
+++ b/x11/kdebase3/files/patch-konsole-konsole-TEPty.cpp
@@ -0,0 +1,172 @@
+--- konsole/konsole/TEPty.cpp 22 Nov 2002 13:17:57 -0000 1.75
++++ konsole/konsole/TEPty.cpp 24 Aug 2003 21:44:00 -0000
+@@ -65,6 +65,9 @@
+ #include <config.h>
+ #endif
+
++// Get the Q_OS_* defines
++#include <qglobal.h>
++
+ #ifdef __sgi
+ #define __svr4__
+ #endif
+@@ -88,6 +91,10 @@
+ #include <sys/types.h>
+ #endif
+
++#ifdef Q_OS_FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -198,9 +205,30 @@ public:
+
+ FILE* syslog_file = NULL; //stdout;
+
+-#define PTY_FILENO 3
++#define DEFAULT_PTY_FILENO 3
++int PTY_FILENO = -1; // None allocated yet.
++
+ #define BASE_CHOWN "konsole_grantpty"
+
++void TEPtyInit()
++{
++/*
++** FreeBSD can't dup2(fd,3) because fd 3 is already in use by
++** some weird pipe. So instead, we get a new throwaway fd
++** that's not in use by anyone.
++*/
++#ifdef Q_OS_FREEBSD
++ PTY_FILENO = open("/dev/null",O_RDWR);
++ if (PTY_FILENO == -1) {
++ perror("konsole:open PTY");
++ /* This won't work either, but hey .. */
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++ }
++#else
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++#endif
++}
++
+ int chownpty(int fd, bool grant)
+ // param fd: the fd of a master pty.
+ // param grant: true to grant, false to revoke
+@@ -212,6 +240,8 @@ int chownpty(int fd, bool grant)
+ newsa.sa_flags = 0;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
++ if (PTY_FILENO == -1) TEPtyInit();
++
+ pid_t pid = fork();
+ if (pid < 0)
+ {
+@@ -225,7 +255,12 @@ int chownpty(int fd, bool grant)
+ /* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
+ if (fd != PTY_FILENO && dup2(fd, PTY_FILENO) < 0) exit(1);
+ QString path = locate("exe", BASE_CHOWN);
+- execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", NULL, NULL);
++ /*
++ ** Because konsole_grantpty now can't expect the fd
++ ** to be constant, we need an additional parameter.
++ */
++ QString fdnumber = QString::number(PTY_FILENO);
++ execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", fdnumber.ascii(), NULL, NULL);
+ exit(1); // should not be reached
+ }
+
+@@ -486,6 +521,16 @@ int TEPty::makePty(bool _addutmp)
+ // open and set all standard files to slave tty
+ int tt = m_SlaveFd; // Already opened?
+
++#ifdef Q_OS_FREEBSD
++ /*
++ ** It seems to be possible for SlaveFd to be closed in error
++ ** somewhere along the line. So check it for "liveness".
++ */
++ struct stat sb;
++ if (fstat(tt,&sb)!=0)
++ tt=-1; // Apparently not alive.
++#endif
++
+ if (tt < 0)
+ tt = open(ttynam, O_RDWR);
+
+@@ -524,14 +569,57 @@ int TEPty::makePty(bool _addutmp)
+ }
+ strncpy(l_struct.ut_name, str_ptr, UT_NAMESIZE);
+
++#ifdef Q_OS_FREEBSD
++ /* FreeBSD until august 22, 2003 returned ENOMEM for too-long
++ ** hostnames. Then sanity prevailed (?) and the error was changed
++ ** to NAMETOOLONG, but this breaks konsole .. again.
++ **
++ ** Instead of bailing out with long hostnames, put in partial
++ ** hostnames (the first UT_HOSTSIZE characters) instead.
++ */
++ char hostnamebuffer[MAXHOSTNAMELEN+1];
++ memset(hostnamebuffer,0,MAXHOSTNAMELEN+1);
++ if (gethostname(hostnamebuffer, MAXHOSTNAMELEN) == -1)
++ {
++ if ( (errno==ENOMEM) || (errno==ENAMETOOLONG) ) {
++ /* ignore it, but very odd */
++ }
++ else {
++ /* Not much chance of this being visible anywhere ... */
++ perror("konsole:gethostname");
++ abort();
++ }
++ }
++ /* Copy hostname, possibly only partially */
++ memset(l_struct.ut_host,0,UT_HOSTSIZE);
++ strncpy(l_struct.ut_host,hostnamebuffer,UT_HOSTSIZE);
++ l_struct.ut_host[UT_HOSTSIZE]=0;
++#else
++ /* Non-FreeBSD systems */
+ if (gethostname(l_struct.ut_host, UT_HOSTSIZE) == -1) {
+- if (errno != ENOMEM)
++ if (errno != ENOMEM)
+ abort();
+ l_struct.ut_host[UT_HOSTSIZE]=0;
+ }
++#endif
+
+ if (! (str_ptr=ttyname(tt)) ) {
++#ifdef Q_OS_FREEBSD
++ /*
++ ** In FreeBSD, the ttyname() call always returns NULL
++ ** for the kinds of devices (ptys) we have opened,
++ ** so don't abort, use a foolish default value instead.
++ ** The call to login() probably won't work _anyway_,
++ ** since normally users can't update the wtmp file.
++ **
++ ** If we were real sticklers for accuracy, we'd copy the
++ ** code from konsole_grantpty that does it's darndest to
++ ** file out the right tty name.
++ */
++ str_ptr = const_cast<char *>("/dev/konsole");
++#else
+ abort();
++#endif
+ }
+ if (strncmp(str_ptr, "/dev/", 5) == 0)
+ str_ptr += 5;
+@@ -607,7 +695,7 @@ void TEPty::startPgm(const char* pgm, QV
+ // #define CERASE 0177
+ // #endif
+
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCGETA,(char *)&ttmode);
+ #else
+ # if defined (_HPUX_SOURCE) || defined(__Lynx__)
+@@ -621,7 +709,7 @@ void TEPty::startPgm(const char* pgm, QV
+ ttmode.c_cc[VINTR] = CTRL('C');
+ ttmode.c_cc[VQUIT] = CTRL('\\');
+ ttmode.c_cc[VERASE] = 0177;
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCSETA,(char *)&ttmode);
+ #else
+ # ifdef _HPUX_SOURCE \ No newline at end of file
diff --git a/x11/kdebase3/files/patch-konsole-konsole-konsole_grantpty.c b/x11/kdebase3/files/patch-konsole-konsole-konsole_grantpty.c
new file mode 100644
index 000000000000..5093a52d277b
--- /dev/null
+++ b/x11/kdebase3/files/patch-konsole-konsole-konsole_grantpty.c
@@ -0,0 +1,62 @@
+--- konsole/konsole/konsole_grantpty.c 2 Sep 2002 01:09:24 -0000 1.7
++++ konsole/konsole/konsole_grantpty.c 24 Aug 2003 21:44:01 -0000
+@@ -40,7 +40,9 @@
+ # include <dirent.h>
+ #endif
+
+-#define PTY_FILENO 3 /* keep in sync with grantpty */
++#define DEFAULT_PTY_FILENO 3 /* keep in sync with TEPty.cpp */
++int PTY_FILENO = DEFAULT_PTY_FILENO;
++
+ #define TTY_GROUP "tty"
+
+ int main (int argc, char *argv[])
+@@ -52,11 +54,13 @@ int main (int argc, char *argv[])
+ uid_t uid;
+ mode_t mod;
+ char* tty;
++ int command_fd; /* which fd to use? */
+
+ /* check preconditions **************************************************/
+- if (argc != 2 || (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
++ if (( (argc != 3) && (argc != 2) /* optional third arg */ ) ||
++ (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
+ {
+- printf("usage: %s (--grant|--revoke)\n",argv[0]);
++ printf("usage: %s (--grant|--revoke) [fd]\n",argv[0]);
+ printf("%s is a helper for\n",argv[0]);
+ printf("konsole and not intented to\n");
+ printf("be called from the command\n");
+@@ -83,6 +87,22 @@ int main (int argc, char *argv[])
+ uid = 0; /* root */
+ mod = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ }
++
++ command_fd = DEFAULT_PTY_FILENO;
++ if (argv[2])
++ {
++ command_fd = atoi(argv[2]);
++ }
++ if (command_fd > 2) /* must be out of stdin,stdout,stderr range */
++ {
++ PTY_FILENO=command_fd;
++ }
++ else
++ {
++ fprintf(stderr,"%s: Bad command fd (seems to be %d)\n",argv[0],command_fd);
++ return 1;
++ }
++
+ /* Get the group ID of the special `tty' group. */
+ p = getgrnam(TTY_GROUP); /* posix */
+ gid = p ? p->gr_gid : getgid (); /* posix */
+@@ -117,6 +137,9 @@ int main (int argc, char *argv[])
+ if (dirp->d_fileno != dsb.st_ino)
+ continue;
+ {
++ /* Else this is the right device file .. any possible memory
++ ** leak here because two files match is unimportant?
++ */
+ int pdlen = strlen(_PATH_DEV), namelen = strlen(dirp->d_name);
+ pty = malloc(pdlen + namelen + 1);
+ if (pty) { \ No newline at end of file
diff --git a/x11/kdebase3/files/patch-konsole-konsole-main.cpp b/x11/kdebase3/files/patch-konsole-konsole-main.cpp
new file mode 100644
index 000000000000..989b34605258
--- /dev/null
+++ b/x11/kdebase3/files/patch-konsole-konsole-main.cpp
@@ -0,0 +1,18 @@
+--- konsole/konsole/main.cpp 29 Jun 2003 21:53:11 -0000 1.243.2.3
++++ konsole/konsole/main.cpp 24 Aug 2003 21:44:02 -0000
+@@ -123,6 +123,7 @@ public:
+ };
+
+
++extern void TEPtyInit();
+
+ /* --| main |------------------------------------------------------ */
+ int main(int argc, char* argv[])
+@@ -137,6 +138,7 @@ int main(int argc, char* argv[])
+ bool scrollbaron = true;
+ QCString wname = PACKAGE;
+
++ TEPtyInit();
+
+ KAboutData aboutData( PACKAGE, I18N_NOOP("Konsole"),
+ VERSION, description, KAboutData::License_GPL_V2,
diff --git a/x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
new file mode 100644
index 000000000000..4f57a705f1f2
--- /dev/null
+++ b/x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
@@ -0,0 +1,33 @@
+--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003
++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003
+@@ -168,6 +168,8 @@
+ int mib[4];
+ struct kinfo_proc p;
+ size_t len;
++ size_t buflen = 256;
++ char buf[256];
+
+ if ((ps = findProcessInList(pid)) == 0)
+ {
+@@ -239,10 +241,17 @@
+ #endif
+
+ /* process command line */
+- /* the following line causes segfaults on some FreeBSD systems... why?
+- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
+- */
+- strcpy(ps->cmdline, "????");
++ /* do a sysctl to get the command line args. */
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ARGS;
++ mib[3] = pid;
++
++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen)
++ strcpy(ps->cmdline, "????");
++ else
++ strncpy(ps->cmdline, buf, buflen - 1);
+
+ return (0);
+ }
diff --git a/x11/kdebase3/files/plist.base b/x11/kdebase3/files/plist.base
index 4f9df2e6d51a..ae0ca83e8cd9 100644
--- a/x11/kdebase3/files/plist.base
+++ b/x11/kdebase3/files/plist.base
@@ -277,6 +277,8 @@ lib/kde3/kio_imap4.la
lib/kde3/kio_imap4.so
lib/kde3/kio_info.la
lib/kde3/kio_info.so
+lib/kde3/kio_ldap.la
+lib/kde3/kio_ldap.so
lib/kde3/kio_mac.la
lib/kde3/kio_mac.so
lib/kde3/kio_man.la
@@ -2764,6 +2766,7 @@ share/services/imagethumbnail.desktop
share/services/imap4.protocol
share/services/imaps.protocol
share/services/info.protocol
+share/services/ldap.protocol
share/services/kaccess.desktop
share/services/kded/favicons.desktop
share/services/kded/mountwatcher.desktop
diff --git a/x11/kdebase3/files/plist.ldap b/x11/kdebase3/files/plist.ldap
deleted file mode 100644
index 082395fd0498..000000000000
--- a/x11/kdebase3/files/plist.ldap
+++ /dev/null
@@ -1,3 +0,0 @@
-lib/kde3/kio_ldap.la
-lib/kde3/kio_ldap.so
-share/services/ldap.protocol
diff --git a/x11/kdebase3/pkg-message b/x11/kdebase3/pkg-message
new file mode 100644
index 000000000000..f97e3656f98b
--- /dev/null
+++ b/x11/kdebase3/pkg-message
@@ -0,0 +1,11 @@
+This port has installed fonts into %%PREFIX%%/share/fonts
+
+You'll have to add %%PREFIX%%/share/fonts
+to your X font path by either:
+
+$ xset fp+ %%PREFIX%%/share/fonts
+$ xset fp rehash
+
+or by adding it to your X-server configuration file (usually
+/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and
+restarting the X-server.
diff --git a/x11/kdebase4-runtime/Makefile b/x11/kdebase4-runtime/Makefile
index c2820dd38b0a..d3157b31a51e 100644
--- a/x11/kdebase4-runtime/Makefile
+++ b/x11/kdebase4-runtime/Makefile
@@ -8,6 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src
@@ -22,6 +23,7 @@ USE_KDELIBS_VER=3
PREFIX= ${KDE_PREFIX}
KDE_BUILD_PLIST=yes
+USE_OPENLDAP= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_XPM= yes
@@ -39,12 +41,6 @@ CONFIGURE_ARGS+=--without-java \
.include "${.CURDIR}/../../x11/kde3/Makefile.kde"
.include <bsd.port.pre.mk>
-# This enables kio_ldap (needed by kaddresbook).
-.if defined(WITH_LDAP) || exists($(LOCALBASE)/lib/libldap.so)
-LIB_DEPENDS+= ldap:${PORTSDIR}/net/openldap21-client
-PLIST_APPEND+= plist.ldap
-.endif
-
.if exists(${X11BASE}/include/Xm/Xm.h)
WITH_MOTIF= yes
.endif # exists(${X11BASE}/include/Xm/Xm.h)
@@ -85,5 +81,7 @@ post-install:
${CHMOD} u+s ${PREFIX}/bin/kcheckpass
${CHGRP} kmem ${PREFIX}/bin/ksysguardd && \
${CHMOD} g+s ${PREFIX}/bin/ksysguardd
+ @${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
+ | ${SED} -e 's,%%X11BASE%%,${X11BASE},g'
.include <bsd.port.post.mk>
diff --git a/x11/kdebase4-runtime/files/patch-configure b/x11/kdebase4-runtime/files/patch-configure
new file mode 100644
index 000000000000..fcc7afb4565b
--- /dev/null
+++ b/x11/kdebase4-runtime/files/patch-configure
@@ -0,0 +1,122 @@
+--- configure.orig Sat Aug 23 22:55:38 2003
++++ configure Sat Aug 23 22:57:16 2003
+@@ -33894,8 +33894,67 @@
+ echo "$as_me:$LINENO: result: not found" >&5
+ echo "${ECHO_T}not found" >&6
+
+- { echo "$as_me:$LINENO: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&5
+-echo "$as_me: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&2;}
++
++ echo "$as_me:$LINENO: checking for pkg-config" >&5
++echo $ECHO_N "checking for pkg-config... $ECHO_C" >&6
++ if test -n "$PKGCONFIG"; then
++ kde_cv_path="$PKGCONFIG";
++ else
++ kde_cache=`echo pkg-config | sed 'y%./+-%__p_%'`
++
++ if eval "test \"\${kde_cv_path_$kde_cache+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ kde_cv_path="NONE"
++ dirs="${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin"
++ kde_save_IFS=$IFS
++ IFS=':'
++ for dir in $PATH; do
++ dirs="$dirs $dir"
++ done
++ IFS=$kde_save_IFS
++
++ for dir in $dirs; do
++ if test -x "$dir/pkg-config"; then
++ if test -n ""
++ then
++ evalstr="$dir/pkg-config 2>&1 "
++ if eval $evalstr; then
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ else
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ fi
++ done
++
++ eval "kde_cv_path_$kde_cache=$kde_cv_path"
++
++
++fi
++
++
++ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
++
++ fi
++
++ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
++ echo "$as_me:$LINENO: result: not found" >&5
++echo "${ECHO_T}not found" >&6
++
++ { echo "$as_me:$LINENO: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&5
++echo "$as_me: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&2;}
++
++ else
++ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
++echo "${ECHO_T}$kde_cv_path" >&6
++ PKGCONFIG=$kde_cv_path
++
++ fi
++
+
+ else
+ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+@@ -33905,6 +33964,30 @@
+ fi
+
+
++if test -n "$PKGCONFIG"; then
++ vers=`$PKGCONFIG fontconfig --modversion 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
++ if test -n "$vers" && test "$vers" -ge 1000000
++ then
++ LIBFONTCONFIG_LIBS="`$PKGCONFIG fontconfig --libs`"
++ LIBFONTCONFIG_RPATH=
++ for args in $LIBFONTCONFIG_LIBS; do
++ case $args in
++ -L*)
++ LIBFONTCONFIG_RPATH="$LIBFONTCONFIG_RPATH $args"
++ ;;
++ esac
++ done
++ LIBFONTCONFIG_RPATH=`echo $LIBFONTCONFIG_RPATH | sed -e "s/-L/-R/g"`
++ LIBFONTCONFIG_CFLAGS="`$PKGCONFIG fontconfig --cflags`"
++
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_FONTCONFIG 1
++_ACEOF
++
++ fi
++fi
++
+ if test -n "$FONTCONFIG_CONFIG"; then
+ vers=`$FONTCONFIG_CONFIG --version 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+ if test -n "$vers" && test "$vers" -ge 1000000
+@@ -37753,7 +37836,7 @@
+ do
+ for j in ldap.h;
+ do
+- echo "configure: 37756: $i/$j" >&5
++ echo "configure: 37839: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_incdir=$i
+@@ -37775,7 +37858,7 @@
+ do
+ for j in libldap.$ext;
+ do
+- echo "configure: 37778: $i/$j" >&5
++ echo "configure: 37861: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_libdir=$i
+
diff --git a/x11/kdebase4-runtime/files/patch-kdm-backend-client.c b/x11/kdebase4-runtime/files/patch-kdm-backend-client.c
new file mode 100644
index 000000000000..fe44c4f3831c
--- /dev/null
+++ b/x11/kdebase4-runtime/files/patch-kdm-backend-client.c
@@ -0,0 +1,33 @@
+--- kdm/backend/client.c 18 Jun 2003 20:05:15 -0000 2.25.2.4
++++ kdm/backend/client.c 6 Aug 2003 16:02:39 -0000 2.25.2.5
+@@ -1,5 +1,5 @@
+ /* $TOG: verify.c /main/37 1998/02/11 10:00:45 kaleb $ */
+-/* $Id: client.c,v 2.25.2.4 2003/06/18 20:05:15 ossi Exp $ */
++/* $Id: client.c,v 2.25.2.5 2003/08/06 16:02:39 ossi Exp $ */
+ /*
+
+ Copyright 1988, 1998 The Open Group
+@@ -1009,7 +1009,11 @@ StartClient (struct display *d,
+ exit (1);
+ # endif
+ # ifdef USE_PAM
+- pam_setcred(pamh, 0);
++ if (pam_setcred(pamh, 0) != PAM_SUCCESS) {
++ LogError("pam_setcred for %\"s failed, errno=%d\n",
++ name, errno);
++ exit (1);
++ }
+ /* pass in environment variables set by libpam and modules it called */
+ pam_env = pam_getenvlist(pamh);
+ ReInitErrorLog ();
+@@ -1267,7 +1271,9 @@ SessionExit (struct display *d, int stat
+ #ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+- pam_setcred(pamh, PAM_DELETE_CRED);
++ if (pam_setcred(pamh, PAM_DELETE_CRED) != PAM_SUCCESS)
++ LogError("pam_setcred(DELETE_CRED) for %\"s failed, errno=%d\n",
++ d->verify->user, errno);
+ pam_close_session(pamh, 0);
+ pam_end(pamh, PAM_SUCCESS);
+ pamh = NULL;
diff --git a/x11/kdebase4-runtime/files/patch-konsole-konsole-TEPty.cpp b/x11/kdebase4-runtime/files/patch-konsole-konsole-TEPty.cpp
new file mode 100644
index 000000000000..44642dc8aebc
--- /dev/null
+++ b/x11/kdebase4-runtime/files/patch-konsole-konsole-TEPty.cpp
@@ -0,0 +1,172 @@
+--- konsole/konsole/TEPty.cpp 22 Nov 2002 13:17:57 -0000 1.75
++++ konsole/konsole/TEPty.cpp 24 Aug 2003 21:44:00 -0000
+@@ -65,6 +65,9 @@
+ #include <config.h>
+ #endif
+
++// Get the Q_OS_* defines
++#include <qglobal.h>
++
+ #ifdef __sgi
+ #define __svr4__
+ #endif
+@@ -88,6 +91,10 @@
+ #include <sys/types.h>
+ #endif
+
++#ifdef Q_OS_FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -198,9 +205,30 @@ public:
+
+ FILE* syslog_file = NULL; //stdout;
+
+-#define PTY_FILENO 3
++#define DEFAULT_PTY_FILENO 3
++int PTY_FILENO = -1; // None allocated yet.
++
+ #define BASE_CHOWN "konsole_grantpty"
+
++void TEPtyInit()
++{
++/*
++** FreeBSD can't dup2(fd,3) because fd 3 is already in use by
++** some weird pipe. So instead, we get a new throwaway fd
++** that's not in use by anyone.
++*/
++#ifdef Q_OS_FREEBSD
++ PTY_FILENO = open("/dev/null",O_RDWR);
++ if (PTY_FILENO == -1) {
++ perror("konsole:open PTY");
++ /* This won't work either, but hey .. */
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++ }
++#else
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++#endif
++}
++
+ int chownpty(int fd, bool grant)
+ // param fd: the fd of a master pty.
+ // param grant: true to grant, false to revoke
+@@ -212,6 +240,8 @@ int chownpty(int fd, bool grant)
+ newsa.sa_flags = 0;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
++ if (PTY_FILENO == -1) TEPtyInit();
++
+ pid_t pid = fork();
+ if (pid < 0)
+ {
+@@ -225,7 +255,12 @@ int chownpty(int fd, bool grant)
+ /* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
+ if (fd != PTY_FILENO && dup2(fd, PTY_FILENO) < 0) exit(1);
+ QString path = locate("exe", BASE_CHOWN);
+- execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", NULL, NULL);
++ /*
++ ** Because konsole_grantpty now can't expect the fd
++ ** to be constant, we need an additional parameter.
++ */
++ QString fdnumber = QString::number(PTY_FILENO);
++ execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", fdnumber.ascii(), NULL, NULL);
+ exit(1); // should not be reached
+ }
+
+@@ -486,6 +521,16 @@ int TEPty::makePty(bool _addutmp)
+ // open and set all standard files to slave tty
+ int tt = m_SlaveFd; // Already opened?
+
++#ifdef Q_OS_FREEBSD
++ /*
++ ** It seems to be possible for SlaveFd to be closed in error
++ ** somewhere along the line. So check it for "liveness".
++ */
++ struct stat sb;
++ if (fstat(tt,&sb)!=0)
++ tt=-1; // Apparently not alive.
++#endif
++
+ if (tt < 0)
+ tt = open(ttynam, O_RDWR);
+
+@@ -524,14 +569,57 @@ int TEPty::makePty(bool _addutmp)
+ }
+ strncpy(l_struct.ut_name, str_ptr, UT_NAMESIZE);
+
++#ifdef Q_OS_FREEBSD
++ /* FreeBSD until august 22, 2003 returned ENOMEM for too-long
++ ** hostnames. Then sanity prevailed (?) and the error was changed
++ ** to NAMETOOLONG, but this breaks konsole .. again.
++ **
++ ** Instead of bailing out with long hostnames, put in partial
++ ** hostnames (the first UT_HOSTSIZE characters) instead.
++ */
++ char hostnamebuffer[MAXHOSTNAMELEN+1];
++ memset(hostnamebuffer,0,MAXHOSTNAMELEN+1);
++ if (gethostname(hostnamebuffer, MAXHOSTNAMELEN) == -1)
++ {
++ if ( (errno==ENOMEM) || (errno==ENAMETOOLONG) ) {
++ /* ignore it, but very odd */
++ }
++ else {
++ /* Not much chance of this being visible anywhere ... */
++ perror("konsole:gethostname");
++ abort();
++ }
++ }
++ /* Copy hostname, possibly only partially */
++ memset(l_struct.ut_host,0,UT_HOSTSIZE);
++ strncpy(l_struct.ut_host,hostnamebuffer,UT_HOSTSIZE);
++ l_struct.ut_host[UT_HOSTSIZE]=0;
++#else
++ /* Non-FreeBSD systems */
+ if (gethostname(l_struct.ut_host, UT_HOSTSIZE) == -1) {
+- if (errno != ENOMEM)
++ if (errno != ENOMEM)
+ abort();
+ l_struct.ut_host[UT_HOSTSIZE]=0;
+ }
++#endif
+
+ if (! (str_ptr=ttyname(tt)) ) {
++#ifdef Q_OS_FREEBSD
++ /*
++ ** In FreeBSD, the ttyname() call always returns NULL
++ ** for the kinds of devices (ptys) we have opened,
++ ** so don't abort, use a foolish default value instead.
++ ** The call to login() probably won't work _anyway_,
++ ** since normally users can't update the wtmp file.
++ **
++ ** If we were real sticklers for accuracy, we'd copy the
++ ** code from konsole_grantpty that does it's darndest to
++ ** file out the right tty name.
++ */
++ str_ptr = const_cast<char *>("/dev/konsole");
++#else
+ abort();
++#endif
+ }
+ if (strncmp(str_ptr, "/dev/", 5) == 0)
+ str_ptr += 5;
+@@ -607,7 +695,7 @@ void TEPty::startPgm(const char* pgm, QV
+ // #define CERASE 0177
+ // #endif
+
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCGETA,(char *)&ttmode);
+ #else
+ # if defined (_HPUX_SOURCE) || defined(__Lynx__)
+@@ -621,7 +709,7 @@ void TEPty::startPgm(const char* pgm, QV
+ ttmode.c_cc[VINTR] = CTRL('C');
+ ttmode.c_cc[VQUIT] = CTRL('\\');
+ ttmode.c_cc[VERASE] = 0177;
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCSETA,(char *)&ttmode);
+ #else
+ # ifdef _HPUX_SOURCE \ No newline at end of file
diff --git a/x11/kdebase4-runtime/files/patch-konsole-konsole-konsole_grantpty.c b/x11/kdebase4-runtime/files/patch-konsole-konsole-konsole_grantpty.c
new file mode 100644
index 000000000000..5093a52d277b
--- /dev/null
+++ b/x11/kdebase4-runtime/files/patch-konsole-konsole-konsole_grantpty.c
@@ -0,0 +1,62 @@
+--- konsole/konsole/konsole_grantpty.c 2 Sep 2002 01:09:24 -0000 1.7
++++ konsole/konsole/konsole_grantpty.c 24 Aug 2003 21:44:01 -0000
+@@ -40,7 +40,9 @@
+ # include <dirent.h>
+ #endif
+
+-#define PTY_FILENO 3 /* keep in sync with grantpty */
++#define DEFAULT_PTY_FILENO 3 /* keep in sync with TEPty.cpp */
++int PTY_FILENO = DEFAULT_PTY_FILENO;
++
+ #define TTY_GROUP "tty"
+
+ int main (int argc, char *argv[])
+@@ -52,11 +54,13 @@ int main (int argc, char *argv[])
+ uid_t uid;
+ mode_t mod;
+ char* tty;
++ int command_fd; /* which fd to use? */
+
+ /* check preconditions **************************************************/
+- if (argc != 2 || (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
++ if (( (argc != 3) && (argc != 2) /* optional third arg */ ) ||
++ (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
+ {
+- printf("usage: %s (--grant|--revoke)\n",argv[0]);
++ printf("usage: %s (--grant|--revoke) [fd]\n",argv[0]);
+ printf("%s is a helper for\n",argv[0]);
+ printf("konsole and not intented to\n");
+ printf("be called from the command\n");
+@@ -83,6 +87,22 @@ int main (int argc, char *argv[])
+ uid = 0; /* root */
+ mod = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ }
++
++ command_fd = DEFAULT_PTY_FILENO;
++ if (argv[2])
++ {
++ command_fd = atoi(argv[2]);
++ }
++ if (command_fd > 2) /* must be out of stdin,stdout,stderr range */
++ {
++ PTY_FILENO=command_fd;
++ }
++ else
++ {
++ fprintf(stderr,"%s: Bad command fd (seems to be %d)\n",argv[0],command_fd);
++ return 1;
++ }
++
+ /* Get the group ID of the special `tty' group. */
+ p = getgrnam(TTY_GROUP); /* posix */
+ gid = p ? p->gr_gid : getgid (); /* posix */
+@@ -117,6 +137,9 @@ int main (int argc, char *argv[])
+ if (dirp->d_fileno != dsb.st_ino)
+ continue;
+ {
++ /* Else this is the right device file .. any possible memory
++ ** leak here because two files match is unimportant?
++ */
+ int pdlen = strlen(_PATH_DEV), namelen = strlen(dirp->d_name);
+ pty = malloc(pdlen + namelen + 1);
+ if (pty) { \ No newline at end of file
diff --git a/x11/kdebase4-runtime/files/patch-konsole-konsole-main.cpp b/x11/kdebase4-runtime/files/patch-konsole-konsole-main.cpp
new file mode 100644
index 000000000000..989b34605258
--- /dev/null
+++ b/x11/kdebase4-runtime/files/patch-konsole-konsole-main.cpp
@@ -0,0 +1,18 @@
+--- konsole/konsole/main.cpp 29 Jun 2003 21:53:11 -0000 1.243.2.3
++++ konsole/konsole/main.cpp 24 Aug 2003 21:44:02 -0000
+@@ -123,6 +123,7 @@ public:
+ };
+
+
++extern void TEPtyInit();
+
+ /* --| main |------------------------------------------------------ */
+ int main(int argc, char* argv[])
+@@ -137,6 +138,7 @@ int main(int argc, char* argv[])
+ bool scrollbaron = true;
+ QCString wname = PACKAGE;
+
++ TEPtyInit();
+
+ KAboutData aboutData( PACKAGE, I18N_NOOP("Konsole"),
+ VERSION, description, KAboutData::License_GPL_V2,
diff --git a/x11/kdebase4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kdebase4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
new file mode 100644
index 000000000000..4f57a705f1f2
--- /dev/null
+++ b/x11/kdebase4-runtime/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
@@ -0,0 +1,33 @@
+--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003
++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003
+@@ -168,6 +168,8 @@
+ int mib[4];
+ struct kinfo_proc p;
+ size_t len;
++ size_t buflen = 256;
++ char buf[256];
+
+ if ((ps = findProcessInList(pid)) == 0)
+ {
+@@ -239,10 +241,17 @@
+ #endif
+
+ /* process command line */
+- /* the following line causes segfaults on some FreeBSD systems... why?
+- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
+- */
+- strcpy(ps->cmdline, "????");
++ /* do a sysctl to get the command line args. */
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ARGS;
++ mib[3] = pid;
++
++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen)
++ strcpy(ps->cmdline, "????");
++ else
++ strncpy(ps->cmdline, buf, buflen - 1);
+
+ return (0);
+ }
diff --git a/x11/kdebase4-runtime/files/plist.base b/x11/kdebase4-runtime/files/plist.base
index 4f9df2e6d51a..ae0ca83e8cd9 100644
--- a/x11/kdebase4-runtime/files/plist.base
+++ b/x11/kdebase4-runtime/files/plist.base
@@ -277,6 +277,8 @@ lib/kde3/kio_imap4.la
lib/kde3/kio_imap4.so
lib/kde3/kio_info.la
lib/kde3/kio_info.so
+lib/kde3/kio_ldap.la
+lib/kde3/kio_ldap.so
lib/kde3/kio_mac.la
lib/kde3/kio_mac.so
lib/kde3/kio_man.la
@@ -2764,6 +2766,7 @@ share/services/imagethumbnail.desktop
share/services/imap4.protocol
share/services/imaps.protocol
share/services/info.protocol
+share/services/ldap.protocol
share/services/kaccess.desktop
share/services/kded/favicons.desktop
share/services/kded/mountwatcher.desktop
diff --git a/x11/kdebase4-runtime/files/plist.ldap b/x11/kdebase4-runtime/files/plist.ldap
deleted file mode 100644
index 082395fd0498..000000000000
--- a/x11/kdebase4-runtime/files/plist.ldap
+++ /dev/null
@@ -1,3 +0,0 @@
-lib/kde3/kio_ldap.la
-lib/kde3/kio_ldap.so
-share/services/ldap.protocol
diff --git a/x11/kdebase4-runtime/pkg-message b/x11/kdebase4-runtime/pkg-message
new file mode 100644
index 000000000000..f97e3656f98b
--- /dev/null
+++ b/x11/kdebase4-runtime/pkg-message
@@ -0,0 +1,11 @@
+This port has installed fonts into %%PREFIX%%/share/fonts
+
+You'll have to add %%PREFIX%%/share/fonts
+to your X font path by either:
+
+$ xset fp+ %%PREFIX%%/share/fonts
+$ xset fp rehash
+
+or by adding it to your X-server configuration file (usually
+/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and
+restarting the X-server.
diff --git a/x11/kdebase4-workspace/Makefile b/x11/kdebase4-workspace/Makefile
index c2820dd38b0a..d3157b31a51e 100644
--- a/x11/kdebase4-workspace/Makefile
+++ b/x11/kdebase4-workspace/Makefile
@@ -8,6 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src
@@ -22,6 +23,7 @@ USE_KDELIBS_VER=3
PREFIX= ${KDE_PREFIX}
KDE_BUILD_PLIST=yes
+USE_OPENLDAP= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_XPM= yes
@@ -39,12 +41,6 @@ CONFIGURE_ARGS+=--without-java \
.include "${.CURDIR}/../../x11/kde3/Makefile.kde"
.include <bsd.port.pre.mk>
-# This enables kio_ldap (needed by kaddresbook).
-.if defined(WITH_LDAP) || exists($(LOCALBASE)/lib/libldap.so)
-LIB_DEPENDS+= ldap:${PORTSDIR}/net/openldap21-client
-PLIST_APPEND+= plist.ldap
-.endif
-
.if exists(${X11BASE}/include/Xm/Xm.h)
WITH_MOTIF= yes
.endif # exists(${X11BASE}/include/Xm/Xm.h)
@@ -85,5 +81,7 @@ post-install:
${CHMOD} u+s ${PREFIX}/bin/kcheckpass
${CHGRP} kmem ${PREFIX}/bin/ksysguardd && \
${CHMOD} g+s ${PREFIX}/bin/ksysguardd
+ @${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
+ | ${SED} -e 's,%%X11BASE%%,${X11BASE},g'
.include <bsd.port.post.mk>
diff --git a/x11/kdebase4-workspace/files/patch-configure b/x11/kdebase4-workspace/files/patch-configure
new file mode 100644
index 000000000000..fcc7afb4565b
--- /dev/null
+++ b/x11/kdebase4-workspace/files/patch-configure
@@ -0,0 +1,122 @@
+--- configure.orig Sat Aug 23 22:55:38 2003
++++ configure Sat Aug 23 22:57:16 2003
+@@ -33894,8 +33894,67 @@
+ echo "$as_me:$LINENO: result: not found" >&5
+ echo "${ECHO_T}not found" >&6
+
+- { echo "$as_me:$LINENO: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&5
+-echo "$as_me: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&2;}
++
++ echo "$as_me:$LINENO: checking for pkg-config" >&5
++echo $ECHO_N "checking for pkg-config... $ECHO_C" >&6
++ if test -n "$PKGCONFIG"; then
++ kde_cv_path="$PKGCONFIG";
++ else
++ kde_cache=`echo pkg-config | sed 'y%./+-%__p_%'`
++
++ if eval "test \"\${kde_cv_path_$kde_cache+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ kde_cv_path="NONE"
++ dirs="${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin"
++ kde_save_IFS=$IFS
++ IFS=':'
++ for dir in $PATH; do
++ dirs="$dirs $dir"
++ done
++ IFS=$kde_save_IFS
++
++ for dir in $dirs; do
++ if test -x "$dir/pkg-config"; then
++ if test -n ""
++ then
++ evalstr="$dir/pkg-config 2>&1 "
++ if eval $evalstr; then
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ else
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ fi
++ done
++
++ eval "kde_cv_path_$kde_cache=$kde_cv_path"
++
++
++fi
++
++
++ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
++
++ fi
++
++ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
++ echo "$as_me:$LINENO: result: not found" >&5
++echo "${ECHO_T}not found" >&6
++
++ { echo "$as_me:$LINENO: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&5
++echo "$as_me: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&2;}
++
++ else
++ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
++echo "${ECHO_T}$kde_cv_path" >&6
++ PKGCONFIG=$kde_cv_path
++
++ fi
++
+
+ else
+ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+@@ -33905,6 +33964,30 @@
+ fi
+
+
++if test -n "$PKGCONFIG"; then
++ vers=`$PKGCONFIG fontconfig --modversion 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
++ if test -n "$vers" && test "$vers" -ge 1000000
++ then
++ LIBFONTCONFIG_LIBS="`$PKGCONFIG fontconfig --libs`"
++ LIBFONTCONFIG_RPATH=
++ for args in $LIBFONTCONFIG_LIBS; do
++ case $args in
++ -L*)
++ LIBFONTCONFIG_RPATH="$LIBFONTCONFIG_RPATH $args"
++ ;;
++ esac
++ done
++ LIBFONTCONFIG_RPATH=`echo $LIBFONTCONFIG_RPATH | sed -e "s/-L/-R/g"`
++ LIBFONTCONFIG_CFLAGS="`$PKGCONFIG fontconfig --cflags`"
++
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_FONTCONFIG 1
++_ACEOF
++
++ fi
++fi
++
+ if test -n "$FONTCONFIG_CONFIG"; then
+ vers=`$FONTCONFIG_CONFIG --version 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+ if test -n "$vers" && test "$vers" -ge 1000000
+@@ -37753,7 +37836,7 @@
+ do
+ for j in ldap.h;
+ do
+- echo "configure: 37756: $i/$j" >&5
++ echo "configure: 37839: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_incdir=$i
+@@ -37775,7 +37858,7 @@
+ do
+ for j in libldap.$ext;
+ do
+- echo "configure: 37778: $i/$j" >&5
++ echo "configure: 37861: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_libdir=$i
+
diff --git a/x11/kdebase4-workspace/files/patch-kdm-backend-client.c b/x11/kdebase4-workspace/files/patch-kdm-backend-client.c
new file mode 100644
index 000000000000..fe44c4f3831c
--- /dev/null
+++ b/x11/kdebase4-workspace/files/patch-kdm-backend-client.c
@@ -0,0 +1,33 @@
+--- kdm/backend/client.c 18 Jun 2003 20:05:15 -0000 2.25.2.4
++++ kdm/backend/client.c 6 Aug 2003 16:02:39 -0000 2.25.2.5
+@@ -1,5 +1,5 @@
+ /* $TOG: verify.c /main/37 1998/02/11 10:00:45 kaleb $ */
+-/* $Id: client.c,v 2.25.2.4 2003/06/18 20:05:15 ossi Exp $ */
++/* $Id: client.c,v 2.25.2.5 2003/08/06 16:02:39 ossi Exp $ */
+ /*
+
+ Copyright 1988, 1998 The Open Group
+@@ -1009,7 +1009,11 @@ StartClient (struct display *d,
+ exit (1);
+ # endif
+ # ifdef USE_PAM
+- pam_setcred(pamh, 0);
++ if (pam_setcred(pamh, 0) != PAM_SUCCESS) {
++ LogError("pam_setcred for %\"s failed, errno=%d\n",
++ name, errno);
++ exit (1);
++ }
+ /* pass in environment variables set by libpam and modules it called */
+ pam_env = pam_getenvlist(pamh);
+ ReInitErrorLog ();
+@@ -1267,7 +1271,9 @@ SessionExit (struct display *d, int stat
+ #ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+- pam_setcred(pamh, PAM_DELETE_CRED);
++ if (pam_setcred(pamh, PAM_DELETE_CRED) != PAM_SUCCESS)
++ LogError("pam_setcred(DELETE_CRED) for %\"s failed, errno=%d\n",
++ d->verify->user, errno);
+ pam_close_session(pamh, 0);
+ pam_end(pamh, PAM_SUCCESS);
+ pamh = NULL;
diff --git a/x11/kdebase4-workspace/files/patch-konsole-konsole-TEPty.cpp b/x11/kdebase4-workspace/files/patch-konsole-konsole-TEPty.cpp
new file mode 100644
index 000000000000..44642dc8aebc
--- /dev/null
+++ b/x11/kdebase4-workspace/files/patch-konsole-konsole-TEPty.cpp
@@ -0,0 +1,172 @@
+--- konsole/konsole/TEPty.cpp 22 Nov 2002 13:17:57 -0000 1.75
++++ konsole/konsole/TEPty.cpp 24 Aug 2003 21:44:00 -0000
+@@ -65,6 +65,9 @@
+ #include <config.h>
+ #endif
+
++// Get the Q_OS_* defines
++#include <qglobal.h>
++
+ #ifdef __sgi
+ #define __svr4__
+ #endif
+@@ -88,6 +91,10 @@
+ #include <sys/types.h>
+ #endif
+
++#ifdef Q_OS_FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -198,9 +205,30 @@ public:
+
+ FILE* syslog_file = NULL; //stdout;
+
+-#define PTY_FILENO 3
++#define DEFAULT_PTY_FILENO 3
++int PTY_FILENO = -1; // None allocated yet.
++
+ #define BASE_CHOWN "konsole_grantpty"
+
++void TEPtyInit()
++{
++/*
++** FreeBSD can't dup2(fd,3) because fd 3 is already in use by
++** some weird pipe. So instead, we get a new throwaway fd
++** that's not in use by anyone.
++*/
++#ifdef Q_OS_FREEBSD
++ PTY_FILENO = open("/dev/null",O_RDWR);
++ if (PTY_FILENO == -1) {
++ perror("konsole:open PTY");
++ /* This won't work either, but hey .. */
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++ }
++#else
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++#endif
++}
++
+ int chownpty(int fd, bool grant)
+ // param fd: the fd of a master pty.
+ // param grant: true to grant, false to revoke
+@@ -212,6 +240,8 @@ int chownpty(int fd, bool grant)
+ newsa.sa_flags = 0;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
++ if (PTY_FILENO == -1) TEPtyInit();
++
+ pid_t pid = fork();
+ if (pid < 0)
+ {
+@@ -225,7 +255,12 @@ int chownpty(int fd, bool grant)
+ /* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
+ if (fd != PTY_FILENO && dup2(fd, PTY_FILENO) < 0) exit(1);
+ QString path = locate("exe", BASE_CHOWN);
+- execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", NULL, NULL);
++ /*
++ ** Because konsole_grantpty now can't expect the fd
++ ** to be constant, we need an additional parameter.
++ */
++ QString fdnumber = QString::number(PTY_FILENO);
++ execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", fdnumber.ascii(), NULL, NULL);
+ exit(1); // should not be reached
+ }
+
+@@ -486,6 +521,16 @@ int TEPty::makePty(bool _addutmp)
+ // open and set all standard files to slave tty
+ int tt = m_SlaveFd; // Already opened?
+
++#ifdef Q_OS_FREEBSD
++ /*
++ ** It seems to be possible for SlaveFd to be closed in error
++ ** somewhere along the line. So check it for "liveness".
++ */
++ struct stat sb;
++ if (fstat(tt,&sb)!=0)
++ tt=-1; // Apparently not alive.
++#endif
++
+ if (tt < 0)
+ tt = open(ttynam, O_RDWR);
+
+@@ -524,14 +569,57 @@ int TEPty::makePty(bool _addutmp)
+ }
+ strncpy(l_struct.ut_name, str_ptr, UT_NAMESIZE);
+
++#ifdef Q_OS_FREEBSD
++ /* FreeBSD until august 22, 2003 returned ENOMEM for too-long
++ ** hostnames. Then sanity prevailed (?) and the error was changed
++ ** to NAMETOOLONG, but this breaks konsole .. again.
++ **
++ ** Instead of bailing out with long hostnames, put in partial
++ ** hostnames (the first UT_HOSTSIZE characters) instead.
++ */
++ char hostnamebuffer[MAXHOSTNAMELEN+1];
++ memset(hostnamebuffer,0,MAXHOSTNAMELEN+1);
++ if (gethostname(hostnamebuffer, MAXHOSTNAMELEN) == -1)
++ {
++ if ( (errno==ENOMEM) || (errno==ENAMETOOLONG) ) {
++ /* ignore it, but very odd */
++ }
++ else {
++ /* Not much chance of this being visible anywhere ... */
++ perror("konsole:gethostname");
++ abort();
++ }
++ }
++ /* Copy hostname, possibly only partially */
++ memset(l_struct.ut_host,0,UT_HOSTSIZE);
++ strncpy(l_struct.ut_host,hostnamebuffer,UT_HOSTSIZE);
++ l_struct.ut_host[UT_HOSTSIZE]=0;
++#else
++ /* Non-FreeBSD systems */
+ if (gethostname(l_struct.ut_host, UT_HOSTSIZE) == -1) {
+- if (errno != ENOMEM)
++ if (errno != ENOMEM)
+ abort();
+ l_struct.ut_host[UT_HOSTSIZE]=0;
+ }
++#endif
+
+ if (! (str_ptr=ttyname(tt)) ) {
++#ifdef Q_OS_FREEBSD
++ /*
++ ** In FreeBSD, the ttyname() call always returns NULL
++ ** for the kinds of devices (ptys) we have opened,
++ ** so don't abort, use a foolish default value instead.
++ ** The call to login() probably won't work _anyway_,
++ ** since normally users can't update the wtmp file.
++ **
++ ** If we were real sticklers for accuracy, we'd copy the
++ ** code from konsole_grantpty that does it's darndest to
++ ** file out the right tty name.
++ */
++ str_ptr = const_cast<char *>("/dev/konsole");
++#else
+ abort();
++#endif
+ }
+ if (strncmp(str_ptr, "/dev/", 5) == 0)
+ str_ptr += 5;
+@@ -607,7 +695,7 @@ void TEPty::startPgm(const char* pgm, QV
+ // #define CERASE 0177
+ // #endif
+
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCGETA,(char *)&ttmode);
+ #else
+ # if defined (_HPUX_SOURCE) || defined(__Lynx__)
+@@ -621,7 +709,7 @@ void TEPty::startPgm(const char* pgm, QV
+ ttmode.c_cc[VINTR] = CTRL('C');
+ ttmode.c_cc[VQUIT] = CTRL('\\');
+ ttmode.c_cc[VERASE] = 0177;
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCSETA,(char *)&ttmode);
+ #else
+ # ifdef _HPUX_SOURCE \ No newline at end of file
diff --git a/x11/kdebase4-workspace/files/patch-konsole-konsole-konsole_grantpty.c b/x11/kdebase4-workspace/files/patch-konsole-konsole-konsole_grantpty.c
new file mode 100644
index 000000000000..5093a52d277b
--- /dev/null
+++ b/x11/kdebase4-workspace/files/patch-konsole-konsole-konsole_grantpty.c
@@ -0,0 +1,62 @@
+--- konsole/konsole/konsole_grantpty.c 2 Sep 2002 01:09:24 -0000 1.7
++++ konsole/konsole/konsole_grantpty.c 24 Aug 2003 21:44:01 -0000
+@@ -40,7 +40,9 @@
+ # include <dirent.h>
+ #endif
+
+-#define PTY_FILENO 3 /* keep in sync with grantpty */
++#define DEFAULT_PTY_FILENO 3 /* keep in sync with TEPty.cpp */
++int PTY_FILENO = DEFAULT_PTY_FILENO;
++
+ #define TTY_GROUP "tty"
+
+ int main (int argc, char *argv[])
+@@ -52,11 +54,13 @@ int main (int argc, char *argv[])
+ uid_t uid;
+ mode_t mod;
+ char* tty;
++ int command_fd; /* which fd to use? */
+
+ /* check preconditions **************************************************/
+- if (argc != 2 || (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
++ if (( (argc != 3) && (argc != 2) /* optional third arg */ ) ||
++ (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
+ {
+- printf("usage: %s (--grant|--revoke)\n",argv[0]);
++ printf("usage: %s (--grant|--revoke) [fd]\n",argv[0]);
+ printf("%s is a helper for\n",argv[0]);
+ printf("konsole and not intented to\n");
+ printf("be called from the command\n");
+@@ -83,6 +87,22 @@ int main (int argc, char *argv[])
+ uid = 0; /* root */
+ mod = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ }
++
++ command_fd = DEFAULT_PTY_FILENO;
++ if (argv[2])
++ {
++ command_fd = atoi(argv[2]);
++ }
++ if (command_fd > 2) /* must be out of stdin,stdout,stderr range */
++ {
++ PTY_FILENO=command_fd;
++ }
++ else
++ {
++ fprintf(stderr,"%s: Bad command fd (seems to be %d)\n",argv[0],command_fd);
++ return 1;
++ }
++
+ /* Get the group ID of the special `tty' group. */
+ p = getgrnam(TTY_GROUP); /* posix */
+ gid = p ? p->gr_gid : getgid (); /* posix */
+@@ -117,6 +137,9 @@ int main (int argc, char *argv[])
+ if (dirp->d_fileno != dsb.st_ino)
+ continue;
+ {
++ /* Else this is the right device file .. any possible memory
++ ** leak here because two files match is unimportant?
++ */
+ int pdlen = strlen(_PATH_DEV), namelen = strlen(dirp->d_name);
+ pty = malloc(pdlen + namelen + 1);
+ if (pty) { \ No newline at end of file
diff --git a/x11/kdebase4-workspace/files/patch-konsole-konsole-main.cpp b/x11/kdebase4-workspace/files/patch-konsole-konsole-main.cpp
new file mode 100644
index 000000000000..989b34605258
--- /dev/null
+++ b/x11/kdebase4-workspace/files/patch-konsole-konsole-main.cpp
@@ -0,0 +1,18 @@
+--- konsole/konsole/main.cpp 29 Jun 2003 21:53:11 -0000 1.243.2.3
++++ konsole/konsole/main.cpp 24 Aug 2003 21:44:02 -0000
+@@ -123,6 +123,7 @@ public:
+ };
+
+
++extern void TEPtyInit();
+
+ /* --| main |------------------------------------------------------ */
+ int main(int argc, char* argv[])
+@@ -137,6 +138,7 @@ int main(int argc, char* argv[])
+ bool scrollbaron = true;
+ QCString wname = PACKAGE;
+
++ TEPtyInit();
+
+ KAboutData aboutData( PACKAGE, I18N_NOOP("Konsole"),
+ VERSION, description, KAboutData::License_GPL_V2,
diff --git a/x11/kdebase4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kdebase4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
new file mode 100644
index 000000000000..4f57a705f1f2
--- /dev/null
+++ b/x11/kdebase4-workspace/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
@@ -0,0 +1,33 @@
+--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003
++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003
+@@ -168,6 +168,8 @@
+ int mib[4];
+ struct kinfo_proc p;
+ size_t len;
++ size_t buflen = 256;
++ char buf[256];
+
+ if ((ps = findProcessInList(pid)) == 0)
+ {
+@@ -239,10 +241,17 @@
+ #endif
+
+ /* process command line */
+- /* the following line causes segfaults on some FreeBSD systems... why?
+- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
+- */
+- strcpy(ps->cmdline, "????");
++ /* do a sysctl to get the command line args. */
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ARGS;
++ mib[3] = pid;
++
++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen)
++ strcpy(ps->cmdline, "????");
++ else
++ strncpy(ps->cmdline, buf, buflen - 1);
+
+ return (0);
+ }
diff --git a/x11/kdebase4-workspace/files/plist.base b/x11/kdebase4-workspace/files/plist.base
index 4f9df2e6d51a..ae0ca83e8cd9 100644
--- a/x11/kdebase4-workspace/files/plist.base
+++ b/x11/kdebase4-workspace/files/plist.base
@@ -277,6 +277,8 @@ lib/kde3/kio_imap4.la
lib/kde3/kio_imap4.so
lib/kde3/kio_info.la
lib/kde3/kio_info.so
+lib/kde3/kio_ldap.la
+lib/kde3/kio_ldap.so
lib/kde3/kio_mac.la
lib/kde3/kio_mac.so
lib/kde3/kio_man.la
@@ -2764,6 +2766,7 @@ share/services/imagethumbnail.desktop
share/services/imap4.protocol
share/services/imaps.protocol
share/services/info.protocol
+share/services/ldap.protocol
share/services/kaccess.desktop
share/services/kded/favicons.desktop
share/services/kded/mountwatcher.desktop
diff --git a/x11/kdebase4-workspace/files/plist.ldap b/x11/kdebase4-workspace/files/plist.ldap
deleted file mode 100644
index 082395fd0498..000000000000
--- a/x11/kdebase4-workspace/files/plist.ldap
+++ /dev/null
@@ -1,3 +0,0 @@
-lib/kde3/kio_ldap.la
-lib/kde3/kio_ldap.so
-share/services/ldap.protocol
diff --git a/x11/kdebase4-workspace/pkg-message b/x11/kdebase4-workspace/pkg-message
new file mode 100644
index 000000000000..f97e3656f98b
--- /dev/null
+++ b/x11/kdebase4-workspace/pkg-message
@@ -0,0 +1,11 @@
+This port has installed fonts into %%PREFIX%%/share/fonts
+
+You'll have to add %%PREFIX%%/share/fonts
+to your X font path by either:
+
+$ xset fp+ %%PREFIX%%/share/fonts
+$ xset fp rehash
+
+or by adding it to your X-server configuration file (usually
+/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and
+restarting the X-server.
diff --git a/x11/kdebase4/Makefile b/x11/kdebase4/Makefile
index c2820dd38b0a..d3157b31a51e 100644
--- a/x11/kdebase4/Makefile
+++ b/x11/kdebase4/Makefile
@@ -8,6 +8,7 @@
PORTNAME= kdebase
PORTVERSION= ${KDE_VERSION}
+PORTREVISION= 1
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${KDE_VERSION}/src
@@ -22,6 +23,7 @@ USE_KDELIBS_VER=3
PREFIX= ${KDE_PREFIX}
KDE_BUILD_PLIST=yes
+USE_OPENLDAP= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_XPM= yes
@@ -39,12 +41,6 @@ CONFIGURE_ARGS+=--without-java \
.include "${.CURDIR}/../../x11/kde3/Makefile.kde"
.include <bsd.port.pre.mk>
-# This enables kio_ldap (needed by kaddresbook).
-.if defined(WITH_LDAP) || exists($(LOCALBASE)/lib/libldap.so)
-LIB_DEPENDS+= ldap:${PORTSDIR}/net/openldap21-client
-PLIST_APPEND+= plist.ldap
-.endif
-
.if exists(${X11BASE}/include/Xm/Xm.h)
WITH_MOTIF= yes
.endif # exists(${X11BASE}/include/Xm/Xm.h)
@@ -85,5 +81,7 @@ post-install:
${CHMOD} u+s ${PREFIX}/bin/kcheckpass
${CHGRP} kmem ${PREFIX}/bin/ksysguardd && \
${CHMOD} g+s ${PREFIX}/bin/ksysguardd
+ @${CAT} ${PKGMESSAGE} | ${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
+ | ${SED} -e 's,%%X11BASE%%,${X11BASE},g'
.include <bsd.port.post.mk>
diff --git a/x11/kdebase4/files/patch-configure b/x11/kdebase4/files/patch-configure
new file mode 100644
index 000000000000..fcc7afb4565b
--- /dev/null
+++ b/x11/kdebase4/files/patch-configure
@@ -0,0 +1,122 @@
+--- configure.orig Sat Aug 23 22:55:38 2003
++++ configure Sat Aug 23 22:57:16 2003
+@@ -33894,8 +33894,67 @@
+ echo "$as_me:$LINENO: result: not found" >&5
+ echo "${ECHO_T}not found" >&6
+
+- { echo "$as_me:$LINENO: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&5
+-echo "$as_me: WARNING: Could not find libfontconfig anywhere, check http://www.fontconfig.org/" >&2;}
++
++ echo "$as_me:$LINENO: checking for pkg-config" >&5
++echo $ECHO_N "checking for pkg-config... $ECHO_C" >&6
++ if test -n "$PKGCONFIG"; then
++ kde_cv_path="$PKGCONFIG";
++ else
++ kde_cache=`echo pkg-config | sed 'y%./+-%__p_%'`
++
++ if eval "test \"\${kde_cv_path_$kde_cache+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ kde_cv_path="NONE"
++ dirs="${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin"
++ kde_save_IFS=$IFS
++ IFS=':'
++ for dir in $PATH; do
++ dirs="$dirs $dir"
++ done
++ IFS=$kde_save_IFS
++
++ for dir in $dirs; do
++ if test -x "$dir/pkg-config"; then
++ if test -n ""
++ then
++ evalstr="$dir/pkg-config 2>&1 "
++ if eval $evalstr; then
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ else
++ kde_cv_path="$dir/pkg-config"
++ break
++ fi
++ fi
++ done
++
++ eval "kde_cv_path_$kde_cache=$kde_cv_path"
++
++
++fi
++
++
++ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
++
++ fi
++
++ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
++ echo "$as_me:$LINENO: result: not found" >&5
++echo "${ECHO_T}not found" >&6
++
++ { echo "$as_me:$LINENO: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&5
++echo "$as_me: WARNING: Could not find neither pkg-config nor fontconfig-config, check http://www.fontconfig.org/ " >&2;}
++
++ else
++ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
++echo "${ECHO_T}$kde_cv_path" >&6
++ PKGCONFIG=$kde_cv_path
++
++ fi
++
+
+ else
+ echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+@@ -33905,6 +33964,30 @@
+ fi
+
+
++if test -n "$PKGCONFIG"; then
++ vers=`$PKGCONFIG fontconfig --modversion 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
++ if test -n "$vers" && test "$vers" -ge 1000000
++ then
++ LIBFONTCONFIG_LIBS="`$PKGCONFIG fontconfig --libs`"
++ LIBFONTCONFIG_RPATH=
++ for args in $LIBFONTCONFIG_LIBS; do
++ case $args in
++ -L*)
++ LIBFONTCONFIG_RPATH="$LIBFONTCONFIG_RPATH $args"
++ ;;
++ esac
++ done
++ LIBFONTCONFIG_RPATH=`echo $LIBFONTCONFIG_RPATH | sed -e "s/-L/-R/g"`
++ LIBFONTCONFIG_CFLAGS="`$PKGCONFIG fontconfig --cflags`"
++
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_FONTCONFIG 1
++_ACEOF
++
++ fi
++fi
++
+ if test -n "$FONTCONFIG_CONFIG"; then
+ vers=`$FONTCONFIG_CONFIG --version 2>/dev/null | sed -e 's/libfontconfig //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+ if test -n "$vers" && test "$vers" -ge 1000000
+@@ -37753,7 +37836,7 @@
+ do
+ for j in ldap.h;
+ do
+- echo "configure: 37756: $i/$j" >&5
++ echo "configure: 37839: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_incdir=$i
+@@ -37775,7 +37858,7 @@
+ do
+ for j in libldap.$ext;
+ do
+- echo "configure: 37778: $i/$j" >&5
++ echo "configure: 37861: $i/$j" >&5
+ if test -r "$i/$j"; then
+ echo "taking that" >&5
+ ldap_libdir=$i
+
diff --git a/x11/kdebase4/files/patch-kdm-backend-client.c b/x11/kdebase4/files/patch-kdm-backend-client.c
new file mode 100644
index 000000000000..fe44c4f3831c
--- /dev/null
+++ b/x11/kdebase4/files/patch-kdm-backend-client.c
@@ -0,0 +1,33 @@
+--- kdm/backend/client.c 18 Jun 2003 20:05:15 -0000 2.25.2.4
++++ kdm/backend/client.c 6 Aug 2003 16:02:39 -0000 2.25.2.5
+@@ -1,5 +1,5 @@
+ /* $TOG: verify.c /main/37 1998/02/11 10:00:45 kaleb $ */
+-/* $Id: client.c,v 2.25.2.4 2003/06/18 20:05:15 ossi Exp $ */
++/* $Id: client.c,v 2.25.2.5 2003/08/06 16:02:39 ossi Exp $ */
+ /*
+
+ Copyright 1988, 1998 The Open Group
+@@ -1009,7 +1009,11 @@ StartClient (struct display *d,
+ exit (1);
+ # endif
+ # ifdef USE_PAM
+- pam_setcred(pamh, 0);
++ if (pam_setcred(pamh, 0) != PAM_SUCCESS) {
++ LogError("pam_setcred for %\"s failed, errno=%d\n",
++ name, errno);
++ exit (1);
++ }
+ /* pass in environment variables set by libpam and modules it called */
+ pam_env = pam_getenvlist(pamh);
+ ReInitErrorLog ();
+@@ -1267,7 +1271,9 @@ SessionExit (struct display *d, int stat
+ #ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+- pam_setcred(pamh, PAM_DELETE_CRED);
++ if (pam_setcred(pamh, PAM_DELETE_CRED) != PAM_SUCCESS)
++ LogError("pam_setcred(DELETE_CRED) for %\"s failed, errno=%d\n",
++ d->verify->user, errno);
+ pam_close_session(pamh, 0);
+ pam_end(pamh, PAM_SUCCESS);
+ pamh = NULL;
diff --git a/x11/kdebase4/files/patch-konsole-konsole-TEPty.cpp b/x11/kdebase4/files/patch-konsole-konsole-TEPty.cpp
new file mode 100644
index 000000000000..44642dc8aebc
--- /dev/null
+++ b/x11/kdebase4/files/patch-konsole-konsole-TEPty.cpp
@@ -0,0 +1,172 @@
+--- konsole/konsole/TEPty.cpp 22 Nov 2002 13:17:57 -0000 1.75
++++ konsole/konsole/TEPty.cpp 24 Aug 2003 21:44:00 -0000
+@@ -65,6 +65,9 @@
+ #include <config.h>
+ #endif
+
++// Get the Q_OS_* defines
++#include <qglobal.h>
++
+ #ifdef __sgi
+ #define __svr4__
+ #endif
+@@ -88,6 +91,10 @@
+ #include <sys/types.h>
+ #endif
+
++#ifdef Q_OS_FREEBSD
++#include <sys/param.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -198,9 +205,30 @@ public:
+
+ FILE* syslog_file = NULL; //stdout;
+
+-#define PTY_FILENO 3
++#define DEFAULT_PTY_FILENO 3
++int PTY_FILENO = -1; // None allocated yet.
++
+ #define BASE_CHOWN "konsole_grantpty"
+
++void TEPtyInit()
++{
++/*
++** FreeBSD can't dup2(fd,3) because fd 3 is already in use by
++** some weird pipe. So instead, we get a new throwaway fd
++** that's not in use by anyone.
++*/
++#ifdef Q_OS_FREEBSD
++ PTY_FILENO = open("/dev/null",O_RDWR);
++ if (PTY_FILENO == -1) {
++ perror("konsole:open PTY");
++ /* This won't work either, but hey .. */
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++ }
++#else
++ PTY_FILENO = DEFAULT_PTY_FILENO;
++#endif
++}
++
+ int chownpty(int fd, bool grant)
+ // param fd: the fd of a master pty.
+ // param grant: true to grant, false to revoke
+@@ -212,6 +240,8 @@ int chownpty(int fd, bool grant)
+ newsa.sa_flags = 0;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
++ if (PTY_FILENO == -1) TEPtyInit();
++
+ pid_t pid = fork();
+ if (pid < 0)
+ {
+@@ -225,7 +255,12 @@ int chownpty(int fd, bool grant)
+ /* We pass the master pseudo terminal as file descriptor PTY_FILENO. */
+ if (fd != PTY_FILENO && dup2(fd, PTY_FILENO) < 0) exit(1);
+ QString path = locate("exe", BASE_CHOWN);
+- execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", NULL, NULL);
++ /*
++ ** Because konsole_grantpty now can't expect the fd
++ ** to be constant, we need an additional parameter.
++ */
++ QString fdnumber = QString::number(PTY_FILENO);
++ execle(path.ascii(), BASE_CHOWN, grant?"--grant":"--revoke", fdnumber.ascii(), NULL, NULL);
+ exit(1); // should not be reached
+ }
+
+@@ -486,6 +521,16 @@ int TEPty::makePty(bool _addutmp)
+ // open and set all standard files to slave tty
+ int tt = m_SlaveFd; // Already opened?
+
++#ifdef Q_OS_FREEBSD
++ /*
++ ** It seems to be possible for SlaveFd to be closed in error
++ ** somewhere along the line. So check it for "liveness".
++ */
++ struct stat sb;
++ if (fstat(tt,&sb)!=0)
++ tt=-1; // Apparently not alive.
++#endif
++
+ if (tt < 0)
+ tt = open(ttynam, O_RDWR);
+
+@@ -524,14 +569,57 @@ int TEPty::makePty(bool _addutmp)
+ }
+ strncpy(l_struct.ut_name, str_ptr, UT_NAMESIZE);
+
++#ifdef Q_OS_FREEBSD
++ /* FreeBSD until august 22, 2003 returned ENOMEM for too-long
++ ** hostnames. Then sanity prevailed (?) and the error was changed
++ ** to NAMETOOLONG, but this breaks konsole .. again.
++ **
++ ** Instead of bailing out with long hostnames, put in partial
++ ** hostnames (the first UT_HOSTSIZE characters) instead.
++ */
++ char hostnamebuffer[MAXHOSTNAMELEN+1];
++ memset(hostnamebuffer,0,MAXHOSTNAMELEN+1);
++ if (gethostname(hostnamebuffer, MAXHOSTNAMELEN) == -1)
++ {
++ if ( (errno==ENOMEM) || (errno==ENAMETOOLONG) ) {
++ /* ignore it, but very odd */
++ }
++ else {
++ /* Not much chance of this being visible anywhere ... */
++ perror("konsole:gethostname");
++ abort();
++ }
++ }
++ /* Copy hostname, possibly only partially */
++ memset(l_struct.ut_host,0,UT_HOSTSIZE);
++ strncpy(l_struct.ut_host,hostnamebuffer,UT_HOSTSIZE);
++ l_struct.ut_host[UT_HOSTSIZE]=0;
++#else
++ /* Non-FreeBSD systems */
+ if (gethostname(l_struct.ut_host, UT_HOSTSIZE) == -1) {
+- if (errno != ENOMEM)
++ if (errno != ENOMEM)
+ abort();
+ l_struct.ut_host[UT_HOSTSIZE]=0;
+ }
++#endif
+
+ if (! (str_ptr=ttyname(tt)) ) {
++#ifdef Q_OS_FREEBSD
++ /*
++ ** In FreeBSD, the ttyname() call always returns NULL
++ ** for the kinds of devices (ptys) we have opened,
++ ** so don't abort, use a foolish default value instead.
++ ** The call to login() probably won't work _anyway_,
++ ** since normally users can't update the wtmp file.
++ **
++ ** If we were real sticklers for accuracy, we'd copy the
++ ** code from konsole_grantpty that does it's darndest to
++ ** file out the right tty name.
++ */
++ str_ptr = const_cast<char *>("/dev/konsole");
++#else
+ abort();
++#endif
+ }
+ if (strncmp(str_ptr, "/dev/", 5) == 0)
+ str_ptr += 5;
+@@ -607,7 +695,7 @@ void TEPty::startPgm(const char* pgm, QV
+ // #define CERASE 0177
+ // #endif
+
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCGETA,(char *)&ttmode);
+ #else
+ # if defined (_HPUX_SOURCE) || defined(__Lynx__)
+@@ -621,7 +709,7 @@ void TEPty::startPgm(const char* pgm, QV
+ ttmode.c_cc[VINTR] = CTRL('C');
+ ttmode.c_cc[VQUIT] = CTRL('\\');
+ ttmode.c_cc[VERASE] = 0177;
+-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
++#if defined (Q_OS_FREEBSD) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__bsdi__) || defined(__APPLE__)
+ ioctl(0,TIOCSETA,(char *)&ttmode);
+ #else
+ # ifdef _HPUX_SOURCE \ No newline at end of file
diff --git a/x11/kdebase4/files/patch-konsole-konsole-konsole_grantpty.c b/x11/kdebase4/files/patch-konsole-konsole-konsole_grantpty.c
new file mode 100644
index 000000000000..5093a52d277b
--- /dev/null
+++ b/x11/kdebase4/files/patch-konsole-konsole-konsole_grantpty.c
@@ -0,0 +1,62 @@
+--- konsole/konsole/konsole_grantpty.c 2 Sep 2002 01:09:24 -0000 1.7
++++ konsole/konsole/konsole_grantpty.c 24 Aug 2003 21:44:01 -0000
+@@ -40,7 +40,9 @@
+ # include <dirent.h>
+ #endif
+
+-#define PTY_FILENO 3 /* keep in sync with grantpty */
++#define DEFAULT_PTY_FILENO 3 /* keep in sync with TEPty.cpp */
++int PTY_FILENO = DEFAULT_PTY_FILENO;
++
+ #define TTY_GROUP "tty"
+
+ int main (int argc, char *argv[])
+@@ -52,11 +54,13 @@ int main (int argc, char *argv[])
+ uid_t uid;
+ mode_t mod;
+ char* tty;
++ int command_fd; /* which fd to use? */
+
+ /* check preconditions **************************************************/
+- if (argc != 2 || (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
++ if (( (argc != 3) && (argc != 2) /* optional third arg */ ) ||
++ (strcmp(argv[1],"--grant") && strcmp(argv[1],"--revoke")))
+ {
+- printf("usage: %s (--grant|--revoke)\n",argv[0]);
++ printf("usage: %s (--grant|--revoke) [fd]\n",argv[0]);
+ printf("%s is a helper for\n",argv[0]);
+ printf("konsole and not intented to\n");
+ printf("be called from the command\n");
+@@ -83,6 +87,22 @@ int main (int argc, char *argv[])
+ uid = 0; /* root */
+ mod = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ }
++
++ command_fd = DEFAULT_PTY_FILENO;
++ if (argv[2])
++ {
++ command_fd = atoi(argv[2]);
++ }
++ if (command_fd > 2) /* must be out of stdin,stdout,stderr range */
++ {
++ PTY_FILENO=command_fd;
++ }
++ else
++ {
++ fprintf(stderr,"%s: Bad command fd (seems to be %d)\n",argv[0],command_fd);
++ return 1;
++ }
++
+ /* Get the group ID of the special `tty' group. */
+ p = getgrnam(TTY_GROUP); /* posix */
+ gid = p ? p->gr_gid : getgid (); /* posix */
+@@ -117,6 +137,9 @@ int main (int argc, char *argv[])
+ if (dirp->d_fileno != dsb.st_ino)
+ continue;
+ {
++ /* Else this is the right device file .. any possible memory
++ ** leak here because two files match is unimportant?
++ */
+ int pdlen = strlen(_PATH_DEV), namelen = strlen(dirp->d_name);
+ pty = malloc(pdlen + namelen + 1);
+ if (pty) { \ No newline at end of file
diff --git a/x11/kdebase4/files/patch-konsole-konsole-main.cpp b/x11/kdebase4/files/patch-konsole-konsole-main.cpp
new file mode 100644
index 000000000000..989b34605258
--- /dev/null
+++ b/x11/kdebase4/files/patch-konsole-konsole-main.cpp
@@ -0,0 +1,18 @@
+--- konsole/konsole/main.cpp 29 Jun 2003 21:53:11 -0000 1.243.2.3
++++ konsole/konsole/main.cpp 24 Aug 2003 21:44:02 -0000
+@@ -123,6 +123,7 @@ public:
+ };
+
+
++extern void TEPtyInit();
+
+ /* --| main |------------------------------------------------------ */
+ int main(int argc, char* argv[])
+@@ -137,6 +138,7 @@ int main(int argc, char* argv[])
+ bool scrollbaron = true;
+ QCString wname = PACKAGE;
+
++ TEPtyInit();
+
+ KAboutData aboutData( PACKAGE, I18N_NOOP("Konsole"),
+ VERSION, description, KAboutData::License_GPL_V2,
diff --git a/x11/kdebase4/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kdebase4/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
new file mode 100644
index 000000000000..4f57a705f1f2
--- /dev/null
+++ b/x11/kdebase4/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c
@@ -0,0 +1,33 @@
+--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003
++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003
+@@ -168,6 +168,8 @@
+ int mib[4];
+ struct kinfo_proc p;
+ size_t len;
++ size_t buflen = 256;
++ char buf[256];
+
+ if ((ps = findProcessInList(pid)) == 0)
+ {
+@@ -239,10 +241,17 @@
+ #endif
+
+ /* process command line */
+- /* the following line causes segfaults on some FreeBSD systems... why?
+- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1);
+- */
+- strcpy(ps->cmdline, "????");
++ /* do a sysctl to get the command line args. */
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ARGS;
++ mib[3] = pid;
++
++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen)
++ strcpy(ps->cmdline, "????");
++ else
++ strncpy(ps->cmdline, buf, buflen - 1);
+
+ return (0);
+ }
diff --git a/x11/kdebase4/files/plist.base b/x11/kdebase4/files/plist.base
index 4f9df2e6d51a..ae0ca83e8cd9 100644
--- a/x11/kdebase4/files/plist.base
+++ b/x11/kdebase4/files/plist.base
@@ -277,6 +277,8 @@ lib/kde3/kio_imap4.la
lib/kde3/kio_imap4.so
lib/kde3/kio_info.la
lib/kde3/kio_info.so
+lib/kde3/kio_ldap.la
+lib/kde3/kio_ldap.so
lib/kde3/kio_mac.la
lib/kde3/kio_mac.so
lib/kde3/kio_man.la
@@ -2764,6 +2766,7 @@ share/services/imagethumbnail.desktop
share/services/imap4.protocol
share/services/imaps.protocol
share/services/info.protocol
+share/services/ldap.protocol
share/services/kaccess.desktop
share/services/kded/favicons.desktop
share/services/kded/mountwatcher.desktop
diff --git a/x11/kdebase4/files/plist.ldap b/x11/kdebase4/files/plist.ldap
deleted file mode 100644
index 082395fd0498..000000000000
--- a/x11/kdebase4/files/plist.ldap
+++ /dev/null
@@ -1,3 +0,0 @@
-lib/kde3/kio_ldap.la
-lib/kde3/kio_ldap.so
-share/services/ldap.protocol
diff --git a/x11/kdebase4/pkg-message b/x11/kdebase4/pkg-message
new file mode 100644
index 000000000000..f97e3656f98b
--- /dev/null
+++ b/x11/kdebase4/pkg-message
@@ -0,0 +1,11 @@
+This port has installed fonts into %%PREFIX%%/share/fonts
+
+You'll have to add %%PREFIX%%/share/fonts
+to your X font path by either:
+
+$ xset fp+ %%PREFIX%%/share/fonts
+$ xset fp rehash
+
+or by adding it to your X-server configuration file (usually
+/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and
+restarting the X-server.