summaryrefslogtreecommitdiff
path: root/x11
diff options
context:
space:
mode:
authoragc <agc@pkgsrc.org>1997-10-09 11:37:03 +0000
committeragc <agc@pkgsrc.org>1997-10-09 11:37:03 +0000
commit23d39ca1632344c5d7deb9632538e26c51e03a81 (patch)
treef15284c94efc2a98db6ffdc419322e5f7c02e3bc /x11
parentb4d904085832d2c09fde4193da5ee521e6e68095 (diff)
downloadpkgsrc-23d39ca1632344c5d7deb9632538e26c51e03a81.tar.gz
Initial import of FreeBSD's x11 ports category into NetBSD packages
system.
Diffstat (limited to 'x11')
-rw-r--r--x11/Makefile98
-rw-r--r--x11/rclock/Makefile27
-rw-r--r--x11/rclock/files/md51
-rw-r--r--x11/rclock/patches/patch-aa11
-rw-r--r--x11/rclock/pkg/COMMENT1
-rw-r--r--x11/rclock/pkg/DESCR7
-rw-r--r--x11/rclock/pkg/PLIST2
-rw-r--r--x11/rxvt/Makefile23
-rw-r--r--x11/rxvt/files/md51
-rw-r--r--x11/rxvt/patches/patch-aa11
-rw-r--r--x11/rxvt/patches/patch-ab19
-rw-r--r--x11/rxvt/patches/patch-ad11
-rw-r--r--x11/rxvt/patches/patch-ae42
-rw-r--r--x11/rxvt/patches/patch-ah11
-rw-r--r--x11/rxvt/pkg/COMMENT1
-rw-r--r--x11/rxvt/pkg/DESCR6
-rw-r--r--x11/rxvt/pkg/PLIST2
-rw-r--r--x11/swisswatch/Makefile18
-rw-r--r--x11/swisswatch/files/md51
-rw-r--r--x11/swisswatch/patches/patch-aa11
-rw-r--r--x11/swisswatch/pkg/COMMENT1
-rw-r--r--x11/swisswatch/pkg/DESCR12
-rw-r--r--x11/swisswatch/pkg/PLIST4
-rw-r--r--x11/tk80/Makefile29
-rw-r--r--x11/tk80/files/md51
-rw-r--r--x11/tk80/patches/patch-aa37
-rw-r--r--x11/tk80/patches/patch-ab137
-rw-r--r--x11/tk80/patches/patch-ac918
-rw-r--r--x11/tk80/patches/patch-ad78
-rw-r--r--x11/tk80/pkg/COMMENT1
-rw-r--r--x11/tk80/pkg/DESCR9
-rw-r--r--x11/tk80/pkg/PLIST254
-rw-r--r--x11/xfishtank/Makefile22
-rw-r--r--x11/xfishtank/files/md51
-rw-r--r--x11/xfishtank/patches/patch-aa395
-rw-r--r--x11/xfishtank/patches/patch-ab11
-rw-r--r--x11/xfishtank/pkg/COMMENT1
-rw-r--r--x11/xfishtank/pkg/DESCR8
-rw-r--r--x11/xfishtank/pkg/PLIST1
-rw-r--r--x11/xmascot/Makefile21
-rw-r--r--x11/xmascot/files/md51
-rw-r--r--x11/xmascot/pkg/COMMENT1
-rw-r--r--x11/xmascot/pkg/DESCR25
-rw-r--r--x11/xmascot/pkg/PLIST23
44 files changed, 2295 insertions, 0 deletions
diff --git a/x11/Makefile b/x11/Makefile
new file mode 100644
index 00000000000..b6a56f35858
--- /dev/null
+++ b/x11/Makefile
@@ -0,0 +1,98 @@
+# FreeBSD Id: Makefile,v 1.156 1997/09/30 07:54:42 asami Exp
+#
+
+ SUBDIR += FWF
+ SUBDIR += XFree86
+ SUBDIR += XFree86-contrib
+ SUBDIR += Xaw3d
+ SUBDIR += afterstep
+ SUBDIR += auis
+ SUBDIR += bclock
+ SUBDIR += blast
+ SUBDIR += blt
+ SUBDIR += bricons
+ SUBDIR += camltk41
+ SUBDIR += ctwm
+ SUBDIR += dclock
+ SUBDIR += emiclock
+ SUBDIR += emu
+ SUBDIR += enlightenment
+ SUBDIR += etlfonts
+ SUBDIR += explorer
+ SUBDIR += fbsd-icons
+ SUBDIR += filerunner
+ SUBDIR += freefonts
+ SUBDIR += fvwm
+ SUBDIR += fvwm2
+ SUBDIR += fvwm2-english
+ SUBDIR += fvwm95
+ SUBDIR += getbdf
+ SUBDIR += gwm
+ SUBDIR += iv
+ SUBDIR += lesstif
+ SUBDIR += libdnd
+ SUBDIR += libsx
+ SUBDIR += lupe
+ SUBDIR += mlvwm
+ SUBDIR += mouseclock
+ SUBDIR += neXtaw
+ SUBDIR += olvwm
+ SUBDIR += p5-Tcl-Tk
+ SUBDIR += p5-Tk
+ SUBDIR += piewm
+ SUBDIR += pythonqt
+ SUBDIR += qt
+ SUBDIR += qvwm
+ SUBDIR += rclock
+ SUBDIR += rxvt
+ SUBDIR += sliderule
+ SUBDIR += slingshot
+ SUBDIR += swisswatch
+ SUBDIR += sxpc
+ SUBDIR += tix
+ SUBDIR += tk41
+ SUBDIR += tk42
+ SUBDIR += tk80
+ SUBDIR += tkdesk
+ SUBDIR += tkgoodstuff
+ SUBDIR += tvtwm
+ SUBDIR += viewfax
+ SUBDIR += wm2
+ SUBDIR += x3270
+ SUBDIR += xalarm
+ SUBDIR += xantfarm
+ SUBDIR += xautolock
+ SUBDIR += xbuffy
+ SUBDIR += xcb
+ SUBDIR += xco
+ SUBDIR += xcoloredit
+ SUBDIR += xcolors
+ SUBDIR += xdaliclock
+ SUBDIR += xdtm
+ SUBDIR += xfce
+ SUBDIR += xfed
+ SUBDIR += xfedor
+ SUBDIR += xfishtank
+ SUBDIR += xfm
+ SUBDIR += xforms
+ SUBDIR += xgrab
+ SUBDIR += xkeycaps
+ SUBDIR += xloadimage
+ SUBDIR += xlockmore
+ SUBDIR += xmascot
+ SUBDIR += xmbdfed
+ SUBDIR += xmold
+ SUBDIR += xpostit
+ SUBDIR += xpostitPlus
+ SUBDIR += xprompt
+ SUBDIR += xscreensaver
+ SUBDIR += xsnow
+ SUBDIR += xtacy
+ SUBDIR += xtestpicture
+ SUBDIR += xtoolwait
+ SUBDIR += xview-clients
+ SUBDIR += xview-config
+ SUBDIR += xview-lib
+ SUBDIR += xzoom
+
+.include <bsd.port.subdir.mk>
diff --git a/x11/rclock/Makefile b/x11/rclock/Makefile
new file mode 100644
index 00000000000..b9d886715f7
--- /dev/null
+++ b/x11/rclock/Makefile
@@ -0,0 +1,27 @@
+# ex:ts=8
+# Ports collection Makefile for: rclock
+# Version required: 2.19
+# Date created: 24th Feburary 1997
+# Whom: obrien@NUXI.com
+#
+# FreeBSD Id: Makefile,v 1.1.1.1 1997/03/03 16:27:10 obrien Exp
+#
+
+PKGNAME= rclock-2.20
+DISTNAME= rxvt-2.20
+CATEGORIES= x11
+MASTER_SITES= ${MASTER_SITE_SUNSITE} \
+ ftp://ftp.nuclecu.unam.mx/linux/local/rxvt/ \
+ ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin.X11/
+MASTER_SITE_SUBDIR= utils/file/managers/mc/rxvt
+#MASTER_SITE_SUBDIR= X11/xutils/terms
+
+MAINTAINER= obrien@FreeBSD.org
+
+CFLAGS+= '-DMAIL_SPOOL=\"/var/mail/\"'
+USE_X11= yes
+GNU_CONFIGURE= yes
+ALL_TARGET= clock
+MAN1= rclock.1
+
+.include <bsd.port.mk>
diff --git a/x11/rclock/files/md5 b/x11/rclock/files/md5
new file mode 100644
index 00000000000..5b1c00e929a
--- /dev/null
+++ b/x11/rclock/files/md5
@@ -0,0 +1 @@
+MD5 (rxvt-2.20.tar.gz) = 860432f0d146d0cdf4630967f6c94ae3
diff --git a/x11/rclock/patches/patch-aa b/x11/rclock/patches/patch-aa
new file mode 100644
index 00000000000..861a5c1eb6a
--- /dev/null
+++ b/x11/rclock/patches/patch-aa
@@ -0,0 +1,11 @@
+--- Makefile.in.orig Fri Sep 27 10:48:20 1996
++++ Makefile.in Mon Feb 24 01:09:28 1997
+@@ -7,7 +7,7 @@
+ first_rule: all
+ dummy:
+
+-subdirs = src doc rclock src/graphics
++subdirs = rclock # src doc rclock src/graphics
+
+ DIST_ETC = etc/XTerm.ad etc/color etc/termcap etc/terminfo etc/xmkdir
+
diff --git a/x11/rclock/pkg/COMMENT b/x11/rclock/pkg/COMMENT
new file mode 100644
index 00000000000..bf5a3a3b596
--- /dev/null
+++ b/x11/rclock/pkg/COMMENT
@@ -0,0 +1 @@
+analog clock for X w/appointment reminder and mail notification
diff --git a/x11/rclock/pkg/DESCR b/x11/rclock/pkg/DESCR
new file mode 100644
index 00000000000..a9480179e51
--- /dev/null
+++ b/x11/rclock/pkg/DESCR
@@ -0,0 +1,7 @@
+Rclock is an analog clock for X intended as an xclock(1) replacement that
+conserves memory and has extra features: rclock enters reverse video if
+there is mail waiting; an appointment reminder is also builtin.
+
+The ~/.rclock file lists the messages to display and/or the programs
+to run at specified times and dates.
+
diff --git a/x11/rclock/pkg/PLIST b/x11/rclock/pkg/PLIST
new file mode 100644
index 00000000000..d63593c2deb
--- /dev/null
+++ b/x11/rclock/pkg/PLIST
@@ -0,0 +1,2 @@
+bin/rclock
+man/man1/rclock.1.gz
diff --git a/x11/rxvt/Makefile b/x11/rxvt/Makefile
new file mode 100644
index 00000000000..65a2139ad7d
--- /dev/null
+++ b/x11/rxvt/Makefile
@@ -0,0 +1,23 @@
+# New ports collection Makefile for: rxvt
+# Version required: 2.20
+# Date created: 5th December 1994
+# Whom: gpalmer@FreeBSD.org
+#
+# FreeBSD Id: Makefile,v 1.13 1997/03/07 12:29:49 obrien Exp
+#
+
+DISTNAME= rxvt-2.20
+CATEGORIES= x11
+MASTER_SITES= ${MASTER_SITE_SUNSITE} \
+ ftp://ftp.nuclecu.unam.mx/linux/local/rxvt/ \
+ ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin.X11/
+MASTER_SITE_SUBDIR= utils/file/managers/mc/rxvt
+#MASTER_SITE_SUBDIR= X11/xutils/terms
+
+MAINTAINER= winter@jurai.net
+
+USE_X11= yes
+GNU_CONFIGURE= yes
+MAN1= rxvt.1
+
+.include <bsd.port.mk>
diff --git a/x11/rxvt/files/md5 b/x11/rxvt/files/md5
new file mode 100644
index 00000000000..5b1c00e929a
--- /dev/null
+++ b/x11/rxvt/files/md5
@@ -0,0 +1 @@
+MD5 (rxvt-2.20.tar.gz) = 860432f0d146d0cdf4630967f6c94ae3
diff --git a/x11/rxvt/patches/patch-aa b/x11/rxvt/patches/patch-aa
new file mode 100644
index 00000000000..023eb0f45ff
--- /dev/null
+++ b/x11/rxvt/patches/patch-aa
@@ -0,0 +1,11 @@
+--- Makefile.in.orig Fri Sep 27 10:48:20 1996
++++ Makefile.in Mon Feb 24 01:09:28 1997
+@@ -7,7 +7,7 @@
+ first_rule: all
+ dummy:
+
+-subdirs = src doc rclock src/graphics
++subdirs = src doc #rclock src/graphics
+
+ DIST_ETC = etc/XTerm.ad etc/color etc/termcap etc/terminfo etc/xmkdir
+
diff --git a/x11/rxvt/patches/patch-ab b/x11/rxvt/patches/patch-ab
new file mode 100644
index 00000000000..4b6d96b4720
--- /dev/null
+++ b/x11/rxvt/patches/patch-ab
@@ -0,0 +1,19 @@
+--- ./src/utmp.c.org Thu Jan 23 10:46:02 1997
++++ ./src/utmp.c Thu Apr 24 15:20:49 1997
+@@ -80,6 +80,8 @@
+ #include <stdio.h>
+ #include <string.h>
+
++#include <sys/types.h>
++
+ #ifdef HAVE_UTMPX_H
+ # include <utmpx.h>
+ # define USE_SYSV_UTMP
+@@ -90,7 +92,6 @@
+ # endif
+ #endif
+
+-#include <sys/types.h>
+ #include <sys/stat.h>
+
+ #ifdef TIME_WITH_SYS_TIME
diff --git a/x11/rxvt/patches/patch-ad b/x11/rxvt/patches/patch-ad
new file mode 100644
index 00000000000..467184b4b4f
--- /dev/null
+++ b/x11/rxvt/patches/patch-ad
@@ -0,0 +1,11 @@
+--- doc/Makefile.in.orig Fri Sep 27 10:48:24 1996
++++ doc/Makefile.in Mon Feb 24 01:14:02 1997
+@@ -25,7 +25,7 @@
+
+ tags allbin:
+
+-alldoc: rxvt.1 LSM
++alldoc: rxvt.1 # LSM
+
+ clean:
+ $(RMF) LSM rxvt.1 *~
diff --git a/x11/rxvt/patches/patch-ae b/x11/rxvt/patches/patch-ae
new file mode 100644
index 00000000000..719a8370408
--- /dev/null
+++ b/x11/rxvt/patches/patch-ae
@@ -0,0 +1,42 @@
+--- src/feature.h.orig Thu Jan 23 10:46:02 1997
++++ src/feature.h Mon Feb 24 03:56:40 1997
+@@ -136,8 +136,8 @@
+ * default rendition rather than the current rendition
+ * NB: this make break some applications and should used with caution
+ *----------------------------------------------------------------------*/
+-#define XPM_BACKGROUND
+-#define XPM_SCALING
++/* #define XPM_BACKGROUND */
++/* #define XPM_SCALING */
+ #define PATH_ENV "RXVTPATH"
+ /* #define XPM_BUFFERING */
+ /* #define NO_CURSORCOLOR */
+@@ -272,8 +272,9 @@
+ * for XTERM_SCROLLBAR it is *always* 14.
+ *----------------------------------------------------------------------*/
+ /* #define XTERM_SCROLLBAR */
+-#define SCROLLBAR_RIGHT
++/* #define SCROLLBAR_RIGHT */
+ /* #define SB_WIDTH 10 */
++#define SB_WIDTH 8
+ /*}}}*/
+
+ /*{{{ menuBar: */
+@@ -367,14 +368,15 @@
+ * for BSD-type systems, to define where the tty table is located
+ * if it isn't /etc/ttytab
+ *----------------------------------------------------------------------*/
+-/* #define UTMP_SUPPORT */
++#define UTMP_SUPPORT
+ #ifdef UTMP_SUPPORT
+ # ifndef UTMP_FILENAME
+ /* # define UTMP_FILENAME "/var/adm/utmp" */
+ /* # define UTMP_FILENAME "/var/adm/utmp" */
++# define UTMP_FILENAME "/var/run/utmp"
+ # endif
+ # ifndef TTYTAB_FILENAME
+-/* # define TTYTAB_FILENAME "/etc/ttys" */
++# define TTYTAB_FILENAME "/etc/ttys"
+ # endif
+ #endif
+ /*}}}*/
diff --git a/x11/rxvt/patches/patch-ah b/x11/rxvt/patches/patch-ah
new file mode 100644
index 00000000000..c12ed63e56c
--- /dev/null
+++ b/x11/rxvt/patches/patch-ah
@@ -0,0 +1,11 @@
+--- src/command.c.orig Fri Sep 27 10:48:22 1996
++++ src/command.c Mon Feb 24 01:25:51 1997
+@@ -509,7 +509,7 @@
+ ttydev = tty_name;
+
+ # define PTYCHAR1 "pqrstuvwxyz"
+-# define PTYCHAR2 "0123456789abcdef"
++# define PTYCHAR2 "0123456789abcdefghijklmnopqrstuv"
+ for (c1 = PTYCHAR1; *c1; c1++)
+ {
+ ptydev [len-2] = ttydev [len-2] = *c1;
diff --git a/x11/rxvt/pkg/COMMENT b/x11/rxvt/pkg/COMMENT
new file mode 100644
index 00000000000..fbd15b64aca
--- /dev/null
+++ b/x11/rxvt/pkg/COMMENT
@@ -0,0 +1 @@
+rxvt - a low memory usage xterm replacement that supports color
diff --git a/x11/rxvt/pkg/DESCR b/x11/rxvt/pkg/DESCR
new file mode 100644
index 00000000000..ebf227ea910
--- /dev/null
+++ b/x11/rxvt/pkg/DESCR
@@ -0,0 +1,6 @@
+Rxvt is an xterm replacement which uses a little less memory, and is
+suitable for use on machines with small memories. Tek4010 support
+is removed.
+
+Modifications were made by Rob Nation (nation@rocket.sanders.lockheed.com)
+to make it a little more compact, and to add and remove certain features.
diff --git a/x11/rxvt/pkg/PLIST b/x11/rxvt/pkg/PLIST
new file mode 100644
index 00000000000..a8c98f6304e
--- /dev/null
+++ b/x11/rxvt/pkg/PLIST
@@ -0,0 +1,2 @@
+bin/rxvt
+man/man1/rxvt.1.gz
diff --git a/x11/swisswatch/Makefile b/x11/swisswatch/Makefile
new file mode 100644
index 00000000000..d15dd2dc0d5
--- /dev/null
+++ b/x11/swisswatch/Makefile
@@ -0,0 +1,18 @@
+# New ports collection makefile for: swisswatch
+# Version required: 0.0.6
+# Date created: 16 December 1995
+# Whom: Yoshiro MIHIRA <sanpei@yy.cs.keio.ac.jp>
+#
+# FreeBSD Id: Makefile,v 1.3 1996/11/18 11:43:40 asami Exp
+#
+
+DISTNAME= swisswatch-0.06
+CATEGORIES= x11
+MASTER_SITES= ftp://ftp.iij.ad.jp/pub/X/R5contrib/
+EXTRACT_SUFX= .tar.Z
+
+MAINTAINER= sanpei@yy.cs.keio.ac.jp
+
+USE_IMAKE= yes
+
+.include <bsd.port.mk>
diff --git a/x11/swisswatch/files/md5 b/x11/swisswatch/files/md5
new file mode 100644
index 00000000000..58ae911db5a
--- /dev/null
+++ b/x11/swisswatch/files/md5
@@ -0,0 +1 @@
+MD5 (swisswatch-0.06.tar.Z) = 003c4829d7fc9d93ff1d1fdf3c148395
diff --git a/x11/swisswatch/patches/patch-aa b/x11/swisswatch/patches/patch-aa
new file mode 100644
index 00000000000..add8b9947a2
--- /dev/null
+++ b/x11/swisswatch/patches/patch-aa
@@ -0,0 +1,11 @@
+--- Imakefile.org Sat Dec 16 19:10:12 1995
++++ Imakefile Sat Dec 16 18:59:27 1995
+@@ -1,7 +1,7 @@
+ #ifdef ContribRules
+ ContribRules
+ #endif
+-DEFINES = ExtensionDefines
++DEFINES = ExtensionDefines -DSHAPE
+ SRCS = swisswatch.c SwissWatch.c Hand.c Mark.c HandOrMark.c TableConvert.c
+ OBJS = swisswatch.o SwissWatch.o Hand.o Mark.o HandOrMark.o TableConvert.o
+ DEPLIBS = $(DEPXTOOLLIB) $(DEPXMULIB) $(DEPEXTENSIONLIB) $(DEPXLIB)
diff --git a/x11/swisswatch/pkg/COMMENT b/x11/swisswatch/pkg/COMMENT
new file mode 100644
index 00000000000..6eb7733aa0d
--- /dev/null
+++ b/x11/swisswatch/pkg/COMMENT
@@ -0,0 +1 @@
+A Swiss railway clock emulation, and a fancy default appearance.
diff --git a/x11/swisswatch/pkg/DESCR b/x11/swisswatch/pkg/DESCR
new file mode 100644
index 00000000000..9cab4ac8528
--- /dev/null
+++ b/x11/swisswatch/pkg/DESCR
@@ -0,0 +1,12 @@
+Swisswatch is a fancy Swiss railway clock emulator.
+
+This program support color display, you must add belong lines to ~/.Xdefaults.
+
+#if COLOR
+swisswatch*customization: -color
+#endif
+
+and exec `xrdb $HOME/.Xdefaults'.
+
+- Yoshiro MIHIRA
+(sanpei@yy.cs.keio.ac.jp)
diff --git a/x11/swisswatch/pkg/PLIST b/x11/swisswatch/pkg/PLIST
new file mode 100644
index 00000000000..f551a91becf
--- /dev/null
+++ b/x11/swisswatch/pkg/PLIST
@@ -0,0 +1,4 @@
+bin/swisswatch
+lib/X11/app-defaults/SwissWatch
+lib/X11/app-defaults/SwissWatch-color
+man/man1/swisswatch.1.gz
diff --git a/x11/tk80/Makefile b/x11/tk80/Makefile
new file mode 100644
index 00000000000..54e45372998
--- /dev/null
+++ b/x11/tk80/Makefile
@@ -0,0 +1,29 @@
+# New ports collection makefile for: tk8.0
+# Version required: tk8.0
+# Date created: 19 August 1997
+# Whom: jkh
+#
+# FreeBSD Id: Makefile,v 1.4 1997/10/01 09:20:31 tg Exp
+#
+
+DISTNAME= tk8.0
+PKGNAME= tk-8.0
+CATEGORIES= x11
+MASTER_SITES= ftp://ftp.sunlabs.com/pub/tcl/
+
+MAINTAINER= jkh@Freebsd.ORG
+
+LIB_DEPENDS= tcl80\\.1\\.:${PORTSDIR}/lang/tcl80
+
+WRKSRC= ${WRKDIR}/${DISTNAME}/unix
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --enable-shared
+CONFIGURE_ENV= PORTSDIR=${PORTSDIR}
+
+post-install:
+ ${LDCONFIG} -m ${PREFIX}/lib
+
+test:
+ cd ${WRKSRC}; make test
+
+.include <bsd.port.mk>
diff --git a/x11/tk80/files/md5 b/x11/tk80/files/md5
new file mode 100644
index 00000000000..347bde24eae
--- /dev/null
+++ b/x11/tk80/files/md5
@@ -0,0 +1 @@
+MD5 (tk8.0.tar.gz) = 489cdb76937d05aaec4ee506ba15d7dc
diff --git a/x11/tk80/patches/patch-aa b/x11/tk80/patches/patch-aa
new file mode 100644
index 00000000000..c39f29c64f7
--- /dev/null
+++ b/x11/tk80/patches/patch-aa
@@ -0,0 +1,37 @@
+--- configure.orig Fri Aug 15 22:17:52 1997
++++ configure Wed Oct 1 10:50:54 1997
+@@ -662,14 +662,14 @@
+ if test -n "$withval"; then
+ TCL_BIN_DIR=$withval
+ else
+- TCL_BIN_DIR=`cd ../../tcl8.0/unix; pwd`
++ TCL_BIN_DIR=${prefix}/lib/tcl8.0
+ fi
+
+ if test ! -d $TCL_BIN_DIR; then
+ { echo "configure: error: Tcl directory $TCL_BIN_DIR doesn't exist" 1>&2; exit 1; }
+ fi
+-if test ! -f $TCL_BIN_DIR/Makefile; then
+- { echo "configure: error: There's no Makefile in $TCL_BIN_DIR; perhaps you didn't specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?" 1>&2; exit 1; }
++if test ! -f $TCL_BIN_DIR/tclConfig.sh; then
++ { echo "configure: error: There's no tclConfig.sh in $TCL_BIN_DIR; perhaps you didn't specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?" 1>&2; exit 1; }
+ fi
+
+ #--------------------------------------------------------------------
+@@ -688,6 +688,8 @@
+ DL_LIBS=$TCL_DL_LIBS
+ LD_FLAGS=$TCL_LD_FLAGS
+
++TCL_SRC_DIR=${prefix}/include/tcl${TCL_VERSION}
++
+ LIB_RUNTIME_DIR='${LIB_RUNTIME_DIR}'
+
+ # If Tcl and Tk are installed in different places, adjust the library
+@@ -2271,6 +2273,7 @@
+ s%@SHLIB_VERSION@%$SHLIB_VERSION%g
+ s%@TCL_BIN_DIR@%$TCL_BIN_DIR%g
+ s%@TCL_BUILD_LIB_SPEC@%$TCL_BUILD_LIB_SPEC%g
++s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g
+ s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g
+ s%@TCL_VERSION@%$TCL_VERSION%g
+ s%@TK_BUILD_LIB_SPEC@%$TK_BUILD_LIB_SPEC%g
diff --git a/x11/tk80/patches/patch-ab b/x11/tk80/patches/patch-ab
new file mode 100644
index 00000000000..feae30fefeb
--- /dev/null
+++ b/x11/tk80/patches/patch-ab
@@ -0,0 +1,137 @@
+--- Makefile.in.orig Fri Aug 15 22:17:51 1997
++++ Makefile.in Wed Oct 1 10:07:16 1997
+@@ -56,7 +56,9 @@
+ BIN_DIR = $(exec_prefix)/bin
+
+ # Directory in which to install the include file tk.h:
+-INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(prefix)/include
++INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(prefix)/include/tk$(VERSION)
++GENERIC_INCLUDE_INSTALL_DIR = $(INCLUDE_INSTALL_DIR)/generic
++UNIX_INCLUDE_INSTALL_DIR = $(INCLUDE_INSTALL_DIR)/unix
+
+ # Top-level directory for manual entries:
+ MAN_INSTALL_DIR = $(INSTALL_ROOT)$(prefix)/man
+@@ -94,11 +96,11 @@
+
+ # Libraries to use when linking. This definition is determined by the
+ # configure script.
+-LIBS = @TCL_BUILD_LIB_SPEC@ @LIBS@ $(X11_LIB_SWITCHES) @DL_LIBS@ @MATH_LIBS@ -lc
++LIBS = -L${PREFIX}/lib -ltcl80 @LIBS@ $(X11_LIB_SWITCHES) @DL_LIBS@ @MATH_LIBS@ -lc
+
+ # To change the compiler switches, for example to change from -O
+ # to -g, change the following line:
+-CFLAGS = -O
++CFLAGS = @CFLAGS@
+
+ # To turn off the security checks that disallow incoming sends when
+ # the X server appears to be insecure, reverse the comments on the
+@@ -134,7 +136,7 @@
+ # "install" around; better to use the install-sh script that comes
+ # with the distribution, which is slower but guaranteed to work.
+
+-INSTALL = @srcdir@/install-sh -c
++INSTALL = install -c
+ INSTALL_PROGRAM = ${INSTALL}
+ INSTALL_DATA = ${INSTALL} -m 644
+
+@@ -290,6 +292,11 @@
+ @MAKE_LIB@
+ $(RANLIB) @TK_LIB_FILE@
+
++libtk80.a: ${OBJS}
++ rm -f libtk80.a
++ ar cr libtk80.a ${OBJS}
++ $(RANLIB) libtk80.a
++
+ # Make target which outputs the list of the .o contained in the Tk lib
+ # usefull to build a single big shared library containing Tcl/Tk and other
+ # extensions. used for the Tcl Plugin. -- dl
+@@ -340,7 +347,7 @@
+ # some ranlibs write to current directory, and this might not always be
+ # possible (e.g. if installing as root).
+
+-install-binaries: $(TK_LIB_FILE) wish
++install-binaries: $(TK_LIB_FILE) libtk80.a wish
+ @for i in $(LIB_INSTALL_DIR) $(BIN_INSTALL_DIR) ; \
+ do \
+ if [ ! -d $$i ] ; then \
+@@ -354,13 +361,19 @@
+ @$(INSTALL_DATA) $(TK_LIB_FILE) $(LIB_INSTALL_DIR)/$(TK_LIB_FILE)
+ @(cd $(LIB_INSTALL_DIR); $(RANLIB) $(TK_LIB_FILE))
+ @chmod 555 $(LIB_INSTALL_DIR)/$(TK_LIB_FILE)
++ @echo "Installing libtk80.a"
++ @$(INSTALL_DATA) libtk80.a $(LIB_INSTALL_DIR)/libtk80.a
++ @(cd $(LIB_INSTALL_DIR); $(RANLIB) libtk80.a)
++ @chmod 555 $(LIB_INSTALL_DIR)/libtk80.a
+ @echo "Installing wish"
+ @$(INSTALL_PROGRAM) wish $(BIN_INSTALL_DIR)/wish$(VERSION)
+ @echo "Installing tkConfig.sh"
+- @$(INSTALL_DATA) tkConfig.sh $(LIB_INSTALL_DIR)/tkConfig.sh
++ @mkdir -p $(LIB_INSTALL_DIR)/tk$(VERSION)
++ @$(INSTALL_DATA) tkConfig.sh $(LIB_INSTALL_DIR)/tk$(VERSION)/tkConfig.sh
+
+ install-libraries:
+ @for i in $(INSTALL_ROOT)$(prefix)/lib $(INCLUDE_INSTALL_DIR) \
++ $(GENERIC_INCLUDE_INSTALL_DIR) $(UNIX_INCLUDE_INSTALL_DIR) \
+ $(SCRIPT_INSTALL_DIR) $(SCRIPT_INSTALL_DIR)/images; \
+ do \
+ if [ ! -d $$i ] ; then \
+@@ -370,8 +383,18 @@
+ else true; \
+ fi; \
+ done;
+- @echo "Installing tk.h"
+- @$(INSTALL_DATA) $(GENERIC_DIR)/tk.h $(INCLUDE_INSTALL_DIR)/tk.h
++ @echo "Installing headers"
++ @for i in $(GENERIC_DIR)/*.h ; \
++ do \
++ echo "Installing $$i"; \
++ $(INSTALL_DATA) $$i $(GENERIC_INCLUDE_INSTALL_DIR); \
++ done;
++ @for i in $(UNIX_DIR)/*.h ; \
++ do \
++ echo "Installing $$i"; \
++ $(INSTALL_DATA) $$i $(UNIX_INCLUDE_INSTALL_DIR); \
++ done;
++ @ln -sf $(GENERIC_INCLUDE_INSTALL_DIR)/tk.h $(INCLUDE_INSTALL_DIR)/tk.h
+ for i in $(SRC_DIR)/library/*.tcl $(SRC_DIR)/library/tclIndex $(SRC_DIR)/library/prolog.ps $(UNIX_DIR)/tkAppInit.c; \
+ do \
+ echo "Installing $$i"; \
+@@ -430,28 +453,28 @@
+ @cd $(SRC_DIR)/doc; for i in *.1; \
+ do \
+ echo "Installing doc/$$i"; \
+- rm -f $(MAN1_INSTALL_DIR)/$$i; \
++ rm -f $(MAN1_INSTALL_DIR)/$$i $(MAN1_INSTALL_DIR)/$$i.gz; \
+ sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
+- $$i > $(MAN1_INSTALL_DIR)/$$i; \
+- chmod 444 $(MAN1_INSTALL_DIR)/$$i; \
++ $$i | gzip -c > $(MAN1_INSTALL_DIR)/$$i.gz; \
++ chmod 444 $(MAN1_INSTALL_DIR)/$$i.gz; \
+ done;
+ $(UNIX_DIR)/mkLinks $(MAN1_INSTALL_DIR)
+ @cd $(SRC_DIR)/doc; for i in *.3; \
+ do \
+ echo "Installing doc/$$i"; \
+- rm -f $(MAN3_INSTALL_DIR)/$$i; \
++ rm -f $(MAN3_INSTALL_DIR)/$$i $(MAN3_INSTALL_DIR)/$$i.gz; \
+ sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
+- $$i > $(MAN3_INSTALL_DIR)/$$i; \
+- chmod 444 $(MAN3_INSTALL_DIR)/$$i; \
++ $$i | gzip -c > $(MAN3_INSTALL_DIR)/$$i.gz; \
++ chmod 444 $(MAN3_INSTALL_DIR)/$$i.gz; \
+ done;
+ $(UNIX_DIR)/mkLinks $(MAN3_INSTALL_DIR)
+ @cd $(SRC_DIR)/doc; for i in *.n; \
+ do \
+ echo "Installing doc/$$i"; \
+- rm -f $(MANN_INSTALL_DIR)/$$i; \
++ rm -f $(MANN_INSTALL_DIR)/$$i $(MANN_INSTALL_DIR)/$$i.gz; \
+ sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
+- $$i > $(MANN_INSTALL_DIR)/$$i; \
+- chmod 444 $(MANN_INSTALL_DIR)/$$i; \
++ $$i | gzip -c > $(MANN_INSTALL_DIR)/$$i.gz; \
++ chmod 444 $(MANN_INSTALL_DIR)/$$i.gz; \
+ done;
+ $(UNIX_DIR)/mkLinks $(MANN_INSTALL_DIR)
+
diff --git a/x11/tk80/patches/patch-ac b/x11/tk80/patches/patch-ac
new file mode 100644
index 00000000000..0709c610025
--- /dev/null
+++ b/x11/tk80/patches/patch-ac
@@ -0,0 +1,918 @@
+*** tkText.c 1997/07/04 22:39:41 2.0
+--- ../generic/tkText.c 1997/08/15 22:25:21
+***************
+*** 866,871 ****
+--- 866,872 ----
+ || (textPtr->selTagPtr->spacing2String != NULL)
+ || (textPtr->selTagPtr->spacing3String != NULL)
+ || (textPtr->selTagPtr->tabString != NULL)
++ || (textPtr->selTagPtr->elideString != NULL)
+ || (textPtr->selTagPtr->underlineString != NULL)
+ || (textPtr->selTagPtr->wrapMode != NULL)) {
+ textPtr->selTagPtr->affectsDisplay = 1;
+***************
+*** 1414,1420 ****
+ }
+ }
+ }
+! if (segPtr->typePtr == &tkTextCharType) {
+ memcpy((VOID *) buffer, (VOID *) (segPtr->body.chars
+ + offsetInSeg), (size_t) chunkSize);
+ buffer += chunkSize;
+--- 1415,1421 ----
+ }
+ }
+ }
+! if (segPtr->typePtr == &tkTextCharType && !TkTextIsElided(textPtr, &textPtr->selIndex)) {
+ memcpy((VOID *) buffer, (VOID *) (segPtr->body.chars
+ + offsetInSeg), (size_t) chunkSize);
+ buffer += chunkSize;
+***************
+*** 1555,1561 ****
+ int argc; /* Number of arguments. */
+ char **argv; /* Argument strings. */
+ {
+! int backwards, exact, c, i, argsLeft, noCase, leftToScan;
+ size_t length;
+ int numLines, startingLine, startingChar, lineNum, firstChar, lastChar;
+ int code, matchLength, matchChar, passes, stopLine, searchWholeText;
+--- 1556,1562 ----
+ int argc; /* Number of arguments. */
+ char **argv; /* Argument strings. */
+ {
+! int backwards, exact, searchElide, c, i, argsLeft, noCase, leftToScan;
+ size_t length;
+ int numLines, startingLine, startingChar, lineNum, firstChar, lastChar;
+ int code, matchLength, matchChar, passes, stopLine, searchWholeText;
+***************
+*** 1566,1571 ****
+--- 1567,1573 ----
+ Tcl_DString line, patDString;
+ TkTextSegment *segPtr;
+ TkTextLine *linePtr;
++ TkTextIndex curIndex;
+ Tcl_RegExp regexp = NULL; /* Initialization needed only to
+ * prevent compiler warning. */
+
+***************
+*** 1574,1579 ****
+--- 1576,1583 ----
+ */
+
+ exact = 1;
++ searchElide = 0;
++ curIndex.tree = textPtr->tree;
+ backwards = 0;
+ noCase = 0;
+ varName = NULL;
+***************
+*** 1587,1593 ****
+ badSwitch:
+ Tcl_AppendResult(interp, "bad switch \"", arg,
+ "\": must be -forward, -backward, -exact, -regexp, ",
+! "-nocase, -count, or --", (char *) NULL);
+ return TCL_ERROR;
+ }
+ c = arg[1];
+--- 1591,1597 ----
+ badSwitch:
+ Tcl_AppendResult(interp, "bad switch \"", arg,
+ "\": must be -forward, -backward, -exact, -regexp, ",
+! "-nocase, -count, -elide, or --", (char *) NULL);
+ return TCL_ERROR;
+ }
+ c = arg[1];
+***************
+*** 1608,1613 ****
+--- 1612,1619 ----
+ noCase = 1;
+ } else if ((c == 'r') && (strncmp(argv[i], "-regexp", length) == 0)) {
+ exact = 0;
++ } else if ((c == 'e') && (strncmp(argv[i], "-elide", length) == 0)) {
++ searchElide = 1;
+ } else if ((c == '-') && (strncmp(argv[i], "--", length) == 0)) {
+ i++;
+ break;
+***************
+*** 1703,1711 ****
+ */
+
+ linePtr = TkBTreeFindLine(textPtr->tree, lineNum);
+ for (segPtr = linePtr->segPtr; segPtr != NULL;
+! segPtr = segPtr->nextPtr) {
+! if (segPtr->typePtr != &tkTextCharType) {
+ continue;
+ }
+ Tcl_DStringAppend(&line, segPtr->body.chars, segPtr->size);
+--- 1709,1718 ----
+ */
+
+ linePtr = TkBTreeFindLine(textPtr->tree, lineNum);
++ curIndex.linePtr = linePtr; curIndex.charIndex = 0;
+ for (segPtr = linePtr->segPtr; segPtr != NULL;
+! curIndex.charIndex += segPtr->size, segPtr = segPtr->nextPtr) {
+! if (segPtr->typePtr != &tkTextCharType || (!searchElide && TkTextIsElided(textPtr, &curIndex))) {
+ continue;
+ }
+ Tcl_DStringAppend(&line, segPtr->body.chars, segPtr->size);
+*** tkText.h 1997/07/04 22:39:41 2.0
+--- ../generic/tkText.h 1997/08/15 22:18:56
+***************
+*** 370,375 ****
+--- 370,379 ----
+ * Must be tkTextCharUid, tkTextNoneUid,
+ * tkTextWordUid, or NULL to use wrapMode
+ * for whole widget. */
++ char *elideString; /* -elide option string (malloc-ed).
++ * NULL means option not specified. */
++ int elide; /* Non-zero means text is elided.
++ * Only valid if elideString is non-NULL. */
+ int affectsDisplay; /* Non-zero means that this tag affects the
+ * way information is displayed on the screen
+ * (so need to redisplay if tag changes). */
+***************
+*** 800,805 ****
+--- 804,811 ----
+ ClientData clientData));
+ extern TkTextIndex * TkTextMakeIndex _ANSI_ARGS_((TkTextBTree tree,
+ int lineIndex, int charIndex,
++ TkTextIndex *indexPtr));
++ extern int TkTextIsElided _ANSI_ARGS_((TkText *textPtr,
+ TkTextIndex *indexPtr));
+ extern int TkTextMarkCmd _ANSI_ARGS_((TkText *textPtr,
+ Tcl_Interp *interp, int argc, char **argv));
+*** tkTextBTree.c 1997/07/04 22:39:41 2.0
+--- ../generic/tkTextBTree.c 1997/08/15 22:20:16
+***************
+*** 2427,2432 ****
+--- 2427,2558 ----
+ }
+ return tagInfo.tagPtrs;
+ }
++
++
++ /*
++ special case to just return information about elided attribute
++ specialized from TkBTreeGetTags(indexPtr, numTagsPtr) and GetStyle(textPtr, indexPtr)
++ just need to keep track of invisibility settings for each priority, pick highest one active at end
++ */
++ int
++ TkTextIsElided(textPtr, indexPtr)
++ TkText *textPtr; /* Overall information about text widget. */
++ TkTextIndex *indexPtr; /* The character in the text for which
++ * display information is wanted. */
++ {
++ #define LOTSA_TAGS 1000
++ int elide = 0; /* if nobody says otherwise, it's visible */
++
++ int deftagCnts[LOTSA_TAGS];
++ int *tagCnts = deftagCnts;
++ TkTextTag *deftagPtrs[LOTSA_TAGS];
++ TkTextTag **tagPtrs = deftagPtrs;
++ int numTags = textPtr->numTags;
++ register Node *nodePtr;
++ register TkTextLine *siblingLinePtr;
++ register TkTextSegment *segPtr;
++ register TkTextTag *tagPtr;
++ register int i, index;
++
++ /* almost always avoid malloc, so stay out of system calls */
++ if (LOTSA_TAGS < numTags) {
++ tagCnts = (int *)ckalloc((unsigned)sizeof(int) * numTags);
++ tagPtrs = (TkTextTag **)ckalloc((unsigned)sizeof(TkTextTag *) * numTags);
++ }
++
++ for (i=0; i<numTags; i++) tagCnts[i]=0;
++
++
++ /*
++ * Record tag toggles within the line of indexPtr but preceding
++ * indexPtr.
++ */
++
++ for (index = 0, segPtr = indexPtr->linePtr->segPtr;
++ (index + segPtr->size) <= indexPtr->charIndex;
++ index += segPtr->size, segPtr = segPtr->nextPtr) {
++ if ((segPtr->typePtr == &tkTextToggleOnType)
++ || (segPtr->typePtr == &tkTextToggleOffType)) {
++ tagPtr = segPtr->body.toggle.tagPtr;
++ if (tagPtr->elideString != NULL) {
++ tagPtrs[tagPtr->priority] = tagPtr;
++ tagCnts[tagPtr->priority]++;
++ }
++ }
++ }
++
++ /*
++ * Record toggles for tags in lines that are predecessors of
++ * indexPtr->linePtr but under the same level-0 node.
++ */
++
++ for (siblingLinePtr = indexPtr->linePtr->parentPtr->children.linePtr;
++ siblingLinePtr != indexPtr->linePtr;
++ siblingLinePtr = siblingLinePtr->nextPtr) {
++ for (segPtr = siblingLinePtr->segPtr; segPtr != NULL;
++ segPtr = segPtr->nextPtr) {
++ if ((segPtr->typePtr == &tkTextToggleOnType)
++ || (segPtr->typePtr == &tkTextToggleOffType)) {
++ tagPtr = segPtr->body.toggle.tagPtr;
++ if (tagPtr->elideString != NULL) {
++ tagPtrs[tagPtr->priority] = tagPtr;
++ tagCnts[tagPtr->priority]++;
++ }
++ }
++ }
++ }
++
++ /*
++ * For each node in the ancestry of this line, record tag toggles
++ * for all siblings that precede that node.
++ */
++
++ for (nodePtr = indexPtr->linePtr->parentPtr; nodePtr->parentPtr != NULL;
++ nodePtr = nodePtr->parentPtr) {
++ register Node *siblingPtr;
++ register Summary *summaryPtr;
++
++ for (siblingPtr = nodePtr->parentPtr->children.nodePtr;
++ siblingPtr != nodePtr; siblingPtr = siblingPtr->nextPtr) {
++ for (summaryPtr = siblingPtr->summaryPtr; summaryPtr != NULL;
++ summaryPtr = summaryPtr->nextPtr) {
++ if (summaryPtr->toggleCount & 1) {
++ tagPtr = summaryPtr->tagPtr;
++ if (tagPtr->elideString != NULL) {
++ tagPtrs[tagPtr->priority] = tagPtr;
++ tagCnts[tagPtr->priority] += summaryPtr->toggleCount;
++ }
++ }
++ }
++ }
++ }
++
++
++ /*
++ * Now traverse from highest priority to lowest,
++ * take elided value from first odd count (= on)
++ */
++
++ for (i = numTags-1; i >=0; i--) {
++ if (tagCnts[i] & 1) {
++ #ifndef ALWAYS_SHOW_SELECTION
++ /* who would make the selection elided? */
++ if ((tagPtr == textPtr->selTagPtr) && !(textPtr->flags & GOT_FOCUS)) {
++ continue;
++ }
++ #endif
++ elide = tagPtrs[i]->elide;
++ break;
++ }
++ }
++
++ if (LOTSA_TAGS < numTags) {
++ ckfree((char *) tagCnts);
++ ckfree((char *) tagPtrs);
++ }
++
++ return elide;
++ }
+
+ /*
+ *----------------------------------------------------------------------
+*** tkTextDisp.c 1997/07/04 22:39:41 2.0
+--- ../generic/tkTextDisp.c 1997/08/16 01:20:18
+***************
+*** 55,60 ****
+--- 55,61 ----
+ * be NULL). */
+ int underline; /* Non-zero means draw underline underneath
+ * text. */
++ int elide; /* Non-zero means draw text */
+ Tk_Uid wrapMode; /* How to handle wrap-around for this tag.
+ * One of tkTextCharUid, tkTextNoneUid,
+ * or tkTextWordUid. */
+***************
+*** 311,316 ****
+--- 312,332 ----
+ int x));
+ static void CharUndisplayProc _ANSI_ARGS_((TkText *textPtr,
+ TkTextDispChunk *chunkPtr));
++
++ /*
++ Definitions of elided procs.
++ Compiler can't inline these since we use pointers to these functions.
++ ElideDisplayProc, ElideUndisplayProc special-cased for speed,
++ as potentially many elided DLine chunks if large, tag toggle-filled
++ elided region.
++ */
++ static void ElideBboxProc _ANSI_ARGS_((TkTextDispChunk *chunkPtr,
++ int index, int y, int lineHeight, int baseline,
++ int *xPtr, int *yPtr, int *widthPtr,
++ int *heightPtr));
++ static int ElideMeasureProc _ANSI_ARGS_((TkTextDispChunk *chunkPtr,
++ int x));
++
+ static void DisplayDLine _ANSI_ARGS_((TkText *textPtr,
+ DLine *dlPtr, DLine *prevPtr, Pixmap pixmap));
+ static void DisplayLineBackground _ANSI_ARGS_((TkText *textPtr,
+***************
+*** 479,485 ****
+
+ int borderPrio, borderWidthPrio, reliefPrio, bgStipplePrio;
+ int fgPrio, fontPrio, fgStipplePrio;
+! int underlinePrio, justifyPrio, offsetPrio;
+ int lMargin1Prio, lMargin2Prio, rMarginPrio;
+ int spacing1Prio, spacing2Prio, spacing3Prio;
+ int overstrikePrio, tabPrio, wrapPrio;
+--- 495,501 ----
+
+ int borderPrio, borderWidthPrio, reliefPrio, bgStipplePrio;
+ int fgPrio, fontPrio, fgStipplePrio;
+! int underlinePrio, elidePrio, justifyPrio, offsetPrio;
+ int lMargin1Prio, lMargin2Prio, rMarginPrio;
+ int spacing1Prio, spacing2Prio, spacing3Prio;
+ int overstrikePrio, tabPrio, wrapPrio;
+***************
+*** 494,500 ****
+ tagPtrs = TkBTreeGetTags(indexPtr, &numTags);
+ borderPrio = borderWidthPrio = reliefPrio = bgStipplePrio = -1;
+ fgPrio = fontPrio = fgStipplePrio = -1;
+! underlinePrio = justifyPrio = offsetPrio = -1;
+ lMargin1Prio = lMargin2Prio = rMarginPrio = -1;
+ spacing1Prio = spacing2Prio = spacing3Prio = -1;
+ overstrikePrio = tabPrio = wrapPrio = -1;
+--- 510,516 ----
+ tagPtrs = TkBTreeGetTags(indexPtr, &numTags);
+ borderPrio = borderWidthPrio = reliefPrio = bgStipplePrio = -1;
+ fgPrio = fontPrio = fgStipplePrio = -1;
+! underlinePrio = elidePrio = justifyPrio = offsetPrio = -1;
+ lMargin1Prio = lMargin2Prio = rMarginPrio = -1;
+ spacing1Prio = spacing2Prio = spacing3Prio = -1;
+ overstrikePrio = tabPrio = wrapPrio = -1;
+***************
+*** 612,617 ****
+--- 628,638 ----
+ styleValues.underline = tagPtr->underline;
+ underlinePrio = tagPtr->priority;
+ }
++ if ((tagPtr->elideString != NULL)
++ && (tagPtr->priority > elidePrio)) {
++ styleValues.elide = tagPtr->elide;
++ elidePrio = tagPtr->priority;
++ }
+ if ((tagPtr->wrapMode != NULL)
+ && (tagPtr->priority > wrapPrio)) {
+ styleValues.wrapMode = tagPtr->wrapMode;
+***************
+*** 768,774 ****
+ * lines with numChars > 0. Used to
+ * drop 0-sized chunks from the end
+ * of the line. */
+! int offset, ascent, descent, code;
+ StyleValues *sValuePtr;
+
+ /*
+--- 789,795 ----
+ * lines with numChars > 0. Used to
+ * drop 0-sized chunks from the end
+ * of the line. */
+! int offset, ascent, descent, code, elide, elidesize;
+ StyleValues *sValuePtr;
+
+ /*
+***************
+*** 786,791 ****
+--- 807,840 ----
+ dlPtr->nextPtr = NULL;
+ dlPtr->flags = NEW_LAYOUT;
+
++
++ /*
++ * special case entirely elide line as there may be 1000s or more
++ */
++ elide = TkTextIsElided(textPtr, indexPtr); /* save a malloc */
++ if (elide && indexPtr->charIndex==0) {
++ maxChars = 0;
++ for (segPtr = indexPtr->linePtr->segPtr; elide && segPtr!=NULL; segPtr = segPtr->nextPtr) {
++ if ((elidesize = segPtr->size) > 0) {
++ maxChars += elidesize;
++
++ /* if have tag toggle, chance that invisibility state changed, so bail out */
++ } else if (segPtr->typePtr == &tkTextToggleOffType || segPtr->typePtr == &tkTextToggleOnType) {
++ if (segPtr->body.toggle.tagPtr->elideString!=NULL) {
++ elide = (segPtr->typePtr == &tkTextToggleOffType) ^ (segPtr->body.toggle.tagPtr->elide==1);
++ }
++ }
++ }
++
++ if (elide) {
++ dlPtr->count = maxChars;
++ dlPtr->spaceAbove = dlPtr->spaceBelow = dlPtr->length = 0;
++ return dlPtr;
++ }
++ }
++
++
++
+ /*
+ * Each iteration of the loop below creates one TkTextDispChunk for
+ * the new display line. The line will always have at least one
+***************
+*** 797,802 ****
+--- 846,852 ----
+ lastChunkPtr = NULL;
+ chunkPtr = NULL;
+ noCharsYet = 1;
++ elide = 0;
+ breakChunkPtr = NULL;
+ breakCharOffset = 0;
+ justify = TK_JUSTIFY_LEFT;
+***************
+*** 821,826 ****
+--- 871,901 ----
+ }
+
+ while (segPtr != NULL) {
++
++ /* every line still gets at least one chunk due to expectations in rest of code,
++ but able to skip elided portions of line quickly */
++ /* if current chunk elided and last chunk was too, coalese */
++ if (elide && lastChunkPtr!=NULL && lastChunkPtr->displayProc == NULL/*ElideDisplayProc*/) {
++ if ((elidesize = segPtr->size - offset) > 0) {
++ curIndex.charIndex += elidesize;
++ lastChunkPtr->numChars += elidesize;
++ breakCharOffset = lastChunkPtr->breakIndex = lastChunkPtr->numChars;
++
++ /* if have tag toggle, chance that invisibility state changed */
++ } else if (segPtr->typePtr == &tkTextToggleOffType || segPtr->typePtr == &tkTextToggleOnType) {
++ if (segPtr->body.toggle.tagPtr->elideString!=NULL) {
++ elide = (segPtr->typePtr == &tkTextToggleOffType) ^ (segPtr->body.toggle.tagPtr->elide==1);
++ }
++ }
++
++ offset = 0;
++ segPtr = segPtr->nextPtr;
++ if (segPtr == NULL && chunkPtr != NULL) ckfree((char *) chunkPtr);
++
++ continue;
++ }
++
++
+ if (segPtr->typePtr->layoutProc == NULL) {
+ segPtr = segPtr->nextPtr;
+ offset = 0;
+***************
+*** 831,836 ****
+--- 906,912 ----
+ chunkPtr->nextPtr = NULL;
+ }
+ chunkPtr->stylePtr = GetStyle(textPtr, &curIndex);
++ elide = chunkPtr->stylePtr->sValuePtr->elide;
+
+ /*
+ * Save style information such as justification and indentation,
+***************
+*** 864,870 ****
+
+ gotTab = 0;
+ maxChars = segPtr->size - offset;
+! if (justify == TK_JUSTIFY_LEFT) {
+ if (segPtr->typePtr == &tkTextCharType) {
+ char *p;
+
+--- 940,946 ----
+
+ gotTab = 0;
+ maxChars = segPtr->size - offset;
+! if (!elide && justify == TK_JUSTIFY_LEFT) {
+ if (segPtr->typePtr == &tkTextCharType) {
+ char *p;
+
+***************
+*** 877,884 ****
+ }
+ }
+ }
+-
+ chunkPtr->x = x;
+ code = (*segPtr->typePtr->layoutProc)(textPtr, &curIndex, segPtr,
+ offset, maxX-tabSize, maxChars, noCharsYet, wrapMode,
+ chunkPtr);
+--- 953,973 ----
+ }
+ }
+ }
+ chunkPtr->x = x;
++ if (elide && maxChars) {
++ /* don't free style here, as other code expects to be able to do that */
++ /*breakCharOffset =*/ chunkPtr->breakIndex = chunkPtr->numChars = maxChars;
++ chunkPtr->width = 0;
++ chunkPtr->minAscent = chunkPtr->minDescent = chunkPtr->minHeight = 0;
++
++ /* would just like to point to canonical empty chunk */
++ chunkPtr->displayProc = (Tk_ChunkDisplayProc *) NULL;
++ chunkPtr->undisplayProc = (Tk_ChunkUndisplayProc *) NULL;
++ chunkPtr->measureProc = ElideMeasureProc;
++ chunkPtr->bboxProc = ElideBboxProc;
++
++ code = 1;
++ } else
+ code = (*segPtr->typePtr->layoutProc)(textPtr, &curIndex, segPtr,
+ offset, maxX-tabSize, maxChars, noCharsYet, wrapMode,
+ chunkPtr);
+***************
+*** 950,955 ****
+--- 1039,1045 ----
+ offset = 0;
+ segPtr = segPtr->nextPtr;
+ }
++
+ chunkPtr = NULL;
+ }
+ if (noCharsYet) {
+***************
+*** 998,1003 ****
+--- 1088,1094 ----
+ wholeLine = 0;
+ }
+
++
+ /*
+ * Make tab adjustments for the last tab stop, if there is one.
+ */
+***************
+*** 1321,1326 ****
+--- 1412,1418 ----
+ index.linePtr = TkBTreeFindLine(textPtr->tree, lineNum);
+ index.charIndex = 0;
+ lowestPtr = NULL;
++
+ do {
+ dlPtr = LayoutDLine(textPtr, &index);
+ dlPtr->nextPtr = lowestPtr;
+***************
+*** 1554,1559 ****
+--- 1646,1653 ----
+ Display *display;
+ int height, x;
+
++ if (dlPtr->chunkPtr == NULL) return;
++
+ /*
+ * First, clear the area of the line to the background color for the
+ * text widget.
+***************
+*** 1620,1631 ****
+--- 1714,1729 ----
+ * something is off to the right).
+ */
+
++ if (chunkPtr->displayProc != NULL)
+ (*chunkPtr->displayProc)(chunkPtr, -chunkPtr->width,
+ dlPtr->spaceAbove,
+ dlPtr->height - dlPtr->spaceAbove - dlPtr->spaceBelow,
+ dlPtr->baseline - dlPtr->spaceAbove, display, pixmap,
+ dlPtr->y + dlPtr->spaceAbove);
+ } else {
++ /* don't call if elide. This tax ok since not very many visible DLine's in
++ an area, but potentially many elide ones */
++ if (chunkPtr->displayProc != NULL)
+ (*chunkPtr->displayProc)(chunkPtr, x, dlPtr->spaceAbove,
+ dlPtr->height - dlPtr->spaceAbove - dlPtr->spaceBelow,
+ dlPtr->baseline - dlPtr->spaceAbove, display, pixmap,
+***************
+*** 1714,1719 ****
+--- 1812,1818 ----
+ StyleValues *sValuePtr;
+ Display *display;
+
++
+ /*
+ * Pass 1: scan through dlPtr from left to right. For each range of
+ * chunks with the same style, draw the main background for the style
+***************
+*** 1787,1793 ****
+ rightX = maxX;
+ }
+ chunkPtr2 = NULL;
+! if (prevPtr != NULL) {
+ /*
+ * Find the chunk in the previous line that covers leftX.
+ */
+--- 1886,1892 ----
+ rightX = maxX;
+ }
+ chunkPtr2 = NULL;
+! if (prevPtr != NULL && prevPtr->chunkPtr != NULL) {
+ /*
+ * Find the chunk in the previous line that covers leftX.
+ */
+***************
+*** 1908,1914 ****
+ rightX = maxX;
+ }
+ chunkPtr2 = NULL;
+! if (dlPtr->nextPtr != NULL) {
+ /*
+ * Find the chunk in the previous line that covers leftX.
+ */
+--- 2007,2014 ----
+ rightX = maxX;
+ }
+ chunkPtr2 = NULL;
+! /* for (dlPtr2 = dlPtr; dlPtr2->nextPtr != NULL && dlPtr2->nextPtr->chunkPtr == NULL; dlPtr2 = dlPtr2->nextPtr) {}*/
+! if (dlPtr->nextPtr != NULL && dlPtr->nextPtr->chunkPtr != NULL) {
+ /*
+ * Find the chunk in the previous line that covers leftX.
+ */
+***************
+*** 2299,2304 ****
+--- 2399,2405 ----
+ for (prevPtr = NULL, dlPtr = textPtr->dInfoPtr->dLinePtr;
+ (dlPtr != NULL) && (dlPtr->y < dInfoPtr->maxY);
+ prevPtr = dlPtr, dlPtr = dlPtr->nextPtr) {
++ if (dlPtr->chunkPtr == NULL) continue;
+ if (dlPtr->oldY != dlPtr->y) {
+ if (tkTextDebug) {
+ char string[TK_POS_CHARS];
+***************
+*** 2315,2320 ****
+--- 2416,2422 ----
+ dlPtr->oldY = dlPtr->y;
+ dlPtr->flags &= ~NEW_LAYOUT;
+ }
++ /*prevPtr = dlPtr;*/
+ }
+ Tk_FreePixmap(Tk_Display(textPtr->tkwin), pixmap);
+ }
+***************
+*** 3369,3374 ****
+--- 3471,3477 ----
+ dlPtr = LayoutDLine(textPtr, &index);
+ dlPtr->nextPtr = lowestPtr;
+ lowestPtr = dlPtr;
++ if (dlPtr->length == 0 && dlPtr->height == 0) { offset--; break; } /* elide */
+ TkTextIndexForwChars(&index, dlPtr->count, &index);
+ charsToCount -= dlPtr->count;
+ } while ((charsToCount > 0)
+***************
+*** 3381,3387 ****
+ break;
+ }
+ }
+!
+ /*
+ * Discard the display lines, then either return or prepare
+ * for the next display line to lay out.
+--- 3484,3490 ----
+ break;
+ }
+ }
+!
+ /*
+ * Discard the display lines, then either return or prepare
+ * for the next display line to lay out.
+***************
+*** 3410,3421 ****
+--- 3513,3526 ----
+ TkBTreeNumLines(textPtr->tree));
+ for (i = 0; i < offset; i++) {
+ dlPtr = LayoutDLine(textPtr, &textPtr->topIndex);
++ if (dlPtr->length == 0 && dlPtr->height == 0) offset++;
+ dlPtr->nextPtr = NULL;
+ TkTextIndexForwChars(&textPtr->topIndex, dlPtr->count, &new);
+ FreeDLines(textPtr, dlPtr, (DLine *) NULL, 0);
+ if (new.linePtr == lastLinePtr) {
+ break;
+ }
++
+ textPtr->topIndex = new;
+ }
+ }
+***************
+*** 3949,3955 ****
+ * index of the character nearest to (x,y). */
+ {
+ TextDInfo *dInfoPtr = textPtr->dInfoPtr;
+! register DLine *dlPtr;
+ register TkTextDispChunk *chunkPtr;
+
+ /*
+--- 4054,4060 ----
+ * index of the character nearest to (x,y). */
+ {
+ TextDInfo *dInfoPtr = textPtr->dInfoPtr;
+! register DLine *dlPtr, *validdlPtr;
+ register TkTextDispChunk *chunkPtr;
+
+ /*
+***************
+*** 3982,3989 ****
+ * Find the display line containing the desired y-coordinate.
+ */
+
+! for (dlPtr = dInfoPtr->dLinePtr; y >= (dlPtr->y + dlPtr->height);
+ dlPtr = dlPtr->nextPtr) {
+ if (dlPtr->nextPtr == NULL) {
+ /*
+ * Y-coordinate is off the bottom of the displayed text.
+--- 4087,4095 ----
+ * Find the display line containing the desired y-coordinate.
+ */
+
+! for (dlPtr = validdlPtr = dInfoPtr->dLinePtr; y >= (dlPtr->y + dlPtr->height);
+ dlPtr = dlPtr->nextPtr) {
++ if (dlPtr->chunkPtr !=NULL) validdlPtr = dlPtr;
+ if (dlPtr->nextPtr == NULL) {
+ /*
+ * Y-coordinate is off the bottom of the displayed text.
+***************
+*** 3994,3999 ****
+--- 4100,4107 ----
+ break;
+ }
+ }
++ if (dlPtr->chunkPtr == NULL) dlPtr = validdlPtr;
++
+
+ /*
+ * Scan through the line's chunks to find the one that contains
+***************
+*** 4005,4016 ****
+ *indexPtr = dlPtr->index;
+ x = x - dInfoPtr->x + dInfoPtr->curPixelOffset;
+ for (chunkPtr = dlPtr->chunkPtr; x >= (chunkPtr->x + chunkPtr->width);
+! indexPtr->charIndex += chunkPtr->numChars,
+! chunkPtr = chunkPtr->nextPtr) {
+ if (chunkPtr->nextPtr == NULL) {
+ indexPtr->charIndex += chunkPtr->numChars - 1;
+ return;
+! }
+ }
+
+ /*
+--- 4113,4124 ----
+ *indexPtr = dlPtr->index;
+ x = x - dInfoPtr->x + dInfoPtr->curPixelOffset;
+ for (chunkPtr = dlPtr->chunkPtr; x >= (chunkPtr->x + chunkPtr->width);
+! indexPtr->charIndex += chunkPtr->numChars,
+! chunkPtr = chunkPtr->nextPtr) {
+ if (chunkPtr->nextPtr == NULL) {
+ indexPtr->charIndex += chunkPtr->numChars - 1;
+ return;
+! }
+ }
+
+ /*
+***************
+*** 4166,4171 ****
+--- 4274,4280 ----
+ {
+ TextDInfo *dInfoPtr = textPtr->dInfoPtr;
+ DLine *dlPtr;
++ int dlx;
+
+ /*
+ * Make sure that all of the screen layout information is up to date.
+***************
+*** 4184,4191 ****
+ return -1;
+ }
+
+! *xPtr = dInfoPtr->x - dInfoPtr->curPixelOffset + dlPtr->chunkPtr->x;
+! *widthPtr = dlPtr->length - dlPtr->chunkPtr->x;
+ *yPtr = dlPtr->y;
+ if ((dlPtr->y + dlPtr->height) > dInfoPtr->maxY) {
+ *heightPtr = dInfoPtr->maxY - dlPtr->y;
+--- 4293,4301 ----
+ return -1;
+ }
+
+! dlx = (dlPtr->chunkPtr != NULL? dlPtr->chunkPtr->x: 0);
+! *xPtr = dInfoPtr->x - dInfoPtr->curPixelOffset + dlx;
+! *widthPtr = dlPtr->length - dlx;
+ *yPtr = dlPtr->y;
+ if ((dlPtr->y + dlPtr->height) > dInfoPtr->maxY) {
+ *heightPtr = dInfoPtr->maxY - dlPtr->y;
+***************
+*** 4196,4201 ****
+--- 4306,4346 ----
+ return 0;
+ }
+
++ static void
++ ElideBboxProc(chunkPtr, index, y, lineHeight, baseline, xPtr, yPtr,
++ widthPtr, heightPtr)
++ TkTextDispChunk *chunkPtr; /* Chunk containing desired char. */
++ int index; /* Index of desired character within
++ * the chunk. */
++ int y; /* Topmost pixel in area allocated
++ * for this line. */
++ int lineHeight; /* Height of line, in pixels. */
++ int baseline; /* Location of line's baseline, in
++ * pixels measured down from y. */
++ int *xPtr, *yPtr; /* Gets filled in with coords of
++ * character's upper-left pixel.
++ * X-coord is in same coordinate
++ * system as chunkPtr->x. */
++ int *widthPtr; /* Gets filled in with width of
++ * character, in pixels. */
++ int *heightPtr; /* Gets filled in with height of
++ * character, in pixels. */
++ {
++ *xPtr = chunkPtr->x;
++ *yPtr = y;
++ *widthPtr = *heightPtr = 0;
++ }
++
++
++ static int
++ ElideMeasureProc(chunkPtr, x)
++ TkTextDispChunk *chunkPtr; /* Chunk containing desired coord. */
++ int x; /* X-coordinate, in same coordinate
++ * system as chunkPtr->x. */
++ {
++ return 0 /*chunkPtr->numChars - 1*/;
++ }
++
+ /*
+ *--------------------------------------------------------------
+ *
+***************
+*** 4421,4427 ****
+ * Draw the text, underline, and overstrike for this chunk.
+ */
+
+! if (ciPtr->numChars > offsetChars) {
+ int numChars = ciPtr->numChars - offsetChars;
+ char *string = ciPtr->chars + offsetChars;
+
+--- 4566,4572 ----
+ * Draw the text, underline, and overstrike for this chunk.
+ */
+
+! if (!sValuePtr->elide && ciPtr->numChars > offsetChars) {
+ int numChars = ciPtr->numChars - offsetChars;
+ char *string = ciPtr->chars + offsetChars;
+
+*** tkTextTag.c 1997/07/04 22:39:41 2.0
+--- ../generic/tkTextTag.c 1997/08/15 22:20:32
+***************
+*** 63,68 ****
+--- 63,71 ----
+ {TK_CONFIG_STRING, "-underline", (char *) NULL, (char *) NULL,
+ (char *) NULL, Tk_Offset(TkTextTag, underlineString),
+ TK_CONFIG_NULL_OK},
++ {TK_CONFIG_STRING, "-elide", (char *) NULL, (char *) NULL,
++ (char *) NULL, Tk_Offset(TkTextTag, elideString),
++ TK_CONFIG_NULL_OK},
+ {TK_CONFIG_UID, "-wrap", (char *) NULL, (char *) NULL,
+ (char *) NULL, Tk_Offset(TkTextTag, wrapMode),
+ TK_CONFIG_NULL_OK},
+***************
+*** 378,383 ****
+--- 381,392 ----
+ return TCL_ERROR;
+ }
+ }
++ if (tagPtr->elideString != NULL) {
++ if (Tcl_GetBoolean(interp, tagPtr->elideString,
++ &tagPtr->elide) != TCL_OK) {
++ return TCL_ERROR;
++ }
++ }
+ if ((tagPtr->wrapMode != NULL)
+ && (tagPtr->wrapMode != tkTextCharUid)
+ && (tagPtr->wrapMode != tkTextNoneUid)
+***************
+*** 419,424 ****
+--- 428,434 ----
+ || (tagPtr->spacing3String != NULL)
+ || (tagPtr->tabString != NULL)
+ || (tagPtr->underlineString != NULL)
++ || (tagPtr->elideString != NULL)
+ || (tagPtr->wrapMode != NULL)) {
+ tagPtr->affectsDisplay = 1;
+ }
+***************
+*** 811,816 ****
+--- 821,828 ----
+ tagPtr->tabArrayPtr = NULL;
+ tagPtr->underlineString = NULL;
+ tagPtr->underline = 0;
++ tagPtr->elideString = NULL;
++ tagPtr->elide = 0;
+ tagPtr->wrapMode = NULL;
+ tagPtr->affectsDisplay = 0;
+ textPtr->numTags++;
+***************
+*** 934,939 ****
+--- 946,954 ----
+ }
+ if (tagPtr->underlineString != NULL) {
+ ckfree(tagPtr->underlineString);
++ }
++ if (tagPtr->elideString != NULL) {
++ ckfree(tagPtr->elideString);
+ }
+ ckfree((char *) tagPtr);
+ }
diff --git a/x11/tk80/patches/patch-ad b/x11/tk80/patches/patch-ad
new file mode 100644
index 00000000000..a3137a6aaa5
--- /dev/null
+++ b/x11/tk80/patches/patch-ad
@@ -0,0 +1,78 @@
+--- menu.tcl Wed Aug 13 11:19:53 1997
++++ ../library/menu.tcl Wed Sep 3 12:24:24 1997
+@@ -4,7 +4,7 @@
+ # It also implements keyboard traversal of menus and implements a few
+ # other utility procedures related to menus.
+ #
+-# SCCS: @(#) menu.tcl 1.97 97/08/13 10:58:34
++# SCCS: @(#) menu.tcl 1.100 97/08/26 14:29:47
+ #
+ # Copyright (c) 1992-1994 The Regents of the University of California.
+ # Copyright (c) 1994-1997 Sun Microsystems, Inc.
+@@ -53,19 +53,19 @@
+
+ #-------------------------------------------------------------------------
+ # Overall note:
+-# This file is tricky because there are four different ways that menus
++# This file is tricky because there are five different ways that menus
+ # can be used:
+ #
+-# 1. As a pulldown from a menubutton. This is the most common usage.
+-# In this style, the variable tkPriv(postedMb) identifies the posted
+-# menubutton.
++# 1. As a pulldown from a menubutton. In this style, the variable
++# tkPriv(postedMb) identifies the posted menubutton.
+ # 2. As a torn-off menu copied from some other menu. In this style
+-# tkPriv(postedMb) is empty, and the top-level menu is no
+-# override-redirect.
+-# 3. As an option menu, triggered from an option menubutton. In thi
++# tkPriv(postedMb) is empty, and menu's type is "tearoff".
++# 3. As an option menu, triggered from an option menubutton. In this
+ # style tkPriv(postedMb) identifies the posted menubutton.
+ # 4. As a popup menu. In this style tkPriv(postedMb) is empty and
+-# the top-level menu is override-redirect.
++# the top-level menu's type is "normal".
++# 5. As a pulldown from a menubar. The variable tkPriv(menubar) has
++# the owning menubar, and the menu itself is of type "normal".
+ #
+ # The various binding procedures use the state described above to
+ # distinguish the various cases and take different actions in each
+@@ -391,8 +391,7 @@
+ $tkPriv(popup) unpost
+ set tkPriv(popup) {}
+ } elseif {(!([$menu cget -type] == "menubar")
+- && !([$menu cget -type] == "tearoff"))
+- || [wm overrideredirect $menu]} {
++ && !([$menu cget -type] == "tearoff"))} {
+ # We're in a cascaded sub-menu from a torn-off menu or popup.
+ # Unpost all the menus up to the toplevel one (but not
+ # including the top-level torn-off one) and deactivate the
+@@ -407,8 +406,8 @@
+ $parent activate none
+ $parent postcascade none
+ event generate $parent <<MenuSelect>>
+- if {([$parent cget -type] == "menubar")
+- || ![wm overrideredirect $parent]} {
++ set type [$parent cget -type]
++ if {([$parent cget -type] == "menubar")} {
+ break
+ }
+ set menu $parent
+@@ -551,8 +550,7 @@
+ if {$tkPriv(postedMb) != ""} {
+ grab -global $tkPriv(postedMb)
+ } else {
+- while {(([$menu cget -type] != "menubar")
+- && [wm overrideredirect $menu])
++ while {([$menu cget -type] == "normal")
+ && ([winfo class [winfo parent $menu]] == "Menu")
+ && [winfo ismapped [winfo parent $menu]]} {
+ set menu [winfo parent $menu]
+@@ -1187,6 +1185,6 @@
+ tkSaveGrabInfo $menu
+ grab -global $menu
+ set tkPriv(popup) $menu
+- tk_menuSetFocus($menu);
++ tk_menuSetFocus $menu
+ }
+ }
diff --git a/x11/tk80/pkg/COMMENT b/x11/tk80/pkg/COMMENT
new file mode 100644
index 00000000000..ec2552801eb
--- /dev/null
+++ b/x11/tk80/pkg/COMMENT
@@ -0,0 +1 @@
+Graphical toolkit for TCL.
diff --git a/x11/tk80/pkg/DESCR b/x11/tk80/pkg/DESCR
new file mode 100644
index 00000000000..afdf6fe9e2f
--- /dev/null
+++ b/x11/tk80/pkg/DESCR
@@ -0,0 +1,9 @@
+This package contains the binary release of Tk version 8.0, a GUI
+toolkit for Tcl.
+
+The best way to get started with Tcl is to read ``Tcl and the Tk
+Toolkit'' by John K. Ousterhout, Addison-Wesley, ISBN 0-201-63337-X.
+
+A full set of manual pages is also provided with this package.
+
+NOTE: This kit requires a Tcl8.0 binary kit.
diff --git a/x11/tk80/pkg/PLIST b/x11/tk80/pkg/PLIST
new file mode 100644
index 00000000000..2379f5c37e0
--- /dev/null
+++ b/x11/tk80/pkg/PLIST
@@ -0,0 +1,254 @@
+bin/wish8.0
+include/tk8.0/tk.h
+include/tk8.0/unix/tkUnixDefault.h
+include/tk8.0/unix/tkUnixInt.h
+include/tk8.0/unix/tkUnixPort.h
+include/tk8.0/generic/default.h
+include/tk8.0/generic/ks_names.h
+include/tk8.0/generic/tk.h
+include/tk8.0/generic/tk3d.h
+include/tk8.0/generic/tkButton.h
+include/tk8.0/generic/tkCanvas.h
+include/tk8.0/generic/tkColor.h
+include/tk8.0/generic/tkFileFilter.h
+include/tk8.0/generic/tkFont.h
+include/tk8.0/generic/tkInitScript.h
+include/tk8.0/generic/tkInt.h
+include/tk8.0/generic/tkMenu.h
+include/tk8.0/generic/tkMenubutton.h
+include/tk8.0/generic/tkPort.h
+include/tk8.0/generic/tkScale.h
+include/tk8.0/generic/tkScrollbar.h
+include/tk8.0/generic/tkSelect.h
+include/tk8.0/generic/tkText.h
+man/man1/wish.1.gz
+man/man3/FontId.3.gz
+man/man3/GetFont.3.gz
+man/man3/MeasureChar.3.gz
+man/man3/GetGC.3.gz
+man/man3/TextLayout.3.gz
+man/man3/Name.3.gz
+man/man3/3DBorder.3.gz
+man/man3/BindTable.3.gz
+man/man3/CanvPsY.3.gz
+man/man3/CanvTkwin.3.gz
+man/man3/CanvTxtInfo.3.gz
+man/man3/Clipboard.3.gz
+man/man3/ClrSelect.3.gz
+man/man3/GetImage.3.gz
+man/man3/ConfigWidg.3.gz
+man/man3/ConfigWind.3.gz
+man/man3/CoordToWin.3.gz
+man/man3/CrtErrHdlr.3.gz
+man/man3/CrtGenHdlr.3.gz
+man/man3/CrtImgType.3.gz
+man/man3/CrtItemType.3.gz
+man/man3/CrtPhImgFmt.3.gz
+man/man3/CrtSelHdlr.3.gz
+man/man3/CrtWindow.3.gz
+man/man3/DeleteImg.3.gz
+man/man3/DrawFocHlt.3.gz
+man/man3/EventHndlr.3.gz
+man/man3/FindPhoto.3.gz
+man/man3/FreeXId.3.gz
+man/man3/GeomReq.3.gz
+man/man3/GetAnchor.3.gz
+man/man3/GetBitmap.3.gz
+man/man3/GetCapStyl.3.gz
+man/man3/GetClrmap.3.gz
+man/man3/GetColor.3.gz
+man/man3/GetCursor.3.gz
+man/man3/GetJoinStl.3.gz
+man/man3/GetJustify.3.gz
+man/man3/GetOption.3.gz
+man/man3/GetPixels.3.gz
+man/man3/GetPixmap.3.gz
+man/man3/GetRelief.3.gz
+man/man3/GetRootCrd.3.gz
+man/man3/GetScroll.3.gz
+man/man3/GetSelect.3.gz
+man/man3/GetUid.3.gz
+man/man3/GetVRoot.3.gz
+man/man3/GetVisual.3.gz
+man/man3/HandleEvent.3.gz
+man/man3/IdToWindow.3.gz
+man/man3/ImgChanged.3.gz
+man/man3/InternAtom.3.gz
+man/man3/MainLoop.3.gz
+man/man3/MainWin.3.gz
+man/man3/MaintGeom.3.gz
+man/man3/ManageGeom.3.gz
+man/man3/MapWindow.3.gz
+man/man3/MoveToplev.3.gz
+man/man3/NameOfImg.3.gz
+man/man3/OwnSelect.3.gz
+man/man3/ParseArgv.3.gz
+man/man3/QWinEvent.3.gz
+man/man3/Restack.3.gz
+man/man3/RestrictEv.3.gz
+man/man3/SetAppName.3.gz
+man/man3/SetClass.3.gz
+man/man3/SetGrid.3.gz
+man/man3/SetVisual.3.gz
+man/man3/StrictMotif.3.gz
+man/man3/Tk_Init.3.gz
+man/man3/Tk_Main.3.gz
+man/man3/WindowId.3.gz
+man/mann/chooseColor.n.gz
+man/mann/getOpenFile.n.gz
+man/mann/event.n.gz
+man/mann/font.n.gz
+man/mann/messageBox.n.gz
+man/mann/bell.n.gz
+man/mann/bind.n.gz
+man/mann/bindtags.n.gz
+man/mann/bitmap.n.gz
+man/mann/button.n.gz
+man/mann/canvas.n.gz
+man/mann/checkbutton.n.gz
+man/mann/clipboard.n.gz
+man/mann/destroy.n.gz
+man/mann/dialog.n.gz
+man/mann/entry.n.gz
+man/mann/focus.n.gz
+man/mann/focusNext.n.gz
+man/mann/frame.n.gz
+man/mann/grab.n.gz
+man/mann/grid.n.gz
+man/mann/image.n.gz
+man/mann/label.n.gz
+man/mann/listbox.n.gz
+man/mann/loadTk.n.gz
+man/mann/lower.n.gz
+man/mann/menu.n.gz
+man/mann/menubar.n.gz
+man/mann/menubutton.n.gz
+man/mann/message.n.gz
+man/mann/option.n.gz
+man/mann/optionMenu.n.gz
+man/mann/options.n.gz
+man/mann/pack-old.n.gz
+man/mann/pack.n.gz
+man/mann/palette.n.gz
+man/mann/photo.n.gz
+man/mann/place.n.gz
+man/mann/popup.n.gz
+man/mann/radiobutton.n.gz
+man/mann/raise.n.gz
+man/mann/scale.n.gz
+man/mann/scrollbar.n.gz
+man/mann/selection.n.gz
+man/mann/send.n.gz
+man/mann/text.n.gz
+man/mann/tk.n.gz
+man/mann/tkerror.n.gz
+man/mann/tkvars.n.gz
+man/mann/tkwait.n.gz
+man/mann/toplevel.n.gz
+man/mann/winfo.n.gz
+man/mann/wm.n.gz
+lib/tk8.0/demos/images/earth.gif
+lib/tk8.0/demos/images/earthris.gif
+lib/tk8.0/demos/images/face.bmp
+lib/tk8.0/demos/images/flagdown.bmp
+lib/tk8.0/demos/images/flagup.bmp
+lib/tk8.0/demos/images/gray25.bmp
+lib/tk8.0/demos/images/letters.bmp
+lib/tk8.0/demos/images/noletter.bmp
+lib/tk8.0/demos/images/pattern.bmp
+lib/tk8.0/demos/images/tcllogo.gif
+lib/tk8.0/demos/images/teapot.ppm
+lib/tk8.0/demos/README
+lib/tk8.0/demos/arrow.tcl
+lib/tk8.0/demos/bind.tcl
+lib/tk8.0/demos/bitmap.tcl
+lib/tk8.0/demos/browse
+lib/tk8.0/demos/button.tcl
+lib/tk8.0/demos/check.tcl
+lib/tk8.0/demos/clrpick.tcl
+lib/tk8.0/demos/colors.tcl
+lib/tk8.0/demos/cscroll.tcl
+lib/tk8.0/demos/ctext.tcl
+lib/tk8.0/demos/dialog1.tcl
+lib/tk8.0/demos/dialog2.tcl
+lib/tk8.0/demos/entry1.tcl
+lib/tk8.0/demos/entry2.tcl
+lib/tk8.0/demos/filebox.tcl
+lib/tk8.0/demos/floor.tcl
+lib/tk8.0/demos/form.tcl
+lib/tk8.0/demos/hello
+lib/tk8.0/demos/hscale.tcl
+lib/tk8.0/demos/icon.tcl
+lib/tk8.0/demos/image1.tcl
+lib/tk8.0/demos/image2.tcl
+lib/tk8.0/demos/items.tcl
+lib/tk8.0/demos/ixset
+lib/tk8.0/demos/label.tcl
+lib/tk8.0/demos/license.terms
+lib/tk8.0/demos/menu.tcl
+lib/tk8.0/demos/msgbox.tcl
+lib/tk8.0/demos/plot.tcl
+lib/tk8.0/demos/puzzle.tcl
+lib/tk8.0/demos/radio.tcl
+lib/tk8.0/demos/rmt
+lib/tk8.0/demos/rolodex
+lib/tk8.0/demos/ruler.tcl
+lib/tk8.0/demos/sayings.tcl
+lib/tk8.0/demos/search.tcl
+lib/tk8.0/demos/square
+lib/tk8.0/demos/states.tcl
+lib/tk8.0/demos/style.tcl
+lib/tk8.0/demos/tclIndex
+lib/tk8.0/demos/tcolor
+lib/tk8.0/demos/text.tcl
+lib/tk8.0/demos/timer
+lib/tk8.0/demos/twind.tcl
+lib/tk8.0/demos/vscale.tcl
+lib/tk8.0/demos/widget
+lib/tk8.0/demos/menubu.tcl
+lib/tk8.0/bgerror.tcl
+lib/tk8.0/button.tcl
+lib/tk8.0/clrpick.tcl
+lib/tk8.0/comdlg.tcl
+lib/tk8.0/console.tcl
+lib/tk8.0/dialog.tcl
+lib/tk8.0/entry.tcl
+lib/tk8.0/focus.tcl
+lib/tk8.0/listbox.tcl
+lib/tk8.0/menu.tcl
+lib/tk8.0/msgbox.tcl
+lib/tk8.0/obsolete.tcl
+lib/tk8.0/optMenu.tcl
+lib/tk8.0/palette.tcl
+lib/tk8.0/scale.tcl
+lib/tk8.0/scrlbar.tcl
+lib/tk8.0/tearoff.tcl
+lib/tk8.0/text.tcl
+lib/tk8.0/tk.tcl
+lib/tk8.0/tkfbox.tcl
+lib/tk8.0/xmfbox.tcl
+lib/tk8.0/tclIndex
+lib/tk8.0/prolog.ps
+lib/tk8.0/tkAppInit.c
+lib/tk8.0/images/README
+lib/tk8.0/images/logo100.gif
+lib/tk8.0/images/logo64.gif
+lib/tk8.0/images/logoLarge.gif
+lib/tk8.0/images/logoMed.gif
+lib/tk8.0/images/pwrdLogo100.gif
+lib/tk8.0/images/pwrdLogo150.gif
+lib/tk8.0/images/pwrdLogo175.gif
+lib/tk8.0/images/pwrdLogo200.gif
+lib/tk8.0/images/pwrdLogo75.gif
+lib/tk8.0/safetk.tcl
+lib/tk8.0/tkConfig.sh
+lib/libtk80.a
+lib/libtk80.so.1.0
+@exec /sbin/ldconfig -m %B
+@dirrm lib/tk8.0/demos/images
+@dirrm lib/tk8.0/demos
+@dirrm lib/tk8.0/images
+@dirrm lib/tk8.0
+@dirrm include/tk8.0/unix
+@dirrm include/tk8.0/generic
+@dirrm include/tk8.0
diff --git a/x11/xfishtank/Makefile b/x11/xfishtank/Makefile
new file mode 100644
index 00000000000..70fe425d5a9
--- /dev/null
+++ b/x11/xfishtank/Makefile
@@ -0,0 +1,22 @@
+# New ports collection makefile for: xfishtank
+# Version required: 2.2
+# Date created: 24th April 1997
+# Whom: jacs
+#
+# FreeBSD Id: Makefile,v 1.2 1997/06/17 07:45:12 asami Exp
+#
+
+DISTNAME= xfishtank-2.2
+CATEGORIES= x11
+MASTER_SITES= ftp://ftp.uni-koeln.de/windows/xcontrib/
+
+MAINTAINER= jacs@gnome.co.uk
+
+USE_IMAKE= yes
+WRKSRC= ${WRKDIR}/xfishtank2.0
+NO_INSTALL_MANPAGES=yes
+
+post-patch:
+ cd ${WRKDIR}/xfishtank2.0; make clean
+
+.include <bsd.port.mk>
diff --git a/x11/xfishtank/files/md5 b/x11/xfishtank/files/md5
new file mode 100644
index 00000000000..d34dba2a128
--- /dev/null
+++ b/x11/xfishtank/files/md5
@@ -0,0 +1 @@
+MD5 (xfishtank-2.2.tar.gz) = 9d2d1a004992295d7c9d49f535bae42e
diff --git a/x11/xfishtank/patches/patch-aa b/x11/xfishtank/patches/patch-aa
new file mode 100644
index 00000000000..6dfc69d767f
--- /dev/null
+++ b/x11/xfishtank/patches/patch-aa
@@ -0,0 +1,395 @@
+*** xfish.c.orig Thu Dec 17 21:26:17 1992
+--- xfish.c Mon Aug 11 20:57:05 1997
+***************
+*** 11,16 ****
+--- 11,18 ----
+
+ * Ported to monocrome by Jonathan Greenblatt (jonnyg@rover.umd.edu)
+
++ * 05/02/1996 Added TrueColor support by TJ Phan (phan@aur.alcatel.com)
++
+ TODO:
+
+ Parameter parsing needs to be redone.
+***************
+*** 46,58 ****
+
+ /* constants are based on rand(3C) returning an integer between 0 and 32767 */
+
+! #if defined(ultrix) || defined(sun) || defined(linux)
+ #define RAND_I_1_16 134217728
+ #define RAND_F_1_8 268435455.875
+ #define RAND_I_1_4 536870911
+ #define RAND_I_1_2 1073741823
+ #define RAND_I_3_4 1610612735
+ #define RAND_F_MAX 2147483647.0
+ #else
+ #define RAND_I_1_16 2048
+ #define RAND_F_1_8 4096.0
+--- 48,71 ----
+
+ /* constants are based on rand(3C) returning an integer between 0 and 32767 */
+
+! #if defined(ultrix) || defined(sun)
+ #define RAND_I_1_16 134217728
+ #define RAND_F_1_8 268435455.875
+ #define RAND_I_1_4 536870911
+ #define RAND_I_1_2 1073741823
+ #define RAND_I_3_4 1610612735
+ #define RAND_F_MAX 2147483647.0
++ #else
++ #if defined(__FreeBSD__) || defined(__OpenBSD__)
++ #include <stdlib.h>
++ #include <unistd.h>
++
++ #define RAND_I_1_16 (RAND_MAX>>4)
++ #define RAND_F_1_8 ((float)(RAND_MAX>>3))
++ #define RAND_I_1_4 (RAND_MAX>>2)
++ #define RAND_I_1_2 (RAND_MAX>>1)
++ #define RAND_I_3_4 ((RAND_MAX>>2)*3)
++ #define RAND_F_MAX ((float)RAND_MAX)
+ #else
+ #define RAND_I_1_16 2048
+ #define RAND_F_1_8 4096.0
+***************
+*** 61,67 ****
+ #define RAND_I_3_4 24575
+ #define RAND_F_MAX 32767.0
+ #endif
+!
+
+ extern unsigned char *ReadBitmap();
+
+--- 74,80 ----
+ #define RAND_I_3_4 24575
+ #define RAND_F_MAX 32767.0
+ #endif
+! #endif
+
+ extern unsigned char *ReadBitmap();
+
+***************
+*** 850,855 ****
+--- 863,872 ----
+ * Find the closest color by allocating it, or picking an already allocated
+ * color
+ */
++ Visual (*visual_info) = NULL;
++ int r_mask, g_mask, b_mask;
++ int r_shift=0, g_shift=0, b_shift=0;
++ int r_bits=0, g_bits=0, b_bits=0;
+ void
+ FindColor(Dpy, colormap, colr)
+ Display *Dpy;
+***************
+*** 862,867 ****
+--- 879,936 ----
+ XColor def_colrs[256];
+ int NumCells;
+
++ if( visual_info == NULL && DefaultDepth(Dpy, DefaultScreen(Dpy)) >= 16 )
++ {
++ visual_info = DefaultVisual(Dpy, DefaultScreen(Dpy));
++ r_mask = visual_info->red_mask;
++ while( !(r_mask & 1) )
++ {
++ r_mask >>= 1;
++ r_shift++;
++ }
++ while( r_mask & 1 )
++ {
++ r_mask >>= 1;
++ r_bits++;
++ }
++
++ g_mask = visual_info->green_mask;
++ while( !(g_mask & 1) )
++ {
++ g_mask >>= 1;
++ g_shift++;
++ }
++ while( g_mask & 1 )
++ {
++ g_mask >>= 1;
++ g_bits++;
++ }
++
++ b_mask = visual_info->blue_mask;
++ while( !(b_mask &1) )
++ {
++ b_mask >>= 1;
++ b_shift++;
++ }
++ while( b_mask & 1 )
++ {
++ b_mask >>= 1;
++ b_bits++;
++ }
++ }
++
++ if( DefaultDepth(Dpy, DefaultScreen(Dpy)) > 8 )
++ {
++ colr->red >>= 16 - r_bits;
++ colr->green >>= 16 - g_bits;
++ colr->blue >>= 16 - b_bits;
++
++ colr->pixel = ((colr->red << r_shift) & visual_info->red_mask) |
++ ((colr->green << g_shift) & visual_info->green_mask) |
++ ((colr->blue << b_shift) & visual_info->blue_mask);
++ return;
++ }
++
+ if (AllocCnt < climit)
+ {
+ match = XAllocColor(Dpy, colormap, colr);
+***************
+*** 982,988 ****
+ XColor hdef, edef;
+ struct colr_data *cdp;
+ struct colr_data colrs[256];
+- extern char *malloc();
+
+ colormap = XDefaultColormap(Dpy, screen);
+
+--- 1051,1056 ----
+***************
+*** 1151,1156 ****
+--- 1219,1225 ----
+ fprintf(stderr, "Don't know how to format image for display of depth %d\n", depth);
+ exit(1);
+ }
++
+ if (BitmapBitOrder(Dpy) == LSBFirst)
+ {
+ shiftstart = 0;
+***************
+*** 1194,1200 ****
+ }
+ }
+ }
+! bytesperline = (width + linepad) * depth / 8;
+ newimage = XCreateImage(Dpy, DefaultVisual(Dpy, screen), depth,
+ ZPixmap, 0, (char *)bit_data,
+ (width + linepad), height, 8, bytesperline);
+--- 1263,1270 ----
+ }
+ }
+ }
+!
+! bytesperline = (width * depth / 8 + linepad);
+ newimage = XCreateImage(Dpy, DefaultVisual(Dpy, screen), depth,
+ ZPixmap, 0, (char *)bit_data,
+ (width + linepad), height, 8, bytesperline);
+***************
+*** 1218,1224 ****
+ unsigned char *data;
+ register int i, j, k;
+ int cnt, wcnt;
+- extern char *malloc();
+
+ cnt = 1;
+ cnt += Pcnt;
+--- 1288,1293 ----
+***************
+*** 1341,1349 ****
+--- 1410,1423 ----
+ free((char *)data);
+ }
+
++ if( DisplayPlanes(Dpy, screen) < 8 )
++ {
++
+ j = rwidth[k] * rheight[k];
+ x1A = (caddrt) malloc(rwidth[k] * rheight[k]);
+ p = (caddrt) xfishRasterA[k];
++
++
+ q = x1A;
+ for (i = 0; i < j; i++)
+ {
+***************
+*** 1389,1394 ****
+--- 1463,1529 ----
+ xfishB[k][2] = MakeImage(x1B, rwidth[k], rheight[k]);
+ xfishB[k][1] = MakeImage(x2B, rwidth[k], rheight[k]);
+
++ free((char *)x1A);
++ free((char *)x2A);
++ free((char *)x1B);
++ free((char *)x2B);
++
++ }
++ else
++ {
++ i = DisplayPlanes(Dpy, screen);
++
++ xfishA[k][2] = XGetImage(Dpy, DefaultRootWindow(Dpy), 0, 0, rwidth[k], rheight[k], 0, ZPixmap);
++
++ p = (caddrt) xfishRasterA[k];
++
++ for (j = 0; j < rheight[k]; j++)
++ {
++ for( i = 0; i < rwidth[k]; i++ )
++ {
++ XPutPixel(xfishA[k][2], i, j, cmap[cnt + (int)(*p)]);
++ p++;
++ }
++ }
++
++ xfishB[k][2] = XGetImage(Dpy, DefaultRootWindow(Dpy), 0, 0, rwidth[k], rheight[k], 0, ZPixmap);
++
++ p = (caddrt) xfishRasterB[k];
++
++ for (j = 0; j < rheight[k]; j++)
++ {
++ for( i = 0; i < rwidth[k]; i++ )
++ {
++ XPutPixel(xfishB[k][2], i, j, cmap[cnt + (int)(*p)]);
++ p++;
++ }
++ }
++
++ xfishA[k][1] = XGetImage(Dpy, DefaultRootWindow(Dpy), 0, 0, rwidth[k], rheight[k], 0, ZPixmap);
++
++ for (j = 0; j < rheight[k]; j++)
++ {
++ for( i = 0; i < rwidth[k]; i++ )
++ {
++ XPutPixel(xfishA[k][1], i, j,
++ XGetPixel(xfishA[k][2], rwidth[k] - i -1, j));
++ }
++ }
++
++ xfishB[k][1] = XGetImage(Dpy, DefaultRootWindow(Dpy), 0, 0, rwidth[k], rheight[k], 0, ZPixmap);
++
++ for (j = 0; j < rheight[k]; j++)
++ {
++ for( i = 0; i < rwidth[k]; i++ )
++ {
++ XPutPixel(xfishB[k][1], i, j,
++ XGetPixel(xfishB[k][2], rwidth[k] - i - 1, j));
++ }
++ }
++
++ }
++
++
+ i = DisplayPlanes(Dpy, screen);
+
+ pfishA[k][1] = XCreatePixmap(Dpy, wid,
+***************
+*** 1400,1410 ****
+ pfishB[k][2] = XCreatePixmap(Dpy, wid,
+ rwidth[k], rheight[k], i);
+
+- free((char *)x1A);
+- free((char *)x2A);
+- free((char *)x1B);
+- free((char *)x2B);
+-
+ if (pfishA[k][1])
+ {
+ XPutImage(Dpy, pfishA[k][1], gc, xfishA[k][1], 0, 0,
+--- 1535,1540 ----
+***************
+*** 1465,1498 ****
+ void
+ init_signals()
+ {
+- int ret;
+- #ifdef linux
+- signal(SIGUSR1, toggle_secure);
+- #else
+- #if defined(MOTOROLA) || defined(SCO)
+- sigset(SIGUSR1, toggle_secure);
+- #else
+- struct sigvec vec;
+-
+- vec.sv_handler = toggle_secure;
+- vec.sv_mask = 0;
+- vec.sv_onstack = 0;
+-
+- #ifndef hpux
+- ret = sigvec(SIGUSR1, &vec, &vec);
+- if (ret != 0)
+- {
+- fprintf(stderr, "sigvec call failed\n");
+- }
+- else
+- {
+- fprintf(stderr, "sigvec call OK\n");
+- }
+- #else
+- sigvector(SIGUSR1, &vec, &vec);
+- #endif
+- #endif /* MOTOROLA */
+- #endif /* LINUX */
+ }
+
+
+--- 1595,1600 ----
+***************
+*** 1505,1511 ****
+ XWindowAttributes winfo;
+ XSetWindowAttributes attr;
+ XGCValues vals;
+- extern char *malloc();
+ XSizeHints xsh;
+ XImage *pimage;
+ int i, size, cnt;
+--- 1607,1612 ----
+***************
+*** 1613,1625 ****
+ xsh.height = height;
+ XSetNormalHints(Dpy, wid, &xsh);
+
+ if (picname[0] != '\0')
+ {
+ XPutImage(Dpy, PicMap, gc, pimage, 0, 0, 0, 0, Pwidth, Pheight);
+ XSetWindowBackgroundPixmap(Dpy, wid, PicMap);
+ }
+-
+- XMapWindow(Dpy, wid);
+ }
+
+ binfo = (bubble *) malloc(blimit * sizeof(bubble));
+--- 1714,1725 ----
+ xsh.height = height;
+ XSetNormalHints(Dpy, wid, &xsh);
+
++ XMapWindow(Dpy, wid);
+ if (picname[0] != '\0')
+ {
+ XPutImage(Dpy, PicMap, gc, pimage, 0, 0, 0, 0, Pwidth, Pheight);
+ XSetWindowBackgroundPixmap(Dpy, wid, PicMap);
+ }
+ }
+
+ binfo = (bubble *) malloc(blimit * sizeof(bubble));
+***************
+*** 1965,1973 ****
+ high_res_sleep(seconds)
+ double seconds;
+ {
+ int fds = 0;
+ struct timeval timeout;
+!
+ timeout.tv_sec = seconds;
+ timeout.tv_usec = (seconds - timeout.tv_sec) * 1000000.0;
+ select(0, &fds, &fds, &fds, &timeout);
+--- 2065,2079 ----
+ high_res_sleep(seconds)
+ double seconds;
+ {
++ #ifndef __FreeBSD__
+ int fds = 0;
++ #endif
+ struct timeval timeout;
+! #ifdef __FreeBSD__
+! fd_set fds;
+! FD_ZERO(&fds);
+! #endif
+!
+ timeout.tv_sec = seconds;
+ timeout.tv_usec = (seconds - timeout.tv_sec) * 1000000.0;
+ select(0, &fds, &fds, &fds, &timeout);
diff --git a/x11/xfishtank/patches/patch-ab b/x11/xfishtank/patches/patch-ab
new file mode 100644
index 00000000000..87ccd1e5b1e
--- /dev/null
+++ b/x11/xfishtank/patches/patch-ab
@@ -0,0 +1,11 @@
+--- Imakefile.orig Wed Dec 16 01:04:35 1992
++++ Imakefile Tue Jun 17 08:36:51 1997
+@@ -2,7 +2,7 @@
+ LOCAL_LIBRARIES = $(XLIB)
+ DEPLIBS = $(DEPXLIB)
+ SYS_LIBRARIES = -lm
+- CDEBUGFLAGS = -g
++XCOMM CDEBUGFLAGS = -g
+
+ SRCS = xfish.c medcut.c read.c gifread.c
+ OBJS = xfish.o medcut.o read.o gifread.o
diff --git a/x11/xfishtank/pkg/COMMENT b/x11/xfishtank/pkg/COMMENT
new file mode 100644
index 00000000000..63a4acabb6b
--- /dev/null
+++ b/x11/xfishtank/pkg/COMMENT
@@ -0,0 +1 @@
+Make fish swim in the background of your screen.
diff --git a/x11/xfishtank/pkg/DESCR b/x11/xfishtank/pkg/DESCR
new file mode 100644
index 00000000000..f253cb44c07
--- /dev/null
+++ b/x11/xfishtank/pkg/DESCR
@@ -0,0 +1,8 @@
+There are lots of programs for lots of platforms to make fish swim in the
+background of your screen. This is a modification of an old one called
+xfish (also called Xaquarium), that I have added more features to.
+
+This version now works on true colour displays.
+
+--Chris
+jacs@gnome.co.uk
diff --git a/x11/xfishtank/pkg/PLIST b/x11/xfishtank/pkg/PLIST
new file mode 100644
index 00000000000..793cc679f5f
--- /dev/null
+++ b/x11/xfishtank/pkg/PLIST
@@ -0,0 +1 @@
+bin/xfishtank
diff --git a/x11/xmascot/Makefile b/x11/xmascot/Makefile
new file mode 100644
index 00000000000..c3c1b86c3f6
--- /dev/null
+++ b/x11/xmascot/Makefile
@@ -0,0 +1,21 @@
+# New ports collection makefile for: xmascot
+# Version required: 2.5p2
+# Date created: 20 November 1996
+# Whom: Yukihiro Nakai <Nakai@Mlab.t.u-tokyo.ac.jp>
+#
+# FreeBSD Id: Makefile,v 1.2 1997/06/07 19:47:09 max Exp
+#
+
+DISTNAME= xmascot2.5p2
+PKGNAME= xmascot-2.5p2
+CATEGORIES= x11
+MASTER_SITES= ftp://cclub.tutcc.tut.ac.jp/pub/xmascot/
+
+MAINTAINER= Nakai@Mlab.t.u-tokyo.ac.jp
+
+USE_GMAKE= yes
+USE_IMAKE= yes
+MAN1= xmascot.1
+MANCOMPRESSED= yes
+
+.include <bsd.port.mk>
diff --git a/x11/xmascot/files/md5 b/x11/xmascot/files/md5
new file mode 100644
index 00000000000..60d80cef703
--- /dev/null
+++ b/x11/xmascot/files/md5
@@ -0,0 +1 @@
+MD5 (xmascot2.5p2.tar.gz) = 4e953fbbc347086a12a894bfe8ca440b
diff --git a/x11/xmascot/pkg/COMMENT b/x11/xmascot/pkg/COMMENT
new file mode 100644
index 00000000000..9cf9011f5f0
--- /dev/null
+++ b/x11/xmascot/pkg/COMMENT
@@ -0,0 +1 @@
+moving mascot on your X-Window screen.
diff --git a/x11/xmascot/pkg/DESCR b/x11/xmascot/pkg/DESCR
new file mode 100644
index 00000000000..e8cca048323
--- /dev/null
+++ b/x11/xmascot/pkg/DESCR
@@ -0,0 +1,25 @@
+XMascot, moving mascot on your X-Window screen.
+
+XMascot have these features.
+
+ -Moving pretty mascot moving
+ -Strectch stretch as you like
+ -Talking mascot talks with extract command and data
+ -Alarm mascot may make some actions at time you define
+ -BIFF mascot may let you know arriving a mail.
+
+XMascot supports these image formats:
+
+MAG *.mag 16 colors and 256 colors
+TIFF *.tif 16 colors and 256 colors, in raw or lzw
+PPM *.ppm 256 level color , in raw
+PGM *.pgm 256 level gray scale, in raw
+PBM *.pbm 2 level monocrome, in raw
+PNM *.pnm PPM, PGM, or PBM
+
+XMascot distinguish images from their suffix and can load other image formats
+when {suffix}topnm, *topgm, or *topbm commands are found in your system.
+
+See more infomation for newest xmascot:
+ http://cclub.tutcc.tut.ac.jp:1080/xmascot/
+ ftp://cclub.tutcc.tut.ac.jp/pub/xmascot/
diff --git a/x11/xmascot/pkg/PLIST b/x11/xmascot/pkg/PLIST
new file mode 100644
index 00000000000..6bc6725164c
--- /dev/null
+++ b/x11/xmascot/pkg/PLIST
@@ -0,0 +1,23 @@
+bin/xmascot
+lib/X11/xmascot/pin.mag
+lib/X11/xmascot/chain.mag
+lib/X11/xmascot/mail_r.mag
+lib/X11/xmascot/kuma.mag
+lib/X11/xmascot/inu.mag
+lib/X11/xmascot/neko.mag
+lib/X11/xmascot/neko2.mag
+lib/X11/xmascot/teru.mag
+lib/X11/xmascot/pen.mag
+lib/X11/xmascot/saru.mag
+lib/X11/xmascot/rabi.mag
+lib/X11/xmascot/fish.mag
+lib/X11/xmascot/monohosi.mag
+lib/X11/xmascot/logo.mag
+lib/X11/xmascot/pipipipi.au
+lib/X11/xmascot/mi.au
+lib/X11/xmascot/mi.raw
+lib/X11/xmascot/mi2.au
+lib/X11/xmascot/mi2.raw
+lib/X11/xmascot/mitime.au
+lib/X11/xmascot/mitime.raw
+man/man1/xmascot.1.gz