Commits

Anonymous committed be13faa

fixup commit for tag 'stephen_current'

Comments (0)

Files changed (86)

.cvsignore

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

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

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

ChangeLog

-2003-08-29  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-build-version): Bump.
-	(pkg-release-sumo): Error when non-Mule.
-	(pkg-release-packages): Ditto.
-
-2003-07-31  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/package-info2table.pl: Remove -quiet switch.
-	* adrian/website/package-info2table.pl (main): Put "Produced by
-	..." information inside HTML comment.
-	* adrian/website/package-info2table.pl (handle_all_files): Trace
-	processing of files when -debug is specified.  Most changes are
-	inspired by suggestions from Norbert Koch.
-
-2003-06-28  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/package-info2table.pl: Convert to use STDERR
-	only.  Clean up some errors, most prominently the listing of
-	unsupported packages.
-
-2003-06-28  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/package-info2table.pl: New script generating HTML
-	table suitable to update xemacsweb\Develop\packages.content from
-	package-info.in files.
-
-2003-04-16  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/README: Update.
-
-	* youngs/announce-prerelease-sumo: New.
-
-2003-04-14  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-build-version): Bump
-	(pkg-sumo-tarball-directory): New.
-	(pkg-std-sumo-install-directory): New.
-	(pkg-mule-sumo-install-directory): New.
-	(pkg-std-sumo-build-flags): Use 'pkg-std-sumo-install-directory'.
-	(pkg-mule-sumo-build-flags): Use
-	'pkg-mule-sumo-install-directory'.
-	(pkg-release-sumo): Use 'pkg-sumo-tarball-directory'.
-
-2003-04-03  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-build-version): Bump.
-	(pkg-make-targets): Use ` and , so we can expand within the
-	alist. 
-	Add an "install-only" target.
-	(pkg-packages-to-release-file): New.
-	(pkg-release-packages-later): New.
-	(pkg-release-packages-from-file): New.
-	(pkg-clear-release-file): New.
-	(pkg-make-bindist): Use `wrong-type-argument' error datum.
-	(pkg-commit-inc-ver): Ditto.
-	(pkg-tag-package): Ditto.
-	(pkg-release-packages): Use `invalid-argument' error datum.
-	Remove unused local variable 'package'.
-	(pkg-release-sumo): Use `invalid-argument' error datum.
-	(pkg-commentary): New.
-
-2003-03-18  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/HTMLindex.pl (collect_headlines): Thanks Ville
-	for submitting this patch originally (2003-01-13)!  Get rid of
-	remaining instances of shape attribute.  Be sure for pattern
-	matches to support old files containing shape attributes.
-	* adrian/website/HTMLindex.pl (insert_index): Ditto.
-	* adrian/website/update-about-created-from-article-buffer.el
-	(update-about-created-from-article-buffer): Ditto.
-
-2003-03-17  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-build-version): Bump.
-	(pkg-make-program): New.
-	(pkg-make-targets): New.
-	(pkg-make-bindist): Use them.
-	(pkg-release-sumo): Ditto.
-	(pkg-get-info): Removed.
-
-2003-03-09  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-staging-directory): New.
-	(pkg-upload-packages): Use it.
-	From Norbert Koch <viteno@xeamcs.org>.
-
-2003-02-05  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-build-version): Increment.
-	(pkg-std-packages): Add some new packages.
-	(pkg-std-sumo-build-flags): Update to reflect Ben's variable name
-	changes. 
-	(pkg-mule-sumo-build-flags): Ditto.
-
-2003-01-13  Ville Skytt�  <scop@xemacs.org>
-
-	* xre (announce_web_release): Remove redundant use of
-	shape="rect" in anchors.
-
-2003-01-11  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/HTMLindex.pl: Typo fix for typo fix.
-
-2003-01-11  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/HTMLindex.pl: Copycat typo fix.
-
-2002-10-17  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/update-about-created-from-article-buffer.el
-	(update-about-created-from-article-buffer): Expand definition of
-	`indent-region-or-balanced-expression' which is not in 21.4.
-
-2002-09-26  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-std-packages): Update.
-
-2002-09-19  Rendhalver [Peter Brown]  <rendhalver@xemacs.org>
-
-	* rendhalver New subdirectory
-
-2002-09-01  Ville Skytt�  <ville.skytta@xemacs.org>
-
-	* scop: New subdirectory.
-
-2002-08-18  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/update-about-created-from-article-buffer.el
-	(update-about-created-from-article-buffer): New.
-
-2002-08-12  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-upload-packages): Temporarily set
-	default-directory when deleting files in pkg-upload-directory.
-	(pkg-build-version): Bump.
-
-2002-08-11  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-copy-cmd): New.
-	(pkg-copy-glob): New.
-	(pkg-make-bindist): Use them.
-	Don't use concat to construct any paths.
-
-2002-08-10  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-std-packages): Add docbookide, ecrypto,
-	ocaml, sasl, and sml-mode.
-	(pkg-build-version): Bump.
-	(pkg-base-directory): Use 'file-name-as-directory'.
-	(pkg-std-directory): Ditto.
-	(pkg-mule-directory): Ditto.
-	(pkg-working-base-directory): Ditto.
-	(pkg-working-std-directory): Ditto.
-	(pkg-working-mule-directory): Ditto.
-	(pkg-upload-directory): Ditto.
-	(pkg-sumo-tar-gzip): Use '--use-compress-program'.
-	(pkg-sumo-tar-bzip): Ditto.
-	(pkg-ftp-username): Remove.
-	(pkg-remote-path): Include username.
-	(pkg-customize): Autoload it.
-	(pkg-version): Ditto.
-	(pkg-release-packages): Ditto.
-	(pkg-release-sumo): Ditto.
-	(pkg-get-info): Ditto.
-	(pkg-release-sumo): Don't use concat to construct any paths.
-	(pkg-release-packages): Ditto.
-	(pkg-upload-packages): Ditto.
-	(pkg-tag-package): Ditto.
-	(pkg-commit-inc-ver): Ditto.
-
-2002-08-02  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el: Checkdoc fixes.
-	(pkg-version): Forgot to make the arg optional and the "P"
-	interactive spec.
-	(pkg-build-version): Bump.
-
-2002-08-01  Steve Youngs  <youngs@xemacs.org>
-
-	* youngs/pkg-build.el (pkg-commit-inc-ver): Add a "/" to the
-	constructed directory name.
-	(pkg-tag-package): Ditto.
-	(pkg-release-sumo): Ditto.
-	(pkg-sumo-tar-gzip): New.
-	(pkg-sumo-tar-bzip): New.
-	(pkg-release-sumo): Use them.
-	(pkg-upload-packages): Erase the package-index.gpg buffer before
-	signing package-index.
-	(pkg-release-packages): Fix bug with package version ending with
-	one or more zeroes.
-	(pkg-tag-package): Ditto.
-	(pkg-upload-packages): Optionally delete any file that is in the
-	upload directory before we copy any files into it.
-	(pkg-build-version): New.
-	(pkg-version): New.
-
-2002-07-23  Stephen J. Turnbull  <stephen@xemacs.org>
-
-	* stephen: New subdirectory.
-
-	* xre.py: Moved to stephen/xre-old.py.
-
-2002-07-09  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/HTMLindex.pl: New script to update "Document
-	Index" in xemacsweb/About/Website.content,
-	xemacsweb/Download/elispPackages.content,
-	xemacsweb/Download/how-to-mirror-ftp.content
-
-2002-07-08  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/typology/improper-an-typo.pl: Check improper use of "a"
-	as well.  Whitespace fix.
-	* adrian/typology/improper-form-typo.pl: Whitespace fix.
-	* adrian/typology/phrase-duplication-typo.pl: Ditto.
-
-2002-07-07  Adrian Aichner  <adrian@xemacs.org>
-
-	* adrian/website/avail2table.pl: New script to update commiter
-	table in xemacsweb/About/Website.content.
-	* xemacs-release.texi (Overview): Correct xemacs-builds module
-	reference.
-
-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.
-

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

Codenames-21.1

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

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

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

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

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

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

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

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.

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

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

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;

adrian/typology/improper-an-typo.pl

-use strict;
-
-# Match likely typos like the following:
-# An long explanation is unnecessary.
-# An 5-foot sword
-
-# EXAMPLE (Windows 2000/Cygwin):
-# cd c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.4\man\
-# c:\cygwin\bin\find . -name "*.texi" -exec perl %HOME%\pl\improper-an-typo.pl \{\} ;
-# Compilation started at Fri Jul 05 16:19:22 2002 +0200 (W. Europe Daylight Time)
-# ./lispref/control.texi:925:condition superclasses has an @code{display-error} property, that
-# ./lispref/mule.texi:808:registers, specifying an 7 or 8 bit environment, and specifying whether
-# ./lispref/packaging.texi:464:A single-file package is an collection of thematically related but
-# ./lispref/text.texi:2764:rfc1321.  Given a message of arbitrary length, MD5 produces an 128-bit
-# ./standards.texi:1670:Specify an HTTP proxy.
-# ./widget.texi:72:An button item only intended for use in choices.  When invoked, the user
-# ./xemacs/menus.texi:226:@c point an the mark as well as regions selected with the mouse. To change
-
-# Compilation finished at Fri Jul 05 16:19:37
-
-my $improper_an_typo_regex = qr{
-                                \ban\s+(\@[a-z]+\{|\`+|\")?[b-dghjkp-qtvwyz0-79]
-                                |
-                                # be conservative in error detection
-                                # until we upgrade to vowel sound regex.
-                                # Hmmh, u... often sounds like yu
-                                # (user), o... like w (one) requiring
-                                # "a".
-                                \ba\s+(\@[a-z]+\{|\`+|\")?[aei8]
-                               }xi;
-
-while (<>) {
-    if (m|$improper_an_typo_regex|) {
-        printf "%s:%d:%s", $ARGV, $., $_;
-    }
-} continue {
-    close ARGV if eof;         # Not eof()!
-}

adrian/typology/improper-form-typo.pl

-use strict;
-
-# Match likely typos like the following:
-# "form me", instead of "from me".
-
-# EXAMPLE (Windows 2000/Cygwin):
-# cd c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.4\man\
-# c:\cygwin\bin\find . -name "*.texi" -exec perl %HOME%\pl\improper-form-typo.pl \{\} ;
-my $improper_form_typo_regex = qr{
-                    (^|\s+)(form)\s+(this|the|a|no|one|our|my|your|their|now)
-                   }x;
-
-while (<>) {
-    if (m|$improper_form_typo_regex|i) {
-        printf "%s:%d:%s", $ARGV, $., $_;
-    }
-} continue {
-    close ARGV if eof;         # Not eof()!
-}

adrian/typology/phrase-duplication-typo.pl

-use strict;
-
-# Match likely typos like the following:
-# I cannot cannot think.
-# I have to have to check more carefully.
-
-# EXAMPLE (Windows 2000/Cygwin):
-# cd c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.4\man\
-# c:\cygwin\bin\find . -name "*.texi" -exec perl %HOME%\pl\phrase-duplication-typo.pl \{\} ;
-my $phrase_duplication_regex = qr{
-                    (^|\s+)([-a-zA-Z_][-a-zA-Z_0-9]*(\s+[-a-zA-Z_][-a-zA-Z_0-9]*)*)\s+\2\b
-                   }x;
-
-while (<>) {
-    if (m|$phrase_duplication_regex|) {
-        printf "%s:%d:%s", $ARGV, $., $_;
-    }
-} continue {
-    close ARGV if eof;         # Not eof()!
-}

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 ";
-        my $cmd_line = $cgi->escapeHTML("@cmd_line");
-        # See http://www.xml.com/axml/target.html#sec-comments
-        $cmd_line =~ s{-}{&\#45;}g;
-        print $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 XHTML 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">$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 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 ";
-        my $cmd_line = $cgi->escapeHTML("@cmd_line");
-        # See http://www.xml.com/axml/target.html#sec-comments
-        $cmd_line =~ s{-}{&\#45;}g;
-        print $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 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