aboutsummaryrefslogtreecommitdiff
path: root/x11-fm/tkdesk
diff options
context:
space:
mode:
authorSteve Price <steve@FreeBSD.org>1998-02-21 23:17:15 +0000
committerSteve Price <steve@FreeBSD.org>1998-02-21 23:17:15 +0000
commit56561367f82bfb04c0951b4c963e1afe657cd4e5 (patch)
tree3433d2546dc267b4029c249b4a8ea64c522dc8b4 /x11-fm/tkdesk
parentf06d13b6ff11d7e42829196e9274cc7b711f963c (diff)
downloadports-56561367f82bfb04c0951b4c963e1afe657cd4e5.tar.gz
ports-56561367f82bfb04c0951b4c963e1afe657cd4e5.zip
Notes
Diffstat (limited to 'x11-fm/tkdesk')
-rw-r--r--x11-fm/tkdesk/Makefile29
-rw-r--r--x11-fm/tkdesk/distinfo2
-rw-r--r--x11-fm/tkdesk/files/patch-aa1519
-rw-r--r--x11-fm/tkdesk/pkg-plist550
4 files changed, 477 insertions, 1623 deletions
diff --git a/x11-fm/tkdesk/Makefile b/x11-fm/tkdesk/Makefile
index 0740d36af595..563192f7e24e 100644
--- a/x11-fm/tkdesk/Makefile
+++ b/x11-fm/tkdesk/Makefile
@@ -1,21 +1,30 @@
# New ports collection makefile for: tkdesk
-# Version required: 1.0b2
+# Version required: 1.0b5
# Date created: 30 Jul 1996
# Whom: shanee@rabbit.augusta.de
#
-# $Id: Makefile,v 1.3 1996/11/12 04:54:07 max Exp $
+# $Id: Makefile,v 1.4 1997/04/20 13:19:59 wosch Exp $
#
-DISTNAME= tkdesk-1.0b3
-PKGNAME= tkdesk-1.0b3
-CATEGORIES= misc x11 tk41
-MASTER_SITES= http://sun1.rrzn-user.uni-hannover.de/~zzhibol/tkdesk/
+DISTNAME= tkdesk-1.0b5
+CATEGORIES= misc x11 tk80
+MASTER_SITES= http://people.mainz.netsurf.de/~bolik/tkdesk/ \
+ ftp://ftp.neosoft.com/pub/tcl/sorted/unknown/
-MAINTAINER= nox@jelal.hb.north.de
+MAINTAINER= dmlb@ragnet.demon.co.uk
-LIB_DEPENDS= tk41\\.1\\.:${PORTSDIR}/x11/tk41
+LIB_DEPENDS= tk80\\.1\\.:${PORTSDIR}/x11/tk80 \
+ tcl80\\.1\\.:${PORTSDIR}/lang/tcl80
-post-patch:
- -rm ${WRKSRC}/tcldesk/*.orig ${WRKSRC}/tcldesk/*/*.orig
+USE_GMAKE= YES
+GNU_CONFIGURE= YES
+CONFIGURE_ENV= TCLCONF_PATH=${PREFIX}/lib/tcl8.0 TKCONF_PATH=${PREFIX}/lib/tk8.0
+CONFIGURE_ARGS= --prefix=${PREFIX}
+
+MAN1= tkdesk.1 cd-tkdesk.1 ed-tkdesk.1 od-tkdesk.1
+
+post-install:
+ strip ${PREFIX}/bin/tkdesksh
+ strip ${PREFIX}/bin/tkdeskclient
.include <bsd.port.mk>
diff --git a/x11-fm/tkdesk/distinfo b/x11-fm/tkdesk/distinfo
index 4f9b4c1985a7..25ab514b0ea1 100644
--- a/x11-fm/tkdesk/distinfo
+++ b/x11-fm/tkdesk/distinfo
@@ -1 +1 @@
-MD5 (tkdesk-1.0b3.tar.gz) = a77a46a27e9eaf1afcbaef477495185f
+MD5 (tkdesk-1.0b5.tar.gz) = 9d846a3c38d18e5e0ddc1da21998c9cd
diff --git a/x11-fm/tkdesk/files/patch-aa b/x11-fm/tkdesk/files/patch-aa
index d9fdaf0ab465..f31f69f0f2b6 100644
--- a/x11-fm/tkdesk/files/patch-aa
+++ b/x11-fm/tkdesk/files/patch-aa
@@ -1,1424 +1,95 @@
-Index: Makefile
---- Makefile.orig Thu Sep 26 10:37:58 1996
-+++ Makefile Sun Nov 10 20:40:01 1996
-@@ -21,9 +21,14 @@
- # --------------------------------
-
- #
-+# Installation prefix:
-+
-+PREFIX?=/usr/local
-+
-+#
- # Where the executables will be installed:
-
--BINDIR = /usr/local/bin
-+BINDIR = ${PREFIX}/bin
- #BINDIR = $(HOME)/bin
-
- # Where TkDesk will look for the tkdesk script when started (this is
-@@ -34,7 +39,7 @@
- #
- # TkDesk's library will be installed here:
-
--LIBDIR = /usr/local/lib/TkDesk
-+LIBDIR = ${PREFIX}/lib/TkDesk
- #LIBDIR = $(HOME)/lib/TkDesk
-
- # Where TkDesk will look for its library files when started (this is
-@@ -50,48 +55,50 @@
- #
- # Location of the Tcl include files:
-
--TCLINCDIR = /usr/include/tcl # Linux with Slackware 3.0
- #TCLINCDIR = /usr/local/include
-+#TCLINCDIR = /usr/include/tcl # Linux with Slackware 3.0
--#TCLINCDIR = /usr/local/include/tcl7.5
-+TCLINCDIR = /usr/local/include/tcl7.5
- #TCLINCDIR = $(HOME)/include
-
- # Location of the Tcl library:
- # (Ignore the "-L" bit - the linker needs it.)
-
--TCLLIBDIR =
--#TCLLIBDIR = -L/usr/local/lib
-+#TCLLIBDIR =
-+TCLLIBDIR = -L/usr/local/lib
- #TCLLIBDIR = -L$(HOME)/lib
-
- #
- # Flag for linking the Tcl library to TkDesk:
-
--TCLLIB = -ltcl
-+#TCLLIB = -ltcl
- #TCLLIB = -ltcl7.4
- #TCLLIB = -ltcl7.5
- #TCLLIB = -ltcl7_4
-+TCLLIB = -ltcl75
-
- #
- # Location of the Tk include files:
-
--TKINCDIR = /usr/include/tcl # Linux with Slackware 3.0
--#TKINCDIR = /usr/local/include
-+#TKINCDIR = /usr/include/tcl # Linux with Slackware 3.0
-+TKINCDIR = /usr/local/include/tk4.1
- #TKINCDIR = /usr/local/include/tcl7.5
- #TKINCDIR = $(HOME)/include
-
- # Location of the Tk library:
- # (Ignore the "-L" bit - the linker needs it.)
-
--TKLIBDIR =
--#TKLIBDIR = -L/usr/local/lib
-+#TKLIBDIR =
-+TKLIBDIR = -L/usr/local/lib
- #TKLIBDIR = -L$(HOME)/lib
-
- #
- # Flag for linking the Tk library to TkDesk:
-
--TKLIB = -ltk
-+#TKLIB = -ltk
- #TKLIB = -ltk4.0
- #TKLIB = -ltk4.1
- #TKLIB = -ltk4_0
-+TKLIB = -ltk41
-
- # --------------------------------
- # X11 Paths:
-@@ -119,12 +126,12 @@
- # to add the appropriate library which allows for dynamic loading on
- # your system, such as -ldl for Linux and SGI or -ldld for HP-UX.)
-
--OTHERLIBS = -lieee # e.g. Linux with Tcl 7.4
-+#OTHERLIBS = -lieee # e.g. Linux with Tcl 7.4
- #OTHERLIBS = -ldl -lieee # e.g. Linux with Tcl 7.5 and dynamic loading
- #OTHERLIBS = -ldl -lnsl -lsocket # e.g. for Solaris
- #OTHERLIBS = -ldl -lsocket # e.g. for SGI with os5.3 and Tcl 7.5
- #OTHERLIBS = -ldld # e.g. for HP-UX 9.05 and Tcl 7.5
--#OTHERLIBS =
-+OTHERLIBS =
-
- # --------------------------------
- # Compiler and Linker Settings:
-@@ -170,8 +177,8 @@
- @echo "out the fifth line in the file tkdesk and then executing:"
- @echo "./tkdesksh tkdesk -configdir ./tcldesk/configs"
-
--shell: makelibs tkAppInit.o
-- $(CC) $(LDFLAGS) tkAppInit.o -o tkdesksh libdesk/libdesk.a \
-+shell: makelibs tkAppInit.o malloc.o
-+ $(CC) $(LDFLAGS) tkAppInit.o malloc.o -o tkdesksh libdesk/libdesk.a \
- netscape-remote/libnetscape.a \
- blt/src/libBLT.a $(TKLIBDIRFLAG) $(TKLIB) \
- $(XLIBDIRFLAG) -lX11 itcl/src/libitcl.a \
-@@ -240,10 +247,11 @@
- find $(LIBDIR) -type f -exec chmod a+r {} \;
- find $(LIBDIR) -type d -exec chmod a+rx {} \;
- @echo "=== Installing the executables..."
-- @rm -f $(BINDIR)/tkdesksh $(BINDIR)/tkdesk $(BINDIR)/pauseme $(BINDIR)/ed-tkdesk $(BINDIR)/cd-tkdesk $(BINDIR)/od-tkdesk
-+ @rm -f $(BINDIR)/tkdesksh $(BINDIR)/tkdesk $(BINDIR)/pauseme $(BINDIR)/ed-tkdesk $(BINDIR)/cd-tkdesk $(BINDIR)/od-tkdesk $(BINDIR)/gdbcore $(BINDIR)/dddcore
- cp tkdesksh $(BINDIR)
-- cp tkdesk tools/pauseme tools/ed-tkdesk tools/cd-tkdesk tools/od-tkdesk $(BINDIR)
-- chmod 755 $(BINDIR)/*tkdesk* $(BINDIR)/pauseme
-+ cp tkdesk tools/pauseme tools/gdbcore tools/ed-tkdesk tools/cd-tkdesk tools/od-tkdesk $(BINDIR)
-+ chmod 755 $(BINDIR)/*tkdesk* $(BINDIR)/pauseme $(BINDIR)/gdbcore
-+ ln -s gdbcore $(BINDIR)/dddcore
- @echo "=== Installation complete."
-
- uninstall:
-Index: libdesk/dsk_ls.c
-@@ -57,6 +57,7 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-+#include <sys/types.h>
- #include <dirent.h>
- #include <time.h> /* for ctime */
- #include <unistd.h> /* for readlink */
-@@ -382,7 +382,7 @@
- void write_element (fe)
- FILE_ENTRY *fe;
- {
-- char buf[256], *np;
-+ char buf[2560], *np;
-
- np = (par_only_directories) ? fe->path : fe->name;
-
-Index: libdesk/misc.c
-@@ -68,7 +68,7 @@
- {
- int keep = 0, i;
- char tc;
-- char instr[TCL_RESULT_SIZE], outstr[TCL_RESULT_SIZE];
-+ char instr[2560], outstr[2560];
-
- if (argc < 2 || argc > 3) {
- sprintf (interp->result, "usage: dsk_striptc ?-keep? string");
-@@ -87,7 +87,7 @@
- }
-
- if (instr[0] == 0) {
-- *interp->result = 0;
-+ Tcl_ResetResult(interp);
- return (TCL_OK);
- }
-
-@@ -117,7 +117,7 @@
- }
- }
-
-- strcpy (interp->result, outstr);
-+ Tcl_SetResult(interp, outstr, TCL_VOLATILE);
- return (TCL_OK);
- } /* dsk_striptc_Cmd */
-
-Index: tcldesk/appbar.tcl
-@@ -1002,7 +1002,7 @@
- _appbar_get_load]
- return
- }
-- set li [lsearch $uptime "average:"]
-+ set li [lsearch $uptime "averages:"]
- set load1 [string trimright [lindex $uptime [incr li]] ,]
- set load2 [string trimright [lindex $uptime [incr li]] ,]
- set load3 [string trimright [lindex $uptime [incr li]] ,]
-Index: tools/gdbcore
-@@ -0,0 +1,28 @@
-+#! /bin/sh
-+# {gdb,ddd}core executable corefile - gdb/ddd a core file
-+
-+# Try to load shared symbols by `run'ning upto main first, then
-+# loading the core-file (BSD's gdb sees only static symbols otherwise)
-+case `basename $0` in
-+ddd*)
-+ x=ddd
-+ ;;
-+*)
-+ x=gdb
-+ ;;
-+esac
-+if [ -z "$1" ]; then
-+ f=`basename $2|sed s/.core\$//`
-+else
-+ f=$1
-+fi
-+if [ ! -f "$f" ]; then
-+ f=`dirname $2`/`basename $f`
-+fi
-+if nm -g "$f" |grep -q "^[0-9a-f]* T _main$"; then
-+ (echo b main; echo r; echo del 1; echo core-file $2) >/tmp/gdbcore-x-$$
-+ (rm /tmp/gdbcore-x-$$; exec $x -x /dev/fd/6 $f) 6</tmp/gdbcore-x-$$
-+else
-+ # no `main' symbol...
-+ exec $x $f $2
-+fi
-Index: malloc.c
-@@ -0,0 +1,1206 @@
-+/*
-+ * ----------------------------------------------------------------------------
-+ * "THE BEER-WARE LICENSE" (Revision 42):
-+ * <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
-+ * can do whatever you want with this stuff. If we meet some day, and you think
-+ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
-+ * ----------------------------------------------------------------------------
-+ *
-+ * $Id: patch-aa,v 1.4 1997/04/21 06:27:52 asami Exp $
-+ *
-+ */
-+
-+/*
-+ * Defining EXTRA_SANITY will enable some checks which are related
-+ * to internal conditions and consistency in malloc.c
-+ */
-+#undef EXTRA_SANITY
-+
-+/*
-+ * Defining MALLOC_STATS will enable you to call malloc_dump() and set
-+ * the [dD] options in the MALLOC_OPTIONS environment variable.
-+ * It has no run-time performance hit.
-+ */
-+#define MALLOC_STATS
-+
-+#if defined(EXTRA_SANITY) && !defined(MALLOC_STATS)
-+# define MALLOC_STATS /* required for EXTRA_SANITY */
-+#endif
-+
-+/*
-+ * What to use for Junk
-+ */
-+#define SOME_JUNK 0xd0 /* as in "Duh" :-) */
-+
-+/*
-+ * If these weren't defined here, they would be calculated on the fly,
-+ * at a considerable cost in performance.
-+ */
-+#if defined(__i386__) && defined(__FreeBSD__)
-+# define malloc_pagesize 4096U
-+# define malloc_pageshift 12U
-+# define malloc_minsize 16U
-+# define malloc_maxsize ((malloc_pagesize)>>1)
-+#endif /* __i386__ && __FreeBSD__ */
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <memory.h>
-+#include <errno.h>
-+#include <err.h>
-+#include <sys/types.h>
-+#include <sys/mman.h>
-+#ifdef _THREAD_SAFE
-+#include <pthread.h>
-+#include "pthread_private.h"
-+#endif
-+
-+/*
-+ * This structure describes a page worth of chunks.
-+ */
-+
-+struct pginfo {
-+ struct pginfo *next; /* next on the free list */
-+ void *page; /* Pointer to the page */
-+ u_short size; /* size of this page's chunks */
-+ u_short shift; /* How far to shift for this size chunks */
-+ u_short free; /* How many free chunks */
-+ u_short total; /* How many chunk */
-+ u_long bits[1]; /* Which chunks are free */
-+};
-+
-+/*
-+ * This structure describes a number of free pages.
-+ */
-+
-+struct pgfree {
-+ struct pgfree *next; /* next run of free pages */
-+ struct pgfree *prev; /* prev run of free pages */
-+ void *page; /* pointer to free pages */
-+ void *end; /* pointer to end of free pages */
-+ u_long size; /* number of bytes free */
-+};
-+
-+/*
-+ * How many bits per u_long in the bitmap.
-+ * Change only if not 8 bits/byte
-+ */
-+#define MALLOC_BITS (8*sizeof(u_long))
-+
-+/*
-+ * Magic values to put in the page_directory
-+ */
-+#define MALLOC_NOT_MINE ((struct pginfo*) 0)
-+#define MALLOC_FREE ((struct pginfo*) 1)
-+#define MALLOC_FIRST ((struct pginfo*) 2)
-+#define MALLOC_FOLLOW ((struct pginfo*) 3)
-+#define MALLOC_MAGIC ((struct pginfo*) 4)
-+
-+/*
-+ * The i386 architecture has some very convenient instructions.
-+ * We might as well use them. There are C-language backups, but
-+ * they are considerably slower.
-+ */
-+#ifdef __i386__
-+#define ffs _ffs
-+static __inline int
-+_ffs(unsigned input)
-+{
-+ int result;
-+ asm("bsfl %1,%0" : "=r" (result) : "r" (input));
-+ return result+1;
-+}
-+
-+#define fls _fls
-+static __inline int
-+_fls(unsigned input)
-+{
-+ int result;
-+ asm("bsrl %1,%0" : "=r" (result) : "r" (input));
-+ return result+1;
-+}
-+
-+#define set_bit _set_bit
-+static __inline void
-+_set_bit(struct pginfo *pi, int bit)
-+{
-+ asm("btsl %0,(%1)" :
-+ : "r" (bit & (MALLOC_BITS-1)), "r" (pi->bits+(bit/MALLOC_BITS)));
-+}
-+
-+#define clr_bit _clr_bit
-+static __inline void
-+_clr_bit(struct pginfo *pi, int bit)
-+{
-+ asm("btcl %0,(%1)" :
-+ : "r" (bit & (MALLOC_BITS-1)), "r" (pi->bits+(bit/MALLOC_BITS)));
-+}
-+
-+#endif /* __i386__ */
-+
-+/*
-+ * Set to one when malloc_init has been called
-+ */
-+static unsigned initialized;
-+
-+/*
-+ * The size of a page.
-+ * Must be a integral multiplum of the granularity of mmap(2).
-+ * Your toes will curl if it isn't a power of two
-+ */
-+#ifndef malloc_pagesize
-+static unsigned malloc_pagesize;
-+#endif /* malloc_pagesize */
-+
-+/*
-+ * A mask for the offset inside a page.
-+ */
-+#define malloc_pagemask ((malloc_pagesize)-1)
-+
-+#define pageround(foo) (((foo) + (malloc_pagemask))&(~(malloc_pagemask)))
-+#define ptr2index(foo) (((u_long)(foo) >> malloc_pageshift)-malloc_origo)
-+
-+/*
-+ * malloc_pagesize == 1 << malloc_pageshift
-+ */
-+#ifndef malloc_pageshift
-+static unsigned malloc_pageshift;
-+#endif /* malloc_pageshift */
-+
-+/*
-+ * The smallest allocation we bother about.
-+ * Must be power of two
-+ */
-+#ifndef malloc_minsize
-+static unsigned malloc_minsize;
-+#endif /* malloc_minsize */
-+
-+/*
-+ * The largest chunk we care about.
-+ * Must be smaller than pagesize
-+ * Must be power of two
-+ */
-+#ifndef malloc_maxsize
-+static unsigned malloc_maxsize;
-+#endif /* malloc_maxsize */
-+
-+/*
-+ * The minimum size (in bytes) of the free page cache.
-+ */
-+#ifndef malloc_cache
-+static unsigned malloc_cache;
-+#endif /* malloc_cache */
-+
-+/*
-+ * The offset from pagenumber to index into the page directory
-+ */
-+static u_long malloc_origo;
-+
-+/*
-+ * The last index in the page directory we care about
-+ */
-+static u_long last_index;
-+
-+/*
-+ * Pointer to page directory.
-+ * Allocated "as if with" malloc
-+ */
-+static struct pginfo **page_dir;
-+
-+/*
-+ * How many slots in the page directory
-+ */
-+static unsigned malloc_ninfo;
-+
-+/*
-+ * Free pages line up here
-+ */
-+static struct pgfree free_list;
-+
-+/*
-+ * Abort() if we fail to get VM ?
-+ */
-+static int malloc_abort;
-+
-+/*
-+ * Are we trying to die ?
-+ */
-+static int suicide;
-+
-+#ifdef MALLOC_STATS
-+/*
-+ * dump statistics
-+ */
-+static int malloc_stats;
-+#endif /* MALLOC_STATS */
-+
-+/*
-+ * always realloc ?
-+ */
-+static int malloc_realloc;
-+
-+/*
-+ * zero fill ?
-+ */
-+static int malloc_zero;
-+
-+/*
-+ * junk fill ?
-+ */
-+static int malloc_junk;
-+
-+/*
-+ * my last break.
-+ */
-+static void *malloc_brk;
-+
-+/*
-+ * one location cache for free-list holders
-+ */
-+static struct pgfree *px;
-+
-+/*
-+ * Necessary function declarations
-+ */
-+static int extend_pgdir(u_long index);
-+
-+#ifdef MALLOC_STATS
-+void
-+malloc_dump(FILE *fd)
-+{
-+ struct pginfo **pd;
-+ struct pgfree *pf;
-+ int j;
-+
-+ pd = page_dir;
-+
-+ /* print out all the pages */
-+ for(j=0;j<=last_index;j++) {
-+ fprintf(fd,"%08lx %5d ",(j+malloc_origo) << malloc_pageshift,j);
-+ if (pd[j] == MALLOC_NOT_MINE) {
-+ for(j++;j<=last_index && pd[j] == MALLOC_NOT_MINE;j++)
-+ ;
-+ j--;
-+ fprintf(fd,".. %5d not mine\n", j);
-+ } else if (pd[j] == MALLOC_FREE) {
-+ for(j++;j<=last_index && pd[j] == MALLOC_FREE;j++)
-+ ;
-+ j--;
-+ fprintf(fd,".. %5d free\n", j);
-+ } else if (pd[j] == MALLOC_FIRST) {
-+ for(j++;j<=last_index && pd[j] == MALLOC_FOLLOW;j++)
-+ ;
-+ j--;
-+ fprintf(fd,".. %5d in use\n", j);
-+ } else if (pd[j] < MALLOC_MAGIC) {
-+ fprintf(fd,"(%p)\n", pd[j]);
-+ } else {
-+ fprintf(fd,"%p %d (of %d) x %d @ %p --> %p\n",
-+ pd[j],pd[j]->free, pd[j]->total,
-+ pd[j]->size, pd[j]->page, pd[j]->next);
-+ }
-+ }
-+
-+ for(pf=free_list.next; pf; pf=pf->next) {
-+ fprintf(fd,"Free: @%p [%p...%p[ %ld ->%p <-%p\n",
-+ pf,pf->page,pf->end,pf->size,pf->prev,pf->next);
-+ if (pf == pf->next) {
-+ fprintf(fd,"Free_list loops.\n");
-+ break;
-+ }
-+ }
-+
-+ /* print out various info */
-+ fprintf(fd,"Minsize\t%d\n",malloc_minsize);
-+ fprintf(fd,"Maxsize\t%d\n",malloc_maxsize);
-+ fprintf(fd,"Pagesize\t%d\n",malloc_pagesize);
-+ fprintf(fd,"Pageshift\t%d\n",malloc_pageshift);
-+ fprintf(fd,"FirstPage\t%ld\n",malloc_origo);
-+ fprintf(fd,"LastPage\t%ld %lx\n",last_index+malloc_pageshift,
-+ (last_index + malloc_pageshift) << malloc_pageshift);
-+ fprintf(fd,"Break\t%ld\n",(u_long)sbrk(0) >> malloc_pageshift);
-+}
-+#endif /* MALLOC_STATS */
-+
-+static void
-+wrterror(char *p)
-+{
-+ char *q = "Malloc error: ";
-+ suicide = 1;
-+ write(2,q,strlen(q));
-+ write(2,p,strlen(p));
-+#ifdef MALLOC_STATS
-+ if (malloc_stats)
-+ malloc_dump(stderr);
-+#endif /* MALLOC_STATS */
-+ abort();
-+}
-+
-+static void
-+wrtwarning(char *p)
-+{
-+ char *q = "Malloc warning: ";
-+ if (malloc_abort)
-+ wrterror(p);
-+ write(2,q,strlen(q));
-+ write(2,p,strlen(p));
-+}
-+
-+#ifdef EXTRA_SANITY
-+static void
-+malloc_exit()
-+{
-+ FILE *fd = fopen("malloc.out","a");
-+ char *q = "malloc() warning: Couldn't dump stats.\n";
-+ if (fd) {
-+ malloc_dump(fd);
-+ fclose(fd);
-+ } else
-+ write(2,q,strlen(q));
-+}
-+#endif /* EXTRA_SANITY */
-+
-+
-+/*
-+ * Allocate a number of pages from the OS
-+ */
-+static caddr_t
-+map_pages(int pages)
-+{
-+ caddr_t result,tail;
-+
-+ result = (caddr_t)pageround((u_long)sbrk(0));
-+ tail = result + (pages << malloc_pageshift);
-+
-+ if (brk(tail)) {
-+#ifdef EXTRA_SANITY
-+ wrterror("(internal): map_pages fails\n");
-+#endif /* EXTRA_SANITY */
-+ return 0;
-+ }
-+
-+ last_index = ptr2index(tail) - 1;
-+ malloc_brk = tail;
-+
-+ if ((last_index+1) >= malloc_ninfo && !extend_pgdir(last_index))
-+ return 0;;
-+
-+ return result;
-+}
-+
-+/*
-+ * Set a bit in the bitmap
-+ */
-+#ifndef set_bit
-+static __inline void
-+set_bit(struct pginfo *pi, int bit)
-+{
-+ pi->bits[bit/MALLOC_BITS] |= 1<<(bit%MALLOC_BITS);
-+}
-+#endif /* set_bit */
-+
-+/*
-+ * Clear a bit in the bitmap
-+ */
-+#ifndef clr_bit
-+static __inline void
-+clr_bit(struct pginfo *pi, int bit)
-+{
-+ pi->bits[bit/MALLOC_BITS] &= ~(1<<(bit%MALLOC_BITS));
-+}
-+#endif /* clr_bit */
-+
-+#ifndef tst_bit
-+/*
-+ * Test a bit in the bitmap
-+ */
-+static __inline int
-+tst_bit(struct pginfo *pi, int bit)
-+{
-+ return pi->bits[bit/MALLOC_BITS] & (1<<(bit%MALLOC_BITS));
-+}
-+#endif /* tst_bit */
-+
-+/*
-+ * Find last bit
-+ */
-+#ifndef fls
-+static __inline int
-+fls(int size)
-+{
-+ int i = 1;
-+ while (size >>= 1)
-+ i++;
-+ return i;
-+}
-+#endif /* fls */
-+
-+/*
-+ * Extend page directory
-+ */
-+static int
-+extend_pgdir(u_long index)
-+{
-+ struct pginfo **new,**old;
-+ int i, oldlen;
-+
-+ /* Make it this many pages */
-+ i = index * sizeof *page_dir;
-+ i /= malloc_pagesize;
-+ i += 2;
-+
-+ /* remember the old mapping size */
-+ oldlen = malloc_ninfo * sizeof *page_dir;
-+
-+ /*
-+ * NOTE: we allocate new pages and copy the directory rather than tempt
-+ * fate by trying to "grow" the region.. There is nothing to prevent
-+ * us from accidently re-mapping space that's been allocated by our caller
-+ * via dlopen() or other mmap().
-+ *
-+ * The copy problem is not too bad, as there is 4K of page index per
-+ * 4MB of malloc arena.
-+ *
-+ * We can totally avoid the copy if we open a file descriptor to associate
-+ * the anon mappings with. Then, when we remap the pages at the new
-+ * address, the old pages will be "magically" remapped.. But this means
-+ * keeping open a "secret" file descriptor.....
-+ */
-+
-+ /* Get new pages */
-+ new = (struct pginfo**) mmap(0, i * malloc_pagesize, PROT_READ|PROT_WRITE,
-+ MAP_ANON|MAP_PRIVATE, -1, 0);
-+ if (new == (struct pginfo **)-1)
-+ return 0;
-+
-+ /* Copy the old stuff */
-+ memcpy(new, page_dir,
-+ malloc_ninfo * sizeof *page_dir);
-+
-+ /* register the new size */
-+ malloc_ninfo = i * malloc_pagesize / sizeof *page_dir;
-+
-+ /* swap the pointers */
-+ old = page_dir;
-+ page_dir = new;
-+
-+ /* Now free the old stuff */
-+ munmap((caddr_t)old, oldlen);
-+ return 1;
-+}
-+
-+/*
-+ * Initialize the world
-+ */
-+static void
-+malloc_init ()
-+{
-+ char *p;
-+
-+#ifdef EXTRA_SANITY
-+ malloc_junk = 1;
-+#endif /* EXTRA_SANITY */
-+
-+ for (p=getenv("MALLOC_OPTIONS"); p && *p; p++) {
-+ switch (*p) {
-+ case 'a': malloc_abort = 0; break;
-+ case 'A': malloc_abort = 1; break;
-+#ifdef MALLOC_STATS
-+ case 'd': malloc_stats = 0; break;
-+ case 'D': malloc_stats = 1; break;
-+#endif /* MALLOC_STATS */
-+ case 'r': malloc_realloc = 0; break;
-+ case 'R': malloc_realloc = 1; break;
-+ case 'j': malloc_junk = 0; break;
-+ case 'J': malloc_junk = 1; break;
-+ case 'z': malloc_zero = 0; break;
-+ case 'Z': malloc_zero = 1; break;
-+ default:
-+ wrtwarning("(Init): Unknown char in MALLOC_OPTIONS\n");
-+ p = 0;
-+ break;
-+ }
-+ }
-+
-+ /*
-+ * We want junk in the entire allocation, and zero only in the part
-+ * the user asked for.
-+ */
-+ if (malloc_zero)
-+ malloc_junk=1;
-+
-+#ifdef EXTRA_SANITY
-+ if (malloc_stats)
-+ atexit(malloc_exit);
-+#endif /* EXTRA_SANITY */
-+
-+#ifndef malloc_pagesize
-+ /* determine our pagesize */
-+ malloc_pagesize = getpagesize();
-+#endif /* malloc_pagesize */
-+
-+#ifndef malloc_maxsize
-+ malloc_maxsize = malloc_pagesize >> 1;
-+#endif /* malloc_maxsize */
-+
-+#ifndef malloc_pageshift
-+ {
-+ int i;
-+ /* determine how much we shift by to get there */
-+ for (i = malloc_pagesize; i > 1; i >>= 1)
-+ malloc_pageshift++;
-+ }
-+#endif /* malloc_pageshift */
-+
-+#ifndef malloc_cache
-+ malloc_cache = 100 << malloc_pageshift;
-+#endif /* malloc_cache */
-+
-+#ifndef malloc_minsize
-+ {
-+ int i;
-+ /*
-+ * find the smallest size allocation we will bother about.
-+ * this is determined as the smallest allocation that can hold
-+ * it's own pginfo;
-+ */
-+ i = 2;
-+ for(;;) {
-+ int j;
-+
-+ /* Figure out the size of the bits */
-+ j = malloc_pagesize/i;
-+ j /= 8;
-+ if (j < sizeof(u_long))
-+ j = sizeof (u_long);
-+ if (sizeof(struct pginfo) + j - sizeof (u_long) <= i)
-+ break;
-+ i += i;
-+ }
-+ malloc_minsize = i;
-+ }
-+#endif /* malloc_minsize */
-+
-+ /* Allocate one page for the page directory */
-+ page_dir = (struct pginfo **) mmap(0, malloc_pagesize, PROT_READ|PROT_WRITE,
-+ MAP_ANON|MAP_PRIVATE, -1, 0);
-+ if (page_dir == (struct pginfo **) -1)
-+ wrterror("(Init) my first mmap failed. (check limits ?)\n");
-+
-+ /*
-+ * We need a maximum of malloc_pageshift buckets, steal these from the
-+ * front of the page_directory;
-+ */
-+ malloc_origo = ((u_long)pageround((u_long)sbrk(0))) >> malloc_pageshift;
-+ malloc_origo -= malloc_pageshift;
-+
-+ malloc_ninfo = malloc_pagesize / sizeof *page_dir;
-+
-+ /* Been here, done that */
-+ initialized++;
-+
-+ /*
-+ * This is a nice hack from Kaleb Keithly (kaleb@x.org).
-+ * We can sbrk(2) further back when we keep this on a low address.
-+ */
-+ px = (struct pgfree *) malloc (sizeof *px);
-+}
-+
-+/*
-+ * Allocate a number of complete pages
-+ */
-+void *
-+malloc_pages(size_t size)
-+{
-+ void *p,*delay_free = 0;
-+ int i;
-+ struct pgfree *pf;
-+ u_long index;
-+
-+ size = pageround(size);
-+
-+ p = 0;
-+ /* Look for free pages before asking for more */
-+ for(pf = free_list.next; pf; pf = pf->next) {
-+
-+#ifdef EXTRA_SANITY
-+ if (pf->size & malloc_pagemask)
-+ wrterror("(ES): junk length entry on free_list\n");
-+ if (!pf->size)
-+ wrterror("(ES): zero length entry on free_list\n");
-+ if (pf->page == pf->end)
-+ wrterror("(ES): zero entry on free_list\n");
-+ if (pf->page > pf->end)
-+ wrterror("(ES): sick entry on free_list\n");
-+ if ((void*)pf->page >= (void*)sbrk(0))
-+ wrterror("(ES): entry on free_list past brk\n");
-+ if (page_dir[ptr2index(pf->page)] != MALLOC_FREE)
-+ wrterror("(ES): non-free first page on free-list\n");
-+ if (page_dir[ptr2index(pf->end)-1] != MALLOC_FREE)
-+ wrterror("(ES): non-free last page on free-list\n");
-+#endif /* EXTRA_SANITY */
-+
-+ if (pf->size < size)
-+ continue;
-+
-+ if (pf->size == size) {
-+ p = pf->page;
-+ if (pf->next)
-+ pf->next->prev = pf->prev;
-+ pf->prev->next = pf->next;
-+ delay_free = pf;
-+ break;
-+ }
-+
-+ p = pf->page;
-+ pf->page += size;
-+ pf->size -= size;
-+ break;
-+ }
-+
-+#ifdef EXTRA_SANITY
-+ if (p && page_dir[ptr2index(p)] != MALLOC_FREE)
-+ wrterror("(ES): allocated non-free page on free-list\n");
-+#endif /* EXTRA_SANITY */
-+
-+ size >>= malloc_pageshift;
-+
-+ /* Map new pages */
-+ if (!p)
-+ p = map_pages(size);
-+
-+ if (p) {
-+
-+ index = ptr2index(p);
-+ page_dir[index] = MALLOC_FIRST;
-+ for (i=1;i<size;i++)
-+ page_dir[index+i] = MALLOC_FOLLOW;
-+
-+ if (malloc_junk)
-+ memset(p, SOME_JUNK,size << malloc_pageshift);
-+ }
-+
-+ if (delay_free) {
-+ if (!px)
-+ px = delay_free;
-+ else
-+ free(delay_free);
-+ }
-+
-+ return p;
-+}
-+
-+/*
-+ * Allocate a page of fragments
-+ */
-+
-+static __inline int
-+malloc_make_chunks(int bits)
-+{
-+ struct pginfo *bp;
-+ void *pp;
-+ int i,k,l;
-+
-+ /* Allocate a new bucket */
-+ pp = malloc_pages(malloc_pagesize);
-+ if (!pp)
-+ return 0;
-+
-+ /* Find length of admin structure */
-+ l = sizeof *bp - sizeof(u_long);
-+ l += sizeof(u_long) *
-+ (((malloc_pagesize >> bits)+MALLOC_BITS-1) / MALLOC_BITS);
-+
-+ /* Don't waste more than two chunks on this */
-+ if ((1<<(bits)) <= l+l) {
-+ bp = (struct pginfo *)pp;
-+ } else {
-+ bp = (struct pginfo *)malloc(l);
-+ if (!bp)
-+ return 0;
-+ }
-+
-+ bp->size = (1<<bits);
-+ bp->shift = bits;
-+ bp->total = bp->free = malloc_pagesize >> bits;
-+ bp->page = pp;
-+
-+ page_dir[ptr2index(pp)] = bp;
-+
-+ bp->next = page_dir[bits];
-+ page_dir[bits] = bp;
-+
-+ /* set all valid bits in the bits */
-+ k = bp->total;
-+ i = 0;
-+
-+ /* Do a bunch at a time */
-+ for(;k-i >= MALLOC_BITS; i += MALLOC_BITS)
-+ bp->bits[i / MALLOC_BITS] = ~0;
-+
-+ for(; i < k; i++)
-+ set_bit(bp,i);
-+
-+ if (bp == bp->page) {
-+ /* Mark the ones we stole for ourselves */
-+ for(i=0;l > 0;i++) {
-+ clr_bit(bp,i);
-+ bp->free--;
-+ bp->total--;
-+ l -= (1 << bits);
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+/*
-+ * Allocate a fragment
-+ */
-+static void *
-+malloc_bytes(size_t size)
-+{
-+ int j;
-+ struct pginfo *bp;
-+ int k;
-+ u_long *lp;
-+
-+ /* Don't bother with anything less than this */
-+ if (size < malloc_minsize)
-+ size = malloc_minsize;
-+
-+ /* Find the right bucket */
-+ j = fls((size)-1);
-+
-+ /* If it's empty, make a page more of that size chunks */
-+ if (!page_dir[j] && !malloc_make_chunks(j))
-+ return 0;
-+
-+ bp = page_dir[j];
-+
-+ /* Find first word of bitmap which isn't empty */
-+ for (lp = bp->bits; !*lp; lp++)
-+ ;
-+
-+ /* Find that bit, and tweak it */
-+ k = ffs(*lp) - 1;
-+ *lp ^= 1<<k;
-+
-+ /* If there are no more free, remove from free-list */
-+ if (!--bp->free) {
-+ page_dir[j] = bp->next;
-+ bp->next = 0;
-+ }
-+
-+ /* Adjust to the real offset of that chunk */
-+ k += (lp-bp->bits)*MALLOC_BITS;
-+ k <<= bp->shift;
-+
-+ if (malloc_junk)
-+ memset(bp->page + k, SOME_JUNK, bp->size);
-+
-+ return bp->page + k;
-+}
-+
-+/*
-+ * Allocate a piece of memory
-+ */
-+static __inline void *
-+imalloc(size_t size)
-+{
-+ void *result;
-+
-+ if (!initialized)
-+ malloc_init();
-+
-+ if (suicide)
-+ abort();
-+
-+ if (size <= malloc_maxsize)
-+ result = malloc_bytes(size);
-+ else
-+ result = malloc_pages(size);
-+
-+ if (malloc_abort && !result)
-+ wrterror("malloc(): returns NULL\n");
-+
-+ if (malloc_zero)
-+ memset(result,0,size);
-+
-+ return result;
-+}
-+
-+/*
-+ * Change the size of an allocation.
-+ */
-+static __inline void *
-+irealloc(void *ptr, size_t size)
-+{
-+ void *p;
-+ u_long osize,index;
-+ struct pginfo **mp;
-+ int i;
-+
-+ if (suicide)
-+ return 0;
-+
-+ if (!ptr) /* Bounce to malloc() */
-+ return malloc(size);
-+
-+ if (!initialized) {
-+ wrtwarning("realloc(): malloc() never got called.\n");
-+ return 0;
-+ }
-+
-+ if (ptr && !size) { /* Bounce to free() */
-+ free(ptr);
-+ return 0;
-+ }
-+
-+ index = ptr2index(ptr);
-+
-+ if (index < malloc_pageshift) {
-+ wrtwarning("realloc(): junk pointer (too low)\n");
-+ return 0;
-+ }
-+
-+ if (index > last_index) {
-+ wrtwarning("realloc(): junk pointer (too high)\n");
-+ return 0;
-+ }
-+
-+ mp = &page_dir[index];
-+
-+ if (*mp == MALLOC_FIRST) { /* Page allocation */
-+
-+ /* Check the pointer */
-+ if ((u_long)ptr & malloc_pagemask) {
-+ wrtwarning("realloc(): modified page pointer.\n");
-+ return 0;
-+ }
-+
-+ /* Find the size in bytes */
-+ for (osize = malloc_pagesize; *++mp == MALLOC_FOLLOW;)
-+ osize += malloc_pagesize;
-+
-+ if (!malloc_realloc && /* unless we have to, */
-+ size <= osize && /* .. or are too small, */
-+ size > (osize - malloc_pagesize)) { /* .. or can free a page, */
-+ return ptr; /* don't do anything. */
-+ }
-+
-+ } else if (*mp >= MALLOC_MAGIC) { /* Chunk allocation */
-+
-+ /* Check the pointer for sane values */
-+ if (((u_long)ptr & ((*mp)->size-1))) {
-+ wrtwarning("realloc(): modified chunk pointer.\n");
-+ return 0;
-+ }
-+
-+ /* Find the chunk index in the page */
-+ i = ((u_long)ptr & malloc_pagemask) >> (*mp)->shift;
-+
-+ /* Verify that it isn't a free chunk already */
-+ if (tst_bit(*mp,i)) {
-+ wrtwarning("realloc(): already free chunk.\n");
-+ return 0;
-+ }
-+
-+ osize = (*mp)->size;
-+
-+ if (!malloc_realloc && /* Unless we have to, */
-+ size < osize && /* ..or are too small, */
-+ (size > osize/2 || /* ..or could use a smaller size, */
-+ osize == malloc_minsize)) { /* ..(if there is one) */
-+ return ptr; /* ..Don't do anything */
-+ }
-+
-+ } else {
-+ wrtwarning("realloc(): wrong page pointer.\n");
-+ return 0;
-+ }
-+
-+ p = malloc(size);
-+
-+ if (p) {
-+ /* copy the lesser of the two sizes, and free the old one */
-+ if (osize < size)
-+ memcpy(p,ptr,osize);
-+ else
-+ memcpy(p,ptr,size);
-+ free(ptr);
-+ }
-+ return p;
-+}
-+
-+/*
-+ * Free a sequence of pages
-+ */
-+
-+static __inline void
-+free_pages(void *ptr, int index, struct pginfo *info)
-+{
-+ int i;
-+ struct pgfree *pf,*pt=0;
-+ u_long l;
-+ void *tail;
-+
-+ if (info == MALLOC_FREE) {
-+ wrtwarning("free(): already free page.\n");
-+ return;
-+ }
-+
-+ if (info != MALLOC_FIRST) {
-+ wrtwarning("free(): freeing wrong page.\n");
-+ return;
-+ }
-+
-+ if ((u_long)ptr & malloc_pagemask) {
-+ wrtwarning("free(): modified page pointer.\n");
-+ return;
-+ }
-+
-+ /* Count how many pages and mark them free at the same time */
-+ page_dir[index] = MALLOC_FREE;
-+ for (i = 1; page_dir[index+i] == MALLOC_FOLLOW; i++)
-+ page_dir[index + i] = MALLOC_FREE;
-+
-+ l = i << malloc_pageshift;
-+
-+ tail = ptr+l;
-+
-+ /* add to free-list */
-+ if (!px)
-+ px = malloc(sizeof *pt); /* This cannot fail... */
-+ px->page = ptr;
-+ px->end = tail;
-+ px->size = l;
-+ if (!free_list.next) {
-+
-+ /* Nothing on free list, put this at head */
-+ px->next = free_list.next;
-+ px->prev = &free_list;
-+ free_list.next = px;
-+ pf = px;
-+ px = 0;
-+
-+ } else {
-+
-+ /* Find the right spot, leave pf pointing to the modified entry. */
-+ tail = ptr+l;
-+
-+ for(pf = free_list.next; pf->end < ptr && pf->next; pf = pf->next)
-+ ; /* Race ahead here */
-+
-+ if (pf->page > tail) {
-+ /* Insert before entry */
-+ px->next = pf;
-+ px->prev = pf->prev;
-+ pf->prev = px;
-+ px->prev->next = px;
-+ pf = px;
-+ px = 0;
-+ } else if (pf->end == ptr ) {
-+ /* Append to the previous entry */
-+ pf->end += l;
-+ pf->size += l;
-+ if (pf->next && pf->end == pf->next->page ) {
-+ /* And collapse the next too. */
-+ pt = pf->next;
-+ pf->end = pt->end;
-+ pf->size += pt->size;
-+ pf->next = pt->next;
-+ if (pf->next)
-+ pf->next->prev = pf;
-+ }
-+ } else if (pf->page == tail) {
-+ /* Prepend to entry */
-+ pf->size += l;
-+ pf->page = ptr;
-+ } else if (!pf->next) {
-+ /* Append at tail of chain */
-+ px->next = 0;
-+ px->prev = pf;
-+ pf->next = px;
-+ pf = px;
-+ px = 0;
-+ } else {
-+ wrterror("messed up free list");
-+ }
-+ }
-+
-+ /* Return something to OS ? */
-+ if (!pf->next && /* If we're the last one, */
-+ pf->size > malloc_cache && /* ..and the cache is full, */
-+ pf->end == malloc_brk && /* ..and none behind us, */
-+ malloc_brk == sbrk(0)) { /* ..and it's OK to do... */
-+
-+ /*
-+ * Keep the cache intact. Notice that the '>' above guarantees that
-+ * the pf will always have at least one page afterwards.
-+ */
-+ pf->end = pf->page + malloc_cache;
-+ pf->size = malloc_cache;
-+
-+ brk(pf->end);
-+ malloc_brk = pf->end;
-+
-+ index = ptr2index(pf->end);
-+ last_index = index - 1;
-+
-+ for(i=index;i <= last_index;)
-+ page_dir[i++] = MALLOC_NOT_MINE;
-+
-+ /* XXX: We could realloc/shrink the pagedir here I guess. */
-+ }
-+ if (pt)
-+ free(pt);
-+}
-+
-+/*
-+ * Free a chunk, and possibly the page it's on, if the page becomes empty.
-+ */
-+
-+static __inline void
-+free_bytes(void *ptr, int index, struct pginfo *info)
-+{
-+ int i;
-+ struct pginfo **mp;
-+ void *vp;
-+
-+ /* Find the chunk number on the page */
-+ i = ((u_long)ptr & malloc_pagemask) >> info->shift;
-+
-+ if (((u_long)ptr & (info->size-1))) {
-+ wrtwarning("free(): modified pointer.\n");
-+ return;
-+ }
-+
-+ if (tst_bit(info,i)) {
-+ wrtwarning("free(): already free chunk.\n");
-+ return;
-+ }
-+
-+ set_bit(info,i);
-+ info->free++;
-+
-+ mp = page_dir + info->shift;
-+
-+ if (info->free == 1) {
-+
-+ /* Page became non-full */
-+
-+ mp = page_dir + info->shift;
-+ /* Insert in address order */
-+ while (*mp && (*mp)->next && (*mp)->next->page < info->page)
-+ mp = &(*mp)->next;
-+ info->next = *mp;
-+ *mp = info;
-+ return;
-+ }
-+
-+ if (info->free != info->total)
-+ return;
-+
-+ /* Find & remove this page in the queue */
-+ while (*mp != info) {
-+ mp = &((*mp)->next);
-+#ifdef EXTRA_SANITY
-+ if (!*mp)
-+ wrterror("(ES): Not on queue\n");
-+#endif /* EXTRA_SANITY */
-+ }
-+ *mp = info->next;
-+
-+ /* Free the page & the info structure if need be */
-+ page_dir[ptr2index(info->page)] = MALLOC_FIRST;
-+ vp = info->page; /* Order is important ! */
-+ if(vp != (void*)info)
-+ free(info);
-+ free(vp);
-+}
-+
-+static __inline void
-+ifree(void *ptr)
-+{
-+ struct pginfo *info;
-+ int index;
-+
-+ /* This is legal */
-+ if (!ptr)
-+ return;
-+
-+ if (!initialized) {
-+ wrtwarning("free(): malloc() never got called.\n");
-+ return;
-+ }
-+
-+ /* If we're already sinking, don't make matters any worse. */
-+ if (suicide)
-+ return;
-+
-+ index = ptr2index(ptr);
-+
-+ if (index < malloc_pageshift) {
-+ wrtwarning("free(): junk pointer (too low)\n");
-+ return;
-+ }
-+
-+ if (index > last_index) {
-+ wrtwarning("free(): junk pointer (too high)\n");
-+ return;
-+ }
-+
-+ info = page_dir[index];
-+
-+ if (info < MALLOC_MAGIC)
-+ free_pages(ptr,index,info);
-+ else
-+ free_bytes(ptr,index,info);
-+ return;
-+}
-+
-+void *
-+malloc(size_t size)
-+{
-+#ifdef _THREAD_SAFE
-+ int status;
-+ register void *r;
-+ _thread_kern_sig_block(&status);
-+ r = imalloc(size);
-+ _thread_kern_sig_unblock(status);
-+ return r;
-+#else
-+ return imalloc(size);
-+#endif
-+}
-+
-+void
-+free(void *ptr)
-+{
-+#ifdef _THREAD_SAFE
-+ int status;
-+ _thread_kern_sig_block(&status);
-+ ifree(ptr);
-+ _thread_kern_sig_unblock(status);
-+#else
-+ ifree(ptr);
-+#endif
-+ return;
-+}
-+
-+void *
-+realloc(void *ptr, size_t size)
-+{
-+#ifdef _THREAD_SAFE
-+ int status;
-+ register void *r;
-+ _thread_kern_sig_block(&status);
-+ r = irealloc(ptr, size);
-+ _thread_kern_sig_unblock(status);
-+ return r;
-+#else
-+ return irealloc(ptr, size);
-+#endif
-+}
+*** Makefile.in.orig Fri Dec 5 10:44:55 1997
+--- Makefile.in Wed Dec 10 21:52:59 1997
+***************
+*** 107,113 ****
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I. -I${TCLTK_INCLUDE_DIR} ${X_INCLUDE_FLAG}
+ LDFLAGS = ${LD_OPTS}
+
+ PKGNAME = tkdesk
+--- 107,113 ----
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I. -I${TCLTK_INCLUDE_DIR}/tcl8.0 -I${TCLTK_INCLUDE_DIR}/tk8.0 ${X_INCLUDE_FLAG}
+ LDFLAGS = ${LD_OPTS}
+
+ PKGNAME = tkdesk
+*** blt/Makefile.in.orig Wed Dec 10 21:55:46 1997
+--- blt/Makefile.in Wed Dec 10 21:54:34 1997
+***************
+*** 29,35 ****
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I. -I${TCLTK_INCLUDE_DIR} ${X_INCLUDE_FLAG}
+ BLT_LIBRARY = $(LIB_DIR)
+
+ libname = libBLT.a
+--- 29,35 ----
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I. -I${TCLTK_INCLUDE_DIR}/tcl8.0 -I${TCLTK_INCLUDE_DIR}/tk8.0 ${X_INCLUDE_FLAG}
+ BLT_LIBRARY = $(LIB_DIR)
+
+ libname = libBLT.a
+*** itcl/Makefile.in.orig Fri Dec 5 10:44:56 1997
+--- itcl/Makefile.in Wed Dec 10 21:57:21 1997
+***************
+*** 26,32 ****
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I${TCLTK_INCLUDE_DIR}
+
+ libname = libitcl.a
+
+--- 26,32 ----
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I${TCLTK_INCLUDE_DIR}/tcl8.0 -I${TCLTK_INCLUDE_DIR}/tk8.0
+
+ libname = libitcl.a
+
+*** libdesk/Makefile.in.orig Fri Dec 5 10:44:56 1997
+--- libdesk/Makefile.in Wed Dec 10 21:58:10 1997
+***************
+*** 29,35 ****
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I${TCLTK_INCLUDE_DIR} ${X_INCLUDE_FLAG}
+
+ libname = libdesk.a
+
+--- 29,35 ----
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I${TCLTK_INCLUDE_DIR}/tcl8.0 -I${TCLTK_INCLUDE_DIR}/tk8.0 ${X_INCLUDE_FLAG}
+
+ libname = libdesk.a
+
+*** netscape-remote/Makefile.in.orig Fri Dec 5 10:44:56 1997
+--- netscape-remote/Makefile.in Wed Dec 10 22:00:37 1997
+***************
+*** 29,35 ****
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I${TCLTK_INCLUDE_DIR} ${X_INCLUDE_FLAG}
+
+ libname = libnetscape.a
+
+--- 29,35 ----
+ # either.
+ #----------------------------------------------------------------
+
+! CFLAGS = ${CC_OPTS} ${AC_FLAGS} -I.. -I${TCLTK_INCLUDE_DIR}/tcl8.0 -I${TCLTK_INCLUDE_DIR}/tk8.0 ${X_INCLUDE_FLAG}
+
+ libname = libnetscape.a
+
diff --git a/x11-fm/tkdesk/pkg-plist b/x11-fm/tkdesk/pkg-plist
index cd654d691b48..eef1d080ede5 100644
--- a/x11-fm/tkdesk/pkg-plist
+++ b/x11-fm/tkdesk/pkg-plist
@@ -1,58 +1,37 @@
-bin/tkdesksh
-bin/tkdesk
-bin/pauseme
-bin/ed-tkdesk
bin/cd-tkdesk
+bin/ed-tkdesk
bin/od-tkdesk
-bin/dddcore
-bin/gdbcore
+bin/pauseme
+bin/tkdesk
+bin/tkdeskclient
+bin/tkdesksh
lib/TkDesk/Common.tcl
lib/TkDesk/Desktop.tcl
+lib/TkDesk/DiskUsage.tcl
lib/TkDesk/Editor.tcl
+lib/TkDesk/FileInfo.tcl
lib/TkDesk/FileListbox.tcl
+lib/TkDesk/HistEntry.tcl
lib/TkDesk/List.tcl
+lib/TkDesk/Periodic.tcl
lib/TkDesk/Viewer.tcl
lib/TkDesk/action.tcl
+lib/TkDesk/annotations.tcl
+lib/TkDesk/appbar-date.tcl
+lib/TkDesk/appbar-dialup.tcl
+lib/TkDesk/appbar-load.tcl
+lib/TkDesk/appbar-mail.tcl
+lib/TkDesk/appbar-trash.tcl
lib/TkDesk/appbar.tcl
-lib/TkDesk/config.tcl
-lib/TkDesk/dd-file.tcl
-lib/TkDesk/dd-text.tcl
-lib/TkDesk/dsk_Listbox.tcl
-lib/TkDesk/file_ops.tcl
-lib/TkDesk/find.tcl
-lib/TkDesk/help.tcl
-lib/TkDesk/itcl_reload.tcl
-lib/TkDesk/misc_classes.tcl
-lib/TkDesk/tkpatches.tcl
-lib/TkDesk/update.tcl
-lib/TkDesk/util.tcl
-lib/TkDesk/about/blank.xbm.gz
-lib/TkDesk/about/tkdesk-1.xbm.gz
-lib/TkDesk/about/tkdesk-10.xbm.gz
-lib/TkDesk/about/tkdesk-2.xbm.gz
-lib/TkDesk/about/tkdesk-3.xbm.gz
-lib/TkDesk/about/tkdesk-4.xbm.gz
-lib/TkDesk/about/tkdesk-5.xbm.gz
-lib/TkDesk/about/tkdesk-6.xbm.gz
-lib/TkDesk/about/tkdesk-7.xbm.gz
-lib/TkDesk/about/tkdesk-8.xbm.gz
-lib/TkDesk/about/tkdesk-9.xbm.gz
+lib/TkDesk/bookmarks.tcl
lib/TkDesk/cb_tools/bindings.tcl
-lib/TkDesk/cb_tools/debug.tcl
-lib/TkDesk/cb_tools/dialog.tcl
-lib/TkDesk/cb_tools/help.tcl
-lib/TkDesk/cb_tools/itcl_reload.tcl
-lib/TkDesk/cb_tools/modules.tcl
-lib/TkDesk/cb_tools/popup.tcl
-lib/TkDesk/cb_tools/tclIndex
-lib/TkDesk/cb_tools/tools.tcl
-lib/TkDesk/cb_tools/widgets.tcl
lib/TkDesk/cb_tools/bitmaps/combo.xbm
lib/TkDesk/cb_tools/bitmaps/down.xbm
+lib/TkDesk/cb_tools/bitmaps/erase.xbm
lib/TkDesk/cb_tools/bitmaps/help.xbm
lib/TkDesk/cb_tools/bitmaps/slash.xbm
-lib/TkDesk/cb_tools/bitmaps/timer.xbm
lib/TkDesk/cb_tools/bitmaps/timer.mask.xbm
+lib/TkDesk/cb_tools/bitmaps/timer.xbm
lib/TkDesk/cb_tools/bitmaps/timer1.xbm
lib/TkDesk/cb_tools/bitmaps/timer2.xbm
lib/TkDesk/cb_tools/bitmaps/timer3.xbm
@@ -62,7 +41,24 @@ lib/TkDesk/cb_tools/bitmaps/timer6.xbm
lib/TkDesk/cb_tools/bitmaps/timer7.xbm
lib/TkDesk/cb_tools/bitmaps/timer8.xbm
lib/TkDesk/cb_tools/bitmaps/up.xbm
+lib/TkDesk/cb_tools/debug.tcl
+lib/TkDesk/cb_tools/dialog.tcl
+lib/TkDesk/cb_tools/help.tcl
+lib/TkDesk/cb_tools/itcl_reload.tcl
+lib/TkDesk/cb_tools/mkindex
+lib/TkDesk/cb_tools/modules.tcl
+lib/TkDesk/cb_tools/popup.tcl
+lib/TkDesk/cb_tools/tclIndex
+lib/TkDesk/cb_tools/tools.tcl
+lib/TkDesk/cb_tools/widgets.tcl
+lib/TkDesk/clrpick.tcl
+lib/TkDesk/config.tcl
lib/TkDesk/configs/AppBar
+lib/TkDesk/configs/AppBar_Be
+lib/TkDesk/configs/AppBar_Be~
+lib/TkDesk/configs/AppBar_Games
+lib/TkDesk/configs/AppBar_Games~
+lib/TkDesk/configs/AppBar~
lib/TkDesk/configs/ButtonBar
lib/TkDesk/configs/Commands
lib/TkDesk/configs/Directories
@@ -70,9 +66,18 @@ lib/TkDesk/configs/FileTags
lib/TkDesk/configs/Popups
lib/TkDesk/configs/Sounds
lib/TkDesk/configs/System
+@exec mkdir %B/.trash
+@exec chmod 755 %B/.trash
+lib/TkDesk/copy.tcl
+lib/TkDesk/cpanels.tcl
+lib/TkDesk/dd-file.tcl
+lib/TkDesk/dd-text.tcl
+lib/TkDesk/delete.tcl
+lib/TkDesk/diary.tcl
lib/TkDesk/doc/CHANGES
lib/TkDesk/doc/Guide
lib/TkDesk/doc/License
+lib/TkDesk/doc/QuickStart
lib/TkDesk/doc/guide-1.html
lib/TkDesk/doc/guide-2.html
lib/TkDesk/doc/guide-3.html
@@ -83,172 +88,89 @@ lib/TkDesk/doc/guide-7.html
lib/TkDesk/doc/guide-8.html
lib/TkDesk/doc/guide-9.html
lib/TkDesk/doc/guide.html
+lib/TkDesk/dsk_Listbox.tcl
+lib/TkDesk/file_ops.tcl
+lib/TkDesk/find.tcl
+lib/TkDesk/help.tcl
+lib/TkDesk/history.tcl
lib/TkDesk/images/aladins_lamp.xpm
-lib/TkDesk/images/apple_draft.xbm
-lib/TkDesk/images/apple_write.xbm
-lib/TkDesk/images/atom.xpm
lib/TkDesk/images/arrleft.xpm
lib/TkDesk/images/arrright.xpm
-lib/TkDesk/images/audio.xbm
-lib/TkDesk/images/bigfiling.xbm
+lib/TkDesk/images/atom.xpm
+lib/TkDesk/images/be/achtung.xpm
+lib/TkDesk/images/be/app_link.xpm
+lib/TkDesk/images/be/bebox.xpm
+lib/TkDesk/images/be/bebox2.xpm
+lib/TkDesk/images/be/bettler.xpm
+lib/TkDesk/images/be/bildschirm1.xpm
+lib/TkDesk/images/be/blocks.xpm
+lib/TkDesk/images/be/briefkasten.xpm
+lib/TkDesk/images/be/bulb.xpm
+lib/TkDesk/images/be/cdplayer.xpm
+lib/TkDesk/images/be/domino.xpm
+lib/TkDesk/images/be/edit.xpm
+lib/TkDesk/images/be/email.xpm
+lib/TkDesk/images/be/fernbedienung.xpm
+lib/TkDesk/images/be/flieger.xpm
+lib/TkDesk/images/be/folder.xpm
+lib/TkDesk/images/be/font.xpm
+lib/TkDesk/images/be/fraktal.xpm
+lib/TkDesk/images/be/grammophon.xpm
+lib/TkDesk/images/be/hardware.xpm
+lib/TkDesk/images/be/info.xpm
+lib/TkDesk/images/be/install.xpm
+lib/TkDesk/images/be/kaleidoskop.xpm
+lib/TkDesk/images/be/kartei.xpm
+lib/TkDesk/images/be/kiste.xpm
+lib/TkDesk/images/be/leute.xpm
+lib/TkDesk/images/be/lib_link.xpm
+lib/TkDesk/images/be/lupe.xpm
+lib/TkDesk/images/be/maennchen.xpm
+lib/TkDesk/images/be/mailbox.xpm
+lib/TkDesk/images/be/mine.xpm
+lib/TkDesk/images/be/mischpult.xpm
+lib/TkDesk/images/be/netsurf.xpm
+lib/TkDesk/images/be/netzwerk.xpm
+lib/TkDesk/images/be/ordner.xpm
+lib/TkDesk/images/be/ordner_link.xpm
+lib/TkDesk/images/be/oszi.xpm
+lib/TkDesk/images/be/paint.xpm
+lib/TkDesk/images/be/papierkorb.xpm
+lib/TkDesk/images/be/printer.xpm
+lib/TkDesk/images/be/rakete.xpm
+lib/TkDesk/images/be/schrank.xpm
+lib/TkDesk/images/be/schreibtisch.xpm
+lib/TkDesk/images/be/scsi.xpm
+lib/TkDesk/images/be/terminal.xpm
+lib/TkDesk/images/be/text.xpm
+lib/TkDesk/images/be/text2.xpm
+lib/TkDesk/images/be/text_leer.xpm
+lib/TkDesk/images/be/uhr.xpm
+lib/TkDesk/images/be/world.xpm
+lib/TkDesk/images/be/wuerfel.xpm
+lib/TkDesk/images/be/zahnrad.xpm
+lib/TkDesk/images/be/zahnrad2.xpm
+lib/TkDesk/images/be/zeichner.xpm
lib/TkDesk/images/bigfiling.xpm
-lib/TkDesk/images/bomb.xbm
-lib/TkDesk/images/book.xbm
lib/TkDesk/images/book_edit.xpm
lib/TkDesk/images/book_open.xpm
lib/TkDesk/images/bookcase.xpm
-lib/TkDesk/images/books.xbm
lib/TkDesk/images/box_full.xpm
-lib/TkDesk/images/calc.xbm
-lib/TkDesk/images/calendar.xbm
lib/TkDesk/images/calendar.xpm
lib/TkDesk/images/cdrom.xpm
-lib/TkDesk/images/check_list.xbm
lib/TkDesk/images/checklist.xpm
lib/TkDesk/images/chess.xpm
-lib/TkDesk/images/clock.xbm
lib/TkDesk/images/comet.xpm
lib/TkDesk/images/construction.xpm
-lib/TkDesk/images/copy.xbm
lib/TkDesk/images/copy.xpm
-lib/TkDesk/images/copy2.xbm
lib/TkDesk/images/copy2.xpm
-lib/TkDesk/images/cup.xbm
lib/TkDesk/images/desk.xpm
-lib/TkDesk/images/dice.xbm
-lib/TkDesk/images/dir.xbm
lib/TkDesk/images/document.xpm
-lib/TkDesk/images/documents.xbm
-lib/TkDesk/images/door_open.xbm
lib/TkDesk/images/door_run.xpm
-lib/TkDesk/images/drag_files.xbm
-lib/TkDesk/images/draw.xbm
-lib/TkDesk/images/earth.xbm
lib/TkDesk/images/earth.xpm
lib/TkDesk/images/earth2.xpm
-lib/TkDesk/images/edit.xbm
lib/TkDesk/images/edit.xpm
-lib/TkDesk/images/exclaimation_dot.xbm
-lib/TkDesk/images/exec.xbm
-lib/TkDesk/images/eye.xbm
lib/TkDesk/images/eye.xpm
-lib/TkDesk/images/file.xbm
-lib/TkDesk/images/file_dir.xbm
-lib/TkDesk/images/file_dir.xpm
-lib/TkDesk/images/file_doc.xbm
-lib/TkDesk/images/file_doc.xpm
-lib/TkDesk/images/filing.xpm
-lib/TkDesk/images/filing_open.xbm
-lib/TkDesk/images/filing_shut.xbm
-lib/TkDesk/images/film.xbm
-lib/TkDesk/images/floppy.xbm
-lib/TkDesk/images/floppy.xpm
-lib/TkDesk/images/flow_chart.xbm
-lib/TkDesk/images/folder.xpm
-lib/TkDesk/images/folder2.xbm
-lib/TkDesk/images/folder2.xpm
-lib/TkDesk/images/games.xbm
-lib/TkDesk/images/gnuplot.xbm
-lib/TkDesk/images/hand+.xbm
-lib/TkDesk/images/hand+.xpm
-lib/TkDesk/images/hand.mask.xbm
-lib/TkDesk/images/hand.mask.xpm
-lib/TkDesk/images/hand.xbm
-lib/TkDesk/images/hand.xpm
-lib/TkDesk/images/help.xbm
-lib/TkDesk/images/help.xpm
-lib/TkDesk/images/home.xbm
-lib/TkDesk/images/home.xpm
-lib/TkDesk/images/info.xbm
-lib/TkDesk/images/info.xpm
-lib/TkDesk/images/info2.xbm
-lib/TkDesk/images/info2.xpm
-lib/TkDesk/images/kiste.xbm
-lib/TkDesk/images/laserwriter2.xbm
-lib/TkDesk/images/laserwriter2.xpm
-lib/TkDesk/images/letter.xbm
-lib/TkDesk/images/library3.xbm
-lib/TkDesk/images/lightning.xbm
-lib/TkDesk/images/lightning.xpm
-lib/TkDesk/images/lock.xbm
-lib/TkDesk/images/lock.xpm
-lib/TkDesk/images/mac.xbm
-lib/TkDesk/images/mac.xpm
-lib/TkDesk/images/macintosh.xbm
-lib/TkDesk/images/magnify.xpm
-lib/TkDesk/images/magnify2.xbm
-lib/TkDesk/images/magnify2.xpm
-lib/TkDesk/images/magnify_hand.xbm
-lib/TkDesk/images/mail.xbm
-lib/TkDesk/images/mail_edit.xpm
-lib/TkDesk/images/mailbox_empty.xpm
-lib/TkDesk/images/mailbox_full.xpm
-lib/TkDesk/images/mailbox_old.xpm
-lib/TkDesk/images/man.xpm
-lib/TkDesk/images/moon.xbm
-lib/TkDesk/images/moon.xpm
-lib/TkDesk/images/mosaic.xpm
-lib/TkDesk/images/move.xbm
-lib/TkDesk/images/move.xpm
-lib/TkDesk/images/netscape.xpm
-lib/TkDesk/images/navigator.xpm
-lib/TkDesk/images/network.xbm
-lib/TkDesk/images/news.xbm
-lib/TkDesk/images/note.xbm
-lib/TkDesk/images/orbit.xpm
-lib/TkDesk/images/pacman.xpm
-lib/TkDesk/images/paint.xbm
-lib/TkDesk/images/paint.xpm
-lib/TkDesk/images/paint2.xbm
-lib/TkDesk/images/pen.xbm
-lib/TkDesk/images/pen.xpm
-lib/TkDesk/images/pencil3.xbm
-lib/TkDesk/images/pencil3.xpm
-lib/TkDesk/images/picture.xbm
-lib/TkDesk/images/postit.xbm
-lib/TkDesk/images/printer.xpm
-lib/TkDesk/images/printer16.xbm
-lib/TkDesk/images/printer16.xpm
-lib/TkDesk/images/prism.xpm
-lib/TkDesk/images/question.xbm
-lib/TkDesk/images/question.xpm
-lib/TkDesk/images/question_dot.xbm
-lib/TkDesk/images/radar.xbm
-lib/TkDesk/images/radar.xpm
-lib/TkDesk/images/read.xbm
-lib/TkDesk/images/recycle.xpm
-lib/TkDesk/images/rocket.xbm
-lib/TkDesk/images/shell.xbm
-lib/TkDesk/images/shell.xpm
-lib/TkDesk/images/sign_exit.xbm
-lib/TkDesk/images/source.xbm
-lib/TkDesk/images/stars.xpm
-lib/TkDesk/images/streamer_drive.xbm
-lib/TkDesk/images/system.xbm
-lib/TkDesk/images/term.xbm
-lib/TkDesk/images/terminal.xbm
-lib/TkDesk/images/terminal.xpm
-lib/TkDesk/images/tetris.xpm
-lib/TkDesk/images/text.xbm
-lib/TkDesk/images/tool.xbm
-lib/TkDesk/images/tools.xbm
-lib/TkDesk/images/tools.xpm
-lib/TkDesk/images/trash.xbm
-lib/TkDesk/images/trash.xpm
-lib/TkDesk/images/trashcan.xbm
-lib/TkDesk/images/trashcan.xpm
-lib/TkDesk/images/trashcan_full.xbm
-lib/TkDesk/images/trashcan_full.xpm
-lib/TkDesk/images/up.xpm
-lib/TkDesk/images/wichtig.xbm
-lib/TkDesk/images/write.xbm
-lib/TkDesk/images/xchess.xbm
-lib/TkDesk/images/xlogo.xbm
-lib/TkDesk/images/xlogo16.xbm
-lib/TkDesk/images/xlogo16.xpm
-lib/TkDesk/images/xterm.xbm
-lib/TkDesk/images/xterm.xpm
-lib/TkDesk/images/xterm32.xpm
lib/TkDesk/images/ficons16/archive.xpm
lib/TkDesk/images/ficons16/backup.xpm
lib/TkDesk/images/ficons16/book.xpm
@@ -270,6 +192,7 @@ lib/TkDesk/images/ficons16/gif2.xpm
lib/TkDesk/images/ficons16/h.xpm
lib/TkDesk/images/ficons16/html.xpm
lib/TkDesk/images/ficons16/image.xpm
+lib/TkDesk/images/ficons16/mini-comet.xpm
lib/TkDesk/images/ficons16/music.xpm
lib/TkDesk/images/ficons16/parcel.xpm
lib/TkDesk/images/ficons16/prism.xpm
@@ -291,7 +214,7 @@ lib/TkDesk/images/ficons16/video.xpm
lib/TkDesk/images/ficons16/write.xpm
lib/TkDesk/images/ficons16/xbm.xpm
lib/TkDesk/images/ficons16/xpm.xpm
-lib/TkDesk/images/ficons32/xpm.xpm
+lib/TkDesk/images/ficons32/binary.xpm
lib/TkDesk/images/ficons32/bracket.xpm
lib/TkDesk/images/ficons32/compressed.xpm
lib/TkDesk/images/ficons32/dir.xpm
@@ -315,8 +238,79 @@ lib/TkDesk/images/ficons32/tar.xpm
lib/TkDesk/images/ficons32/tex.xpm
lib/TkDesk/images/ficons32/text.xpm
lib/TkDesk/images/ficons32/xbm.xpm
-lib/TkDesk/images/ficons32/binary.xpm
-lib/TkDesk/images/next/wrench.xpm
+lib/TkDesk/images/ficons32/xpm.xpm
+lib/TkDesk/images/file_dir.xpm
+lib/TkDesk/images/file_doc.xpm
+lib/TkDesk/images/filing.xpm
+lib/TkDesk/images/floppy.xpm
+lib/TkDesk/images/folder.xpm
+lib/TkDesk/images/folder2.xpm
+lib/TkDesk/images/hand+.xpm
+lib/TkDesk/images/hand.mask.xpm
+lib/TkDesk/images/hand.xpm
+lib/TkDesk/images/help.xpm
+lib/TkDesk/images/home.xpm
+lib/TkDesk/images/info.xpm
+lib/TkDesk/images/info2.xpm
+lib/TkDesk/images/laserwriter2.xpm
+lib/TkDesk/images/lightning.xpm
+lib/TkDesk/images/lock.xpm
+lib/TkDesk/images/mac.xpm
+lib/TkDesk/images/magnify.xpm
+lib/TkDesk/images/magnify2.xpm
+lib/TkDesk/images/mail_edit.xpm
+lib/TkDesk/images/mailbox_empty.xpm
+lib/TkDesk/images/mailbox_full.xpm
+lib/TkDesk/images/mailbox_old.xpm
+lib/TkDesk/images/man.xpm
+lib/TkDesk/images/moon.xpm
+lib/TkDesk/images/mosaic.xpm
+lib/TkDesk/images/move.xpm
+lib/TkDesk/images/navigator.xpm
+lib/TkDesk/images/netscape.xpm
+lib/TkDesk/images/news.xpm
+lib/TkDesk/images/next/3D.xpm
+lib/TkDesk/images/next/BallotBox.xpm
+lib/TkDesk/images/next/Beer.xpm
+lib/TkDesk/images/next/BookOpen.xpm
+lib/TkDesk/images/next/C-Devel.xpm
+lib/TkDesk/images/next/Camera2.xpm
+lib/TkDesk/images/next/Chess.xpm
+lib/TkDesk/images/next/Computer.xpm
+lib/TkDesk/images/next/ComputerPC.xpm
+lib/TkDesk/images/next/DarkForest.xpm
+lib/TkDesk/images/next/DiskFloppy.xpm
+lib/TkDesk/images/next/Draw.xpm
+lib/TkDesk/images/next/Equation.xpm
+lib/TkDesk/images/next/Files.xpm
+lib/TkDesk/images/next/Finder.xpm
+lib/TkDesk/images/next/Ghost.xpm
+lib/TkDesk/images/next/Home.xpm
+lib/TkDesk/images/next/HomeOpen.xpm
+lib/TkDesk/images/next/Info.xpm
+lib/TkDesk/images/next/Java.xpm
+lib/TkDesk/images/next/KeyPower.xpm
+lib/TkDesk/images/next/MailOpen.xpm
+lib/TkDesk/images/next/Netsurfer.xpm
+lib/TkDesk/images/next/Network.xpm
+lib/TkDesk/images/next/NewspaperExtra.xpm
+lib/TkDesk/images/next/PDFOmni.xpm
+lib/TkDesk/images/next/PadlockAndKeys.xpm
+lib/TkDesk/images/next/Penguin.xpm
+lib/TkDesk/images/next/PhoneTT.xpm
+lib/TkDesk/images/next/PhoneTTOffhook.xpm
+lib/TkDesk/images/next/PrinterHP.xpm
+lib/TkDesk/images/next/Rolodex.xpm
+lib/TkDesk/images/next/SoundEdit.xpm
+lib/TkDesk/images/next/TeXView.xpm
+lib/TkDesk/images/next/Time.xpm
+lib/TkDesk/images/next/TrueDie.xpm
+lib/TkDesk/images/next/WWW.xpm
+lib/TkDesk/images/next/Window.xpm
+lib/TkDesk/images/next/World.xpm
+lib/TkDesk/images/next/Write.xpm
+lib/TkDesk/images/next/WriteMail.xpm
+lib/TkDesk/images/next/adder.xpm
lib/TkDesk/images/next/bag.xpm
lib/TkDesk/images/next/bag_full.xpm
lib/TkDesk/images/next/bargraph.xpm
@@ -334,6 +328,9 @@ lib/TkDesk/images/next/circle_step.xpm
lib/TkDesk/images/next/clock.xpm
lib/TkDesk/images/next/close_window.xpm
lib/TkDesk/images/next/comet.xpm
+lib/TkDesk/images/next/comm-newmail.xpm
+lib/TkDesk/images/next/comm-oldmail.xpm
+lib/TkDesk/images/next/communicator.xpm
lib/TkDesk/images/next/crash.xpm
lib/TkDesk/images/next/dialog.xpm
lib/TkDesk/images/next/diskbox.xpm
@@ -360,13 +357,12 @@ lib/TkDesk/images/next/mail_letter.xpm
lib/TkDesk/images/next/mask_clouds.xpm
lib/TkDesk/images/next/microphone.xpm
lib/TkDesk/images/next/monalisa.xpm
-lib/TkDesk/images/next/sql.xpm
lib/TkDesk/images/next/monitor.xpm
lib/TkDesk/images/next/monitor_eye.xpm
lib/TkDesk/images/next/monitor_hp.xpm
-lib/TkDesk/images/next/nest.xpm
lib/TkDesk/images/next/monitor_sun.xpm
lib/TkDesk/images/next/monitor_win.xpm
+lib/TkDesk/images/next/nest.xpm
lib/TkDesk/images/next/netscape.xpm
lib/TkDesk/images/next/note.xpm
lib/TkDesk/images/next/novell.xpm
@@ -385,6 +381,7 @@ lib/TkDesk/images/next/screwdriver.xpm
lib/TkDesk/images/next/sealed_document.xpm
lib/TkDesk/images/next/shell.xpm
lib/TkDesk/images/next/spheresd.xpm
+lib/TkDesk/images/next/sql.xpm
lib/TkDesk/images/next/tape.xpm
lib/TkDesk/images/next/toaster.xpm
lib/TkDesk/images/next/toaster_full.xpm
@@ -392,7 +389,128 @@ lib/TkDesk/images/next/widgets.xpm
lib/TkDesk/images/next/win_comp.xpm
lib/TkDesk/images/next/win_net.xpm
lib/TkDesk/images/next/wizard.xpm
-lib/TkDesk/images/next/adder.xpm
+lib/TkDesk/images/next/wrench.xpm
+lib/TkDesk/images/orbit.xpm
+lib/TkDesk/images/pacman.xpm
+lib/TkDesk/images/paint.xpm
+lib/TkDesk/images/pen.xpm
+lib/TkDesk/images/pencil3.xpm
+lib/TkDesk/images/printer.xpm
+lib/TkDesk/images/printer16.xpm
+lib/TkDesk/images/prism.xpm
+lib/TkDesk/images/question.xpm
+lib/TkDesk/images/radar.xpm
+lib/TkDesk/images/recycle.xpm
+lib/TkDesk/images/shell.xpm
+lib/TkDesk/images/stars.xpm
+lib/TkDesk/images/terminal.xpm
+lib/TkDesk/images/tetris.xpm
+lib/TkDesk/images/tools.xpm
+lib/TkDesk/images/trash.xpm
+lib/TkDesk/images/trashcan.xpm
+lib/TkDesk/images/trashcan_full.xpm
+lib/TkDesk/images/up.xpm
+lib/TkDesk/images/xbm/apple_draft.xbm
+lib/TkDesk/images/xbm/apple_write.xbm
+lib/TkDesk/images/xbm/audio.xbm
+lib/TkDesk/images/xbm/bigfiling.xbm
+lib/TkDesk/images/xbm/bomb.xbm
+lib/TkDesk/images/xbm/book.xbm
+lib/TkDesk/images/xbm/books.xbm
+lib/TkDesk/images/xbm/calc.xbm
+lib/TkDesk/images/xbm/calendar.xbm
+lib/TkDesk/images/xbm/check_list.xbm
+lib/TkDesk/images/xbm/clock.xbm
+lib/TkDesk/images/xbm/copy.xbm
+lib/TkDesk/images/xbm/copy2.xbm
+lib/TkDesk/images/xbm/cup.xbm
+lib/TkDesk/images/xbm/dice.xbm
+lib/TkDesk/images/xbm/dir.xbm
+lib/TkDesk/images/xbm/documents.xbm
+lib/TkDesk/images/xbm/door_open.xbm
+lib/TkDesk/images/xbm/drag_files.xbm
+lib/TkDesk/images/xbm/draw.xbm
+lib/TkDesk/images/xbm/earth.xbm
+lib/TkDesk/images/xbm/edit.xbm
+lib/TkDesk/images/xbm/exclaimation_dot.xbm
+lib/TkDesk/images/xbm/exec.xbm
+lib/TkDesk/images/xbm/eye.xbm
+lib/TkDesk/images/xbm/file.xbm
+lib/TkDesk/images/xbm/file_dir.xbm
+lib/TkDesk/images/xbm/file_doc.xbm
+lib/TkDesk/images/xbm/filing_open.xbm
+lib/TkDesk/images/xbm/filing_shut.xbm
+lib/TkDesk/images/xbm/film.xbm
+lib/TkDesk/images/xbm/floppy.xbm
+lib/TkDesk/images/xbm/flow_chart.xbm
+lib/TkDesk/images/xbm/folder2.xbm
+lib/TkDesk/images/xbm/games.xbm
+lib/TkDesk/images/xbm/gnuplot.xbm
+lib/TkDesk/images/xbm/hand+.xbm
+lib/TkDesk/images/xbm/hand.mask.xbm
+lib/TkDesk/images/xbm/hand.xbm
+lib/TkDesk/images/xbm/help.xbm
+lib/TkDesk/images/xbm/home.xbm
+lib/TkDesk/images/xbm/info.xbm
+lib/TkDesk/images/xbm/info2.xbm
+lib/TkDesk/images/xbm/kiste.xbm
+lib/TkDesk/images/xbm/laserwriter2.xbm
+lib/TkDesk/images/xbm/letter.xbm
+lib/TkDesk/images/xbm/library3.xbm
+lib/TkDesk/images/xbm/lightning.xbm
+lib/TkDesk/images/xbm/lock.xbm
+lib/TkDesk/images/xbm/mac.xbm
+lib/TkDesk/images/xbm/macintosh.xbm
+lib/TkDesk/images/xbm/magnify2.xbm
+lib/TkDesk/images/xbm/magnify_hand.xbm
+lib/TkDesk/images/xbm/mail.xbm
+lib/TkDesk/images/xbm/moon.xbm
+lib/TkDesk/images/xbm/move.xbm
+lib/TkDesk/images/xbm/network.xbm
+lib/TkDesk/images/xbm/news.xbm
+lib/TkDesk/images/xbm/note.xbm
+lib/TkDesk/images/xbm/paint.xbm
+lib/TkDesk/images/xbm/paint2.xbm
+lib/TkDesk/images/xbm/pen.xbm
+lib/TkDesk/images/xbm/pencil3.xbm
+lib/TkDesk/images/xbm/picture.xbm
+lib/TkDesk/images/xbm/postit.xbm
+lib/TkDesk/images/xbm/printer16.xbm
+lib/TkDesk/images/xbm/question.xbm
+lib/TkDesk/images/xbm/question_dot.xbm
+lib/TkDesk/images/xbm/radar.xbm
+lib/TkDesk/images/xbm/read.xbm
+lib/TkDesk/images/xbm/rocket.xbm
+lib/TkDesk/images/xbm/shell.xbm
+lib/TkDesk/images/xbm/sign_exit.xbm
+lib/TkDesk/images/xbm/source.xbm
+lib/TkDesk/images/xbm/streamer_drive.xbm
+lib/TkDesk/images/xbm/system.xbm
+lib/TkDesk/images/xbm/term.xbm
+lib/TkDesk/images/xbm/terminal.xbm
+lib/TkDesk/images/xbm/text.xbm
+lib/TkDesk/images/xbm/tool.xbm
+lib/TkDesk/images/xbm/tools.xbm
+lib/TkDesk/images/xbm/trash.xbm
+lib/TkDesk/images/xbm/trashcan.xbm
+lib/TkDesk/images/xbm/trashcan_full.xbm
+lib/TkDesk/images/xbm/wichtig.xbm
+lib/TkDesk/images/xbm/write.xbm
+lib/TkDesk/images/xbm/xchess.xbm
+lib/TkDesk/images/xbm/xlogo.xbm
+lib/TkDesk/images/xbm/xlogo16.xbm
+lib/TkDesk/images/xbm/xterm.xbm
+lib/TkDesk/images/xemacs.xpm
+lib/TkDesk/images/xlogo16.xpm
+lib/TkDesk/images/xterm.xpm
+lib/TkDesk/images/xterm32.xpm
+lib/TkDesk/itcl_reload.tcl
+lib/TkDesk/jdb_rcs.tcl
+lib/TkDesk/jobs.tcl
+lib/TkDesk/mkindex
+lib/TkDesk/popup.tcl
+lib/TkDesk/server.tcl
+lib/TkDesk/sound.tcl
lib/TkDesk/sounds/door_open.au
lib/TkDesk/sounds/door_shut.au
lib/TkDesk/sounds/halt.au
@@ -401,3 +519,59 @@ lib/TkDesk/sounds/metal.au
lib/TkDesk/sounds/newmail.au
lib/TkDesk/sounds/robot_dead.au
lib/TkDesk/sounds/start.au
+lib/TkDesk/tclIndex
+lib/TkDesk/tcl_lib/Version
+lib/TkDesk/tcl_lib/Version~
+lib/TkDesk/tcl_lib/init.tcl
+lib/TkDesk/tcl_lib/ldAout.tcl
+lib/TkDesk/tcl_lib/parray.tcl
+lib/TkDesk/tcl_lib/tclIndex
+lib/TkDesk/tk_lib/bgerror.tcl
+lib/TkDesk/tk_lib/button.tcl
+lib/TkDesk/tk_lib/clrpick.tcl
+lib/TkDesk/tk_lib/comdlg.tcl
+lib/TkDesk/tk_lib/console.tcl
+lib/TkDesk/tk_lib/dialog.tcl
+lib/TkDesk/tk_lib/entry.tcl
+lib/TkDesk/tk_lib/focus.tcl
+lib/TkDesk/tk_lib/folder.gif
+lib/TkDesk/tk_lib/listbox.tcl
+lib/TkDesk/tk_lib/menu.tcl
+lib/TkDesk/tk_lib/msgbox.tcl
+lib/TkDesk/tk_lib/obsolete.tcl
+lib/TkDesk/tk_lib/optMenu.tcl
+lib/TkDesk/tk_lib/palette.tcl
+lib/TkDesk/tk_lib/prolog.ps
+lib/TkDesk/tk_lib/scale.tcl
+lib/TkDesk/tk_lib/scrlbar.tcl
+lib/TkDesk/tk_lib/tclIndex
+lib/TkDesk/tk_lib/tearoff.tcl
+lib/TkDesk/tk_lib/text.tcl
+lib/TkDesk/tk_lib/textfile.gif
+lib/TkDesk/tk_lib/tk.tcl
+lib/TkDesk/tk_lib/tkAppInit.c
+lib/TkDesk/tk_lib/tkfbox.tcl
+lib/TkDesk/tk_lib/updir.xbm
+lib/TkDesk/tk_lib/xmfbox.tcl
+lib/TkDesk/tkpatches.tcl
+lib/TkDesk/update.tcl
+lib/TkDesk/util.tcl
+man/man1/cd-tkdesk.1.gz
+man/man1/ed-tkdesk.1.gz
+man/man1/od-tkdesk.1.gz
+man/man1/tkdesk.1.gz
+@dirrm lib/TkDesk/cb_tools/bitmaps
+@dirrm lib/TkDesk/cb_tools
+@dirrm lib/TkDesk/configs/.trash
+@dirrm lib/TkDesk/configs
+@dirrm lib/TkDesk/doc
+@dirrm lib/TkDesk/images/be
+@dirrm lib/TkDesk/images/ficons16
+@dirrm lib/TkDesk/images/ficons32
+@dirrm lib/TkDesk/images/next
+@dirrm lib/TkDesk/images/xbm
+@dirrm lib/TkDesk/images
+@dirrm lib/TkDesk/sounds
+@dirrm lib/TkDesk/tcl_lib
+@dirrm lib/TkDesk/tk_lib
+@dirrm lib/TkDesk