Multiple bugfixes and enhancements for kdebase.

- Add patches for konsole which enable konsole_grantpty to
          properly change permissions on ttys and fix a bug which causes
          konsole to crash on recent builds of -CURRENT.

        - Add a patch for configure that fixes fontconfig detection.

        - Add a patch submitted by Kaarthik Sivakumar <kaarthik@comcast.net>
          which fixes the bug described in PR ports/48334.

        - Add a pkg-message that notifies users about the fonts this port
          installs.

        - Use the USE_OPENLDAP macro.

PR:             ports/48334
Approved by:	arved (Mentor)
This commit is contained in:
Michael Nottebrock 2003-08-28 19:39:01 +00:00
parent 2c4631b763
commit 9683be5fc3
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=87921
70 changed files with 3206 additions and 63 deletions

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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,

View file

@ -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);
}

View file

@ -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

View file

@ -1,3 +0,0 @@
lib/kde3/kio_ldap.la
lib/kde3/kio_ldap.so
share/services/ldap.protocol

View file

@ -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.

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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,

View file

@ -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);
}

View file

@ -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

View file

@ -1,3 +0,0 @@
lib/kde3/kio_ldap.la
lib/kde3/kio_ldap.so
share/services/ldap.protocol

View file

@ -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.

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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,

View file

@ -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);
}

View file

@ -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

View file

@ -1,3 +0,0 @@
lib/kde3/kio_ldap.la
lib/kde3/kio_ldap.so
share/services/ldap.protocol

View file

@ -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.

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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,

View file

@ -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);
}

View file

@ -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

View file

@ -1,3 +0,0 @@
lib/kde3/kio_ldap.la
lib/kde3/kio_ldap.so
share/services/ldap.protocol

11
x11/kdebase3/pkg-message Normal file
View file

@ -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.

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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,

View file

@ -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);
}

View file

@ -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

View file

@ -1,3 +0,0 @@
lib/kde3/kio_ldap.la
lib/kde3/kio_ldap.so
share/services/ldap.protocol

View file

@ -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.

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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,

View file

@ -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);
}

View file

@ -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

View file

@ -1,3 +0,0 @@
lib/kde3/kio_ldap.la
lib/kde3/kio_ldap.so
share/services/ldap.protocol

View file

@ -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.

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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,

View file

@ -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);
}

View file

@ -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

View file

@ -1,3 +0,0 @@
lib/kde3/kio_ldap.la
lib/kde3/kio_ldap.so
share/services/ldap.protocol

11
x11/kdebase4/pkg-message Normal file
View file

@ -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.