Commits

cvs2hg  committed cc16eff

fixup commit for tag 'start'

  • Participants
  • Parent commits 1fd30c9
  • Tags start

Comments (0)

Files changed (74)

File .cvsignore

-xemacs-21.2
-xemacs-packages
-mule-packages

File BuildXEmacs.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur  <steve@xemacs.org>
-# December, 1998
-# This file is an unofficial part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-setopt extendedglob
-set -e
-
-# Where is CVS?
-# export CVSROOT=/usr/local/xemacs # Change to /usr/CVSroot
-#export CVSROOT=/usr/CVSroot
-export CVSROOT=:ext:xemacs@cvs.xemacs.org:/pack/xemacscvs
-# Where is a functional mailer?
-#export smtpserver=fs.m17n.org
-export smtpserver=localhost
-
-if [ $# != 2 ]; then
-	echo "Usage: $0: previous next"
-	exit 1
-fi
-
-export previous=$1
-
-export STAGING=$(pwd)
-export MAJOR=$(echo $2 | cut -d'.' -f1)
-export MINOR=$(echo $2 | cut -d'.' -f2)
-export BUILD=$(echo $2 | cut -d'.' -f3)
-export BUILDDIR=xemacs-${MAJOR}.${MINOR}
-
-# Force english output for sanity
-export LANG=C
-if [ "$LC_MESSAGES" ]; then
-	unset LC_MESSAGES
-fi
-
-# Get a fresh copy of the sources, force reload from CVS
-./CleanDist.zsh ${MAJOR} ${MINOR} t
-
-# Bump the version number
-./IncVers.zsh ${MAJOR} ${MINOR} ${BUILD}
-
-# Link extra packages if needed
-# ./LinkPackages.zsh ${BUILDDIR}
-
-# Build XEmacs and configure it first
-./MakeXEmacs.zsh ${BUILDDIR} t nil
-
-if [ ! -x ${BUILDDIR}/src/xemacs ]; then
-	echo "Error: XEmacs binary failed to build"
-	exit 1
-fi
-
-# Update package binaries
-# ./UpdatePackages.zsh ${BUILDDIR}/src/xemacs
-
-# Redump XEmacs and build the rest of the .elcs and texinfo
-rm -f ${BUILDDIR}/src/xemacs
-./MakeXEmacs.zsh ${BUILDDIR} nil t
-
-# Mail -s "Distribution Build Report for XEmacs-${MAJOR}.${MINOR}.${BUILD}" xemacs-beta@xemacs.org <<EOF
-# Greetings XEmacs beta testers.  I am in the process of building the next
-# distribution of XEmacs ${MAJOR}.${MINOR}.  I have tested the attached
-# configuration.
-
-# Sincerely,
-# The XEmacs Build 'Bot
-
-# -- 
-# $(< ${BUILDDIR}/Installation)
-# EOF
-
-./smtp-mail.exp $smtpserver ${MAJOR}.${MINOR}.${BUILD} ${BUILDDIR}/Installation
-
-# Add a message to the ChangeLog files regarding the release
-./UpdateLogs.zsh ${MAJOR} ${MINOR} ${BUILD} t
-
-if [ -f ${BUILDDIR}/Makefile ]; then
-	(cd ${BUILDDIR}; make distclean)
-fi
-
-# Tag the release
-./CVSGraffito.zsh ${MAJOR} ${MINOR} ${BUILD}
-
-# Prepare .tar.gzs for upload
-./MakeTarballs.zsh r$(echo $previous | sed -e 's/\./-/g') \
-		   r${MAJOR}-${MINOR}-${BUILD} ${MAJOR} ${MINOR} ${BUILD}
-
-# PGP sign everything
-#./PGPSign.zsh ${MAJOR} ${MINOR} ${BUILD}
-
-# Rebuild so we have something to build packages with later
-./LinkPackages.zsh ${BUILDDIR}
-./MakeXEmacs.zsh ${BUILDDIR} t t

File CVSGraffito.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur <steve@xemacs.org>
-# December, 1998
-# This file is part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-# CVSGraffito:  Tag the CVS repository
-# Usage:  CVSGraffito MAJOR MINOR BUILD
-
-setopt extendedglob
-set -e # Exit at the first sign of trouble
-
-if [ $# != 3 ]; then
-	echo "Usage: $0: MAJOR MINOR BUILD"
-	exit 1
-fi
-
-export MAJOR=$1
-export MINOR=$2
-export BUILD=$3
-export BUILDDIR=xemacs-${MAJOR}.${MINOR}
-
-if [ ! -d "$BUILDDIR" ]; then
-	echo "XEmacs source tree $BUILDDIR: not found"
-	exit 1
-fi
-
-cd ${BUILDDIR}
-
-cvs tag r${MAJOR}-${MINOR}-${BUILD}
-
-exit 0

File ChangeLog

-2002-06-30  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/welcome-new-maintainer: New.
-
-	* youngs/announce-public: New.
-
-	* youngs/announce-prerelease: New.
-
-	* youngs/README: Update.
-
-	* youngs/pkg-build.el (TODO): Update.
-
-2002-06-26  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-release-packages): Do a
-	`fill-paragraph' on the ChangeLog entries to keep everything neat
-	and tidy.
-	(pkg-make-bindist): Fix bug that caused building mule packages to
-	fail.  It was a typo.
-
-2002-06-08  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-release-packages): Switch to the log
-	buffer after prompting for args.
-
-2002-06-04  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-upload-directory): New.
-	(pkg-make-bindist): Fix up let form.
-	(pkg-commit-inc-ver): Ditto.
-	(pkg-release-packages): Ditto.
-	(pkg-release-sumo): Ditto.
-	(pkg-upload-packages): Ditto.  Also copy files to be uploaded to
-	'pkg-upload-directory'. 
-	(pkg-get-info): Fix infinite loop.
-
-2002-06-02  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-call-process): New arg "displayp" if
-	non-nil update output buffer on	the fly.
-	(pkg-release-sumo): Use "displayp" arg for 'pkg-call-process'.
-	Use 'start-process-shell-command' to upload Sumo tarballs so it
-	can be done asynchronously.
-	(pkg-release-packages): Use "displayp" arg for
-	'pkg-call-process'. 
-	(pkg-upload-packages): Use 'start-process-shell-command' to upload
-	packages so it can be done asynchronously.
-	(pkg-tag-package): Use "displayp" arg for 'pkg-call-process'.
-	(pkg-commit-inc-ver): Ditto.
-	(pkg-make-bindist): Ditto.
-	(pkg-packages-omit-sumo): Remove "ess".
-	(pkg-commit-inc-ver): Fix bug that was stopping the ChangeLogs
-	from being committed.
-
-2002-06-01  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-upload-packages): Replace a couple of
-	local variables with strings to fix a problem with some loops.
-
-2002-05-28  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-get-info): New.
-
-2002-05-22  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-release-sumo): Fix a wrongly placed ')'
-	which threw the logic off.
-	(pkg-release-sumo): Fix the path where the Sumo tarballs are built
-	from, typo in a filename, change tar flags.
-
-2002-05-21  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-upload-packages): Handle adding and
-	removing a GnuPG comment string.
-	(pkg-pgp-default-comment): Change default value.
-
-	* youngs/BuildSumo: Rewrite from scratch using functions to
-	modularise. 
-	(MAKE): New.
-	(LOCAL_CVS_PACKAGE_ROOT): New.
-	(BUILD_PACKAGE_ROOT): New.
-	(STAGING_ROOT): New.
-	(STAGING): New.
-	(MULE_STAGING): New.
-	(XEMACS): New.
-	(SUMO_DATE): New.
-
-	* youngs/pkg-build.el: Major update, implementing lots of nifty
-	features.  Check "Currently Implemented Features" in the file's
-	commentary section.
-	(pkg-directory): New.
-	(pkg-remote): New.
-	(pkg-sumo): New.
-	(pkg-log-buffer): New.
-	(pkg-log-entry-inc-ver): New.
-	(pkg-pgp-default-comment): New.
-	(pkg-increment-version): Removed.
-	(pkg-working-base-directory): New.
-	(pkg-working-std-directory): New.
-	(pkg-working-mule-directory): New.
-	(pkg-packages-omit-sumo): New.
-	(pkg-std-sumo-build-flags): New.
-	(pkg-mule-sumo-build-flags): New.
-	(pkg-online-status-file): New.
-	(pkg-upload-command): New.
-	(pkg-ftp-username): New.
-	(pkg-remote-path): New.
-	(pkg-customize): New.
-	(pkg-call-process): New.
-	(pkg-make-bindist): New.
-	(pkg-commit-inc-ver): New.
-	(pkg-tag-package): New.
-	(pkg-upload-packages): New.
-	(pkg-release-packages): New.
-	(pkg-release-sumo): New.
-
-2002-05-20  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Move to ./youngs/
-
-	* youngs/BuildSumo: Moved here from ../
-	Re-written from scratch.
-
-	* youngs/README: New.
-
-2002-04-11  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el: New.  Replace me with an elisp library. :-)
-
-2002-04-04  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo (TAR_BZIP): New.
-	(TAR_BZIP): New.
-	Use $SUMO_DATE in building Sumo tarballs and use those 2 new vars
-	to set user and group to root/root.
-
-2002-03-25  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Add liece, xslide, and latin-unity. 
-
-2002-03-12  Ben Wing  <ben@xemacs.org>
-
-	* asmcmp, cvs-commit, cvs-diff, cvs-mods, cvs-revert, cvs-rw,
-	cvs-update, cvs2patch, elccmp, syshgrep, sysnmgrep: Move Martin's
-	non-release scripts into the martin/ directory.
-	* martin/README: Create.
-	* README: Update.
-	
-2002-03-12  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Add ibuffer, mmm-mode. 
-
-2002-01-13  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Add sieve, mule-ucs.
-	Change 'ps-print-nomule' to 'ps-print'.
-
-2001-12-12  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Improve sumo tag, also tag as "sumo-current". 
-
-2001-12-27  Adrian Aichner  <adrian@xemacs.org>
-
-	* ben\crw: Convert to repository at SunSITE.dk.
-
-2001-12-27  Adrian Aichner  <adrian@xemacs.org>
-
-	* BuildXEmacs.zsh: Convert to repository at SunSITE.dk.
-	* upload-package.pl: Ditto.
-	* xre: Ditto.
-	* xre.py (xemacs): Ditto.
-
-2001-12-11  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Add ClearCase, Tramp & JDE packages.
-	Reorganise to ease maintainability.
-
-2001-09-26  Stephen J. Turnbull  <stephen@xemacs.org>
-
-	* xre.py: New file.  Release engineering script (Python port of xre).
-
-	* xemacs-release.texi: New file.  Documentation for this module.
-
-	* README: Request documentation.
-
-2001-08-16  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Re-write for new package tree.
-	Also tag the tree, make the tarballs and upload them.
-
-2001-04-20  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Don't include Sun, Eicq, JDE, VC-CC in SUMOs.
-
-2001-02-18  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Add libs/eieio and prog/xslt-process.
-
-2001-01-11  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Remove vc-cc as it is incompatible with vc.
-
-2001-01-10  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Add os/eshell, os/pcomplete.
-
-2000-10-31  Steve Youngs  <youngs@xemacs.org>
-
-	* BuildSumo: Add a 'make autoloads' and move the order of things
-	to match the Makefiles in the package tree.
-
-2000-08-27  Andreas Jaeger  <aj@suse.de>
-
-	* BuildSumo (XEMACS): Add eicq and semantic.
-
-	* upload-package.pl: New file.
-
-2000-01-15  Andreas Jaeger  <aj@suse.de>
-
-	* BuildSumo: Add prog/idlwave.
-
-1999-11-10  SL Baur  <steve@miho.m17n.org>
-
-	* MakeTarballs.zsh: Merge .elcs and .info files back into the main
-	tarball.
-

File CleanDist.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur <steve@xemacs.org>
-# December, 1998
-# This file is part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-# CleanDist:  Fetch a brand new distribution tree
-# Usage:  CleanDist MAJOR MINOR
-
-setopt extendedglob
-set -e # Exit at the first sign of trouble
-
-if [ $# != 3 ]; then
-	echo "Usage: $0: MAJOR MINOR RELOAD"
-	exit 1
-fi
-
-MAJOR=$1
-MINOR=$2
-RELOAD=$3
-
-export BUILDDIR=xemacs-${MAJOR}.${MINOR}
-
-case ${MAJOR}.${MINOR} in
-21.0|21.1) release= ;;
-21.2) release=-rrelease-21-2 ;;
-esac
-
-# First remove the results of the previous build if they are still present
-if [ -d ${BUILDDIR} ]; then
-	if [ -f ${BUILDDIR}/Makefile ]; then
-		(cd ${BUILDDIR}; make distclean)
-	fi
-	[ "$RELOAD" = t ] && cvs -Q release -d ${BUILDDIR}
-fi
-
-# Second checkout what will become the next version
-[ "$RELOAD" = t ] && cvs checkout ${release} -d ${BUILDDIR} xemacs
-
-exit 0

File Codenames-21.1

-1	20 Minutes to Nikko
-2	20 Minutes to Nikko

File Codenames-21.2

-Aeolus
-Aether
-Aglaia
-Aglaophonos
-Aphrodite
-Apollo
-Ares
-Artemis
-Athena
-Boreas
-Calliope
-Clio
-Demeter
-Dionysos
-Erato
-Erinyes
-Eris
-Eros
-Euphrosyne
-Eurus
-Euterpe
-Hades
-Hebe
-Hecate
-Hephaestus
-Millenium
-Hera
-Hermes
-Hestia
-Hygeia
-Iris
-Kastor & Polydeukes
-Melpomene
-Molpe
-Nike
-Notus
-Pan
-Peisino,Ak(B
-Millennium
-Persephone
-Polyhymnia
-Poseidon
-Terspichore
-Thalia
-Thelxepeia
-Urania
-Zephir
-Zeus

File Codenames-21.5

-alfalfa
-anise
-artichoke
-asparagus
-bamboo
-beets
-bok choi
-broccoflower
-broccoli
-brussels sprouts
-burdock
-cabbage
-carrot
-cauliflower
-cassava
-celery
-celeriac
-chayote
-chestnut
-chives
-cilantro
-corn
-cucumber
-daikon
-dandelion
-eggplant
-endive
-fiddleheads
-fuki
-garbanzo
-garlic
-ginger
-habanero
-horseradish
-kale
-kohlarbi
-leeks
-lettuce
-lima bean
-marjoram
-mushroom
-mustard
-okra
-onion
-parsley
-peanut
-pimento
-potato
-pumpkin
-radish
-rutabaga
-renkon
-satoimo
-shallots
-sorrel
-spinach
-squash
-swisschard
-taro
-tomato
-turnip
-watercress
-yam
-yucca
-zucchini

File IncVers.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur <steve@xemacs.org>
-# December, 1998
-# This file is part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-# IncVers:  Increment Version number and update build name
-# Usage:  IncVers MAJOR MINOR BUILD
-
-setopt extendedglob
-set -e # Exit at the first sign of trouble
-
-if [ $# != 3 ]; then
-	echo "Usage: $0: MAJOR MINOR BUILD"
-	exit 1
-fi
-
-export MAJOR=$1
-export MINOR=$2
-export BUILD=$3
-
-export CODENAME="$(grep '^'$BUILD Codenames-${MAJOR}.${MINOR} | cut -f2-)"
-export BUILDDIR=xemacs-${MAJOR}.${MINOR}
-
-if [ ! -f ${BUILDDIR}/version.sh ]; then
-	echo "Error: ${BUILDDIR}/version.sh: does not exist"
-	exit 1
-fi
-
-# Just do it.
-ed ${BUILDDIR}/version.sh <<=altair=
-1
-/emacs_beta_version/s/=.*$/=${BUILD}
-1
-/xemacs_codename/s/".*"/"${CODENAME}"
-w
-q
-=altair=
-
-exit 0

File LinkPackages.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur <steve@xemacs.org>
-# December, 1998
-# This file is part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-# LinkPackages:  Fetch a brand new distribution tree
-# Usage:  LinkPackages BUILDDIR
-
-setopt extendedglob
-set -e # Exit at the first sign of trouble
-
-if [ $# != 1 ]; then
-	echo "Usage: $0: BUILDDIR"
-	exit 1
-fi
-
-export BUILDDIR=$1
-
-if [ ! -d bootstrap-mule-packages ]; then
-	echo "$0: Warning: Bootstrap Mule packages directory doesn't exist."
-fi
-if [ ! -d bootstrap-xemacs-packages ]; then
-	echo "$0: Warning: Bootstrap XEmacs packages directory doesn't exist."
-fi
-
-if [ -d ${BUILDDIR} ]; then
-	[ -e ${BUILDDIR}/mule-packages ] && rm -f ${BUILDDIR}/mule-packages
-	ln -s ../bootstrap-mule-packages ${BUILDDIR}/mule-packages
-	[ -e ${BUILDDIR}/xemacs-packages ] && rm -f ${BUILDDIR}/xemacs-packages
-	ln -s ../bootstrap-xemacs-packages ${BUILDDIR}/xemacs-packages
-fi
-
-exit 0

File MakeTarballs.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur  <steve@xemacs.org>
-# December, 1998
-# This file is an unofficial part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-setopt extendedglob
-setopt nonomatch
-set -e
-
-if [ $# != 5 ]; then
-	echo "Usage: $0: previous-tag next-tag MAJOR MINOR BUILD"
-	exit 1
-fi
-
-export ptag=$1
-export ntag=$2
-export MAJOR=$3
-export MINOR=$4
-export BUILD=$5
-export FULLVERSION=${MAJOR}.${MINOR}.${BUILD}
-if [ "$ptag" ]; then
-	export LASTVERSION=$(echo $ptag | sed -e 's/-/\./g')
-fi
-
-if [ ! -d xemacs-${MAJOR}.${MINOR} ]; then
-	echo "${BUILDDIR}: does not exist"
-	exit 1
-fi
-
-if [ "$ptag" ]; then
-	rm -f xemacs-${LASTVERSION}-${FULLVERSION}.patch*
-	cvs rdiff -u -r${ptag} -r${ntag} xemacs \
-		> xemacs-${LASTVERSION}-${FULLVERSION}.patch
-	gzip -9 xemacs-${LASTVERSION}-${FULLVERSION}.patch
-	chmod 444 xemacs-${LASTVERSION}-${FULLVERSION}.patch.gz
-fi
-
-mv xemacs-${MAJOR}.${MINOR} xemacs-${FULLVERSION}
-
-# Main Tarball
-rm -f xemacs-${FULLVERSION}.tar*
-tar --exclude CVS --exclude .precious \
-	--exclude xemacs-packages --exclude mule-packages \
-	-cf "xemacs-${FULLVERSION}.tar" \
-	"xemacs-${FULLVERSION}"
-gzip -v9 "xemacs-${FULLVERSION}.tar"
-chmod 444 "xemacs-${FULLVERSION}.tar".gz
-
-# bytecompiled XEmacs Lisp Tarball
-#rm -f xemacs-${FULLVERSION}-elc.tar*
-#tar -cf xemacs-${FULLVERSION}-elc.tar \
-#	xemacs-${FULLVERSION}/lisp/**/*.elc
-#gzip -v9 xemacs-${FULLVERSION}-elc.tar
-#chmod 444 xemacs-${FULLVERSION}-elc.tar.gz
-
-# compiled XEmacs info tree
-#rm -f xemacs-${FULLVERSION}-info.tar*
-#tar -cf xemacs-${FULLVERSION}-info.tar xemacs-${FULLVERSION}/**/*.info*
-#gzip -v9 xemacs-${FULLVERSION}-info.tar
-#chmod 444 xemacs-${FULLVERSION}-info.tar.gz
-
-mv xemacs-${FULLVERSION} xemacs-${MAJOR}.${MINOR}
-
-exit 0

File MakeXEmacs.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur <steve@xemacs.org>
-# December, 1998
-# This file is part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-# MakeXEmacs:  Configure, compile and link XEmacs
-# Usage:  MakeXEmacs BUILDDIR configureflag checkflag
-
-setopt extendedglob
-set -e
-
-if [ $# != 3 ]; then
-	echo "Usage: $0 BUILDDIR configureflag checkflag"
-	exit 1
-fi
-
-if [ ! -d ${BUILDDIR} ]; then
-	echo "${BUILDDIR}: does not exist"
-	exit 1
-fi
-
-export BUILDDIR=$1
-export configureflag=$2
-export checkflag=$3
-if [ ! "$PREFIX" ]; then
-	export PREFIX=$(pwd)
-fi
-
-cd ${BUILDDIR}
-
-if [ "$configureflag" = "t" ]; then
-	./configure --prefix=${PREFIX} --cflags=-O --with-mule --without-x11 \
-		--debug=no --error-checking=none
-
-	# Rebuild only the binary, no further lisp or texinfo yet
-	make xemacs
-fi
-
-if [ "$checkflag" = "t" ]; then
-	# Build the full distribution
-	make
-	# Run Martin's beloved self-checker
-	# If we make it through, we will consider the binary safe enough
-	#  to commit to CVS for a formal release.
-	make check
-fi
-
-exit 0

File README

-This directory contains tools that support maintenance of XEmacs.
-
-Some of the tools are used for putting out releases, others are front ends
-for CVS that simplify common operations and work around bugs, others for
-building workspaces in various configurations, and others are random
-utilities of various sorts.
-
-The tools for putting out releases should be documented in
-xemacs-release.texi.  Others should be placed in subdirectories according
-to their author (since different authors frequently write tools with
-overlapping functionality and they haven't yet been merged), and an
-overview presented here.

File UpdateLogs.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur <steve@xemacs.org>
-# December, 1998
-# This file is part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-# UpdateLogs:  Add a note that a formal distribution has been made
-# Usage:  UpdateLogs MAJOR MINOR BUILD
-
-setopt extendedglob
-set -e # Exit at the first sign of trouble
-
-if [ $# != 4 ]; then
-	echo "Usage: $0: MAJOR MINOR BUILD commitflag"
-	exit 1
-fi
-
-export MAJOR=$1
-export MINOR=$2
-export BUILD=$3
-export commitflag=$4
-
-# The following line does not with `export' and I don't know why
-AUTHOR=$(date '+%Y-%m-%d  XEmacs Build Bot <builds@cvs.xemacs.org>')
-export NEXT=${MAJOR}.${MINOR}.${BUILD}
-export BUILDDIR=xemacs-${MAJOR}.${MINOR}
-
-if [ ! -d ${BUILDDIR} ]; then
-	echo "Error: ${BUILDDIR} does not exist"
-	exit 1
-fi
-
-cd ${BUILDDIR}
-
-for logfile in **/ChangeLog; do
-	ed ${logfile} <<altair
-1i
-$AUTHOR
-
-	* XEmacs $NEXT is released
-
-.
-w
-q
-altair
-done
-
-if [ "$commitflag" = t ]; then
-	cvs commit -m "XEmacs Release ${NEXT}"
-else
-	echo "Would have executed:"
-	echo cvs commit -m "XEmacs Release ${NEXT}"
-fi
-
-exit 0

File UpdatePackages.zsh

-#! /usr/local/bin/zsh -f
-
-# Written by SL Baur <steve@xemacs.org>
-# December, 1998
-# This file is part of XEmacs and is used by the maintainers
-#  for creating distributions
-
-# UpdatePackages:  Rebytecompile and install a minimal set of packages
-# Usage:  UpdatePackages XEMACS
-
-setopt extendedglob
-set -e # Exit at the first sign of trouble
-
-if [ $# != 1 ]; then
-	echo "Usage: $0: XEMACS"
-	exit 1
-fi
-
-export XEMACS=$1
-
-function dopackage
-{
-	export DESTDIR=$1
-	shift
-
-	for package; do	(
-		cd xemacs-packages/${package}
-		make XEMACS=${XEMACS} STAGING=${DESTDIR} install
-	)
-	done
-}
-
-dopackage $(pwd)/bootstrap-mule-packages mule/mule-base
-dopackage $(pwd)/bootstrap-xemacs-packages libs/xemacs-base wp/texinfo
-
-exit 0

File XEmacs.pm

-($myName = $0) =~ s@.*/@@;
-
-use Carp;
-use FileHandle;
-use strict;
-use vars qw($XEmacsHome $XEmacsWSDir $XEmacsWorkDir $XEmacsBuildDir $XEmacsInstDir $DevDir $LatDir $LatVer);
-
-sub FirstDir {
-  foreach my $dir (@_) {
-    return $dir if -d $dir;
-  }
-  die "None of these are directories: @_\n";
-}
-
-$XEmacsHome = FirstDir
-  "$ENV{XEMACS_HOME}",
-  "/project/xemacs",
-  "/net/fs/export/project/xemacs",
-  "/net/fs.m17n.org/export/project/xemacs";
-  # "$ENV{HOME}/x",
-  # "/home/martin/x"
-
-# if (! defined $XEmacsHome) {
-#   # Look in Martin's home directory
-#   use User::pwent;
-#   for my $martin_name ("martin", "mrb", "martinb") {
-#     my $pw = getpwnam ($martin_name);
-#     next unless defined $pw;
-#     next unless -d ($pw->dir . "/x");
-#     $XEmacsHome = $pw->dir . "/x";
-#     last;
-#   }
-# }
-
-# die "Can't find XEmacsHome\n" unless defined $XEmacsHome;
-
-chomp (my $shost = defined $ENV{HOSTNAME} ? $ENV{HOSTNAME} : `uname -n`);
-$shost =~ s/\..*//;
-
-$XEmacsWorkDir  = FirstDir "$ENV{XEMACS_WORK}", "$XEmacsHome/work/$shost";
-$XEmacsBuildDir = "$XEmacsWorkDir/build";
-$XEmacsInstDir  = "$XEmacsWorkDir/inst";
-$XEmacsWSDir    = FirstDir "$ENV{XEMACS_WSDIR}", "$XEmacsHome/ws";
-$DevDir         = "$XEmacsWSDir/dev";
-
-sub SYS;
-
-my ($DevMajorVer, $DevMinorVer, $DevBetaVer) =
-  split (' ', `. $DevDir/version.sh; echo "\${emacs_major_version} \${emacs_minor_version} \${emacs_beta_version}"`);
-
-my $MajorVer = "${DevMajorVer}.${DevMinorVer}";
-# $CurVer = "xemacs-${MajorVer}" . ($DevBetaVer ? "-b${DevBetaVer}" : "");
-# if (! -d "$XEmacsHome/$CurVer") {
-#   my $OtherVer = $CurVer;
-#   $OtherVer =~ s/21\.0/20.5/;
-#   $CurVer = $OtherVer if -d "$XEmacsHome/$OtherVer";
-# }
-# $CurDir   = "$XEmacsHome/$CurVer";
-# $CurDir   = "$XEmacsWSDir/cur";
-
-$LatVer   = LatVer();
-#$LatDir   = "$XEmacsHome/$LatVer";
-$LatDir   = "$XEmacsWSDir/lat";
-
-sub LatVer {
-  (reverse sort ByVer
-   grep(/^xemacs-(?:\d\d.\d+)(?:-b\d+)?$/, DirList($XEmacsHome)))[0];
-}
-
-sub BuildDir {
-  return $XEmacsBuildDir;
-}
-
-sub LatBuildDir {
-  chdirSafe (BuildDir());
-  chomp (my $dir = `/bin/ls -Atr | tail -1`);
-  return $dir;
-}
-
-sub ExportDir {
-  return "$XEmacsHome/export";
-}
-
-sub Check_CVS_Root_Directory {
-  confess "Not a CVS workspace" unless -d "CVS";
-  confess "Not an XEmacs root directory" unless -d "lib-src" && -r "version.sh";
-}
-
-sub Check_Exportable_CVS_Root_Directory {
-  Check_CVS_Root_Directory();
-  confess "Architecture-independent files have not been built"
-    unless -r "info/internals.info" && -r "lisp/info.elc";
-  confess "make distclean has not been run"
-    if -e "Makefile" || -e "src/GNUmakefile";
-}
-
-sub XEmacs_current_version {
-  confess "Where is version.sh?\n" unless -r "version.sh";
-  my @result = split (' ', `. version.sh; echo "\${emacs_major_version} \${emacs_minor_version} \${emacs_beta_version}"`);
-  push @result, "$result[0].$result[1].$result[2]";
-  push @result, "xemacs-$result[3]";
-  return @result;
-}
-
-sub Variant {
-  return "$^O" unless "$^O" eq 'linux';
-  return "$^O-libc" .
-    (grep (/__GLIBC__\s+2$/, `cat /usr/include/features.h`) ? '2' : '1');
-}
-
-sub SunP { Variant() eq 'solaris'; }
-
-sub ImportDir { SunP() ? '/usr/local/src' : '/hack/import'; }
-
-sub SetPkgPATH {
-  my $dir = ImportDir() . "/$_[0]/inst/" . Variant() . "/bin";
-  $ENV{PATH} = "$dir:$ENV{PATH}" if -d $dir;
-}
-
-sub FindPkgDir {
-  for (@_) {
-    my $dir = ImportDir() . "/$_/inst/" . Variant() . "/bin";
-    return $dir if -d $dir;
-  }
-  if (-x "/usr/local/bin/gcc") { return "/usr/local/bin"; }
-  return "/usr/bin";
-}
-
-sub cxxP  { `pwd` =~ m@\+[^/]*/(?:src|lwlib)$@ }
-
-sub Hostname { $_ = `uname -n`; s/[\.].*//; chomp; return $_; }
-
-sub Member { my $elt = shift; return scalar grep ($elt eq $_, @_); }
-
-# sub CPUcount { Member (Hostname, qw(mule)) ? 2 : 1; }
-sub CPUcount { 1; }
-
-sub DirList {
-  my ($dir) = @_;
-  opendir (DIR, $dir) or confess "$dir: $!";
-  my @files = readdir (DIR);
-  closedir (DIR);
-  return @files;
-}
-
-sub chdirSafe {
-  chdir $_[0] or confess "$_[0]: $!\n";
-}
-
-sub ByVer {
-  my ($ver_a, $beta_a) = ($a =~ /^xemacs-(\d\d\.\d+)(?:-b)?(\d*)$/);
-  my ($ver_b, $beta_b) = ($b =~ /^xemacs-(\d\d\.\d+)(?:-b)?(\d*)$/);
-  ($ver_a <=> $ver_b) ||
-    ($beta_a eq '' ?  1 :
-     $beta_b eq '' ? -1 :
-     $beta_a <=> $beta_b);
-}
-
-sub ParsePath {
-  ($_[0] =~ m@/@) ? ($_[0] =~ m@^(.*)/([^/]+)$@) : (".", $_[0]);
-}
-
-
-{
-  my @amd_mount_points = ();
-  my %dirp = ();
-
-  sub RealPath {
-    if (! @amd_mount_points) {
-      @amd_mount_points = ! -d "/net" ? () :
-	grep (-d, ("/tmp_mnt/net", "/tmp_mnt",
-		   "/amd", "/a", "/tmp_net"));
-      # warn "\@amd_mount_points=@amd_mount_points\n";
-    }
-
-    chomp (my $path = `cd $_[0]; /bin/pwd`);
-    for (@amd_mount_points) {
-      my $newpath = $path;
-      if ($newpath =~ s|^$_/([^/]+)/root/|/net/$1/| ||
-	  $newpath =~ s|^$_/|/net/|) {
-	# warn "newpath=$newpath\n";
-	$dirp{$newpath} = (-d $newpath) if !defined $dirp{$newpath};
-	return $newpath if $dirp{$newpath};
-      }
-    }
-    return $path;
-  }
-}
-
-my %generated = ();
-
-sub SafeOpen {
-  open ((my $fh = new FileHandle), $_[0]);
-  confess "Can't open $_[0]: $!" if ! defined $fh;
-  return $fh;
-}
-
-sub SafeClose {
-  close $_[0] or confess "Can't close $_[0]: $!";
-}
-
-sub WriteStringToFile {
-  my $fh = SafeOpen ("> $_[0]");
-  print $fh $_[1] or confess "$_[0]: $!\n";
-  SafeClose $fh;
-}
-
-sub IgnoreFile {
-  my ($base, $path) = ($_[0], $_[0]);
-  $base =~ s@.*/@@;
-
-  if (! %generated) {
-    map { $generated{$_} = 1 }
-    qw (configure config.log confdefs.h config.values.in config.values DOC
-	config.h paths.h puresize-adjust.h sheap-adjust.h Emacs.ad.h
-	TAGS index.texi dynodump.so
-	Installation config.status finder-inf.el auto-autoloads.el
-	make-docfile ctags etags ootags sorted-doc gnuserv mmencode profile movemail
-	wakeup b2m make-path digest-doc cvtmail gnuclient yow fakemail hexl
-	prefix-args temacs xemacs
-	core NOBYTECOMPILE Installation.el
-	gmon.out tcovd);
-  }
-
-  return 1 if exists $generated{$base};
-
-  local ($_ = $base);
-  return 1 if
-    (/\.(?:[oa]|elc|info(?:-[0-9]+)?|rej|orig|PRE|STEVE|stamp)$/ ||
-     /[\#~]$/ ||
-     /^\.\#/
-    );
-
-  # TeX
-  return 1 if /\.(o?aux|cps?|dvi|fns?|kys?|log|ops?|pgs?|toc|tps?|vrs?)$/;
-
-  local ($_ = $path);
-  return 1 if
-    (m@(^|/)(SCCS|CVS|RCS)/@ ||
-     m@^(dynodump|src|lib-src|lwlib)/(?:GNU)?[Mm]akefile(\.in)?$@ ||
-     $_ eq 'Makefile'    ||
-     $_ eq 'GNUmakefile' ||
-     m@^lisp/vm/(\.autoload|vm-autoload\.el|vm-search\.el)$@) ;
-}
-
-sub DiffIgnoreFile {
-  local $_ = $_[0];
-  return IgnoreFile($_);
-}
-
-sub Left { substr($_[0],0,$_[1]) }
-
-sub gnudiff {
-  my $diff = $$ENV{DIFF} || "diff";
-  $_[0] = "$diff $_[0]";
-  confess "Can't fork: $!\n" unless defined (my $pid = fork());
-  if ($pid == 0) { exec @_ or confess "Can't exec @_: $!\n"; } # Child
-
-  waitpid($pid,0);
-  confess "Command \"@_\" failed: ".($?<256 ? "signal $?" : "rc=".($?>>8))."\n"
-    if $? && $? != 256;
-}
-
-sub WSroot {
-  my ($dir) = @_;
-  confess "$dir: $!" unless -d $dir;
-  chomp ($dir = `cd $dir && pwd`);
-  confess "$dir: $!" unless -d $dir;
-
-  my ($head, $tail, $pos) = ($dir, "", length($dir) +1);
-  while (1) {
-    return ($dir, $head, $tail) if -r "$head/version.sh";
-    $pos = rindex($dir, "/", $pos - 1);
-    confess "Can't find root of workspace for \"@_\""
-      if $pos == -1;
-    $head = substr($dir, 0, $pos);
-    $tail = substr($dir, $pos);
-  }
-  confess "Can't find root of workspace!: @_";
-}
-
-sub FileContents {
-  local $/ = undef;
-  open (FILE, "< $_[0]") or confess "$_[0]: $!";
-  return scalar <FILE>;
-}
-
-1;

File adrian/website/HTMLindex.pl

-:                               # -*-Perl-*-
-  eval 'exec perl -w -S $0 ${1+"$@"}' # Portability kludge
-  if 0;
-#! /usr/local/bin/perl
-#
-# Adrian Aichner, Teradyne GmbH. Munich, Sat, May. 06 1995.
-#
-# $Id$
-#
-
-# Functionality common to indexing HTML and XML files.
-package ML::Indexer;
-
-use strict;
-
-use vars qw(@ISA);
-# declare inheritance list
-@ISA = qw(Exporter);
-
-BEGIN {
-    # define modules used by this one
-    # fill in Exporter variables below
-    use CGI;
-    use Exporter();
-    # to see how the specifications are being processed and what is
-    # actually being imported into modules.
-    # $Exporter::Verbose = 1;
-    use vars qw($VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS);
-    # $VERSION = 1.00;
-    # if using RCS/CVS, this may be preferred
-    $VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };  	# must be all one line, for MakeMaker
-    @EXPORT = qw();
-    %EXPORT_TAGS = ( );		# eg: TAG => [ qw!name1 name2! ],
-    # your exported package globals go here,
-    # as well as any optionally exported functions
-    @EXPORT_OK = qw();
-}
-
-sub new {
-    my $this = $_[0];
-    # Permit usage as instance- or class-method.
-    my $class = ref($this) || $this;
-    my $self = {};
-    $self->{'cmd_line'} = $_[1]->{'cmd_line'};
-    $self->{'prefix'} = $_[1]->{'prefix'};
-    $self->{'where'} = $_[1]->{'where'};
-    $self->{'headline_index'} = [];
-    $self->{'index_done'} = 0;
-    $self->{'list_index'} = 1;
-    # Words modifying the sense of following words.
-    my $modifiers = join "|", (
-                               "all",
-                               "little",
-                               "m?any",
-                               "much",
-                               "not?",
-                              );
-    # Word-endings of `interesting' words to use as hyperlink data.
-    my $word_ends = join "|", (
-                               "[ae]nts?",
-                               "[aeiou][nr]ds?",
-                               "[bnrv]als?",
-                               "[cd]es?",
-                               "[dlrw]ays?",
-                               "[glmv]e[rs]?",
-                               "[lmn]ess",
-                               "[lmn]it(y|ies)",
-                               "[lmr]ows?",
-                               "ails?",
-                               "an",
-                               "ances?",
-                               "are",
-                               "ates?",
-                               "burg",
-                               "ea?[lmr]s?",
-                               "ed",
-                               "ell",
-                               "erp",
-                               "ests?",
-                               "ich",
-                               "in[eg]s?",
-                               "is",
-                               "ite",
-                               "izes?",
-                               "o[br]es?",
-                               "olm",
-                               "ould",
-                               "ous",
-                               "outs?",
-                               "oven",
-                               "sions?",
-                               "sis",
-                               "tal",
-                               "tions?",
-                               "ups?",
-                              );
-    # Common words to use as hyperlink-data.
-    my $words = join "|", (
-                           "after",
-                           "before",
-                           "are",
-                           "from",
-                           "to",
-                           "have",
-                           "here",
-                           "on",
-                           "over",
-                           "under",
-                           "we",
-                           "you",
-                           "will",
-                           "with(out)?"
-                          );
-    $self->{data_pat} =
-      "\\b((($modifiers)\\s+)?\\b[-\\w]+($word_ends)|($words))\\b";
-    bless $self, $class;
-    return $self;
-}
-
-sub skip_index {
-    my $self = $_[0];
-    # Old index intro up to 1.50.
-    if (m|<p>This\s+<a(\s+id=\"index\")?\s+name=\"index\"(\s+shape=\"rect\")?>index</a>\s+was\s+generated\s+by|i
-        .. m|<hr/?>|i) {
-        next;
-    }
-    # New index intro as of 1.51.
-    if (m|<h1 id=\"index\">Document Index</h1>|i
-        .. m|<hr/?>|i) {
-        next;
-    }
-    if (m|<p><a href=\"\#index\"(\s+shape=\"rect\")?>Goto</a> Index</p>|i) {
-        next;
-    }
-}
-
-sub collect_headlines {
-    my $self = $_[0];
-    #
-    my($heading, $index, $quoted_data, $name, $data, $hstart, $hend, $lws);
-    my $prefix = $self->get_prefix();
-    my $data_pat = $self->data_pat();
-    if (m|^(\s*).*(<h[1-6][^>]*>)(.*)(</h[1-6]>)|i) {
-        if ($self->index_done()) {
-            warn "Index has already been written before \""
-              . $self->{'where'}
-                . "\".\n";
-        }
-        $lws = $1;
-        $hstart = $2;
-        $heading = $3;
-        $hend = $4;
-        # Remove HTML-markup (needs more work to handle HTML
-        # ATTRIBUTES).
-        $_ = $heading;
-        $_ =~ s/<[^>]+>//g;
-        # Match a word in Heading somewhat meaningful as a
-        # hyper-link.  Else use the whole headline data.
-        if (m|$data_pat|i) {
-            $data = $1;
-        } else {
-            $data = $heading;
-        }
-        # Build hopefully unique link-target by using first letter
-        # of each word in HEADING.
-        # Numbers are made part of the link-target, while
-        # white-space is deleted.
-        $name = $_;
-        #
-        # Comply with:
-        # "4.10 The elements with 'id' and 'name' attributes"
-        # in
-        # http://www.w3.org/TR/2000/REC-xhtml1-20000126/#diffs
-        # See also:
-        # http://www.w3.org/TR/REC-xml#NT-Name
-        # I am ignoring
-        # http://www.w3.org/TR/REC-xml#NT-CombiningChar
-        # and
-        # http://www.w3.org/TR/REC-xml#NT-Extender
-        # for now.
-        #
-        # I use the subsets [A-Za-z] for
-        # http://www.w3.org/TR/REC-xml#NT-Letter
-        # and [0-9] for http://www.w3.org/TR/REC-xml#NT-Digit
-        #
-        # Also account for "C.8 Fragment Identifiers"
-        # in
-        # http://www.w3.org/TR/2000/REC-xhtml1-20000126/#guidelines
-        # APA: Handle SGML entities as well.  e.g. &szlig;
-        #
-        # [4]
-        # NameChar
-        #     ::=
-        #         Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
-        # [5]
-        # Name
-        #     ::=
-        #         (Letter | '_' | ':') (NameChar)*
-        # [6]
-        # Names
-        #     ::=
-        #         Name (S Name)*
-        # [7]
-        # Nmtoken
-        #     ::=
-        #         (NameChar)+
-        $name =~ s/&?([A-Za-z])[A-Za-z&;]+/$1/g;
-        # APA: "-" must be first in character class!
-        # Remove all characters except our subset of NameChar
-        $name =~ s|[^-._:a-zA-Z0-9]||g;
-        # Incorporate the link-target into the current line, which
-        # is a HEADING.  Create an index-line, containing a
-        # hyper-link to this HEADING.
-        $index = "$_";
-        # Quote regular expression meta characters in headlines!
-        $quoted_data = quotemeta $data;
-        $index =~ s|$quoted_data|<a href="#$name">$data</a>|;
-        # Push the index-line onto the index-stack to be dumped
-        # before $opt_where.
-        $self->add_to_index($index);
-        # Re-assemble HEADING.
-        $heading = $_;
-        $_ = "$prefix$lws$hstart$heading$hend";
-        $_ .= "\n$prefix$lws<p><a href=\"\#index\">Goto</a> Index</p>\n";
-        # APA: Use name and id attribute to satisfy current and
-        # future browsers as well as HTML 4.0 and XHTML 1.0.
-        s|$quoted_data|<a id="$name" name="$name">$data</a>|;
-    }
-}
-
-sub collect_lists {
-    my $self = $_[0];
-    #
-    my $list_index = $self->{'list_index'};
-    # APA: Using m{}i because pattern contains |.
-    if ($self->list() && m{(<(D|O|U)L>)}i) {
-        my($list_tag) = $1;
-        if ($self->index_done()) {
-            warn "Index has already been written before \""
-              . $self->{'where'}
-                . "\".\n";
-        }
-        s|$list_tag|<p><a href=\"\#index\" name="list$list_index">Goto</a> Index</p>\n$list_tag|;
-        # push the index-line onto the index-stack to be dumped
-        # before $opt_where.
-        $self->add_to_index("<a href=\"\#list$list_index\">List</a> $list_index");
-        # Increment list enumerator.
-        $self->{'list_index'}++;
-    }
-}
-
-sub index_done {
-    my $self = $_[0];
-    #
-    return $self->{index_done};
-}
-
-sub add_to_index {
-    my $self = $_[0];
-    my $index = $_[1];
-    #
-    push @{$self->{index}}, $index;
-}
-
-sub data_pat {
-    my $self = $_[0];
-    #
-    return $self->{data_pat};
-}
-
-sub get_cmd_line {
-    my $self = $_[0];
-    #
-    return @{$self->{cmd_line}};
-}
-
-sub get_index {
-    my $self = $_[0];
-    #
-    return @{$self->{index}};
-}
-
-sub get_prefix {
-    my $self = $_[0];
-    #
-    return $self->{prefix};
-}
-
-sub get_sort {
-    my $self = $_[0];
-    #
-    return $self->{sort};
-}
-
-sub get_where {
-    my $self = $_[0];
-    #
-    return $self->{where};
-}
-
-sub insert_index {
-    my $self = $_[0];
-    #
-    my ($cgi) = new CGI({});
-    my @index = $self->get_index();
-    my $prefix = $self->get_prefix();
-    my $sort = $self->get_sort();
-    my $where = $self->get_where();
-    my @cmd_line = $self->get_cmd_line();
-    if (m|$where|i) {
-        if ($self->index_done()) {
-            warn "Index has already been written before \"$where\".\n";
-        }
-        print "$prefix    <h1 id=\"index\">Document Index</h1>\n";
-        print "$prefix    <!-- This index";
-        print " was generated by ";
-        print $cgi->escapeHTML("@cmd_line") . " -->\n$prefix    <ul>\n";
-        print "$prefix      <li><a href=\"#\">Goto</a> Top</li>\n";
-        if ($sort) {
-            @index = sort byText @index;
-        }
-        for (@index) {
-            print "$prefix      <li>$_</li>\n";
-        }
-        print "$prefix    </ul>\n$prefix    <hr>\n";
-        $self->{index_done} = 1;
-    }
-}
-
-# Functionality specific to indexing HMTL files.
-package HTML::Indexer;
-
-use strict;
-
-use vars qw(@ISA);
-# declare inheritance list
-@ISA = qw(Exporter ML::Indexer);
-
-BEGIN {
-    # define modules used by this one
-    # use ML::Indexer;
-    # fill in Exporter variables below
-    use Exporter();
-    # to see how the specifications are being processed and what is
-    # actually being imported into modules.
-    # $Exporter::Verbose = 1;
-    use vars qw($VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS);
-    # $VERSION = 1.00;
-    # if using RCS/CVS, this may be preferred
-    $VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };  	# must be all one line, for MakeMaker
-    @EXPORT = qw();
-    %EXPORT_TAGS = ( );		# eg: TAG => [ qw!name1 name2! ],
-    # your exported package globals go here,
-    # as well as any optionally exported functions
-    @EXPORT_OK = qw();
-}
-
-sub new {
-    my $this = $_[0];
-    # Permit usage as instance- or class-method.
-    my $class = ref($this) || $this;
-    my $self = $class->SUPER::new($_[1]);
-    return $self;
-}
-
-# Functionality specific to indexing HMTL files.
-package XHTML::Indexer;
-
-use strict;
-
-use vars qw(@ISA);
-# declare inheritance list
-@ISA = qw(Exporter ML::Indexer);
-
-BEGIN {
-    # define modules used by this one
-    # use ML::Indexer;
-    # fill in Exporter variables below
-    use Exporter();
-    # to see how the specifications are being processed and what is
-    # actually being imported into modules.
-    # $Exporter::Verbose = 1;
-    use vars qw($VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS);
-    # $VERSION = 1.00;
-    # if using RCS/CVS, this may be preferred
-    $VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };  	# must be all one line, for MakeMaker
-    @EXPORT = qw();
-    %EXPORT_TAGS = ( );		# eg: TAG => [ qw!name1 name2! ],
-    # your exported package globals go here,
-    # as well as any optionally exported functions
-    @EXPORT_OK = qw();
-}
-
-sub new {
-    my $this = $_[0];
-    # Permit usage as instance- or class-method.
-    my $class = ref($this) || $this;
-    my $self = $class->SUPER::new($_[1]);
-    return $self;
-}
-
-# Modified copy of ML::Indexer class
-sub collect_headlines {
-    my $self = $_[0];
-    #
-    my($heading, $index, $quoted_data, $name, $data, $hstart, $hend, $lws);
-    my $prefix = $self->get_prefix();
-    my $data_pat = $self->data_pat();
-    if (m|^(\s*).*(<h[1-6][^>]*>)(.*)(</h[1-6]>)|i) {
-        if ($self->index_done()) {
-            warn "Index has already been written before \""
-              . $self->{'where'}
-                . "\".\n";
-        }
-        $lws = $1;
-        $hstart = $2;
-        $heading = $3;
-        $hend = $4;
-        # Remove HTML-markup (needs more work to handle HTML
-        # ATTRIBUTES).
-        $_ = $heading;
-        $_ =~ s/<[^>]+>//g;
-        # Match a word in Heading somewhat meaningful as a
-        # hyper-link.  Else use the whole headline data.
-        if (m|$data_pat|i) {
-            $data = $1;
-        } else {
-            $data = $heading;
-        }
-        # Build hopefully unique link-target by using first letter
-        # of each word in HEADING.
-        # Numbers are made part of the link-target, while
-        # white-space is deleted.
-        $name = $_;
-        #
-        # Comply with:
-        # "4.10 The elements with 'id' and 'name' attributes"
-        # in
-        # http://www.w3.org/TR/2000/REC-xhtml1-20000126/#diffs
-        # See also:
-        # http://www.w3.org/TR/REC-xml#NT-Name
-        # I am ignoring
-        # http://www.w3.org/TR/REC-xml#NT-CombiningChar
-        # and
-        # http://www.w3.org/TR/REC-xml#NT-Extender
-        # for now.
-        #
-        # I use the subsets [A-Za-z] for
-        # http://www.w3.org/TR/REC-xml#NT-Letter
-        # and [0-9] for http://www.w3.org/TR/REC-xml#NT-Digit
-        #
-        # Also account for "C.8 Fragment Identifiers"
-        # in
-        # http://www.w3.org/TR/2000/REC-xhtml1-20000126/#guidelines
-        # APA: Handle SGML entities as well.  e.g. &szlig;
-        #
-        # [4]
-        # NameChar
-        #     ::=
-        #         Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
-        # [5]
-        # Name
-        #     ::=
-        #         (Letter | '_' | ':') (NameChar)*
-        # [6]
-        # Names
-        #     ::=
-        #         Name (S Name)*
-        # [7]
-        # Nmtoken
-        #     ::=
-        #         (NameChar)+
-        $name =~ s/&?([A-Za-z])[A-Za-z&;]+/$1/g;
-        # APA: "-" must be first in character class!
-        # Remove all characters except our subset of NameChar
-        $name =~ s|[^-._:a-zA-Z0-9]||g;
-        # Incorporate the link-target into the current line, which
-        # is a HEADING.  Create an index-line, containing a
-        # hyper-link to this HEADING.
-        $index = "$_";
-        # Quote regular expression meta characters in headlines!
-        $quoted_data = quotemeta $data;
-        $index =~ s|$quoted_data|<a href="#$name" shape="rect">$data</a>|;
-        # Push the index-line onto the index-stack to be dumped
-        # before $opt_where.
-        $self->add_to_index($index);
-        # Re-assemble HEADING.
-        $heading = $_;
-        $_ = "$prefix$lws$hstart$heading$hend";
-        $_ .= "\n$prefix$lws<p><a href=\"\#index\" shape=\"rect\">Goto</a> Index</p>\n";
-        # APA: Use name and id attribute to satisfy current and
-        # future browsers as well as HTML 4.0 and XHTML 1.0.
-        s|$quoted_data|<a id="$name" name="$name" shape="rect">$data</a>|;
-    }
-}
-
-sub insert_index {
-    my $self = $_[0];
-    #
-    my ($cgi) = new CGI({});
-    my @index = $self->get_index();
-    my $prefix = $self->get_prefix();
-    my $sort = $self->get_sort();
-    my $where = $self->get_where();
-    my @cmd_line = $self->get_cmd_line();
-    if (m|$where|i) {
-        if ($self->index_done()) {
-            warn "Index has already been written before \"$where\".\n";
-        }
-        print "$prefix    <h1 id=\"index\">Document Index</h1>\n";
-        print "$prefix    <!-- This index";
-        print " was generated by ";
-        print $cgi->escapeHTML("@cmd_line") . " -->\n$prefix    <ul>\n";
-        print "$prefix      <li><a href=\"#\" shape=\"rect\">Goto</a> Top</li>\n";
-        if ($sort) {
-            @index = sort byText @index;
-        }
-        for (@index) {
-            print "$prefix      <li>$_</li>\n";
-        }
-        print "$prefix    </ul>\n$prefix    <hr/>\n";
-        $self->{index_done} = 1;
-    }
-}
-
-# Functionality specific to indexing XML files.
-package XML::Indexer;
-
-use strict;
-
-use vars qw(@ISA);
-# declare inheritance list
-@ISA = qw(Exporter ML::Indexer);
-
-BEGIN {
-    # define modules used by this one
-    # use ML::Indexer;
-    # fill in Exporter variables below
-    use Exporter();
-    # to see how the specifications are being processed and what is
-    # actually being imported into modules.
-    # $Exporter::Verbose = 1;
-    use vars qw($VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS);
-    # $VERSION = 1.00;
-    # if using RCS/CVS, this may be preferred
-    $VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };  	# must be all one line, for MakeMaker
-    @EXPORT = qw();
-    %EXPORT_TAGS = ( );		# eg: TAG => [ qw!name1 name2! ],
-    # your exported package globals go here,
-    # as well as any optionally exported functions
-    @EXPORT_OK = qw();
-}
-
-sub new {
-    my $this = $_[0];
-    # Permit usage as instance- or class-method.
-    my $class = ref($this) || $this;
-    my $self = $class->SUPER::new($_[1]);
-    return $self;
-}
-
-package main;
-
-use strict;
-use Getopt::Long;
-use APA::Usage;
-
-my %options = (
-               "list" => "Include all HTML Lists in the index.",
-               "headline" => "Include all HTML Headings in the index.",
-               "help" => "Print this help message only.",
-               "prefix=s" => "Prefix every line added by STRING.",
-               "sort" => "Sort the index lexically.",
-               "where=s" => "REGEXP specifying where to insert index.",
-               "dtd=s" => "XML, XHTML, or HTML (default: document DTD or HTML)",
-              );
-
-use vars qw(
-            $a
-            $b
-            $opt_dtd
-            $opt_headline
-            $opt_help
-            $opt_list
-            $opt_prefix
-            $opt_sort
-            $opt_where
-           );
-
-my $pubid_char_regex = qr{
-                          [- \r\na-zA-Z0-9()+,./:=?;!*\#\@\$_%]
-                         }x;
-
-my $pubid_literal_regex = qr{
-                             (?:
-                              \"(?:$pubid_char_regex|\')*\"
-                              |
-                              \'(?:$pubid_char_regex)*\'
-                             )
-                            }x;
-
-my $system_literal_regex = qr{
-                              (?:\"[^\"]*\"|\'[^\']*\')
-                             }x;
-
-my $dtd_regex = qr{
-                   # http://www.xml.com/axml/target.html#sec-prolog-dtd
-                   # SystemLiteral is optional because it was not
-                   # present in HTML 3.2
-                   # RootElementType=$1, PubidLiteral=$2, SystemLiteral=$3
-                   ^\s*<!DOCTYPE\s+(\w+)\s+PUBLIC\s+($pubid_literal_regex)(?:\s+($system_literal_regex))?
-                  }x;
-
-main();
-
-sub main {
-    my (@cmd_line) = ($0, @ARGV);
-    my @dtd = ();
-    my $indexer;
-    if (! GetOptions(keys(%options)) || $opt_help) {
-        Usage(\%options, "Create an indexed version of the HTML input.");
-        exit 1;
-    }
-    $opt_where = "<address>" unless $opt_where;
-    $opt_prefix = "" unless $opt_prefix;
-    if (defined $opt_dtd) {
-        $indexer = getIndexer($opt_dtd, \@cmd_line);
-    }
-    while (<>) {
-        #
-        # Perform line-oriented actions below.
-        #
-        unless (ref $indexer) {
-            if (m|$dtd_regex|i) {
-                @dtd = split(/\s+/, $2);
-                $indexer = getIndexer($dtd[1], \@cmd_line);
-            }
-        }
-        # APA: If a Markup Language indexer has been instantiated,
-        # then use it!
-        if (ref $indexer and $indexer->isa('ML::Indexer')) {
-            $indexer->skip_index();
-            if ($opt_headline) {
-                $indexer->collect_headlines();
-            }
-            if ($opt_list) {
-                $indexer->collect_lists();
-            }
-            if (m|$opt_where|i) {
-                $indexer->insert_index();
-            }
-            print;
-            if (eof) {
-                close (ARGV);
-            }
-        } else {
-            print;
-        }
-    }
-}
-
-sub byText {
-    my ($a_key) = $a;
-    my ($b_key) = $b;
-    # Good enough for now, but not smart enough to remove all HTML
-    # tags correctly.
-    $a_key =~ s/<[^>]+>//;
-    $b_key =~ s/<[^>]+>//;
-    $a_key cmp $b_key;
-}
-
-sub getIndexer {
-    my $dtd = $_[0];
-    my $cmd_line_ref = $_[1];
-    my $indexer;
-  SWITCH: {
-        if (uc($dtd) eq "XML") {
-            $indexer = XML::Indexer->new({
-                                          'cmd_line' => $cmd_line_ref,
-                                          'prefix' => $opt_prefix,
-                                          'where' => $opt_where,
-                                         });
-            last SWITCH;
-        }
-        if (uc($dtd) eq "XHTML") {
-            $indexer = XHTML::Indexer->new({
-                                            'cmd_line' => $cmd_line_ref,
-                                            'prefix' => $opt_prefix,
-                                            'where' => $opt_where,
-                                           });
-            last SWITCH;
-        }
-        if (uc($dtd) eq "HTML") {
-            $indexer = HTML::Indexer->new({
-                                           'cmd_line' => $cmd_line_ref,
-                                           'prefix' => $opt_prefix,
-                                           'where' => $opt_where,
-                                          });
-            last SWITCH;
-        } else {
-            die "Could not determine DTD, please add one to document or use -dtd";
-            $indexer = ML::Indexer->new();
-        }
-    }
-    return $indexer;
-}

File adrian/website/avail2table.pl

+use strict;
+
+use Getopt::Long;
+use Data::Dumper;
+
+# Generate HTML table with users able to commit CVS repository directory.
+# I use this from ...\xemacs-builds\adrian\website as follows:
+# c:\Perl\bin\perl.exe -w "avail2table.pl" -path XEmacs/xemacsweb ../../../CVSROOT/avail
+
+use vars qw(
+            @ARGV
+            $opt_path
+           );
+
+GetOptions('path=s');
+
+unless (scalar @ARGV) {
+    @ARGV = ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\CVSROOT\\avail");
+}
+
+my %authorized_users;
+my ($availability, $users, $path);
+my @users;
+
+while (<>) {
+    if (m{^\s*((?:un)?avail)\s*}) {
+        ($availability, $users, $path) = split(m{[|\n]}x, $_);
+        @users = split(m{,}x, $users);
+        map {
+            if ($availability eq "avail") {
+                if ($opt_path =~ m{$path}x) {
+                    $authorized_users{$_} = 1;
+                }
+            }
+            if ($availability eq "unavail") {
+                if ($opt_path =~ m{$path}x) {
+                    delete $authorized_users{$_};
+                }
+            }
+        } @users;
+    }
+} continue {
+    close ARGV if eof;         # Not eof()!
+}
+
+# my $d = Data::Dumper->new([\%authorized_users], [qw(authorized_users)]);
+# print $d->Dump;
+
+my @authorized_users = sort(keys(%authorized_users));
+my $n = scalar(@authorized_users);
+my $int_sqrt_n = int(sqrt($n));
+# print "n=$n, int_sqrt_n=$int_sqrt_n\n";
+
+for (my $i = 0; $i < $n; $i++) {
+    unless ($i % $int_sqrt_n) {
+        print "      </tr>\n" if $i;
+        print "      <tr>\n";
+        print "        <!-- one of (td th) -->\n";
+    }
+    printf("        <td>%s</td>\n", $authorized_users[$i]);
+    if ($n - $i == 1) {
+        print "      </tr>\n"
+    }
+}
+
+

File ben/README

-This directory contains scripts used by Ben for developing XEmacs.
-
-I am gradually working on making these scripts more powerful and
-generally applicable.  For the moment, the best-written and
-most-useful scripts are
-
-*****************************************************
-*                   CVS Scripts                     *
-*****************************************************
-
-cvs-diff
-  Generate a more intelligent `cvs diff'.
-
-cvs-update
-  Generate a more intelligent `cvs update'.
-
-cvs-commit
-  Do a smart `crw commit', which works around the buggy CVS server we have
-  that will not process top-level files in some circumstances.
-
-cvs-merge-diff
-  Extremely useful: Do a diff between various versions of a file (pre-merge
-  in this workspace, pre-merge in workspace you did `cvs update' from,
-  ancestor of these two, merged version).
-
-*****************************************************
-*               Search/Replace Scripts              *
-*****************************************************
-
-gr
-  Global search and replace over files specified on the command line.
-  Store old files in `backup/'.
-
-global-replace
-  Version of `gr' meant to be called from
-  `find ... | xargs global-replace ...'.
-
-
-*****************************************************
-*                   Build Scripts                   *
-*****************************************************
-
-I've designed a comprehensive build system.  The idea is that you have
-separate workspaces, and each of them can be configured and built in
-various ways. (This is handled using the --srcdir option when configuring,
-so that the built files go into a separate tree from the source.) You can
-easily issue commands to build a specified workspace according to a
-specified configuration, a list of specified configurations, or all
-possible configurations.  The output that appears on the screen while
-building is happening is filtered, so that only error messages, and a small
-number of status messages showing the major stages, appear.  Both the
-filtered and full output are available in log files.
-
-All configuration information is specified in a single place, the file
-`info-build-config'.  Workspaces are assumed to be parallel subdirectories
-under a single parent, and are specified using the name of the workspace
-directory; that makes it easy to add and move around workspaces without
-constantly having to update the config info.
-
-If an error happens, the build can be continued from where it last left off.
-
-Configurations are given short names (often numerical); each configuration
-is a list of "features" that should or should not be present when building.
-Each feature is a single word that translates to some argument or arguments
-to `configure'.  For example, `cpp' means use C++ to compile.  `mule' means
-compile with Mule support.  `noerror' means no error-checking code. (Each
-feature comes in a positive version and a negative version; the latter
-prefixes "no" onto the positive version.)
-
-build
-  Build (from scratch) or rebuild (after error) a workspace according to
-  specified configurations.
-
-info-build-config
-  Include file specifying all configuration information.
-
-runcc
-  Used by `build': Run a command that compiles XEmacs, but optionally filter
-  out all "normal" output so that only the warnings and such remain.
-
-generate-build-values
-  Converts the features into configure arguments and arguments to other
-  programs.
-
-wscompile
-wsconfig
-wsdir
-scratch-wscompile
-filter-scratch-wscompile
-  Some older and simpler alternatives to `build' when building.  May or may
-  not work perfectly currently.  Need to look into, maybe delete.

File ben/build

-#!/bin/bash
-
-# This is the main entry point for rebuilding a workspace.
-
-# Usage is
-
-# build [--mule-on-win] [--keep-going] [--filtered-output-file FILE] [--full-output-file FILE] WORKSPACE [scratch|rebuild] [all|CONFIGURATION ...]
-
-# CONFIGURATION is a number or number-like constant, see below.  If
-# `scratch' is given, the workspace will be reconfigured and rebuild
-# from scratch; otherwise, compilation will continue from wherever it
-# was before.  The output is filtered of all "normal" messages except
-# for occasional status messages (see `runcc' for how this works and
-# how the change what's filtered), so that only error messages and
-# other unusual output appears.  Both the full and filtered output
-# are saved into files -- per-build output files that are called (by
-# default) `makeout-full.txt' and `makeout-filtered.txt' in the
-# top-level directory of the build tree (i.e. the parallel directory
-# structure containing the build files, not the source tree), and
-# combined output files called (by default) `WORKSPACE-filtered.txt'
-# and `WORKSPACE-full.txt' in the parent directory of all build
-# trees. (The combined and per-build files will differ when more than
-# one build occurs with a single invocation of this script, e.g. when
-# `all' is given as the configuration.)
-
-# All configuration information is contained in `info-build-config'.
-
-# --mule-on-win indicates that in this workspace, Mule support works
-# on MS Windows. (This controls which configurations are selected by
-# `all'.) Currently this is the case only with Ben's or Ikeyama's new
-# Mule workspaces.
-
-# --keep-going specifies the -k flag on make, so that errors do not
-# stop the build. #### Need to generalize, allow for any flags to be
-# passed to the make command line.
-
-# --filtered-output-file and --full-output-file let you override the
-# locations of the combined output files.
-
-# Normally, for convenience, you should create shell aliases to make
-# it easier to run this script.  For example:
-
-## # basic function to build a workspace from scratch.  arguments are
-## # workspace name and configuration(s).
-## function bu()
-## {
-##   ws="$1"
-##   shift
-##   build $ws scratch "$@"
-## }
-## 
-## # basic function to rebuild an existing workspace.  arguments are
-## # workspace name and configuration(s).
-## function rebu()
-## {
-##   ws="$1"
-##   shift
-##   build $ws rebuild "$@"
-## }
-## 
-## # basic function to build a workspace from scratch for workspaces
-## # where the Mule support works under Windows.  arguments are
-## # workspace name and configuration(s).
-## function bum()
-## {
-##   ws="$1"
-##   shift
-##   build --mule-on-win $ws scratch "$@"
-## }
-## 
-## # basic function to rebuild an existing workspace for workspaces where
-## # the Mule support works under Windows.  arguments are
-## # workspace name and configuration(s).
-## function rebum()
-## {
-##   ws="$1"
-##   shift
-##   build --mule-on-win $ws rebuild "$@"
-## }
- 
-. info-build-config
-
-mule_on_win=
-keep_going=
-ws_full_out=
-ws_filtered_out=
-build_full_out=
-build_filtered_out=
-
-workspace=
-configuration=
-command=
-
-badoption=
-while [ "$1" != "" ] && [ "$badoption" = "" ] ; do
-  if [ "$1" = "--mule-on-win" ] ; then
-    mule_on_win=t
-  elif [ "$1" = "--keep-going" ] ; then
-    keep_going="--keep-going"
-  elif [ "$1" = "--full-output-file" ] ; then
-    shift
-    ws_full_out=$1
-  elif [ "$1" = "--filtered-output-file" ] ; then
-    shift
-    ws_filtered_out=$1
-  else
-    badoption=t
-    # echo "Unknown option: $1"
-  fi