summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/usr.bin/cvs/Makefile.in35
-rw-r--r--gnu/usr.bin/cvs/configure448
-rw-r--r--gnu/usr.bin/cvs/configure.in34
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/.cvsignore19
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/ChangeLog766
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/INSTALL89
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/Makefile.in109
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/NEWS113
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/README29
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.el133
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.elcbin2938 -> 0 bytes
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-startup.el14
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.aux99
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.el2485
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.elcbin78668 -> 0 bytes
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info66
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-11195
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-2449
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.ps3288
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo1744
-rw-r--r--gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex4381
-rw-r--r--gnu/usr.bin/cvs/cvsinit.sh161
-rw-r--r--gnu/usr.bin/cvs/examples/.cvsignore1
-rw-r--r--gnu/usr.bin/cvs/examples/ChangeLog40
-rw-r--r--gnu/usr.bin/cvs/examples/Makefile.in94
-rw-r--r--gnu/usr.bin/cvs/examples/checkoutlist18
-rw-r--r--gnu/usr.bin/cvs/examples/commitinfo27
-rw-r--r--gnu/usr.bin/cvs/examples/cvswrappers43
-rw-r--r--gnu/usr.bin/cvs/examples/editinfo30
-rw-r--r--gnu/usr.bin/cvs/examples/loginfo36
-rw-r--r--gnu/usr.bin/cvs/examples/modules576
-rw-r--r--gnu/usr.bin/cvs/examples/notify11
-rw-r--r--gnu/usr.bin/cvs/examples/rcsinfo18
-rw-r--r--gnu/usr.bin/cvs/examples/rcstemplate7
-rw-r--r--gnu/usr.bin/cvs/examples/taginfo25
-rw-r--r--gnu/usr.bin/cvs/examples/unwrap21
-rw-r--r--gnu/usr.bin/cvs/examples/wrap21
-rw-r--r--gnu/usr.bin/cvs/lib/getdate.c1977
-rw-r--r--gnu/usr.bin/cvs/man/cvsinit.8142
-rw-r--r--gnu/usr.bin/cvs/src/commit.c214
-rw-r--r--gnu/usr.bin/cvs/src/cvs.h66
-rw-r--r--gnu/usr.bin/cvs/src/ignore.c52
-rw-r--r--gnu/usr.bin/cvs/src/lock.c63
-rw-r--r--gnu/usr.bin/cvs/src/main.c51
-rw-r--r--gnu/usr.bin/cvs/src/patch.c44
-rw-r--r--gnu/usr.bin/cvs/src/server.c213
-rw-r--r--gnu/usr.bin/cvs/src/update.c72
-rw-r--r--gnu/usr.bin/cvs/windows-NT/alloca.h26
48 files changed, 1929 insertions, 17616 deletions
diff --git a/gnu/usr.bin/cvs/Makefile.in b/gnu/usr.bin/cvs/Makefile.in
index 1a6b83b1813..a66311c9762 100644
--- a/gnu/usr.bin/cvs/Makefile.in
+++ b/gnu/usr.bin/cvs/Makefile.in
@@ -93,19 +93,17 @@ DISTFILES = \
BUGS MINOR-BUGS FAQ HACKING \
ChangeLog NEWS ChangeLog.zoo \
configure configure.in stamp-h.in config.h.in Makefile.in acconfig.h \
- cvs-format.el mkinstalldirs install-sh cvsinit.sh \
+ cvs-format.el mkinstalldirs install-sh \
cvsnt.mak \
.cvsignore
-PROGS = cvsinit
-
### Subdirectories to run make in for the primary targets.
# Unix source subdirs, where we'll want to run lint and etags:
USOURCE_SUBDIRS = lib src
# Documentation directories; special handling
INSTALL_MAN=man
# All other subdirs:
-SUBDIRS = ${USOURCE_SUBDIRS} ${INSTALL_MAN} doc contrib examples windows-NT os2 macintosh
+SUBDIRS = ${USOURCE_SUBDIRS} ${INSTALL_MAN} doc contrib tools windows-NT os2 macintosh
# Only make TAGS/tags files in these directories, in this order
# [Why in this order? If we didn't have to stick to this order, we
# could make "TSUBDIRS = ${USOURCE_SUBDIRS}". -Karl]
@@ -124,19 +122,7 @@ all install uninstall: config.h Makefile all-local
install: all install-local install-info
.PHONY: all-local
-all-local: $(PROGS)
-
-cvsinit: cvsinit.sh
- echo > .fname \
- cvs-`sed < $(srcdir)/src/version.c \
- -e '/version_string/!d' \
- -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
- -e q`
- sed -e 's,xLIBDIRx,$(libdir)/cvs,g' \
- -e "s,xVERSIONx,`cat .fname`,g" $(srcdir)/cvsinit.sh > $@-t
- rm -f .fname
- mv $@-t $@
- chmod a+x $@
+all-local:
.PHONY: info dvi clean-info install-info
info dvi clean-info install-info:
@@ -144,10 +130,7 @@ info dvi clean-info install-info:
.PHONY: install-local
install-local: all-local
- @for prog in $(PROGS); do \
- echo Installing $$prog in $(bindir); \
- $(INSTALL) $$prog $(bindir)/$$prog ; \
- done
+ @: nothing to do locally
.PHONY: tags
tags:
@@ -186,7 +169,7 @@ realclean: realclean-local
.PHONY: mostlyclean-local
mostlyclean-local:
- rm -f *~ $(PROGS)
+ rm -f *~
.PHONY: clean-local
clean-local: mostlyclean-local
@@ -265,10 +248,12 @@ config.status: configure
config.h: stamp-h
-# The ./config.status --recheck line is to update config.status with
-# any new #defines from config.h.in.
+# This used to do a ./config.status --recheck, to update config.status with
+# any new #defines from config.h.in. The problem was that the rule itself
+# depends on config.status, so that the --recheck would get run several
+# times, which is bad if the user was trying to specify CFLAGS manually.
+# It was a big pain in the neck.
stamp-h: config.h.in config.status
- ./config.status --recheck
CONFIG_FILES=$@ CONFIG_HEADERS=config.h ./config.status
#config.h.in: stamp-h.in
diff --git a/gnu/usr.bin/cvs/configure b/gnu/usr.bin/cvs/configure
index 9b115c27086..3025eefa4ea 100644
--- a/gnu/usr.bin/cvs/configure
+++ b/gnu/usr.bin/cvs/configure
@@ -1,8 +1,8 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.7
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
+# Generated automatically using autoconf version 2.9
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
@@ -332,7 +332,7 @@ EOF
verbose=yes ;;
-version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.7"
+ echo "configure generated by autoconf version 2.9"
exit 0 ;;
-with-* | --with-*)
@@ -497,12 +497,9 @@ fi
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='echo $CPP $CPPFLAGS 1>&5;
-$CPP $CPPFLAGS'
-ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5;
-${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5'
-ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5;
-${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5'
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
@@ -537,7 +534,6 @@ else
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="cc"
fi
fi
CC="$ac_cv_prog_CC"
@@ -547,6 +543,55 @@ else
echo "$ac_t""no" 1>&6
fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ ac_prog_rejected=no
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# -gt 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ set dummy "$ac_dir/$ac_word" "$@"
+ shift
+ ac_cv_prog_CC="$@"
+ fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
@@ -557,7 +602,7 @@ else
yes;
#endif
EOF
-if ${CC-cc} -E conftest.c 2>&5 | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -610,12 +655,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 614 "configure"
+#line 659 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
@@ -624,12 +670,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 628 "configure"
+#line 674 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
@@ -651,7 +698,7 @@ echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for AIX""... $ac_c" 1>&6
cat > conftest.$ac_ext <<EOF
-#line 655 "configure"
+#line 702 "configure"
#include "confdefs.h"
#ifdef _AIX
yes
@@ -678,11 +725,12 @@ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 682 "configure"
+#line 729 "configure"
#include "confdefs.h"
#include <minix/config.h>
EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -788,11 +836,11 @@ else
ac_cv_c_cross=yes
else
cat > conftest.$ac_ext <<EOF
-#line 792 "configure"
+#line 840 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-eval $ac_link
+{ (eval echo configure:844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
ac_cv_c_cross=no
else
@@ -811,7 +859,7 @@ if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 815 "configure"
+#line 863 "configure"
#include "confdefs.h"
int main() { return 0; }
@@ -861,7 +909,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if eval $ac_compile; then
+if { (eval echo configure:913: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -887,7 +935,7 @@ else
if test "$GCC" = yes; then
# GCC predefines this symbol on systems where it applies.
cat > conftest.$ac_ext <<EOF
-#line 891 "configure"
+#line 939 "configure"
#include "confdefs.h"
#ifdef __CHAR_UNSIGNED__
yes
@@ -909,7 +957,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 913 "configure"
+#line 961 "configure"
#include "confdefs.h"
/* volatile prevents gcc2 from optimizing the test away on sparcs. */
#if !defined(__STDC__) || __STDC__ != 1
@@ -919,7 +967,7 @@ main() {
volatile char c = 255; exit(c < 0);
}
EOF
-eval $ac_link
+{ (eval echo configure:971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
ac_cv_c_char_unsigned=yes
else
@@ -945,7 +993,7 @@ else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 949 "configure"
+#line 997 "configure"
#include "confdefs.h"
int main() { return 0; }
@@ -953,7 +1001,7 @@ int t() {
} $ac_kw foo() {
; return 0; }
EOF
-if eval $ac_compile; then
+if { (eval echo configure:1005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
fi
@@ -1238,14 +1286,15 @@ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1242 "configure"
+#line 1290 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1298: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1260,7 +1309,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1264 "configure"
+#line 1313 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1278,7 +1327,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1282 "configure"
+#line 1331 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -1299,7 +1348,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 1303 "configure"
+#line 1352 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1310,7 +1359,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-eval $ac_link
+{ (eval echo configure:1363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
:
else
@@ -1339,11 +1388,12 @@ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1343 "configure"
+#line 1392 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
-eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1397: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1372,7 +1422,7 @@ if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1376 "configure"
+#line 1426 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -1389,7 +1439,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if eval $ac_compile; then
+if { (eval echo configure:1443: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -1413,7 +1463,7 @@ if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1417 "configure"
+#line 1467 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -1468,7 +1518,7 @@ if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1472 "configure"
+#line 1522 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -1478,7 +1528,7 @@ int t() {
struct tm *tp;
; return 0; }
EOF
-if eval $ac_compile; then
+if { (eval echo configure:1532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -1506,7 +1556,7 @@ if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1510 "configure"
+#line 1560 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -1515,7 +1565,7 @@ int t() {
DIR *dirp = 0;
; return 0; }
EOF
-if eval $ac_compile; then
+if { (eval echo configure:1569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -1539,22 +1589,24 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for -ldir""... $ac_c" 1>&6
-ac_lib_var=`echo dir | tr '.-/+' '___p'`
+ac_lib_var=`echo dir_opendir | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1550 "configure"
+#line 1600 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char opendir();
int main() { return 0; }
int t() {
opendir()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:1610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1574,22 +1626,24 @@ fi
else
echo $ac_n "checking for -lx""... $ac_c" 1>&6
-ac_lib_var=`echo x | tr '.-/+' '___p'`
+ac_lib_var=`echo x_opendir | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1585 "configure"
+#line 1637 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char opendir();
int main() { return 0; }
int t() {
opendir()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:1647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1614,7 +1668,7 @@ if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1618 "configure"
+#line 1672 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -1632,7 +1686,7 @@ int t() {
int i;
; return 0; }
EOF
-if eval $ac_compile; then
+if { (eval echo configure:1690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -1654,7 +1708,7 @@ if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1658 "configure"
+#line 1712 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -1687,7 +1741,7 @@ if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1691 "configure"
+#line 1745 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1718,7 +1772,7 @@ if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1722 "configure"
+#line 1776 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1749,7 +1803,7 @@ if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1753 "configure"
+#line 1807 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1782,7 +1836,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1786 "configure"
+#line 1840 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1804,7 +1858,7 @@ $ac_func();
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:1862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1824,14 +1878,14 @@ fi
done
-for ac_func in fchmod fsync ftime mkfifo putenv setvbuf vfork vprintf ftruncate timezone getpagesize fchdir sigaction sigprocmask sigvec sigsetmask sigblock
+for ac_func in fchmod fsync ftime mkfifo putenv setvbuf vfork vprintf ftruncate timezone getpagesize initgroups fchdir sigaction sigprocmask sigvec sigsetmask sigblock
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1835 "configure"
+#line 1889 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1853,7 +1907,7 @@ $ac_func();
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:1911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1880,7 +1934,7 @@ if eval "test \"`echo '$''{'ac_cv_func_re_exec'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1884 "configure"
+#line 1938 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char re_exec(); below. */
@@ -1902,7 +1956,7 @@ re_exec();
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_re_exec=yes"
else
@@ -1930,7 +1984,7 @@ if test "$cross_compiling" = yes; then
ac_cv_func_utime_null=no
else
cat > conftest.$ac_ext <<EOF
-#line 1934 "configure"
+#line 1988 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -1941,7 +1995,7 @@ exit(!(stat ("conftestdata", &s) == 0 && utime("conftestdata", (long *)0) == 0
&& t.st_mtime - s.st_mtime < 120));
}
EOF
-eval $ac_link
+{ (eval echo configure:1999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
ac_cv_func_utime_null=yes
else
@@ -2005,19 +2059,19 @@ else
ccvs_cv_sys_working_fnmatch=no
else
cat > conftest.$ac_ext <<EOF
-#line 2009 "configure"
+#line 2063 "configure"
#include "confdefs.h"
#include <fnmatch.h>
int
main ()
{
- exit ((fnmatch ("a", "a", FNM_FILE_NAME) == 0
- && fnmatch ("a", "b", FNM_FILE_NAME) == FNM_NOMATCH)
+ exit ((fnmatch ("a", "a", FNM_PATHNAME) == 0
+ && fnmatch ("a", "b", FNM_PATHNAME) == FNM_NOMATCH)
? 0 : 1);
}
EOF
-eval $ac_link
+{ (eval echo configure:2075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
ccvs_cv_sys_working_fnmatch=yes
else
@@ -2050,7 +2104,7 @@ else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 2054 "configure"
+#line 2108 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
@@ -2061,7 +2115,7 @@ main()
exit(0);
}
EOF
-eval $ac_link
+{ (eval echo configure:2119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
ac_cv_sizeof_long=`cat conftestval`
else
@@ -2084,7 +2138,7 @@ else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 2088 "configure"
+#line 2142 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
@@ -2095,7 +2149,7 @@ main()
exit(0);
}
EOF
-eval $ac_link
+{ (eval echo configure:2153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
ac_cv_sizeof_int=`cat conftestval`
else
@@ -2114,7 +2168,7 @@ EOF
krb_h=
echo $ac_n "checking for krb.h""... $ac_c" 1>&6
cat > conftest.$ac_ext <<EOF
-#line 2118 "configure"
+#line 2172 "configure"
#include "confdefs.h"
#include <krb.h>
int main() { return 0; }
@@ -2122,7 +2176,7 @@ int t() {
int i;
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
krb_h=yes krb_incdir=
else
@@ -2131,7 +2185,7 @@ else
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -I$KRB4/include"
cat > conftest.$ac_ext <<EOF
-#line 2135 "configure"
+#line 2189 "configure"
#include "confdefs.h"
#include <krb.h>
int main() { return 0; }
@@ -2139,7 +2193,7 @@ int t() {
int i;
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
krb_h=yes krb_incdir=$KRB4/include
fi
@@ -2152,7 +2206,7 @@ rm -f conftest*
if test -z "$krb_h"; then
cat > conftest.$ac_ext <<EOF
-#line 2156 "configure"
+#line 2210 "configure"
#include "confdefs.h"
#include <krb.h>
int main() { return 0; }
@@ -2160,7 +2214,7 @@ int t() {
int i;
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
krb_h=yes krb_incdir=
else
@@ -2169,7 +2223,7 @@ else
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -I$KRB4/include/kerberosIV"
cat > conftest.$ac_ext <<EOF
-#line 2173 "configure"
+#line 2227 "configure"
#include "confdefs.h"
#include <krb.h>
int main() { return 0; }
@@ -2177,7 +2231,7 @@ int t() {
int i;
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
krb_h=yes krb_incdir=$KRB4/include/kerberosIV
fi
@@ -2194,22 +2248,24 @@ echo "$ac_t""$krb_h" 1>&6
if test -n "$krb_h"; then
krb_lib=
echo $ac_n "checking for -lkrb""... $ac_c" 1>&6
-ac_lib_var=`echo krb | tr '.-/+' '___p'`
+ac_lib_var=`echo krb_printf | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lkrb $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2205 "configure"
+#line 2259 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char printf();
int main() { return 0; }
int t() {
-main()
+printf()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2238,22 +2294,24 @@ EOF
test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
LIBS="${LIBS} -lkrb"
echo $ac_n "checking for -ldes""... $ac_c" 1>&6
-ac_lib_var=`echo des | tr '.-/+' '___p'`
+ac_lib_var=`echo des_printf | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-ldes $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2249 "configure"
+#line 2305 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char printf();
int main() { return 0; }
int t() {
-main()
+printf()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2284,7 +2342,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2288 "configure"
+#line 2346 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2306,7 +2364,7 @@ $ac_func();
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2339,7 +2397,7 @@ if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2343 "configure"
+#line 2401 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -2361,7 +2419,7 @@ connect();
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_connect=yes"
else
@@ -2379,22 +2437,24 @@ else
case "$LIBS" in
*-lnsl*) ;;
*) echo $ac_n "checking for -lnsl_s""... $ac_c" 1>&6
-ac_lib_var=`echo nsl_s | tr '.-/+' '___p'`
+ac_lib_var=`echo nsl_s_printf | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lnsl_s $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2390 "configure"
+#line 2448 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char printf();
int main() { return 0; }
int t() {
-main()
+printf()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2422,22 +2482,24 @@ esac
case "$LIBS" in
*-lnsl*) ;;
*) echo $ac_n "checking for -lnsl""... $ac_c" 1>&6
-ac_lib_var=`echo nsl | tr '.-/+' '___p'`
+ac_lib_var=`echo nsl_printf | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2433 "configure"
+#line 2493 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char printf();
int main() { return 0; }
int t() {
-main()
+printf()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2465,22 +2527,24 @@ esac
case "$LIBS" in
*-lsocket*) ;;
*) echo $ac_n "checking for -lsocket""... $ac_c" 1>&6
-ac_lib_var=`echo socket | tr '.-/+' '___p'`
+ac_lib_var=`echo socket_connect | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2476 "configure"
+#line 2538 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char connect();
int main() { return 0; }
int t() {
connect()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2508,22 +2572,24 @@ esac
case "$LIBS" in
*-linet*) ;;
*) echo $ac_n "checking for -linet""... $ac_c" 1>&6
-ac_lib_var=`echo inet | tr '.-/+' '___p'`
+ac_lib_var=`echo inet_connect | tr '.-/+' '___p'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-linet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2519 "configure"
+#line 2583 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char connect();
int main() { return 0; }
int t() {
connect()
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2556,7 +2622,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2560 "configure"
+#line 2626 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2578,7 +2644,7 @@ $ac_func();
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2608,7 +2674,7 @@ if eval "test \"`echo '$''{'ac_cv_func_gethostname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2612 "configure"
+#line 2678 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostname(); below. */
@@ -2630,7 +2696,7 @@ gethostname();
; return 0; }
EOF
-if eval $ac_link; then
+if { (eval echo configure:2700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_gethostname=yes"
else
@@ -2659,11 +2725,155 @@ cat >> confdefs.h <<\EOF
#define SERVER_SUPPORT 1
EOF
-# As far as I know this works on all machines which use configure (i.e. unix)
-cat >> confdefs.h <<\EOF
+# Define AUTH_SERVER_SUPPORT only if we could locate the crypt() function
+unset ac_cv_func_crypt
+echo $ac_n "checking for crypt""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_crypt'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2736 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char crypt(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+char crypt();
+
+int main() { return 0; }
+int t() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_crypt) || defined (__stub___crypt)
+choke me
+#else
+crypt();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ rm -rf conftest*
+ eval "ac_cv_func_crypt=yes"
+else
+ rm -rf conftest*
+ eval "ac_cv_func_crypt=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_func_'crypt`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ :
+else
+ echo "$ac_t""no" 1>&6
+case "$LIBS" in
+*-lcrypt*) ;;
+*) echo $ac_n "checking for -lcrypt""... $ac_c" 1>&6
+ac_lib_var=`echo crypt_crypt | tr '.-/+' '___p'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lcrypt $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2783 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+char crypt();
+
+int main() { return 0; }
+int t() {
+crypt()
+; return 0; }
+EOF
+if { (eval echo configure:2793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_lib=HAVE_LIB`echo crypt | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+ LIBS="-lcrypt $LIBS"
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+ ;;
+esac
+unset ac_cv_func_crypt
+for ac_func in crypt
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2826 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+char $ac_func();
+
+int main() { return 0; }
+int t() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2848: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+fi
+
+ if test "$ac_cv_func_crypt" = yes; then
+ cat >> confdefs.h <<\EOF
#define AUTH_SERVER_SUPPORT 1
EOF
+ fi
fi
test -f src/options.h && (
@@ -2749,7 +2959,7 @@ do
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.7"
+ echo "$CONFIG_STATUS generated by autoconf version 2.9"
exit 0 ;;
-help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;;
@@ -2761,9 +2971,9 @@ ac_given_srcdir=$srcdir
ac_given_INSTALL="$INSTALL"
trap 'rm -fr `echo "Makefile lib/Makefile src/Makefile doc/Makefile \
- man/Makefile contrib/Makefile contrib/pcl-cvs/Makefile \
- examples/Makefile windows-NT/Makefile os2/Makefile \
- macintosh/Makefile stamp-h config.h src/options.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+ man/Makefile tools/Makefile tools/pcl-cvs/Makefile \
+ contrib/Makefile contrib/elib/Makefile \
+ windows-NT/Makefile os2/Makefile macintosh/Makefile stamp-h config.h src/options.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -2812,9 +3022,9 @@ EOF
cat >> $CONFIG_STATUS <<EOF
CONFIG_FILES=\${CONFIG_FILES-"Makefile lib/Makefile src/Makefile doc/Makefile \
- man/Makefile contrib/Makefile contrib/pcl-cvs/Makefile \
- examples/Makefile windows-NT/Makefile os2/Makefile \
- macintosh/Makefile stamp-h"}
+ man/Makefile tools/Makefile tools/pcl-cvs/Makefile \
+ contrib/Makefile contrib/elib/Makefile \
+ windows-NT/Makefile os2/Makefile macintosh/Makefile stamp-h"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
@@ -2913,7 +3123,7 @@ rm -f conftest.vals
cat > conftest.hdr <<\EOF
s/[\\&%]/\\&/g
s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
s%ac_d%ac_u%gp
s%ac_u%ac_e%gp
EOF
diff --git a/gnu/usr.bin/cvs/configure.in b/gnu/usr.bin/cvs/configure.in
index 246c92fa29b..554a401fa6a 100644
--- a/gnu/usr.bin/cvs/configure.in
+++ b/gnu/usr.bin/cvs/configure.in
@@ -50,7 +50,7 @@ AC_TYPE_MODE_T
AC_TYPE_SIZE_T
AC_TYPE_PID_T
AC_REPLACE_FUNCS(getwd mkdir rename strdup strstr dup2 strerror valloc waitpid memmove vasprintf strtoul)
-AC_CHECK_FUNCS(fchmod fsync ftime mkfifo putenv setvbuf vfork vprintf ftruncate timezone getpagesize fchdir sigaction sigprocmask sigvec sigsetmask sigblock)
+AC_CHECK_FUNCS(fchmod fsync ftime mkfifo putenv setvbuf vfork vprintf ftruncate timezone getpagesize initgroups fchdir sigaction sigprocmask sigvec sigsetmask sigblock)
AC_CHECK_FUNC(re_exec, :, LIBOBJS="$LIBOBJS regex.o")
AC_FUNC_UTIME_NULL
AC_SYS_LONG_FILE_NAMES
@@ -62,8 +62,8 @@ AC_CACHE_VAL(ccvs_cv_sys_working_fnmatch,
int
main ()
{
- exit ((fnmatch ("a", "a", FNM_FILE_NAME) == 0
- && fnmatch ("a", "b", FNM_FILE_NAME) == FNM_NOMATCH)
+ exit ((fnmatch ("a", "a", FNM_PATHNAME) == 0
+ && fnmatch ("a", "b", FNM_PATHNAME) == FNM_NOMATCH)
? 0 : 1);
}],
ccvs_cv_sys_working_fnmatch=yes,
@@ -116,7 +116,7 @@ AC_MSG_RESULT($krb_h)
if test -n "$krb_h"; then
krb_lib=
- AC_CHECK_LIB(krb,main,[krb_lib=yes krb_libdir=],
+ AC_CHECK_LIB(krb,printf,[krb_lib=yes krb_libdir=],
[if test "$cross_compiling" != yes && test -r $KRB4/lib/libkrb.a; then
krb_lib=yes krb_libdir=$KRB4/lib
fi])
@@ -124,7 +124,7 @@ if test -n "$krb_h"; then
AC_DEFINE(HAVE_KERBEROS)
test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
LIBS="${LIBS} -lkrb"
- AC_CHECK_LIB(des,main,[LIBS="${LIBS} -ldes"])
+ AC_CHECK_LIB(des,printf,[LIBS="${LIBS} -ldes"])
if test -n "$krb_incdir"; then
includeopt="${includeopt} -I$krb_incdir"
AC_SUBST(includeopt)
@@ -141,11 +141,11 @@ unset ac_cv_func_connect
AC_CHECK_FUNC(connect, :,
[case "$LIBS" in
*-lnsl*) ;;
-*) AC_CHECK_LIB(nsl_s, main) ;;
+*) AC_CHECK_LIB(nsl_s, printf) ;;
esac
case "$LIBS" in
*-lnsl*) ;;
-*) AC_CHECK_LIB(nsl, main) ;;
+*) AC_CHECK_LIB(nsl, printf) ;;
esac
case "$LIBS" in
*-lsocket*) ;;
@@ -164,8 +164,18 @@ AC_CHECK_FUNC(gethostname, :, LIBOBJS="$LIBOBJS hostname.o")
if test "$ac_cv_func_connect" = yes; then
AC_DEFINE(CLIENT_SUPPORT)
AC_DEFINE(SERVER_SUPPORT)
-# As far as I know this works on all machines which use configure (i.e. unix)
-AC_DEFINE(AUTH_SERVER_SUPPORT)
+# Define AUTH_SERVER_SUPPORT only if we could locate the crypt() function
+unset ac_cv_func_crypt
+AC_CHECK_FUNC(crypt, :,
+[case "$LIBS" in
+*-lcrypt*) ;;
+*) AC_CHECK_LIB(crypt, crypt) ;;
+esac
+unset ac_cv_func_crypt
+AC_CHECK_FUNCS(crypt)])
+ if test "$ac_cv_func_crypt" = yes; then
+ AC_DEFINE(AUTH_SERVER_SUPPORT)
+ fi
fi
test -f src/options.h && (
@@ -176,6 +186,6 @@ test -f src/options.h && (
)
AC_OUTPUT(Makefile lib/Makefile src/Makefile doc/Makefile \
- man/Makefile contrib/Makefile contrib/pcl-cvs/Makefile \
- examples/Makefile windows-NT/Makefile os2/Makefile \
- macintosh/Makefile stamp-h)
+ man/Makefile tools/Makefile tools/pcl-cvs/Makefile \
+ contrib/Makefile contrib/elib/Makefile \
+ windows-NT/Makefile os2/Makefile macintosh/Makefile stamp-h)
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/.cvsignore b/gnu/usr.bin/cvs/contrib/pcl-cvs/.cvsignore
deleted file mode 100644
index d8c4f2ace56..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/.cvsignore
+++ /dev/null
@@ -1,19 +0,0 @@
-Makefile
-pcl-cvs.info*
-pcl-cvs.aux
-pcl-cvs.cp
-pcl-cvs.cps
-pcl-cvs.dvi
-pcl-cvs.fn
-pcl-cvs.fns
-pcl-cvs.ky
-pcl-cvs.kys
-pcl-cvs.log
-pcl-cvs.pg
-pcl-cvs.pgs
-pcl-cvs.toc
-pcl-cvs.tp
-pcl-cvs.tps
-pcl-cvs.vr
-pcl-cvs.vrs
-pcl-cvs.ps
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/ChangeLog b/gnu/usr.bin/cvs/contrib/pcl-cvs/ChangeLog
deleted file mode 100644
index 1d6483d54fe..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/ChangeLog
+++ /dev/null
@@ -1,766 +0,0 @@
-Sun Jul 9 20:57:11 1995 Karl Fogel <kfogel@floss.cyclic.com>
-
- * "/bin/rmdir" as default, not "/usr/local/bin/rmdir".
-
-Fri Jun 16 15:24:34 1995 Jim Kingdon (kingdon@cyclic.com)
-
- * pcl-cvs.elc, pcl-cvs-lucid.elc: Added.
-
- * Makefile.in: Rename from Makefile and set srcdir.
-
-Thu May 18 17:10:27 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- Automatically guess CVS log entries from ChangeLog contents.
- * pcl-cvs.el (cvs-mode-changelog-commit): New command.
- (cvs-changelog-full-paragraphs): New variable.
- (cvs-changelog-name, cvs-narrow-changelog,
- cvs-changelog-paragraph, cvs-changelog-subparagraph,
- cvs-changelog-entry, cvs-changelog-ours-p, cvs-relative-path,
- cvs-changelog-entries, cvs-changelog-insert-entries, cvs-union,
- cvs-insert-changelog-entries, cvs-edit-delete-common-indentation):
- New functions.
- (cvs-mode-map): Bind 'C' to cvs-mode-changelog-commit.
- (cvs-mode): Mention cvs-mode-changelog-commit in docstring.
-
- Give the info files names ending in ".info".
- * Makefile (INFOFILES, install_info): Change pcl-cvs to
- pcl-cvs.info.
- (pcl-cvs.info): Target renamed from pcl-cvs.
- (DISTFILES): pcl-cvs removed; we handle the info files explicitly
- in the dist-dir target.
- (dist-dir): Depend on pcl-cvs.info. Distribute pcl-cvs.info*.
- * pcl-cvs.texinfo: Change @setfilename appropriately.
- * INSTALL: Updated.
- * .cvsignore: Correctly ignore the info files.
-
- * README: Note that pcl-cvs has been tested under 19.28, and that
- the "cookie" naming conflict was resolved in 19.11.
-
- * Makefile (pcl-cvs-lucid.elc): Changed this target from
- pcl-cvs-lucid.el. That's a source file, for goodness' sake!
-
-Tue May 9 13:56:50 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * Change references to "Cygnus's remote CVS" to "Cyclic CVS".
-
-Wed May 3 13:55:27 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * pcl-cvs.el (cvs-parse-stderr): Handle colons after both
- "rcsmerge" and "warning".
-
-Fri Apr 28 22:38:14 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * Makefile (ELFILES): Include pcl-cvs-startup.el.
- (info, pcl-cvs): Call makeinfo appropriately for modern versions.
- (pcl-cvs.aux): List dependency on pcl-cvs.texinfo.
- (pcl-cvs.ps): New target.
- (DVIPS): New variable.
- (dist-dir): Renamed from dist, updated to accept DISTDIR value
- passed from parent.
- (DISTFILES): New varible.
- (pcl-cvs.elc, pcl-cvs-lucid.elc): Add targets to elcfiles target.
-
-Tue Apr 25 21:33:49 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * pcl-cvs.el: (cvs-parse-stderr): Recognize "conflicts" as well as
- "overlaps" before "during merge."
-
-Thu Feb 16 12:17:20 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * pcl-cvs.el (cvs-parse-stderr): Recognize "conflicts found in..."
- messages attributed to "cvs server", as well as "cvs update".
-
-Sat Feb 4 01:47:01 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * pcl-cvs.el: Deal with the 'P' action, produced by remote CVS.
- (cvs-parse-stdout): Treat 'P' like 'U' --- file is updated.
-
-Tue Jan 31 23:31:39 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * pcl-cvs.el (cvs-cvsroot-required): New variable.
- (cvs-do-update): If cvs-cvsroot-required is not set, don't complain if
- CVSROOT and cvs-cvsroot are both unset.
-
-Sun Jan 22 21:22:22 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * pcl-cvs.el (cvs-parse-stderr):
- Some changes for Cygnus's Remote CVS. Treat
- messages like "cvs server: Updating DIRECTORY" as we treat those like
- "cvs update: Updating DIRECTORY". Ignore other messages starting with
- "cvs server".
-
- * pcl-cvs.el (cvs-parse-stderr): Re-indent.
-
- * .cvsignore: Add ignore list for Texinfo litter.
-
- * Makefile (lispdir): Set appropriately for totoro.
- * pcl-cvs.el (cvs-program, cvs-diff-program, cvs-rmdir-program): Same.
-
-Tue Jun 1 00:00:03 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * Release 1.05. (This release was promised before the end of May,
- but I didn't quite make it. No, I didn't fake the date above).
-
-Mon May 31 01:32:25 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * Removed the elib sub-directory. Users must now get the Elib
- library separately.
- * pcl-cvs.texinfo: Document it.
-
- * pcl-cvs-lucid.el: A new version, supplied by Jamie Zawinsky,
- added.
-
- * pcl-cvs Id 68: Transform RCS keywords
- * Makefile (pcl-cvs-$(VER)): Remove the $ signs in most files in
- the distribution.
-
- * pcl-cvs Id 76: Extra " in cvs-mode-add.
- * pcl-cvs.el (cvs-mode-add): Don't add the extra level of quotes
- around the log message, since it doesn't work with CVS.
-
- * pcl-cvs Id 56: '-d <CVSROOT>' support in pcl-cvs
- * pcl-cvs.el (cvs-change-cvsroot): New function.
-
- * pcl-cvs Id 77: *cvs* isn't cleared properly
- * pcl-cvs.el (cvs-do-update): Always erase the *cvs* buffer and
- re-create the collection.
-
- * pcl-cvs.el (cvs-do-update): Set mode-line-process in the *cvs*
- buffer.
- * pcl-cvs.el (cvs-mode): Reset mode-line-process.
-
- * pcl-cvs Id 59: sort .cvsignore alphabetically!
- * pcl-cvs.el (cvs-sort-ignore-file): New variable.
- * pcl-cvs.el (cvs-mode-ignore): Use it.
- * pcl-cvs.texinfo: Document it.
-
- * pcl-cvs Id 75: Require final newline.
- * pcl-cvs.el (cvs-commit-buffer-require-final-newline): New
- variable.
- * pcl-cvs.el (cvs-edit-done): Use it.
- * pcl-cvs.texinfo: Document it.
-
- * pcl-cvs Id 72: make clean deletes lucid-emacs.el
- * dist-makefile (ELCFILES): Fixed a typo.
-
- * pcl-cvs Id 46: "cvs remove f" "touch f" "cvs update f" -> parse err.
- * pcl-cvs.el (cvs-fileinfo->type): New type: REM-EXIST.
- * pcl-cvs.el (cvs-shadow-entry-p): A REMOVED that follows a
- REM-EXIST is a shadow.
- * pcl-cvs.el (cvs-parse-stderr): Recognize the "should be removed
- and is still there" message.
- * pcl-cvs.el (cvs-pp): Recognize REM-EXIST.
- * pcl-cvs.el (cvs-mode-undo-local-changes): Recognize and complain
- about REM-EXIST. Defensive test added: complain about unknown types.
-
- * pcl-cvs.el (cvs-mode-add): Add an extra level of quotes around
- the log message. This is apparently needed by RCVS. <This change
- has been removed. --ceder>.
-
- * pcl-cvs.el (cvs-parse-stderr): Ignore output from RCVS.
-
-Tue Apr 27 00:48:40 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * pcl-cvs.el (cvs-startup-message): Now a defconst instead of a
- defvar.
- * pcl-cvs.el (cvs-mode-commit): Add a defvar for it.
-
- * dist-makefile (EMACS): Use $(EMACS) instead of hard-coding 'emacs'.
-
-Sat Apr 17 12:47:10 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * Release 1.04.
-
- * pcl-cvs.texinfo: Updated the Contributors node.
-
- * pcl-cvs Id 58: Lucid GNU Emacs support
- * pcl-cvs-lucid.el: New file, contributed by the people at Lucid.
- * pcl-cvs.el: Autoload pcl-cvs-lucid if running in an Lucid GNU
- Emacs.
- * compile-all.el: (files-to-compile): Add pcl-cvs-lucid.
- * dist-makefile (ELFILES, ELCFILES): Dito.
-
- * pcl-cvs Id 55: cvs-diff-backup swaps old and new version.
- * pcl-cvs.el (cvs-diff-backup-extractor): Old version should be
- first.
- * pcl-cvs.el (cvs-mode-diff-backup): Call cvs-backup-diffable
- correctly.
-
- * pcl-cvs Id 64: elib substitute
- * dist-makefile (install): Warn about Elib.
- * pcl-cvs.texinfo: Talk about Elib.
-
- * pcl-cvs Id 50: Committing the *commit* buffer twice.
- * pcl-cvs.el (cvs-edit-done): Report an error if cvs-commit-list
- is empty, and empty it when the commit is done.
-
- * pcl-cvs Id 56: '-d <CVSROOT>' support.
- * pcl-cvs.el (cvs-cvsroot): New variable.
- * pcl-cvs.el (cvs-do-update, all callers of cvs-execute-list): Use
- it everywhere CVS is called, to override CVSROOT.
- * pcl-cvs.texinfo (Customization): Document it.
-
-Thu Apr 1 00:34:55 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * pcl-cvs.el (cvs-retrieve-revision-to-tmpfile): Exit status nil
- from call-process means everything was successful in some Emacs
- versions.
-
- * pcl-cvs.el (cvs-mode-map): Bind "q" to bury-buffer.
- * pcl-cvs.texinfo: Document it.
-
-Thu Mar 11 00:05:03 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * Release 1.03-Emerge (not released).
-
- * Makefile (pcl-cvs-$(VER)): Don't includ elib-dll-debug.el in the
- distribution. (It's included as elib/dll-debug.el).
-
- * pcl-cvs.el (cvs-mode): Document the "e" key (cvs-mode-emerge).
-
-Tue Mar 9 00:02:57 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * pcl-cvs.texinfo (Emerge): New node.
-
- * pcl-cvs.el (cvs-kill-buffer-visiting): New function.
-
- * pcl-cvs.el (cvs-mode-emerge): Handle Conflict and Merged files.
-
- * pcl-cvs.el (cvs-retrieve-revision-to-tmpfile): Handle any revision.
-
- * pcl-cvs.el (cvs-fileinfo-*): Store base-revision instead of
- backup-file.
-
- * pcl-cvs.el (cvs-backup-diffable): The file is only diffable if
- the backup file is readable.
-
- * pcl-cvs.el (cvs-mode-map): Bind "e" to cvs-mode-emerge instead
- of cvs-mode-find-file (which is anyhow bound to "f").
-
-Mon Mar 8 23:06:52 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * pcl-cvs.el (cvs-mode-emerge): New function. Currently only
- handles emerge of Modified files.
-
- * pcl-cvs.el (cvs-retrieve-revision-to-tmpfile): New function.
-
-Sun Jan 24 20:07:18 1993 Per Cederqvist (ceder@lysator.liu.se)
-
- * elib-dll-debug.el: Moved to elib.
-
-Mon Jan 18 00:35:59 1993 Per Cederqvist (ceder@mauritz)
-
- * pcl-cvs.el (cvs-do-update): Added a probably unnecessary sit-for.
-
- * Release 1.03-Elib-0.05.1 (not released).
-
- * Elib 0.05 compatibility:
- * elib-dll-debug.el, pcl-cvs-buffer.el, test-dll.el: Fix the
- require strings.
- * pcl-cvs.el (cvs-pp): Insert the string.
-
- * Release 1.03-Elib-0.05 (not released).
-
- * elib: New directory, containing the parts of elib that are
- required for pcl-cvs. Changes to the files in that directory
- that are present in Elib are documented in the ChangeLog of
- Elib, not here.
- * Makefile (pcl-cvs-$(VER)): Copy the new dir to the distribution.
- * dist-makefile (ELFILES, ELCFILES): Don't include the Elib files.
-
-Fri Jan 8 02:43:49 1993 Per Cederqvist (ceder@konrad)
-
- * pcl-cvs.el (cvs-mode-map): Bind "e" to cvs-mode-find-file, like
- in dired.
-
-Sun Jan 3 23:25:13 1993 Per Cederqvist (ceder@konrad)
-
- * elib-dll.el, elib-node.el, cookie.el: Moved to the elib package.
- Pcl-cvs now requires elib.
-
-Tue Dec 29 22:06:57 1992 Per Cederqvist (ceder@konrad)
-
- * pcl-cvs.el: Tracked the latest (last?) rename of all functions
- in cookie.el.
-
-Thu Sep 24 00:29:16 1992 Per Cederqvist (ceder@robert)
-
- * pcl-cvs.texinfo (Archives): This version is not distributed with
- CVS 1.3, so don't claim that it is.
-
-Fri Aug 21 15:17:08 1992 Per Cederqvist (ceder@maskros)
-
- * pcl-cvs.el (cvs-parse-stderr): Fixed two "(set head" that should
- be "(setq head".
-
-Thu Aug 20 05:53:58 1992 Per Cederqvist (ceder@robin)
-
- * cookie.el: Changes to this file is documented in the ChangeLog
- of elib in the future.
-
-Tue Aug 18 03:30:28 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el: Don't use cookie-last-tin (which no longer exists).
-
- * cookie.el: Use prefix cookie:: for internal functions.
-
- * cookie.el: (cookie:enter-after, cookie:enter-before,
- cookie:nth-cookie): Implemented.
- * cookie.el: No longer define (impl).
-
- * cookie.el: More renames:
- cookie:next-cookie -> cookie:goto-next-tin
- cookie:previous-cookie -> cookie:goto-previous-tin
- tin-next -> cookie:next-tin
- tin-previous -> cookie:previous-tin
- tin-nth -> cookie:nth-tin
- tin-delete -> cookie:delete-tin
- cookie:collect -> cookie:collect-cookies
- cookie:tin-collect -> cookie:collect-tins
- (new) -> cookie:tin-collect-cookies
- (new) -> cookie:tin-collect-tins
- cookie:refresh -> cookie:refresh-all
- tin-invalidate-tins -> cookie:invalidate-tins
-
-Mon Aug 17 01:39:49 1992 Per Cederqvist (ceder@robin)
-
- * cookie.el (cookie:set-buffer-bind-dll-let*): New macro. Used in
- many places instead of cookie:set-buffer-bind-dll.
- * cookie.el (cookie:set-buffer-bind-dll): Renamed the macro
- cookie:set-buffer to this.
-
- * pcl-cvs.el (cvs-use-temp-buffer): Set default-directory.
-
-Sun Aug 16 20:51:30 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-add-sub): Fixed call to cvs-add-file-update-buffer.
-
-Sat Aug 8 20:28:21 1992 Per Cederqvist (ceder@robin)
-
- * Release 1.03-Cookie-II (not released).
-
- * pcl-cvs.el (cvs-mode-diff-cvs): Don't care about the exit status
- from ``cvs diff''.
-
- * pcl-cvs.el (cvs-mode): Document cvs-mode-undo-local-changes.
- * pcl-cvs.el (cvs-diffable): New function.
-
- * pcl-cvs.el: Use the new cookie package.
- * pcl-cvs.el (cvs-cookie-handle): New variable.
- * pcl-cvs.el (cvs-do-update): User the new cookie:create
- interface, and cookie:clear if the buffer already existed. Make
- the buffer read-only.
- * pcl-cvs.el (cvs-mode-next-line, cvs-mode-previous-line): New
- functions (used instead of cookie:next-cookie and
- cookie:previous-cookie).
-
- * cookie.el: Major redesign. The handle that is passed to all
- cookie functions is now a new datatype, and not the buffer that
- the cookies resides in. This way it is possible to have more than
- one set of cookies in a buffer. Things that used to be
- buffer-local variables are now fields in the handle data type.
- cookie-last-tin is no longer available.
- * cookie.el (cookie:create): The buffer is not cleared, nor set to
- be read-only.
- * cookie.el (cookie:next-cookie, cookie:previous-cookie): Since
- the first argument is now a handle and not a buffer, these can no
- longer be called interactively. You have to write a small wrapper
- about them.
- * cookie.el (cookie:buffer): New function.
-
-Tue Aug 4 03:02:25 1992 Per Cederqvist (ceder@robert)
-
- * pcl-cvs.texinfo (Bugs): Renamed "Reporting bugs and ideas" to
- "Bugs" and added a table of known bugs/FAQ:s.
-
-Mon Aug 3 00:19:39 1992 Per Cederqvist (ceder@robert)
-
- * pcl-cvs.el, pcl-cvs.texinfo: Big Renaming Time!
- The commands that operate in the *cvs* buffer:
- cvs-add-change-log-entry-other-window -> cvs-mode-add-change-log-entry-other-window
- cvs-mark-all-files -> cvs-mode-mark-all-files
- cvs-revert-updated-buffers -> cvs-mode-revert-updated-buffers
- cvs-undo-local-changes -> cvs-mode-undo-local-changes
- cvs-unmark-up -> cvs-mode-unmark-up
- cvs-acknowledge -> cvs-mode-acknowledge
- cvs-unmark-all-files -> cvs-mode-unmark-all-files
- cvs-add -> cvs-mode-add
- cvs-diff-backup -> cvs-mode-diff-backup
- cvs-commit -> cvs-mode-commit
- cvs-diff-cvs -> cvs-mode-diff-cvs
- cvs-find-file -> cvs-mode-find-file
- cvs-update-no-prompt -> cvs-mode-update-no-prompt
- cvs-ignore -> cvs-mode-ignore
- cvs-log -> cvs-mode-log
- cvs-mark -> cvs-mode-mark
- cvs-find-file-other-window -> cvs-mode-find-file-other-window
- cvs-remove-file -> cvs-mode-remove-file
- cvs-status -> cvs-mode-status
- cvs-remove-handled -> cvs-mode-remove-handled
- cvs-unmark -> cvs-mode-unmark
-
- * pcl-cvs.el (cvs-cvs-diff-flags): Variable deleted.
- * pcl-cvs.el (cvs-diff-cvs): Use cvs-diff-flags instead.
- * pcl-cvs.texinfo (Customization): Update the doc.
-
- * pcl-cvs.el (cvs-diff-cvs): Handle exit status 0 (no diffs), 1
- (diffs) and other (error).
- * pcl-cvs.el (cvs-execute-list): Add support for this kind of
- thing.
-
- * Revert buffers for committed files:
- * pcl-cvs.el (cvs-auto-revert-after-commit): New variable.
- * pcl-cvs.texinfo (Committing changes, Customization): Document
- it.
- * pcl-cvs.el (cvs-after-commit-function): New function.
-
- * pcl-cvs.el (cvs-execute-list): Return the exit status or nil.
- * pcl-cvs.el (cvs-edit-done, cvs-diff-cvs, cvs-remove-file,
- cvs-undo-local-changes, cvs-add, cvs-status, cvs-log): Use the
- exit status to generate an error message.
-
-
- * pcl-cvs.el (cvs-do-update): It should be "cvs -n update -l", not
- "cvs -l update -n". Put the -n and/or -l in the message that is
- displayed in the *cvs* buffer during the update.
-
-Sat Aug 1 00:55:49 1992 Per Cederqvist (ceder@robert)
-
- * cookie.el (cookie-sort): New function.
-
- * cookie.el (cookie-clear): Rewritten. No longer clears all local
- variables.
-
-Tue Jul 28 17:21:17 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-parse-stderr): Try to handle the output from RCS
- when it is compiled without DIFF3_BIN and a conflict occurs.
-
- * pcl-cvs.texinfo (Getting Started): Fixed typo.
-
- * pcl-cvs-startup.el (cvs-update-other-window): Make the autoload
- be interactive.
-
-Mon Jul 27 19:36:40 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-revert-updated-buffers, cvs-revert-fileinfo):
- New functions.
- * pcl-cvs.texinfo (Reverting your buffers): Document it.
-
- * pcl-cvs.el (cvs-fileinfo->full-path): New function.
- * pcl-cvs.el (cvs-full-path): Use it.
-
- * cookie.el (cookie-map, cookie-map-reverse): Better doc-
- string. Removed the unused local variable 'result'.
-
- * compile-all.el: Renamed elib-files to files-to-compare.
- * compile-all.el (compile-pcl-cvs): Bind load-path in a let
- statement instead of globally.
-
-Thu Jul 23 19:02:41 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-do-update): Check that CVSROOT is set.
- * pcl-cvs.el (cvs-diff-cvs): Check that cvs-cvs-diff-flags is a
- list.
- * pcl-cvs.el (cvs-diff-backup): Check that cvs-diff-flags is a
- list.
-
-Tue Jul 21 11:27:39 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-parse-error): Make the *cvs* buffer writeable
- before trying to write the email message. Require sendmail before
- trying to switch to mail-mode.
-
- * pcl-cvs.el (cvs-do-update): Check that cvs-program exists.
-
- * pcl-cvs.el (cvs-skip-line): Fixed bracketing error.
-
-Mon Jul 20 10:31:51 1992 Per Cederqvist (ceder@robin)
-
- * Release 1.03.
-
- * pcl-cvs.el, cookie.el: Indentation fixes.
-
- * Makefile (pcl-cvs-$(VER)): Include NEWS in the distribution.
-
- * pcl-cvs.el (cvs-rm-program): Deleted.
- * pcl-cvs.el (cvs-rmdir-program, cvs-lock-file): New variables.
-
- * Handle lock files in a nicer way:
- * pcl-cvs.el (cvs-update-filter, cvs-delete-lock,
- cvs-lock-file-p): New functions.
- * pcl-cvs.el (cvs-do-update, cvs-sentinel): Redirect stdout to the
- temporary file, not stderr. Use cvs-update-filter.
- * pcl-cvs.el (cvs-parse-update): New arguments.
- * pcl-cvs.el (cvs-parse-buffer): Renamed to cvs-parse-update.
- * pcl-cvs.el (cvs-stderr-file): Renamed to cvs-stdout-file.
- * pcl-cvs.texinfo (Miscellaneous commands, Updating the
- directory): Document cvs-delete-lock.
-
- * pcl-cvs.el (cvs-mode): Don't reset buffer-read-only.
-
- * pcl-cvs.el (cvs-find-file-other-window): Don't save-some-buffers.
-
-Thu Jul 16 00:19:58 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el, test-cookie-el: Use the new names from cookie.el.
-
- * cookie.el: Big Renaming Time!
- External functions:
- cookie-next -> tin-next
- cookie-previous -> tin-previous
- cookie-nth -> tin-nth
- cookie-delete -> tin-delete
- cookie-filter-tins -> tin-filter
- cookie-get-selection -> tin-get-selection
- cookie-start-marker -> tin-start-marker
- cookie-end-marker -> tin-end-marker
- cookie-invalidate-tins -> tin-invalidate-tins
- cookie-collect-tins -> tin-collect
- cookie-collect-cookies -> cookie-collect
- Internal functions:
- cookie-create-tin -> cookie-create-wrapper
- cookie-tin-start-marker -> cookie-wrapper-start-marker
- cookie-tin-cookie-safe -> cookie-wrapper-cookie-safe
- cookie-tin-cookie -> cookie-wrapper-cookie
- set-cookie-tin-start-marker -> cookie-wrapper-set-start-marker
- set-cookie-tin-cookie -> cookie-wrapper-set-cookie
- cookie-tin-p -> cookie-wrapper-p
- cookie-create-tin-and-insert -> cookie-create-wrapper-and-insert
-
- * pcl-cvs.el (cvs-find-file, cvs-find-file-other-window): Signal
- an appropriate error message if the *cvs* buffer is empty.
-
- * cookie.el (cookie-create): Make the buffer read-only.
- * cookie.el (cookie-create-tin-and-insert, cookie-refresh,
- cookie-delete-tin-internal, cookie-refresh-tin): Bind
- buffer-read-only to nil while changing the contents of
- the buffer.
-
- * pcl-cvs.el (cvs-byte-compile-files): New function.
- * pcl-cvs.texinfo (Miscellaneous commands): Document it.
-
- * pcl-cvs.el (cvs-diff-ignore-marks): New variable.
- * pcl-cvs.el (cvs-diff-cvs, cvs-diff-backup): Don't consider
- marked files to be selected if a prefix argument is given XOR the
- variable cvs-diff-ignore-marks is non-nil.
- * pcl-cvs.el (cvs-get-marked): New optional argument `ignore-marks'.
- * pcl-cvs.texinfo (Customization, Viewing differences): Document
- this behaviour.
-
- * pcl-cvs.el (cvs-undo-local-changes): New function.
- * pcl-cvs.texinfo (Undoing changes): Document
- cvs-undo-local-changes.
- * pcl-cvs.el (cvs-mode-map): cvs-unmark-all-files moved from "U"
- to "ESC DEL". cvs-undo-local-changes bound to "U".
- * pcl-cvs.texinfo (Marking files): Document ESC DEL.
-
- * pcl-cvs.el (cvs-skip-line): New arguments. All callers updated.
- Now calls cvs-parse-error if a parse error occurs.
- * pcl-cvs.el (cvs-parse-error): New function that creates a bug
- report.
- * pcl-cvs.el (cvs-parse-stderr, cvs-parse-stdout): New arguments.
- The only caller (cvs-parse-buffer) updated. Call cvs-parse-error
- in case of parse error.
-
- * pcl-cvs.el (pcl-cvs-version): New variable.
-
- * cookie.el (cookie-create): Kill all local variables in the buffer.
-
-Fri Jul 10 11:17:40 1992 Per Cederqvist (ceder@robin)
-
- * Release 1.03beta1.
-
-Thu Jul 9 03:12:00 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-update-running): New variable.
- * pcl-cvs.el (cvs-do-update): Use it instead of the previous local
- variable cvs-process (that no longer exists). Make sure that only
- one `cvs update' runs at any given moment.
- * pcl-cvs.el (cvs-sentinel): Reset cvs-update-running when the
- update process exits.
-
- * pcl-cvs.el (cvs-update): Switch to the *cvs* buffer.
- * pcl-cvs.el (cvs-update-other-window): New function.
- * pcl-cvs-startup.el (cvs-update-other-window): Added a autoload
- for it.
- * pcl-cvs.el (cvs-do-update): Don't pop up any buffer in a window
- - let cvs-update or cvs-update-other-window handle that. Also
- don't kill the *cvs* buffer, but rather insert a "Running cvs..."
- message into it.
- * pcl-cvs.el (cvs-parse-buffer): Don't change the window
- configuration.
-
- * pcl-cvs.el (cvs-create-fileinfo, cvs-pp, cvs-fileninfo->type):
- New type for a fileinfo: MESSAGE.
-
- * pcl-cvs.el (cvs-cvs-buffer): Deleted the variable. Use
- cvs-buffer-name instead. (I no longer have any plans to allow more
- than one cvs update to run at the same time - things only get
- confusing). Changed all places where cvs-cvs-buffer was used.
-
- * pcl-cvs.el: Take care of update programs (the -u option in the
- modules file):
- * pcl-cvs.el (cvs-update-prog-output-skip-regexp): New variable.
- * pcl-cvs.el (cvs-parse-stdout): Skip output from the update
- program (using cvs-update-prog-output-skip-regexp).
- * pcl-cvs.texinfo (Future enhancements): Document that the
- solution is not as good as it should be.
- * pcl-cvs.texinfo (Customization): Document the variable.
-
-Wed Jul 8 20:29:44 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-do-update): Check that this-dir really exists
- and is a directory, and that this-dir/CVS exists and is a
- directory.
-
-Tue Jul 7 01:02:24 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.texinfo (Customization): Document TMPDIR.
-
- * This chunk of modifications should make it possible to run
- pcl-cvs on hosts that do not line-buffer stdout (such as
- DECstation). They work by diverting stdout and stderr from
- `cvs update' and later sorting them together.
- * pcl-cvs.el (cvs-parse-stderr): Don't fail to parse conflict
- data.
- * pcl-cvs.el (cvs-remove-stdout-shadows, cvs-shadow-entry-p): New
- functions.
- * pcl-cvs.el (cvs-parse-buffer): Use it.
- * pcl-cvs.el (cvs-remove-empty-directories): New function.
- * pcl-cvs.el (cvs-remove-handled, cvs-parse-buffer): Use it.
- * pcl-cvs.el (cvs-get-current-dir): New argument ROOT-DIR. All
- calls to cvs-get-current-dir updated.
- * pcl-cvs.el (cvs-do-update): Allocate a tmp file. Use cvs-shell
- (typically /bin/sh) to redirect stderr from CVS to the tmp file.
- * pcl-cvs.el (cvs-sentinel): Handle the tmp file. Remove it when
- it is parsed.
- * pcl-cvs.el (cvs-parse-buffer): New argument STDERR-BUFFER. All
- calls to cvs-parse-buffer updated. Rewritten to handle the
- separation of stderr and stdout.
- * pcl-cvs.el (cvs-shell, cvs-stderr-file): New variables.
- * pcl-cvs.el (cvs-compare-fileinfos, cvs-parse-stderr,
- cvs-parse-stdout): New functions.
-
- * pcl-cvs.el (cvs-parse-buffer): Some modifications for output
- from RCS 5.6.
-
-Tue Apr 7 09:11:27 1992 Per Cederqvist (ceder@leopold)
-
- * Release 1.02.
-
- * pcl-cvs.el (cvs-diff-backup, cvs-edit-done, cvs-status): Call
- save-some-buffers.
-
- * pcl-cvs.el (cvs-diff-backup-extractor): Fixed syntax error.
-
- * Makefile, README, compile-all.el, dist-makefile, pcl-cvs.el,
- pcl-cvs.texinfo (XXRELEASEXX): A magic string that is substituted
- for the current release number when a distribution is made.
- (Release 1.01 says that it is release 1.00).
-
- * pcl-cvs.el (cvs-find-file): Added missing pair of parenthesis.
-
-Mon Mar 30 14:25:26 1992 Per Cederqvist (ceder@leopold)
-
- * Release 1.01.
-
- * pcl-cvs.el (cvs-parse-buffer): The message when waiting for a
- lock has been changed.
-
-Sun Mar 29 05:29:57 1992 Per Cederqvist (ceder@leopold)
-
- * Release 1.00.
-
- * pcl-cvs.el (cvs-do-update, cvs-sentinel, cvs-parse-buffer):
- Major rewrite of buffer and window selection and handling.
- The *cvs* buffer is now killed whenever a new "cvs update" is
- initiated. The -update buffer is replaced with the *cvs*
- buffer when the update is completed.
-
-Sat Mar 28 21:03:05 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-delete-unused-temporary-buffers): Fixed it.
-
- * pcl-cvs.el (cvs-auto-remove-handled): New variable.
- * pcl-cvs.el (cvs-edit-done): Use it.
- * pcl-cvs.texinfo (Customization, Removing handled entries):
- Document it.
-
- * pcl-cvs.el (cvs-mode): Turn of the undo feature. It really
- isn't useful in a cookie buffer...
-
- * pcl-cvs.el (cvs-edit-done): Committing a file now looks more
- like diffing a file. The window handling is better.
- * pcl-cvs.el (cvs-use-temp-buffer): The &optional switch is no
- longer needed.
-
-Mon Mar 23 00:20:33 1992 Per Cederqvist (ceder@robin)
-
- * Release 0.97.
-
- * pcl-cvs.el (default-directory): Make sure it always ends in a
- slash. fileinfo->dir does NOT end in a slash, and I had forgotten
- to call file-name-as-directory in various places.
-
- * pcl-cvs.el (cvs-diff-backup-extractor): Signal an error if a
- fileinfo without backup file is given.
-
- * pcl-cvs.el (cvs-mode): Added documentation.
-
- * pcl-cvs.el (cvs-execute-list): Fix the order of files in the
- same directory.
-
- * pcl-cvs.el (cvs-log-flags, cvs-status-flags): New variables.
- * pcl-cvs.el (cvs-log, cvs-status): Use them.
- * pcl-cvs.texinfo (Customization): Document them.
-
- * pcl-cvs.el (cvs-diff-backup): Filter non-backup-diffable files
- at an earlier stage, like cvs-commit does.
-
- * pcl-cvs.el (cvs-diff-flags): New variable.
- * pcl-cvs.el (cvs-diff-backup): Use it.
- * pcl-cvs.texinfo (Customization): Document it.
-
- * pcl-cvs.el (cvs-execute-single-file-list): Remove &rest before
- last argument. No callers needed updating.
-
- * pcl-cvs.el (cvs-execute-list): Remove the &rest before the last
- argument (constant-args). Update all callers of cvs-execute-list
- to use the new calling convention.
- * pcl-cvs.el (cvs-cvs-diff-flags): Now a list of strings instead
- of a string.
- * pcl-cvs.texinfo (Customization): Document the change to
- cvs-cvs-diff-flags.
-
- * Release 0.96.
-
- * pcl-cvs.el (cvs-cvs-diff-flags): New variable.
- * pcl-cvs.el (cvs-diff-cvs): Use it.
- * pcl-cvs.texinfo (Customization, Viewing differences): Document it.
-
- * pcl-cvs.el (cvs-use-temp-buffe): Don't switch to the temporary
- buffer. Use display-buffer and set-buffer instead. This way
- cvs-log, cvs-status, cvs-diff-cvs and friends don't select the
- temporary buffer. The cursor will remain in the *cvs* buffer.
-
-Sun Mar 22 21:50:18 1992 Per Cederqvist (ceder@robin)
-
- * pcl-cvs.el (cvs-find-file, cvs-find-file-other-window): Don't
- prompt when reading in a directory in dired.
-
- * Makefile (pcl-cvs-$(VER)): Include pcl-cvs-startup.el in the
- distribution.
-
- * dist-makefile (pcl-cvs.dvi): Don't fail even if texindex does
- not exist.
-
- * pcl-cvs.texinfo (@setchapternewpage): Changed from 'off' to 'on'.
- * pcl-cvs.texinfo (Variable index): Joined into function index.
- * pcl-cvs.texinfo (Key index): add a description about the key.
- * pcl-cvs.texinfo: Many other small changes.
-
-Wed Mar 18 01:58:38 1992 Per Cederqvist (ceder@leopold)
-
- * Use GNU General Public License version 2.
-
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/INSTALL b/gnu/usr.bin/cvs/contrib/pcl-cvs/INSTALL
deleted file mode 100644
index 76799679ac5..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/INSTALL
+++ /dev/null
@@ -1,89 +0,0 @@
-This text is copied from the TeXinfo manual for pcl-cvs.
-
-Installation of the pcl-cvs program
-===================================
-
- 1. Edit the file `Makefile' to reflect the situation at your site.
- The only things you have to change is the definition of `lispdir'
- and `infodir'. The elisp files will be copied to `lispdir', and
- the info file to `infodir'.
-
- 2. Configure pcl-cvs.el
-
- There are a couple of paths that you have to check to make sure
- that they match you system. They appear early in the file
- pcl-cvs.el.
-
- *NOTE:* If your system is running emacs 18.57 or earlier you
- MUST uncomment the line that says:
-
- (setq delete-exited-processes nil)
-
- Setting `delete-exited-processes' to `nil' works around a bug in
- emacs that causes it to dump core. The bug was fixed in emacs
- 18.58.
-
- 3. Release 1.05 and later of pcl-cvs requires parts of the Elib
- library, version 0.07 or later. Elib is available via anonymous
- ftp from prep.ai.mit.edu in `pub/gnu/elib-0.07.tar.z', and from
- a lot of other sites that mirrors prep. Get Elib, and install
- it, before proceeding.
-
- 4. Type `make install' in the source directory. This will
- byte-compile all `.el' files and copy both the `.el' and the
- `.elc' into the directory you specified in step 1.
-
- If you don't want to install the `.el' files but only the `.elc'
- files (the byte-compiled files), you can type ``make
- install_elc'' instead of ``make install''.
-
- If you only want to create the compiled elisp files, but don't
- want to install them, you can type `make elcfiles' instead.
- This is what happens if you only type `make' without parameters.
-
- 5. Edit the file `default.el' in your emacs lisp directory (usually
- `/usr/gnu/emacs/lisp' or something similar) and enter the
- contents of the file `pcl-cvs-startup.el' into it. It contains
- a couple of `auto-load's that facilitates the use of pcl-cvs.
-
-
-
-Installation of the on-line manual.
-===================================
-
- 1. Move the info file `pcl-cvs.info' to your standard info
- directory. This might be called something like
- `/usr/gnu/emacs/info'.
-
- 2. Edit the file `dir' in the info directory and enter one line to
- contain a pointer to the info file `pcl-cvs.info'. The line can,
- for instance, look like this:
-
- * Pcl-cvs: (pcl-cvs.info). An Emacs front-end to CVS.
-
-
-How to make the on-line manual from pcl-cvs.texinfo
-===================================================
-
- 1. Create the info file `pcl-cvs.info' from `pcl-cvs.texinfo' by
- typing `make info'. If you don't have the program `makeinfo' you
- can get it by anonymous ftp from e.g. `ftp.gnu.ai.mit.edu' as
- `pub/gnu/texinfo-2.14.tar.Z' (there might be a newer version
- there when you read this).
-
-
-How to make typeset documentation from pcl-cvs.texinfo
-======================================================
-
- If you have TeX installed at your site, you can make a typeset
-manual from `pcl-cvs.texinfo'.
-
- 1. Run TeX by typing ``make pcl-cvs.dvi''. You will not get the
- indices unless you have the `texindex' program.
-
- 2. Convert the resulting device independent file `pcl-cvs.dvi' to a
- form which your printer can output and print it. If you have a
- postscript printer there is a program, `dvi2ps', which does.
- There is also a program which comes together with TeX, `dvips',
- which you can use.
-
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/Makefile.in b/gnu/usr.bin/cvs/contrib/pcl-cvs/Makefile.in
deleted file mode 100644
index a96f626e593..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/Makefile.in
+++ /dev/null
@@ -1,109 +0,0 @@
-# @(#) Id: dist-makefile,v 1.19 1993/05/31 22:43:45 ceder Exp
-# Makefile for pcl-cvs release 1.05.
-# Copyright (C) 1992, 1993 Per Cederqvist
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# This is the directory in which the ELFILES and ELCFILES will be
-# installed.
-
-lispdir = /usr/local/lib/emacs/site-lisp/pcl-cvs
-
-# Where to install the info file.
-
-prefix=/usr/local
-infodir = $(prefix)/info
-
-# Used to byte-compile files.
-
-EMACS=emacs
-
-#
-# The rest of this file should not need to be modified.
-#
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-# Just in case...
-SHELL = /bin/sh
-
-ELFILES = pcl-cvs.el pcl-cvs-lucid.el pcl-cvs-startup.el
-ELCFILES = pcl-cvs.elc pcl-cvs-lucid.elc
-INFOFILES = pcl-cvs.info*
-TEXTMPS = pcl-cvs.aux pcl-cvs.log pcl-cvs.toc pcl-cvs.dvi pcl-cvs.cp \
- pcl-cvs.fn pcl-cvs.vr pcl-cvs.tp pcl-cvs.ky pcl-cvs.pg \
- pcl-cvs.cps pcl-cvs.fns pcl-cvs.kys pcl-cvs.pgs pcl-cvs.tps \
- pcl-cvs.vrs
-
-INSTALL = install
-INSTALL_DATA = $(INSTALL)
-
-pcl-cvs.elc pcl-cvs-lucid.elc elcfiles:
- $(EMACS) -batch -l ${srcdir}/compile-all.el -f compile-pcl-cvs
-
-all: elcfiles info
-
-# Don't install the info file yet, since it requires makeinfo
-# version 2.something (and version 1.something is distributed with emacs).
-#
-# install: install_elc install_info
-install: install_elc
- for i in $(ELFILES); do $(INSTALL_DATA) $$i $(lispdir)/$$i; done
-
-install_elc: elcfiles
- for i in $(ELCFILES); do $(INSTALL_DATA) $$i $(lispdir)/$$i; done
-
-install_info: pcl-cvs.info
- $(INSTALL_DATA) pcl-cvs.info* $(infodir)/pcl-cvs.info
-
-info pcl-cvs.info: pcl-cvs.texinfo
- makeinfo --fill-column=70 ${srcdir}/pcl-cvs.texinfo
-
-pcl-cvs.aux pcl-cvs.dvi: pcl-cvs.texinfo
- tex ${srcdir}/pcl-cvs.texinfo
- tex ${srcdir}/pcl-cvs.texinfo
- -texindex pcl-cvs.cp pcl-cvs.fn pcl-cvs.vr pcl-cvs.tp pcl-cvs.ky \
- pcl-cvs.pg
- tex ${srcdir}/pcl-cvs.texinfo
-
-DVIPS=dvips
-pcl-cvs.ps: pcl-cvs.dvi
- ${DVIPS} pcl-cvs.dvi -o pcl-cvs.ps
-
-mostlyclean clean realclean:
- rm -f *~ core $(ELCFILES) $(INFOFILES) $(TEXTMPS)
-
-tags TAGS:
- etags *.el
-
-DISTFILES = \
- .cvsignore ChangeLog INSTALL Makefile.in NEWS README \
- ${ELFILES} ${ELCFILES} compile-all.el \
- pcl-cvs.texinfo texinfo.tex
-OBJDIR_DISTFILES = pcl-cvs.aux pcl-cvs.ps
-
-dist-dir: ${OBJDIR_DISTFILES} ${DISTFILES} pcl-cvs.info
- mkdir ${DISTDIR}
- for i in ${DISTFILES}; do \
- ln $(srcdir)/$${i} ${DISTDIR}; \
- done
- ln ${OBJDIR_DISTFILES} ${DISTDIR}
- ln pcl-cvs.info* ${DISTDIR}
-.PHONY: dist-dir
-
-subdir = contrib/pcl-cvs
-Makefile: ../../config.status Makefile.in
- cd ../.. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/NEWS b/gnu/usr.bin/cvs/contrib/pcl-cvs/NEWS
deleted file mode 100644
index 4f563ffc501..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/NEWS
+++ /dev/null
@@ -1,113 +0,0 @@
-This is the NEWS file for pcl-cvs, an Elisp front-end to CVS.
-
-User-visible changes in pcl-cvs from 1.04 to 1.05:
-
-* Elib is no longer distributed with pcl-cvs. You must get Elib
- separately, for instance from ftp.lysator.liu.se in pub/emacs.
-
-* The Lucid Emacs support works again.
-
-* A new function, cvs-change-cvsroot, can be used to interactively
- switch between CVS repositories.
-
-* The mode line in the *cvs* buffer now indicates when a "cvs update"
- is running.
-
-* The .cvsignore file is automatically sorted alphabetically (to
- reduce the risk of conflicts when two people add different files
- simultaneously). This behaviour can be turned off with
- cvs-sort-ignore-file.
-
-* A trailing newline is always added in commit log messages. This
- behaviour can be turned off with
- cvs-commit-buffer-require-final-newline.
-
-* This version of pcl-cvs should work together with RCVS. I have not
- tested this myself, though.
-
-* Plus some bug fixes. (Note that the version of cookie.el that is
- distributed with pcl-cvs 1.04 contains errors that affects pcl-cvs.
- You should get Elib 0.07).
-
-
-User-visible changes in pcl-cvs from 1.03 to 1.04:
-
-* Support for Emerge. Hitting "e" on a file that is Modified, Merged
- or in Conflict will start Emerge, an interactive file merger written
- in Emacs Lisp. This requires Emerge version 4. Emerge is not
- included in this package. If you can't find it anywhere else, you
- can get in from ftp.lysator.liu.se in pub/emacs. This package makes
- it a lot easier to resolve conflicts.
-
-* Emacs will now automatically revert your buffers when the CVS
- commands pcl-cvs issues causes the file to change. This automatic
- revert never occurs if the buffer contents did not agree with the
- file prior to the command.
-
-* If you are running Lucid GNU Emacs, you will get some fonts and
- mouse support. This was contributed from people at Lucid.
-
-* The variable cvs-cvsroot can be used to select the location if the
- repository. You no longer need to exit Emacs, setenv CVSROOT, and
- start a new Emacs if you work with multiple repositories.
-
-* The "q" key can be used to hide the *cvs* buffer.
-
-* The name of the commands in the *cvs* have changed. If it was called
- cvs-foo, it will now be called cvs-mode-foo. See the ChangeLog
- entry from Tue Aug 4 03:02:25 1992 for a complete list of changes.
-
-* The variable cvs-cvs-diff-flags is no longer used. Instead,
- cvs-diff-flags is always used.
-
-* Plus a lot of bug fixes.
-
-
-User-visible changes in pcl-cvs from 1.02 to 1.03:
-
-* Output from CVS to stdout and stderr is separated and parsed
- independently. In that way pcl-cvs should work regardless of
- whether stdout is buffered or line-buffered. Pcl-cvs should now
- work with CVS 1.3 without modifications on hosts such as
- DECstations.
-
-* Pcl-cvs now fully supports RCS version 5.6 as well as 5.5.
-
-* New functions:
-
- + cvs-undo-local-changes ("U") - Undo all your modifications
- to a file and get the newest
- version from the repository.
- + cvs-update-other-window - Similar to cvs-update.
- + cvs-byte-compile-files - Byte compile the selected files.
-
-* cvs-update now displays the *cvs* buffer, which initially contains a
- small message ("Running `cvs update' in /foo/bar/gazonk/...") until
- the update is ready. The *cvs* buffer no longer pops up when the
- update is ready. It often failed to pop up, due to race conditions
- that are very hard to solve (and I doubt that they were at all
- solvable).
-
-* cvs-unmark-all-files is moved from "U" to "ESC DEL" to be
- "compatible" with dired.
-
-* cvs-diff ("d") and cvs-diff-backup ("b") can be configured to work
- on only the file the cursor is positioned on, and ignore any marked
- files. A prefix argument toggles this.
-
-* Only one `cvs update' can be run at a time. (It was previously
- possible to start more than one simultaneously, but pcl-cvs could
- not really handle more than one.)
-
-* Some rudimentary support for programs that CVS runs at update (due
- to the -u switch in the modules file).
-
-* Pcl-cvs now automatically generates a bug report if it can't parse
- the output from CVS.
-
-* The *cvs* buffer is read-only.
-
-* Pcl-cvs now creates temporary files in $TMPDIR if that environment
- variable is set (otherwise it uses /tmp).
-
----End of file NEWS---
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/README b/gnu/usr.bin/cvs/contrib/pcl-cvs/README
deleted file mode 100644
index a9b81066137..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/README
+++ /dev/null
@@ -1,29 +0,0 @@
-@(#) Id: README,v 1.14 1993/05/31 22:43:36 ceder Exp
-
-This is the readme file for pcl-cvs, release 1.05.
-
-This release of pcl-cvs requires Elib 0.07 or later. Elib is no
-longer distributed with pcl-cvs, since that caused too much confusion.
-You can get Elib from ftp.lysator.liu.se in pub/emacs/elib-*.tar.?.
-
-Pcl-cvs is a front-end to CVS version 1.3. It integrates the most
-frequently used CVS commands into emacs.
-
-There is some configuration that needs to be done in pcl-cvs.el to get
-it to work. See the instructions in file INSTALL.
-
-Full documentation is in pcl-cvs.texinfo. Since it requires makeinfo
-version 2 or 3 a preformatted info file is also included (pcl-cvs.info).
-
-If you have been using a previous version of pcl-cvs (for instance
-1.02 which is distributed with CVS 1.3) you should read through the
-file NEWS to see what has changed.
-
-This release has been tested under Emacs 18.59, Emacs 19.28 and Lucid
-Emacs 19.6. Emacs 19.10 unfortunately has a file named cookie.el that
-collides with the cookie.el that is distributed in Elib. This
-conflict was resolved in 19.11. For earlier versions, there are
-instructions in Elib 0.07 for how to work around the problem.
-
- Per Cederqvist
- (updated by Jim Blandy)
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.el b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.el
deleted file mode 100644
index d1f69e313d4..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.el
+++ /dev/null
@@ -1,133 +0,0 @@
-;;; Mouse and font support for PCL-CVS 1.3 running in Lucid GNU Emacs
-;; @(#) Id: pcl-cvs-lucid.el,v 1.2 1993/05/31 19:37:34 ceder Exp
-;; Copyright (C) 1992-1993 Free Software Foundation, Inc.
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-
-;; This simply adds a menu of the common CVS commands to the menubar and to
-;; the right mouse button. Clicking right moves point, and then pops up a
-;; menu from which commands can be executed.
-;;
-;; This could stand to be a lot more clever: for example, the "Commit Changes"
-;; command should only be active on files for which there is something to
-;; commit. Also, some indication of which files the command applies to
-;; (especially in the presence of multiple marked files) would be nice.
-;;
-;; Middle-click runs find-file.
-
-
-(require 'pcl-cvs)
-
-(defvar cvs-menu
- '("CVS"
- ["Find File" cvs-mode-find-file t]
- ["Find File Other Window" cvs-mode-find-file-other-window t]
- ["Interactively Merge (emerge)" cvs-mode-emerge t]
- ["Diff against Repository" cvs-mode-diff-cvs t]
- ["Diff against Backup Version" cvs-mode-diff-backup t]
- "----"
- ["Commit Changes to Repository" cvs-mode-commit t]
- ["Revert File from Repository" cvs-mode-undo-local-changes t]
- ["Add File to Repository" cvs-mode-add t]
- ["Remove File from Repository" cvs-mode-remove-file t]
- ["Ignore File" cvs-mode-ignore t]
- ["Hide File" cvs-mode-acknowledge t]
- ["Hide Handled Files" cvs-mode-remove-handled t]
- "----"
- ["Add ChangeLog Entry" cvs-mode-add-change-log-entry-other-window t]
- ["Show CVS Log" cvs-mode-log t]
- ["Show CVS Status" cvs-mode-status t]
- "----"
- ["Mark File" cvs-mode-mark t]
- ["Unmark File" cvs-mode-unmark t]
- ["Mark All Files" cvs-mode-mark-all-files t]
- ["Unmark All Files" cvs-mode-unmark-all-files t]
- "----"
- ["Quit" bury-buffer t]
- ))
-
-(defun cvs-menu (e)
- (interactive "e")
- (mouse-set-point e)
- (beginning-of-line)
- (or (looking-at "^[* ] ") (error "No CVS file line here"))
- (popup-menu cvs-menu))
-
-(defun cvs-mouse-find-file (e)
- (interactive "e")
- (mouse-set-point e)
- (beginning-of-line)
- (or (looking-at "^[* ] ") (error "No CVS file line here"))
- (cvs-mode-find-file (point)))
-
-(define-key cvs-mode-map 'button3 'cvs-menu)
-(define-key cvs-mode-map 'button2 'cvs-mouse-find-file)
-
-(make-face 'cvs-header-face)
-(make-face 'cvs-filename-face)
-(make-face 'cvs-status-face)
-
-(or (face-differs-from-default-p 'cvs-header-face)
- (copy-face 'italic 'cvs-header-face))
-
-(or (face-differs-from-default-p 'cvs-filename-face)
- (copy-face 'bold 'cvs-filename-face))
-
-(or (face-differs-from-default-p 'cvs-status-face)
- (copy-face 'bold-italic 'cvs-status-face))
-
-
-(defun pcl-mode-motion-highlight-line (event)
- (if (save-excursion
- (let* ((window (event-window event))
- (buffer (and window (window-buffer window)))
- (point (and buffer (event-point event))))
- (and point
- (progn
- (set-buffer buffer)
- (goto-char point)
- (beginning-of-line)
- (looking-at "^[* ] ")))))
- (mode-motion-highlight-line event)))
-
-(defconst pcl-cvs-font-lock-keywords
- '(("^In directory \\(.+\\)$" 1 cvs-header-face)
- ("^[* ] \\w+ +\\(ci\\)" 1 cvs-status-face)
- ("^[* ] \\(Conflict\\|Merged\\)" 1 cvs-status-face)
- ("^[* ] \\w+ +\\(ci +\\)?\\(.+\\)$" 2 cvs-filename-face)
- )
- "Patterns to highlight in the *cvs* buffer.")
-
-(defun pcl-cvs-fontify ()
- ;;
- ;; set up line highlighting
- (require 'mode-motion)
- (setq mode-motion-hook 'pcl-mode-motion-highlight-line)
- ;;
- ;; set up menubar
- (if (and current-menubar (not (assoc "CVS" current-menubar)))
- (progn
- (set-buffer-menubar (copy-sequence current-menubar))
- (add-menu nil "CVS" (cdr cvs-menu))))
- ;;
- ;; fontify mousable lines
- (set (make-local-variable 'font-lock-keywords) pcl-cvs-font-lock-keywords)
- (font-lock-mode 1)
- )
-
-(add-hook 'cvs-mode-hook 'pcl-cvs-fontify)
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.elc b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.elc
deleted file mode 100644
index dabb156839a..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-lucid.elc
+++ /dev/null
Binary files differ
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-startup.el b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-startup.el
deleted file mode 100644
index f9b2de0418a..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs-startup.el
+++ /dev/null
@@ -1,14 +0,0 @@
-;;; @(#) Id: pcl-cvs-startup.el,v 1.4 1993/05/31 18:40:33 ceder Exp
-(autoload 'cvs-update "pcl-cvs"
- "Run a 'cvs update' in the current working directory. Feed the
-output to a *cvs* buffer and run cvs-mode on it.
-If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run."
- t)
-
-(autoload 'cvs-update-other-window "pcl-cvs"
- "Run a 'cvs update' in the current working directory. Feed the
-output to a *cvs* buffer, display it in the other window, and run
-cvs-mode on it.
-
-If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run."
- t)
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.aux b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.aux
deleted file mode 100644
index ce14e5a0f92..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.aux
+++ /dev/null
@@ -1,99 +0,0 @@
-'xrdef {Copying-title}{GNU GENERAL PUBLIC LICENSE}
-'xrdef {Copying-pg}{1}
-'xrdef {Copying-snt}{}
-'xrdef {Installation-title}{Installation}
-'xrdef {Installation-pg}{9}
-'xrdef {Installation-snt}{Chapter'tie1}
-'xrdef {Pcl-cvs installation-title}{Installation of the pcl-cvs program}
-'xrdef {Pcl-cvs installation-pg}{9}
-'xrdef {Pcl-cvs installation-snt}{Section'tie1.1}
-'xrdef {On-line manual installation-title}{Installation of the on-line manual.}
-'xrdef {On-line manual installation-pg}{10}
-'xrdef {On-line manual installation-snt}{Section'tie1.2}
-'xrdef {Typeset manual installation-title}{How to make typeset documentation from pcl-cvs.texinfo}
-'xrdef {Typeset manual installation-pg}{10}
-'xrdef {Typeset manual installation-snt}{Section'tie1.3}
-'xrdef {About pcl-cvs-title}{About pcl-cvs}
-'xrdef {About pcl-cvs-pg}{11}
-'xrdef {About pcl-cvs-snt}{Chapter'tie2}
-'xrdef {Contributors-title}{Contributors to pcl-cvs}
-'xrdef {Contributors-pg}{11}
-'xrdef {Contributors-snt}{Section'tie2.1}
-'xrdef {Archives-title}{Where can I get pcl-cvs?}
-'xrdef {Archives-pg}{11}
-'xrdef {Archives-snt}{Section'tie2.2}
-'xrdef {Getting started-title}{Getting started}
-'xrdef {Getting started-pg}{12}
-'xrdef {Getting started-snt}{Chapter'tie3}
-'xrdef {Buffer contents-title}{Buffer contents}
-'xrdef {Buffer contents-pg}{14}
-'xrdef {Buffer contents-snt}{Chapter'tie4}
-'xrdef {File status-title}{File status}
-'xrdef {File status-pg}{14}
-'xrdef {File status-snt}{Section'tie4.1}
-'xrdef {Selected files-title}{Selected files}
-'xrdef {Selected files-pg}{15}
-'xrdef {Selected files-snt}{Section'tie4.2}
-'xrdef {Commands-title}{Commands}
-'xrdef {Commands-pg}{16}
-'xrdef {Commands-snt}{Chapter'tie5}
-'xrdef {Updating the directory-title}{Updating the directory}
-'xrdef {Updating the directory-pg}{16}
-'xrdef {Updating the directory-snt}{Section'tie5.1}
-'xrdef {Movement commands-title}{Movement Commands}
-'xrdef {Movement commands-pg}{16}
-'xrdef {Movement commands-snt}{Section'tie5.2}
-'xrdef {Marking files-title}{Marking files}
-'xrdef {Marking files-pg}{17}
-'xrdef {Marking files-snt}{Section'tie5.3}
-'xrdef {Committing changes-title}{Committing changes}
-'xrdef {Committing changes-pg}{17}
-'xrdef {Committing changes-snt}{Section'tie5.4}
-'xrdef {Editing files-title}{Editing files}
-'xrdef {Editing files-pg}{18}
-'xrdef {Editing files-snt}{Section'tie5.5}
-'xrdef {Getting info about files-title}{Getting info about files}
-'xrdef {Getting info about files-pg}{18}
-'xrdef {Getting info about files-snt}{Section'tie5.6}
-'xrdef {Adding and removing files-title}{Adding and removing files}
-'xrdef {Adding and removing files-pg}{18}
-'xrdef {Adding and removing files-snt}{Section'tie5.7}
-'xrdef {Undoing changes-title}{Undoing changes}
-'xrdef {Undoing changes-pg}{19}
-'xrdef {Undoing changes-snt}{Section'tie5.8}
-'xrdef {Removing handled entries-title}{Removing handled entries}
-'xrdef {Removing handled entries-pg}{19}
-'xrdef {Removing handled entries-snt}{Section'tie5.9}
-'xrdef {Ignoring files-title}{Ignoring files}
-'xrdef {Ignoring files-pg}{20}
-'xrdef {Ignoring files-snt}{Section'tie5.10}
-'xrdef {Viewing differences-title}{Viewing differences}
-'xrdef {Viewing differences-pg}{20}
-'xrdef {Viewing differences-snt}{Section'tie5.11}
-'xrdef {Emerge-title}{Running emerge}
-'xrdef {Emerge-pg}{20}
-'xrdef {Emerge-snt}{Section'tie5.12}
-'xrdef {Reverting your buffers-title}{Reverting your buffers}
-'xrdef {Reverting your buffers-pg}{21}
-'xrdef {Reverting your buffers-snt}{Section'tie5.13}
-'xrdef {Miscellaneous commands-title}{Miscellaneous commands}
-'xrdef {Miscellaneous commands-pg}{21}
-'xrdef {Miscellaneous commands-snt}{Section'tie5.14}
-'xrdef {Customization-title}{Customization}
-'xrdef {Customization-pg}{22}
-'xrdef {Customization-snt}{Chapter'tie6}
-'xrdef {Future enhancements-title}{Future enhancements}
-'xrdef {Future enhancements-pg}{24}
-'xrdef {Future enhancements-snt}{Chapter'tie7}
-'xrdef {Bugs-title}{Bugs (known and unknown)}
-'xrdef {Bugs-pg}{26}
-'xrdef {Bugs-snt}{Chapter'tie8}
-'xrdef {Function and Variable Index-title}{Function and Variable Index}
-'xrdef {Function and Variable Index-pg}{27}
-'xrdef {Function and Variable Index-snt}{}
-'xrdef {Concept Index-title}{Concept Index}
-'xrdef {Concept Index-pg}{28}
-'xrdef {Concept Index-snt}{}
-'xrdef {Key Index-title}{Key Index}
-'xrdef {Key Index-pg}{30}
-'xrdef {Key Index-snt}{}
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.el b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.el
deleted file mode 100644
index 6e02183aaa0..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.el
+++ /dev/null
@@ -1,2485 +0,0 @@
-;;; @(#) Id: pcl-cvs.el,v 1.93 1993/05/31 22:44:00 ceder Exp
-;;; pcl-cvs.el -- A Front-end to CVS 1.3 or later. Release 1.05.
-;;; Copyright (C) 1991, 1992, 1993 Per Cederqvist
-;;;
-;;; This program is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2 of the License, or
-;;; (at your option) any later version.
-;;;
-;;; This program is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with this program; if not, write to the Free Software
-;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-;;;; See below for installation instructions.
-;;;;
-;;;; There is an TeXinfo file that describes this package. The GNU
-;;;; General Public License is included in that file. You should read
-;;;; it to get the most from this package.
-
-;;;; Send bug reports and improvements to ceder@lysator.liu.se or
-;;;; ceder@signum.se. Talk some about Signum Support here. +++FIXME
-
-;;; Don't try to use this with CVS 1.2 or earlier. It won't work. Get
-;;; CVS 1.3. This package works together with RCS 5.6 and probably 5.5
-;;; as well.
-
-;;; Mail questions and bug reports to ceder@lysator.liu.se.
-
-(require 'cookie)
-(provide 'pcl-cvs)
-
-;;; -------------------------------------------------------
-;;; START OF THINGS TO CHECK WHEN INSTALLING
-
-(defvar cvs-program "/usr/local/bin/cvs"
- "*Full path to the cvs executable.")
-
-(defvar cvs-diff-program "/usr/local/bin/diff"
- "*Full path to the diff program.")
-
-(defvar cvs-rmdir-program "/bin/rmdir"
- "*Full path to the rmdir program. Typically /bin/rmdir.")
-
-;; Uncomment the following line if you are running on 18.57 or earlier.
-;(setq delete-exited-processes nil)
-;; Emacs version 18.57 and earlier is likely to crash if
-;; delete-exited-processes is t, since the sentinel uses lots of
-;; memory, and 18.57 forgets to GCPROT a variable if
-;; delete-exited-processes is t.
-
-(defvar cvs-shell "/bin/sh"
- "*Full path to a shell that can do redirection on stdout.")
-
-;;; END OF THINGS TO CHECK WHEN INSTALLING
-;;; --------------------------------------------------------
-
-(defvar cvs-cvsroot nil
- "*Specifies where the (current) cvs master repository is.
-Overrides the $CVSROOT variable by sending \" -d dir\" to all cvs commands.
-This switch is useful if you have multiple CVS repositories.")
-
-(defvar cvs-cvsroot-required t
- "*Specifies whether CVS needs to be told where the repository is.
-
-In CVS 1.3, if your CVSROOT environment variable is not set, and you
-do not set the `cvs-cvsroot' lisp variable, CVS will have no idea
-where to find the repository, and refuse to run. CVS 1.4 and later
-store the repository path with the working directories, so most
-operations don't need to be told where the repository is.
-
-If you work with multiple repositories with CVS 1.4, it's probably
-advisable to leave your CVSROOT environment variable unset, set this
-variable to nil, and let CVS figure out where the repository is for
-itself.")
-
-(defvar cvs-stdout-file nil
- "Name of the file that holds the output that CVS sends to stdout.
-This variable is buffer local.")
-
-(defvar cvs-lock-file nil
- "Full path to a lock file that CVS is waiting for (or was waiting for).")
-
-(defvar cvs-bakprefix ".#"
- "The prefix that CVS prepends to files when rcsmerge'ing.")
-
-(defvar cvs-erase-input-buffer nil
- "*Non-nil if input buffers should be cleared before asking for new info.")
-
-(defvar cvs-auto-remove-handled nil
- "*Non-nil if cvs-mode-remove-handled should be called automatically.
-If this is set to any non-nil value entries that does not need to be
-checked in will be removed from the *cvs* buffer after every cvs-mode-commit
-command.")
-
-(defvar cvs-sort-ignore-file t
- "*Non-nil if cvs-mode-ignore should sort the .cvsignore automatically.")
-
-(defvar cvs-auto-revert-after-commit t
- "*Non-nil if committed buffers should be automatically reverted.")
-
-(defconst cvs-cursor-column 14
- "Column to position cursor in in cvs-mode.
-Column 0 is left-most column.")
-
-(defvar cvs-mode-map nil
- "Keymap for the cvs mode.")
-
-(defvar cvs-edit-mode-map nil
- "Keymap for the cvs edit mode (used when editing cvs log messages).")
-
-(defvar cvs-buffer-name "*cvs*"
- "Name of the cvs buffer.")
-
-(defvar cvs-commit-prompt-buffer "*cvs-commit-message*"
- "Name of buffer in which the user is prompted for a log message when
-committing files.")
-
-(defvar cvs-commit-buffer-require-final-newline t
- "*t says silently put a newline at the end of commit log messages.
-Non-nil but not t says ask user whether to add a newline in each such case.
-nil means don't add newlines.")
-
-(defvar cvs-temp-buffer-name "*cvs-tmp*"
- "*Name of the cvs temporary buffer.
-Output from cvs is placed here by synchronous commands.")
-
-(defvar cvs-diff-ignore-marks nil
- "*Non-nil if cvs-diff and cvs-mode-diff-backup should ignore any marked files.
-Normally they run diff on the files that are marked (with cvs-mode-mark),
-or the file under the cursor if no files are marked. If this variable
-is set to a non-nil value they will always run diff on the file on the
-current line.")
-
-(defvar cvs-status-flags nil
- "*List of strings to pass to ``cvs status''.")
-
-(defvar cvs-log-flags nil
- "*List of strings to pass to ``cvs log''.")
-
-(defvar cvs-diff-flags nil
- "*List of strings to use as flags to pass to ``diff'' and ``cvs diff''.
-Used by cvs-mode-diff-cvs and cvs-mode-diff-backup.
-Set this to '(\"-u\") to get a Unidiff format, or '(\"-c\") to get context diffs.")
-
-(defvar cvs-update-prog-output-skip-regexp "$"
- "*A regexp that matches the end of the output from all cvs update programs.
-That is, output from any programs that are run by CVS (by the flag -u
-in the `modules' file - see cvs(5)) when `cvs update' is performed should
-terminate with a line that this regexp matches. It is enough that
-some part of the line is matched.
-
-The default (a single $) fits programs without output.")
-
-;; The variables below are used internally by pcl-cvs. You should
-;; never change them.
-
-(defvar cvs-buffers-to-delete nil
- "List of temporary buffers that should be discarded as soon as possible.
-Due to a bug in emacs 18.57 the sentinel can't discard them reliably.")
-
-;; You are NOT allowed to disable this message by default. However, you
-;; are encouraged to inform your users that by adding
-;; (setq cvs-inhibit-copyright-message t)
-;; to their .emacs they can get rid of it. Just don't add that line
-;; to your default.el!
-(defvar cvs-inhibit-copyright-message nil
- "*Non-nil means don't display a Copyright message in the ``*cvs*'' buffer.")
-
-(defconst pcl-cvs-version "1.05"
- "A string denoting the current release version of pcl-cvs.")
-
-(defconst cvs-startup-message
- (if cvs-inhibit-copyright-message
- "PCL-CVS release 1.05"
- "PCL-CVS release 1.05. Copyright (C) 1992, 1993 Per Cederqvist
-Pcl-cvs comes with absolutely no warranty; for details consult the manual.
-This is free software, and you are welcome to redistribute it under certain
-conditions; again, consult the TeXinfo manual for details.")
- "*Startup message for CVS.")
-
-(defvar cvs-update-running nil
- "This is set to nil when no process is running, and to
-the process when a cvs update process is running.")
-
-(defvar cvs-cookie-handle nil
- "Handle for the cookie structure that is displayed in the *cvs* buffer.")
-
-(defvar cvs-mode-commit nil
- "Used internally by pcl-cvs.")
-
-;;; The cvs data structure:
-;;;
-;;; When the `cvs update' is ready we parse the output. Every file
-;;; that is affected in some way is added as a cookie of fileinfo
-;;; (as defined below).
-;;;
-
-;;; cvs-fileinfo
-;;;
-;;; marked t/nil
-;;; type One of
-;;; UPDATED - file copied from repository
-;;; MODIFIED - modified by you, unchanged in
-;;; repository
-;;; ADDED - added by you, not yet committed
-;;; REMOVED - removed by you, not yet committed
-;;; CVS-REMOVED- removed, since file no longer exists
-;;; in the repository.
-;;; MERGED - successful merge
-;;; CONFLICT - conflict when merging
-;;; REM-CONFLICT-removed in repository, changed locally.
-;;; MOD-CONFLICT-removed locally, changed in repository.
-;;; REM-EXIST -removed locally, but still exists.
-;;; DIRCHANGE - A change of directory.
-;;; UNKNOWN - An unknown file.
-;;; MOVE-AWAY - A file that is in the way.
-;;; REPOS-MISSING- The directory is removed from the
-;;; repository. Go fetch a backup.
-;;; MESSAGE - This is a special fileinfo that is used
-;;; to display a text that should be in
-;;; full-log.
-;;; dir Directory the file resides in. Should not end with
-;;; slash.
-;;; file-name The file name.
-;;; base-revision The revision that the working file was based on.
-;;; Only valid for MERGED and CONFLICT files.
-;;; cvs-diff-buffer A buffer that contains a 'cvs diff file'.
-;;; backup-diff-buffer A buffer that contains a 'diff file backup-file'.
-;;; full-log The output from cvs, unparsed.
-;;; mod-time Modification time of file used for *-diff-buffer.
-;;; handled True if this file doesn't require further action.
-;;;
-;;; Constructor:
-
-;;; cvs-fileinfo
-
-;;; Constructor:
-
-(defun cvs-create-fileinfo (type
- dir
- file-name
- full-log)
- "Create a fileinfo from all parameters.
-Arguments: TYPE DIR FILE-NAME FULL-LOG.
-A fileinfo has the following fields:
-
- marked t/nil
- type One of
- UPDATED - file copied from repository
- MODIFIED - modified by you, unchanged in
- repository
- ADDED - added by you, not yet committed
- REMOVED - removed by you, not yet committed
- CVS-REMOVED- removed, since file no longer exists
- in the repository.
- MERGED - successful merge
- CONFLICT - conflict when merging
- REM-CONFLICT-removed in repository, but altered
- locally.
- MOD-CONFLICT-removed locally, changed in repository.
- REM-EXIST - removed locally, but still exists.
- DIRCHANGE - A change of directory.
- UNKNOWN - An unknown file.
- MOVE-AWAY - A file that is in the way.
- REPOS-MISSING- The directory has vanished from the
- repository.
- MESSAGE - This is a special fileinfo that is used
- to display a text that should be in
- full-log.
- dir Directory the file resides in. Should not end with slash.
- file-name The file name.
- backup-file Name of the backup file if MERGED or CONFLICT.
- cvs-diff-buffer A buffer that contains a 'cvs diff file'.
- backup-diff-buffer A buffer that contains a 'diff file backup-file'.
- full-log The output from cvs, unparsed.
- mod-time Modification time of file used for *-diff-buffer.
- handled True if this file doesn't require further action."
- (cons
- 'CVS-FILEINFO
- (vector nil nil type dir file-name nil nil nil full-log nil)))
-
-
-;;; Selectors:
-
-(defun cvs-fileinfo->handled (cvs-fileinfo)
- "Get the `handled' field from CVS-FILEINFO."
- (elt (cdr cvs-fileinfo) 0))
-
-(defun cvs-fileinfo->marked (cvs-fileinfo)
- "Check if CVS-FILEINFO is marked."
- (elt (cdr cvs-fileinfo) 1))
-
-(defun cvs-fileinfo->type (cvs-fileinfo)
- "Get type from CVS-FILEINFO.
-Type is one of UPDATED, MODIFIED, ADDED, REMOVED, CVS-REMOVED, MERGED,
-CONFLICT, REM-CONFLICT, MOD-CONFLICT, REM-EXIST, DIRCHANGE, UNKNOWN, MOVE-AWAY,
-REPOS-MISSING or MESSAGE."
- (elt (cdr cvs-fileinfo) 2))
-
-(defun cvs-fileinfo->dir (cvs-fileinfo)
- "Get dir from CVS-FILEINFO.
-The directory name does not end with a slash. "
- (elt (cdr cvs-fileinfo) 3))
-
-(defun cvs-fileinfo->file-name (cvs-fileinfo)
- "Get file-name from CVS-FILEINFO."
- (elt (cdr cvs-fileinfo) 4))
-
-(defun cvs-fileinfo->base-revision (cvs-fileinfo)
- "Get the base revision from CVS-FILEINFO."
- (elt (cdr cvs-fileinfo) 5))
-
-(defun cvs-fileinfo->cvs-diff-buffer (cvs-fileinfo)
- "Get cvs-diff-buffer from CVS-FILEINFO."
- (elt (cdr cvs-fileinfo) 6))
-
-(defun cvs-fileinfo->backup-diff-buffer (cvs-fileinfo)
- "Get backup-diff-buffer from CVS-FILEINFO."
- (elt (cdr cvs-fileinfo) 7))
-
-(defun cvs-fileinfo->full-log (cvs-fileinfo)
- "Get full-log from CVS-FILEINFO."
- (elt (cdr cvs-fileinfo) 8))
-
-(defun cvs-fileinfo->mod-time (cvs-fileinfo)
- "Get mod-time from CVS-FILEINFO."
- (elt (cdr cvs-fileinfo) 9))
-
-;;; Modifiers:
-
-(defun cvs-set-fileinfo->handled (cvs-fileinfo newval)
- "Set handled in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 0 newval))
-
-(defun cvs-set-fileinfo->marked (cvs-fileinfo newval)
- "Set marked in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 1 newval))
-
-(defun cvs-set-fileinfo->type (cvs-fileinfo newval)
- "Set type in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 2 newval))
-
-(defun cvs-set-fileinfo->dir (cvs-fileinfo newval)
- "Set dir in CVS-FILEINFO to NEWVAL.
-The directory should now end with a slash."
- (aset (cdr cvs-fileinfo) 3 newval))
-
-(defun cvs-set-fileinfo->file-name (cvs-fileinfo newval)
- "Set file-name in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 4 newval))
-
-(defun cvs-set-fileinfo->base-revision (cvs-fileinfo newval)
- "Set base-revision in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 5 newval))
-
-(defun cvs-set-fileinfo->cvs-diff-buffer (cvs-fileinfo newval)
- "Set cvs-diff-buffer in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 6 newval))
-
-(defun cvs-set-fileinfo->backup-diff-buffer (cvs-fileinfo newval)
- "Set backup-diff-buffer in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 7 newval))
-
-(defun cvs-set-fileinfo->full-log (cvs-fileinfo newval)
- "Set full-log in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 8 newval))
-
-(defun cvs-set-fileinfo->mod-time (cvs-fileinfo newval)
- "Set full-log in CVS-FILEINFO to NEWVAL."
- (aset (cdr cvs-fileinfo) 9 newval))
-
-
-
-;;; Predicate:
-
-(defun cvs-fileinfo-p (object)
- "Return t if OBJECT is a cvs-fileinfo."
- (eq (car-safe object) 'CVS-FILEINFO))
-
-;;;; End of types.
-
-(defun cvs-use-temp-buffer ()
- "Display a temporary buffer in another window and select it.
-The selected window will not be changed. The temporary buffer will
-be erased and writable."
-
- (let ((dir default-directory))
- (display-buffer (get-buffer-create cvs-temp-buffer-name))
- (set-buffer cvs-temp-buffer-name)
- (setq buffer-read-only nil)
- (setq default-directory dir)
- (erase-buffer)))
-
-; Too complicated to handle all the cases that are generated.
-; Maybe later.
-;(defun cvs-examine (directory &optional local)
-; "Run a 'cvs -n update' in the current working directory.
-;That is, check what needs to be done, but don't change the disc.
-;Feed the output to a *cvs* buffer and run cvs-mode on it.
-;If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run."
-; (interactive (list (read-file-name "CVS Update (directory): "
-; nil default-directory nil)
-; current-prefix-arg))
-; (cvs-do-update directory local 'noupdate))
-
-(defun cvs-update (directory &optional local)
- "Run a 'cvs update' in the current working directory. Feed the
-output to a *cvs* buffer and run cvs-mode on it.
-If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run."
- (interactive (list (read-file-name "CVS Update (directory): "
- nil default-directory nil)
- current-prefix-arg))
- (cvs-do-update directory local nil)
- (switch-to-buffer cvs-buffer-name))
-
-(defun cvs-update-other-window (directory &optional local)
- "Run a 'cvs update' in the current working directory. Feed the
-output to a *cvs* buffer, display it in the other window, and run
-cvs-mode on it.
-
-If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run."
- (interactive (list (read-file-name "CVS Update other window (directory): "
- nil default-directory nil)
- current-prefix-arg))
- (cvs-do-update directory local nil)
- (switch-to-buffer-other-window cvs-buffer-name))
-
-(defun cvs-filter (predicate list &rest extra-args)
- "Apply PREDICATE to each element on LIST.
-Args: PREDICATE LIST &rest EXTRA-ARGS.
-Return a new list consisting of those elements that PREDICATE
-returns non-nil for.
-
-If more than two arguments are given the remaining args are
-passed to PREDICATE."
- ;; Avoid recursion - this should work for LONG lists also!
- (let* ((head (cons 'dummy-header nil))
- (tail head))
- (while list
- (if (apply predicate (car list) extra-args)
- (setq tail (setcdr tail (list (car list)))))
- (setq list (cdr list)))
- (cdr head)))
-
-(defun cvs-mode-update-no-prompt ()
- "Run cvs update in current directory."
- (interactive)
- (cvs-do-update default-directory nil nil))
-
-(defun cvs-do-update (directory local dont-change-disc)
- "Do a 'cvs update' in DIRECTORY.
-Args: DIRECTORY LOCAL DONT-CHANGE-DISC &optional NOTTHISWINDOW.
-If LOCAL is non-nil 'cvs update -l' is executed.
-If DONT-CHANGE-DISC is non-nil 'cvs -n update' is executed.
-Both LOCAL and DONT-CHANGE-DISC may be non-nil simultaneously.
-
-*Note*: DONT-CHANGE-DISC does not yet work. The parser gets confused."
- (save-some-buffers)
- (if (not (file-exists-p cvs-program))
- (error "%s: file not found (check setting of cvs-program)"
- cvs-program))
- (if (and cvs-cvsroot-required
- (not (or (getenv "CVSROOT") cvs-cvsroot)))
- (error "Both cvs-cvsroot and environment variable CVSROOT unset."))
- (let* ((this-dir (file-name-as-directory (expand-file-name directory)))
- (update-buffer (generate-new-buffer
- (concat (file-name-nondirectory
- (substring this-dir 0 -1))
- "-update")))
- (temp-name (make-temp-name
- (concat (file-name-as-directory
- (or (getenv "TMPDIR") "/tmp"))
- "pcl-cvs.")))
- (args nil))
-
- ;; Check that this-dir exists and is a directory that is under CVS contr.
-
- (if (not (file-directory-p this-dir))
- (error "%s is not a directory." this-dir))
- (if (not (file-directory-p (concat this-dir "CVS")))
- (error "%s does not contain CVS controlled files." this-dir))
-
- ;; Check that at most one `cvs update' is run at any time.
-
- (if (and cvs-update-running (process-status cvs-update-running)
- (or (eq (process-status cvs-update-running) 'run)
- (eq (process-status cvs-update-running) 'stop)))
- (error "Can't run two `cvs update' simultaneously."))
-
- ;; Generate "-d /master -n update -l".
- (setq args (concat (if cvs-cvsroot (concat " -d " cvs-cvsroot))
- (if dont-change-disc " -n ")
- " update "
- (if local " -l ")))
-
- ;; Set up the buffer that receives the stderr output from "cvs update".
- (set-buffer update-buffer)
- (setq default-directory this-dir)
- (make-local-variable 'cvs-stdout-file)
- (setq cvs-stdout-file temp-name)
-
- (setq cvs-update-running
- (let ((process-connection-type nil)) ; Use a pipe, not a pty.
- (start-process "cvs" update-buffer cvs-shell "-c"
- (concat cvs-program " " args " > " temp-name))))
-
- (setq mode-line-process
- (concat ": "
- (symbol-name (process-status cvs-update-running))))
- (set-buffer-modified-p (buffer-modified-p)) ; Update the mode line.
- (set-process-sentinel cvs-update-running 'cvs-sentinel)
- (set-process-filter cvs-update-running 'cvs-update-filter)
- (set-marker (process-mark cvs-update-running) (point-min))
-
- (save-excursion
- (set-buffer (get-buffer-create cvs-buffer-name))
- (setq buffer-read-only nil)
- (erase-buffer)
- (cvs-mode))
-
- (setq cvs-cookie-handle
- (collection-create
- cvs-buffer-name 'cvs-pp
- cvs-startup-message ;Se comment above cvs-startup-message.
- "---------- End -----"))
-
- (cookie-enter-first
- cvs-cookie-handle
- (cvs-create-fileinfo
- 'MESSAGE nil nil (concat "\n Running `cvs " args "' in " this-dir
- "...\n")))
-
- (save-excursion
- (set-buffer cvs-buffer-name)
- (setq mode-line-process
- (concat ": "
- (symbol-name (process-status cvs-update-running))))
- (set-buffer-modified-p (buffer-modified-p)) ; Update the mode line.
- (setq buffer-read-only t))
-
- ;; Work around a bug in emacs 18.57 and earlier.
- (setq cvs-buffers-to-delete
- (cvs-delete-unused-temporary-buffers cvs-buffers-to-delete)))
-
- ;; The following line is said to improve display updates on some
- ;; emacses. It shouldn't be needed, but it does no harm.
- (sit-for 0))
-
-
-(defun cvs-delete-unused-temporary-buffers (list)
- "Delete all buffers on LIST that is not visible.
-Return a list of all buffers that still is alive."
-
- (cond
- ((null list) nil)
- ((get-buffer-window (car list))
- (cons (car list)
- (cvs-delete-unused-temporary-buffers (cdr list))))
- (t
- (kill-buffer (car list))
- (cvs-delete-unused-temporary-buffers (cdr list)))))
-
-
-(put 'cvs-mode 'mode-class 'special)
-
-(defun cvs-mode ()
- "\\<cvs-mode-map>Mode used for pcl-cvs, a frontend to CVS.
-
-To get the *cvs* buffer you should use ``\\[cvs-update]''.
-
-Full documentation is in the Texinfo file. These are the most useful commands:
-
-\\[cvs-mode-previous-line] Move up. \\[cvs-mode-next-line] Move down.
-\\[cvs-mode-commit] Commit file. \\[cvs-mode-update-no-prompt] Reupdate directory.
-\\[cvs-mode-mark] Mark file/dir. \\[cvs-mode-unmark] Unmark file/dir.
-\\[cvs-mode-mark-all-files] Mark all files. \\[cvs-mode-unmark-all-files] Unmark all files.
-\\[cvs-mode-find-file] Edit file/run Dired. \\[cvs-mode-find-file-other-window] Find file or run Dired in other window.
-\\[cvs-mode-remove-handled] Remove processed entries. \\[cvs-mode-add-change-log-entry-other-window] Write ChangeLog in other window.
-\\[cvs-mode-add] Add to repository. \\[cvs-mode-remove-file] Remove file.
-\\[cvs-mode-diff-cvs] Diff between base revision. \\[cvs-mode-diff-backup] Diff backup file.
-\\[cvs-mode-emerge] Run emerge on base revision/backup file.
-\\[cvs-mode-acknowledge] Delete line from buffer. \\[cvs-mode-ignore] Add file to the .cvsignore file.
-\\[cvs-mode-log] Run ``cvs log''. \\[cvs-mode-status] Run ``cvs status''.
-\\[cvs-mode-changelog-commit] Like \\[cvs-mode-commit], but get default log text from ChangeLog.
-\\[cvs-mode-undo-local-changes] Revert the last checked in version - discard your changes to the file.
-
-Entry to this mode runs cvs-mode-hook.
-This description is updated for release 1.05 of pcl-cvs.
-
-All bindings:
-\\{cvs-mode-map}"
- (interactive)
- (setq major-mode 'cvs-mode)
- (setq mode-name "CVS")
- (setq mode-line-process nil)
- (buffer-flush-undo (current-buffer))
- (make-local-variable 'goal-column)
- (setq goal-column cvs-cursor-column)
- (use-local-map cvs-mode-map)
- (run-hooks 'cvs-mode-hook))
-
-(defun cvs-sentinel (proc msg)
- "Sentinel for the cvs update process.
-This is responsible for parsing the output from the cvs update when
-it is finished."
- (cond
- ((null (buffer-name (process-buffer proc)))
- ;; buffer killed
- (set-process-buffer proc nil))
- ((memq (process-status proc) '(signal exit))
- (let* ((obuf (current-buffer))
- (omax (point-max))
- (opoint (point)))
- ;; save-excursion isn't the right thing if
- ;; process-buffer is current-buffer
- (unwind-protect
- (progn
- (set-buffer (process-buffer proc))
- (setq mode-line-process
- (concat ": "
- (symbol-name (process-status proc))))
- (let* ((out-file cvs-stdout-file)
- (stdout-buffer (find-file-noselect out-file)))
- (cvs-parse-update stdout-buffer (process-buffer proc))
- (setq cvs-buffers-to-delete
- (cons (process-buffer proc)
- (cons stdout-buffer
- cvs-buffers-to-delete)))
- (delete-file out-file)))
- (set-buffer-modified-p (buffer-modified-p))
- (setq cvs-update-running nil))
- (if (equal obuf (process-buffer proc))
- nil
- (set-buffer (process-buffer proc))
- (if (< opoint omax)
- (goto-char opoint))
- (set-buffer obuf))))))
-
-(defun cvs-update-filter (proc string)
- "Filter function for pcl-cvs.
-This function gets the output that CVS sends to stderr. It inserts it
-into (process-buffer proc) but it also checks if CVS is waiting for a
-lock file. If so, it inserts a message cookie in the *cvs* buffer."
- (let ((old-buffer (current-buffer))
- (data (match-data)))
- (unwind-protect
- (progn
- (set-buffer (process-buffer proc))
- (save-excursion
- ;; Insert the text, moving the process-marker.
- (goto-char (process-mark proc))
- (insert string)
- (set-marker (process-mark proc) (point))
- ;; Delete any old lock message
- (if (tin-nth cvs-cookie-handle 1)
- (tin-delete cvs-cookie-handle
- (tin-nth cvs-cookie-handle 1)))
- ;; Check if CVS is waiting for a lock.
- (beginning-of-line 0) ;Move to beginning of last
- ;complete line.
- (cond
- ((looking-at
- "^cvs update: \\[..:..:..\\] waiting \
-for \\(.*\\)lock in \\(.*\\)$")
- (setq cvs-lock-file (buffer-substring (match-beginning 2)
- (match-end 2)))
- (cookie-enter-last
- cvs-cookie-handle
- (cvs-create-fileinfo
- 'MESSAGE nil nil
- (concat "\tWaiting for "
- (buffer-substring (match-beginning 1)
- (match-end 1))
- "lock in " cvs-lock-file
- ".\n\t (type M-x cvs-delete-lock to delete it)")))))))
- (store-match-data data)
- (set-buffer old-buffer))))
-
-(defun cvs-delete-lock ()
- "Delete the lock file that CVS is waiting for.
-Note that this can be dangerous. You should only do this
-if you are convinced that the process that created the lock is dead."
- (interactive)
- (cond
- ((not (or (file-exists-p
- (concat (file-name-as-directory cvs-lock-file) "#cvs.lock"))
- (cvs-filter (function cvs-lock-file-p)
- (directory-files cvs-lock-file))))
- (error "No lock files found."))
- ((yes-or-no-p (concat "Really delete locks in " cvs-lock-file "? "))
- ;; Re-read the directory -- the locks might have disappeared.
- (let ((locks (cvs-filter (function cvs-lock-file-p)
- (directory-files cvs-lock-file))))
- (while locks
- (delete-file (concat (file-name-as-directory cvs-lock-file)
- (car locks)))
- (setq locks (cdr locks)))
- (cvs-remove-directory
- (concat (file-name-as-directory cvs-lock-file) "#cvs.lock"))))))
-
-(defun cvs-remove-directory (dir)
- "Remove a directory."
- (if (file-directory-p dir)
- (call-process cvs-rmdir-program nil nil nil dir)
- (error "Not a directory: %s" dir))
- (if (file-exists-p dir)
- (error "Could not remove directory %s" dir)))
-
-(defun cvs-lock-file-p (file)
- "Return true if FILE looks like a CVS lock file."
- (or
- (string-match "^#cvs.tfl.[0-9]+$" file)
- (string-match "^#cvs.rfl.[0-9]+$" file)
- (string-match "^#cvs.wfl.[0-9]+$" file)))
-
-(defun cvs-skip-line (stdout stderr regexp &optional arg)
- "Like forward-line, but check that the skipped line matches REGEXP.
-Args: STDOUT STDERR REGEXP &optional ARG.
-
-If it doesn't match REGEXP a bug report is generated and displayed.
-STDOUT and STDERR is only used to do that.
-
-If optional ARG, a number, is given the ARGth parenthesized expression
-in the REGEXP is returned as a string.
-Point should be in column 1 when this function is called."
- (cond
- ((looking-at regexp)
- (forward-line 1)
- (if arg
- (buffer-substring (match-beginning arg)
- (match-end arg))))
- (t
- (cvs-parse-error stdout stderr
- (if (eq (current-buffer) stdout) 'STDOUT 'STDERR)
- (point)))))
-
-(defun cvs-get-current-dir (root-dir dirname)
- "Return current working directory, suitable for cvs-parse-update.
-Args: ROOT-DIR DIRNAME.
-Concatenates ROOT-DIR and DIRNAME to form an absolute path."
- (if (string= "." dirname)
- (substring root-dir 0 -1)
- (concat root-dir dirname)))
-
-(defun cvs-compare-fileinfos (a b)
- "Compare fileinfo A with fileinfo B and return t if A is `less'."
- (cond
- ;; Sort acording to directories.
- ((string< (cvs-fileinfo->dir a) (cvs-fileinfo->dir b)) t)
- ((not (string= (cvs-fileinfo->dir a) (cvs-fileinfo->dir b))) nil)
-
- ;; The DIRCHANGE entry is always first within the directory.
- ((and (eq (cvs-fileinfo->type a) 'DIRCHANGE)
- (not (eq (cvs-fileinfo->type b) 'DIRCHANGE))) t)
- ((and (eq (cvs-fileinfo->type b) 'DIRCHANGE)
- (not (eq (cvs-fileinfo->type a) 'DIRCHANGE))) nil)
- ;; All files are sorted by file name.
- ((string< (cvs-fileinfo->file-name a) (cvs-fileinfo->file-name b)))))
-
-(defun cvs-parse-error (stdout-buffer stderr-buffer err-buf pos)
- "Handle a parse error when parsing the output from cvs.
-Args: STDOUT-BUFFER STDERR-BUFFER ERR-BUF POS.
-ERR-BUF should be 'STDOUT or 'STDERR."
- (setq pos (1- pos))
- (set-buffer cvs-buffer-name)
- (setq buffer-read-only nil)
- (erase-buffer)
- (insert "To: ceder@lysator.liu.se\n")
- (insert "Subject: pcl-cvs " pcl-cvs-version " parse error.\n")
- (insert "--text follows this line--\n\n")
- (insert "This bug report is automatically generated by pcl-cvs\n")
- (insert "because it doesn't understand some output from CVS. Below\n")
- (insert "is detailed information about the error. Please send\n")
- (insert "this, together with any information you think might be\n")
- (insert "useful for me to fix the bug, to the address above. But\n")
- (insert "please check the \"known problems\" section of the\n")
- (insert "documentation first. Note that this buffer contains\n")
- (insert "information that you might consider confidential. You\n")
- (insert "are encouraged to read through it before sending it.\n")
- (insert "\n")
- (insert "Press C-c C-c to send this email.\n\n")
- (insert "Please state the version of these programs you are using:\n")
- (insert "RCS: \ndiff: \n\n")
-
- (let* ((stdout (save-excursion (set-buffer stdout-buffer) (buffer-string)))
- (stderr (save-excursion (set-buffer stderr-buffer) (buffer-string)))
- (errstr (if (eq err-buf 'STDOUT) stdout stderr))
- (errline-end (string-match "\n" errstr pos))
- (errline (substring errstr pos errline-end)))
- (insert (format "Offending line (%d chars): >" (- errline-end pos)))
- (insert errline)
- (insert "<\n")
- (insert "Sent to " (symbol-name err-buf) " at pos " (format "%d\n" pos))
- (insert "Emacs-version: " (emacs-version) "\n")
- (insert "Pcl-cvs $" "Id:" "$" ": " "Id: pcl-cvs.el,v 1.93 1993/05/31 22:44:00 ceder Exp \n")
- (insert "\n")
- (insert (format "--- Contents of stdout buffer (%d chars) ---\n"
- (length stdout)))
- (insert stdout)
- (insert "--- End of stdout buffer ---\n")
- (insert (format "--- Contents of stderr buffer (%d chars) ---\n"
- (length stderr)))
- (insert stderr)
- (insert "--- End of stderr buffer ---\n")
- (insert "End of bug report.\n")
- (require 'sendmail)
- (mail-mode)
- (error "CVS parse error - please report this bug.")))
-
-(defun cvs-parse-update (stdout-buffer stderr-buffer)
- "Parse the output from `cvs update'.
-
-Args: STDOUT-BUFFER STDERR-BUFFER.
-
-This functions parses the from `cvs update' (which should be
-separated in its stdout- and stderr-components) and prints a
-pretty representation of it in the *cvs* buffer.
-
-Signals an error if unexpected output was detected in the buffer."
- (let* ((head (cons 'dummy nil))
- (tail (cvs-parse-stderr stdout-buffer stderr-buffer
- head default-directory))
- (root-dir default-directory))
- (cvs-parse-stdout stdout-buffer stderr-buffer tail root-dir)
- (setq head (sort (cdr head) (function cvs-compare-fileinfos)))
-
- (collection-clear cvs-cookie-handle)
- (collection-append-cookies cvs-cookie-handle head)
- (cvs-remove-stdout-shadows)
- (cvs-remove-empty-directories)
- (set-buffer cvs-buffer-name)
- (cvs-mode)
- (goto-char (point-min))
- (tin-goto-previous cvs-cookie-handle (point-min) 1)
- (setq default-directory root-dir)))
-
-(defun cvs-remove-stdout-shadows ()
- "Remove entries in the *cvs* buffer that comes from both stdout and stderr.
-If there is two entries for a single file the second one should be
-deleted. (Remember that sort uses a stable sort algorithm, so one can
-be sure that the stderr entry is always first)."
- (collection-filter-tins cvs-cookie-handle
- (function
- (lambda (tin)
- (not (cvs-shadow-entry-p tin))))))
-
-(defun cvs-shadow-entry-p (tin)
- "Return non-nil if TIN is a shadow entry.
-Args: TIN.
-A TIN is a shadow entry if the previous tin contains the same file."
- (let* ((previous-tin (tin-previous cvs-cookie-handle tin))
- (curr (tin-cookie cvs-cookie-handle tin))
- (prev (and previous-tin
- (tin-cookie cvs-cookie-handle previous-tin))))
- (and
- prev curr
- (string= (cvs-fileinfo->file-name prev) (cvs-fileinfo->file-name curr))
- (string= (cvs-fileinfo->dir prev) (cvs-fileinfo->dir curr))
- (or
- (and (eq (cvs-fileinfo->type prev) 'CONFLICT)
- (eq (cvs-fileinfo->type curr) 'CONFLICT))
- (and (eq (cvs-fileinfo->type prev) 'MERGED)
- (eq (cvs-fileinfo->type curr) 'MODIFIED))
- (and (eq (cvs-fileinfo->type prev) 'REM-EXIST)
- (eq (cvs-fileinfo->type curr) 'REMOVED))))))
-
-
-(defun cvs-parse-stderr (stdout-buffer stderr-buffer head dir)
- "Parse the output from CVS that is written to stderr.
-Args: STDOUT-BUFFER STDERR-BUFFER HEAD DIR
-STDOUT-BUFFER holds the output that cvs sent to stdout. It is only
-used to create a bug report in case there is a parse error.
-STDERR-BUFFER is the buffer that holds the output to parse.
-HEAD is a cons-cell, the head of the list that is built.
-DIR is the directory the `cvs update' was run in.
-
-This function returns the last cons-cell in the list that is built."
-
- (save-window-excursion
- (set-buffer stderr-buffer)
- (goto-char (point-min))
- (let ((current-dir dir)
- (root-dir dir))
-
- (while (< (point) (point-max))
- (cond
-
- ;; RCVS support (for now, we simply ignore any output from
- ;; RCVS, including error messages!)
-
- ((looking-at "updating of .* finished$")
- (forward-line 1))
-
- ((looking-at "REMOTE FOLDER:.*")
- (forward-line 1)
- (while (and (< (point) (point-max)) (not (looking-at "phase 2.*")))
- (forward-line 1))
- (forward-line 2))
-
- ((looking-at "turn on remote mode$")
- (forward-line 1)
- (while (and (< (point) (point-max)) (not (looking-at "phase 2.*")))
- (forward-line 1))
- (forward-line 2))
-
- ((looking-at "phase 3.*")
- (goto-char (point-max)))
-
- ;; End of RCVS stuff.
-
- ;; CVS is descending a subdirectory.
- ;; (The "server" case is there to support Cyclic CVS.)
- ((looking-at "cvs \\(update\\|server\\): Updating \\(.*\\)$")
- (setq current-dir
- (cvs-get-current-dir
- root-dir
- (buffer-substring (match-beginning 2) (match-end 2))))
- (setcdr head (list (cvs-create-fileinfo
- 'DIRCHANGE current-dir
- nil (buffer-substring (match-beginning 0)
- (match-end 0)))))
- (setq head (cdr head))
- (forward-line 1))
-
- ;; File removed, since it is removed (by third party) in repository.
-
- ((or (looking-at
- "cvs update: warning: \\(.*\\) is not (any longer) pertinent")
- (looking-at
- "cvs update: \\(.*\\) is no longer in the repository"))
-
- (setcdr head (list (cvs-create-fileinfo
- 'CVS-REMOVED current-dir
- (file-name-nondirectory
- (buffer-substring (match-beginning 1)
- (match-end 1)))
- (buffer-substring (match-beginning 0)
- (match-end 0)))))
- (setq head (cdr head))
- (forward-line 1))
-
- ;; File removed by you, but recreated by cvs. Ignored.
-
- ((looking-at "cvs update: warning: .* was lost$")
- (forward-line 1))
-
- ;; A file that has been created by you, but added to the cvs
- ;; repository by another.
-
- ((looking-at "^cvs update: move away \\(.*\\); it is in the way$")
- (setcdr head (list (cvs-create-fileinfo
- 'MOVE-AWAY current-dir
- (file-name-nondirectory
- (buffer-substring (match-beginning 1)
- (match-end 1)))
- (buffer-substring (match-beginning 0)
- (match-end 0)))))
- (setq head (cdr head))
- (forward-line 1))
-
- ;; Empty line. Probably inserted by mistake by user (or developer :-)
- ;; Ignore.
-
- ((looking-at "^$")
- (forward-line 1))
-
- ;; Cvs waits for a lock. Ignore.
-
- ((looking-at
- "^cvs update: \\[..:..:..\\] waiting for .*lock in ")
- (forward-line 1))
-
- ;; File removed in repository, but edited by you.
-
- ((looking-at
- "cvs update: conflict: \\(.*\\) is modified but no longer \
-in the repository$")
- (setcdr head (list
- (cvs-create-fileinfo
- 'REM-CONFLICT current-dir
- (file-name-nondirectory
- (buffer-substring (match-beginning 1) (match-end 1)))
- (buffer-substring (match-beginning 0)
- (match-end 0)))))
- (setq head (cdr head))
- (forward-line 1))
-
- ((looking-at
- "cvs update: conflict: removed \\(.*\\) was modified by \
-second party")
- (setcdr head
- (list
- (cvs-create-fileinfo
- 'MOD-CONFLICT current-dir
- (buffer-substring (match-beginning 1) (match-end 1))
- (buffer-substring (match-beginning 0) (match-end 0)))))
- (setq head (cdr head))
- (forward-line 1))
-
- ((looking-at
- "cvs update: \\(.*\\) should be removed and is still there")
- (setcdr head
- (list
- (cvs-create-fileinfo
- 'REM-EXIST current-dir
- (buffer-substring (match-beginning 1) (match-end 1))
- (buffer-substring (match-beginning 0) (match-end 0)))))
- (setq head (cdr head))
- (forward-line 1))
-
- ((looking-at "cvs update: in directory ")
- (let ((start (point)))
- (forward-line 1)
- (cvs-skip-line
- stdout-buffer stderr-buffer
- (regexp-quote "cvs [update aborted]: there is no repository "))
- (setcdr head (list
- (cvs-create-fileinfo
- 'REPOS-MISSING current-dir
- nil
- (buffer-substring start (point)))))
- (setq head (cdr head))))
-
- ;; Ignore other messages from Cyclic CVS.
- ((looking-at "cvs server:")
- (forward-line 1))
-
- (t
-
- ;; CVS has decided to merge someone elses changes into this
- ;; document. This leads to a lot of garbage being printed.
- ;; First there is two lines that contains no information
- ;; that we skip (but we check that we recognize them).
-
- (let ((complex-start (point))
- initial-revision filename)
-
- (cvs-skip-line stdout-buffer stderr-buffer "^RCS file: .*$")
- (setq initial-revision
- (cvs-skip-line stdout-buffer stderr-buffer
- "^retrieving revision \\(.*\\)$" 1))
- (cvs-skip-line stdout-buffer stderr-buffer
- "^retrieving revision .*$")
-
- ;; Get the file name from the next line.
-
- (setq
- filename
- (cvs-skip-line
- stdout-buffer stderr-buffer
- "^Merging differences between [0-9.]+ and [0-9.]+ into \\(.*\\)$"
- 1))
-
- (cond
- ;; Was it a conflict?
- ((looking-at
- ;; Allow both RCS 5.5 and 5.6. (5.6 prints "rcs" and " warning").
- "^\\(rcs\\)?merge:?\\( warning\\)?: \\(overlaps\\|conflicts\\) during merge$")
-
- ;; Yes, this is a conflict.
- (cvs-skip-line
- stdout-buffer stderr-buffer
- "^\\(rcs\\)?merge:?\\( warning\\)?: \\(overlaps\\|conflicts\\) during merge$")
-
- (cvs-skip-line stdout-buffer stderr-buffer
- "^cvs \\(update\\|server\\): conflicts found in ")
-
- (let ((fileinfo
- (cvs-create-fileinfo
- 'CONFLICT current-dir
- filename
- (buffer-substring complex-start (point)))))
-
- (cvs-set-fileinfo->base-revision fileinfo initial-revision)
-
- (setcdr head (list fileinfo))
- (setq head (cdr head))))
-
- ;; Was it a conflict, and was RCS compiled without DIFF3_BIN?
-
- ((looking-at
- ;; Allow both RCS 5.5 and 5.6. (5.6 prints "rcs" and " warning").
- "^\\(rcs\\)?merge\\( warning\\)?: overlaps or other probl\
-ems during merge$")
-
- ;; Yes, this is a conflict.
- (cvs-skip-line
- stdout-buffer stderr-buffer
- "^\\(rcs\\)?merge\\( warning\\)?: overlaps .*during merge$")
-
- (cvs-skip-line stdout-buffer stderr-buffer
- "^cvs update: could not merge ")
- (cvs-skip-line stdout-buffer stderr-buffer
- "^cvs update: restoring .* from backup file ")
-
- (let ((fileinfo
- (cvs-create-fileinfo
- 'CONFLICT current-dir
- filename
- (buffer-substring complex-start (point)))))
-
- (setcdr head (list fileinfo))
- (setq head (cdr head))))
-
- (t
- ;; Not a conflict; it must be a succesful merge.
- (let ((fileinfo
- (cvs-create-fileinfo
- 'MERGED current-dir
- filename
- (buffer-substring complex-start (point)))))
- (cvs-set-fileinfo->base-revision fileinfo initial-revision)
- (setcdr head (list fileinfo))
- (setq head (cdr head)))))))))))
- head)
-
-
-(defun cvs-parse-stdout (stdout-buffer stderr-buffer head root-dir)
- "Parse the output from CVS that is written to stdout.
-Args: STDOUT-BUFFER STDERR-BUFFER HEAD ROOT-DIR
-STDOUT-BUFFER is the buffer that holds the output to parse.
-STDERR-BUFFER holds the output that cvs sent to stderr. It is only
-used to create a bug report in case there is a parse error.
-
-HEAD is a cons-cell, the head of the list that is built.
-ROOT-DIR is the directory the `cvs update' was run in.
-
-This function doesn't return anything particular."
- (save-window-excursion
- (set-buffer stdout-buffer)
- (goto-char (point-min))
- (while (< (point) (point-max))
- (cond
-
- ;; M: The file is modified by the user, and untouched in the repository.
- ;; A: The file is "cvs add"ed, but not "cvs ci"ed.
- ;; R: The file is "cvs remove"ed, but not "cvs ci"ed.
- ;; C: Conflict
- ;; U, P: The file is copied from the repository.
- ;; ?: Unknown file.
-
-
- ((looking-at "\\([MARCUP?]\\) \\(.*\\)$")
- (let*
- ((c (char-after (match-beginning 1)))
- (full-path
- (concat (file-name-as-directory root-dir)
- (buffer-substring (match-beginning 2) (match-end 2))))
- (fileinfo (cvs-create-fileinfo
- (cond ((eq c ?M) 'MODIFIED)
- ((eq c ?A) 'ADDED)
- ((eq c ?R) 'REMOVED)
- ((eq c ?C) 'CONFLICT)
- ((eq c ?U) 'UPDATED)
- ;; generated when Cyclic CVS sends a
- ;; patch instead of the full file:
- ((eq c ?P) 'UPDATED)
- ((eq c ??) 'UNKNOWN))
- (substring (file-name-directory full-path) 0 -1)
- (file-name-nondirectory full-path)
- (buffer-substring (match-beginning 0) (match-end 0)))))
- ;; Updated files require no further action.
- (if (memq c '(?U ?P))
- (cvs-set-fileinfo->handled fileinfo t))
-
- ;; Link this last on the list.
- (setcdr head (list fileinfo))
- (setq head (cdr head))
- (forward-line 1)))
-
- ;; Executing a program because of the -u option in modules.
- ((looking-at "cvs update: Executing")
- ;; Skip by any output the program may generate to stdout.
- ;; Note that pcl-cvs will get seriously confused if the
- ;; program prints anything to stderr.
- (re-search-forward cvs-update-prog-output-skip-regexp)
- (forward-line 1))
-
- (t (cvs-parse-error stdout-buffer stderr-buffer 'STDOUT (point)))))))
-
-(defun cvs-pp (fileinfo)
- "Pretty print FILEINFO. Insert a printed representation in current buffer.
-For use by the cookie package."
-
- (let ((a (cvs-fileinfo->type fileinfo))
- (s (if (cvs-fileinfo->marked fileinfo)
- "*" " "))
- (f (cvs-fileinfo->file-name fileinfo))
- (ci (if (cvs-fileinfo->handled fileinfo)
- " " "ci")))
- (insert
- (cond
- ((eq a 'UPDATED)
- (format "%s Updated %s" s f))
- ((eq a 'MODIFIED)
- (format "%s Modified %s %s" s ci f))
- ((eq a 'MERGED)
- (format "%s Merged %s %s" s ci f))
- ((eq a 'CONFLICT)
- (format "%s Conflict %s" s f))
- ((eq a 'ADDED)
- (format "%s Added %s %s" s ci f))
- ((eq a 'REMOVED)
- (format "%s Removed %s %s" s ci f))
- ((eq a 'UNKNOWN)
- (format "%s Unknown %s" s f))
- ((eq a 'CVS-REMOVED)
- (format "%s Removed from repository: %s" s f))
- ((eq a 'REM-CONFLICT)
- (format "%s Conflict: Removed from repository, changed by you: %s" s f))
- ((eq a 'MOD-CONFLICT)
- (format "%s Conflict: Removed by you, changed in repository: %s" s f))
- ((eq a 'REM-EXIST)
- (format "%s Conflict: Removed by you, but still exists: %s" s f))
- ((eq a 'DIRCHANGE)
- (format "\nIn directory %s:"
- (cvs-fileinfo->dir fileinfo)))
- ((eq a 'MOVE-AWAY)
- (format "%s Move away %s - it is in the way" s f))
- ((eq a 'REPOS-MISSING)
- (format " This repository is missing! Remove this dir manually."))
- ((eq a 'MESSAGE)
- (cvs-fileinfo->full-log fileinfo))
- (t
- (format "%s Internal error! %s" s f))))))
-
-
-;;; You can define your own keymap in .emacs. pcl-cvs.el won't overwrite it.
-
-(if cvs-mode-map
- nil
- (setq cvs-mode-map (make-keymap))
- (suppress-keymap cvs-mode-map)
- (define-key cvs-mode-map " " 'cvs-mode-next-line)
- (define-key cvs-mode-map "?" 'describe-mode)
- (define-key cvs-mode-map "A" 'cvs-mode-add-change-log-entry-other-window)
- (define-key cvs-mode-map "M" 'cvs-mode-mark-all-files)
- (define-key cvs-mode-map "R" 'cvs-mode-revert-updated-buffers)
- (define-key cvs-mode-map "U" 'cvs-mode-undo-local-changes)
- (define-key cvs-mode-map "\C-?" 'cvs-mode-unmark-up)
- (define-key cvs-mode-map "\C-k" 'cvs-mode-acknowledge)
- (define-key cvs-mode-map "\C-n" 'cvs-mode-next-line)
- (define-key cvs-mode-map "\C-p" 'cvs-mode-previous-line)
- (define-key cvs-mode-map "\M-\C-?" 'cvs-mode-unmark-all-files)
- (define-key cvs-mode-map "a" 'cvs-mode-add)
- (define-key cvs-mode-map "b" 'cvs-mode-diff-backup)
- (define-key cvs-mode-map "c" 'cvs-mode-commit)
- (define-key cvs-mode-map "C" 'cvs-mode-changelog-commit)
- (define-key cvs-mode-map "d" 'cvs-mode-diff-cvs)
- (define-key cvs-mode-map "e" 'cvs-mode-emerge)
- (define-key cvs-mode-map "f" 'cvs-mode-find-file)
- (define-key cvs-mode-map "g" 'cvs-mode-update-no-prompt)
- (define-key cvs-mode-map "i" 'cvs-mode-ignore)
- (define-key cvs-mode-map "l" 'cvs-mode-log)
- (define-key cvs-mode-map "m" 'cvs-mode-mark)
- (define-key cvs-mode-map "n" 'cvs-mode-next-line)
- (define-key cvs-mode-map "o" 'cvs-mode-find-file-other-window)
- (define-key cvs-mode-map "p" 'cvs-mode-previous-line)
- (define-key cvs-mode-map "q" 'bury-buffer)
- (define-key cvs-mode-map "r" 'cvs-mode-remove-file)
- (define-key cvs-mode-map "s" 'cvs-mode-status)
- (define-key cvs-mode-map "x" 'cvs-mode-remove-handled)
- (define-key cvs-mode-map "u" 'cvs-mode-unmark))
-
-
-(defun cvs-get-marked (&optional ignore-marks)
- "Return a list of all selected tins.
-If there are any marked tins, and IGNORE-MARKS is nil, return them.
-Otherwise, if the cursor selects a directory, return all files in it.
-Otherwise return (a list containing) the file the cursor points to, or
-an empty list if it doesn't point to a file at all.
-
-Args: &optional IGNORE-MARKS."
-
- (cond
- ;; Any marked cookies?
- ((and (not ignore-marks)
- (collection-collect-tin cvs-cookie-handle 'cvs-fileinfo->marked)))
- ;; Nope.
- (t
- (let ((sel (tin-locate cvs-cookie-handle (point))))
- (cond
- ;; If a directory is selected, all it members are returned.
- ((and sel (eq (cvs-fileinfo->type
- (tin-cookie cvs-cookie-handle sel))
- 'DIRCHANGE))
- (collection-collect-tin
- cvs-cookie-handle 'cvs-dir-member-p
- (cvs-fileinfo->dir (tin-cookie cvs-cookie-handle sel))))
- (t
- (list sel)))))))
-
-
-(defun cvs-dir-member-p (fileinfo dir)
- "Return true if FILEINFO represents a file in directory DIR."
- (and (not (eq (cvs-fileinfo->type fileinfo) 'DIRCHANGE))
- (string= (cvs-fileinfo->dir fileinfo) dir)))
-
-(defun cvs-dir-empty-p (tin)
- "Return non-nil if TIN is a directory that is empty.
-Args: CVS-BUF TIN."
- (and (eq (cvs-fileinfo->type (tin-cookie cvs-cookie-handle tin)) 'DIRCHANGE)
- (or (not (tin-next cvs-cookie-handle tin))
- (eq (cvs-fileinfo->type
- (tin-cookie cvs-cookie-handle
- (tin-next cvs-cookie-handle tin)))
- 'DIRCHANGE))))
-
-(defun cvs-mode-revert-updated-buffers ()
- "Revert any buffers that are UPDATED, MERGED or CONFLICT."
- (interactive)
- (cookie-map (function cvs-revert-fileinfo) cvs-cookie-handle))
-
-(defun cvs-revert-fileinfo (fileinfo)
- "Revert the buffer that holds the file in FILEINFO if it has changed,
-and if the type is UPDATED, MERGED or CONFLICT."
- (let* ((type (cvs-fileinfo->type fileinfo))
- (file (cvs-fileinfo->full-path fileinfo))
- (buffer (get-file-buffer file)))
- ;; For a revert to happen...
- (cond
- ((and
- ;; ...the type must be one that justifies a revert...
- (or (eq type 'UPDATED)
- (eq type 'MERGED)
- (eq type 'CONFLICT))
- ;; ...and the user must be editing the file...
- buffer)
- (save-excursion
- (set-buffer buffer)
- (cond
- ((buffer-modified-p)
- (error "%s: edited since last cvs-update."
- (buffer-file-name)))
- ;; Go ahead and revert the file.
- (t (revert-buffer 'dont-use-auto-save-file 'dont-ask))))))))
-
-
-(defun cvs-mode-remove-handled ()
- "Remove all lines that are handled.
-Empty directories are removed."
- (interactive)
- ;; Pass one: remove files that are handled.
- (collection-filter-cookies cvs-cookie-handle
- (function
- (lambda (fileinfo) (not (cvs-fileinfo->handled fileinfo)))))
- ;; Pass two: remove empty directories.
- (cvs-remove-empty-directories))
-
-
-(defun cvs-remove-empty-directories ()
- "Remove empty directories in the *cvs* buffer."
- (collection-filter-tins cvs-cookie-handle
- (function
- (lambda (tin)
- (not (cvs-dir-empty-p tin))))))
-
-(defun cvs-mode-mark (pos)
- "Mark a fileinfo. Args: POS.
-If the fileinfo is a directory, all the contents of that directory are
-marked instead. A directory can never be marked.
-POS is a buffer position."
-
- (interactive "d")
-
- (let* ((tin (tin-locate cvs-cookie-handle pos))
- (sel (tin-cookie cvs-cookie-handle tin)))
-
- (cond
- ;; Does POS point to a directory? If so, mark all files in that directory.
- ((eq (cvs-fileinfo->type sel) 'DIRCHANGE)
- (cookie-map
- (function (lambda (f dir)
- (cond
- ((cvs-dir-member-p f dir)
- (cvs-set-fileinfo->marked f t)
- t)))) ;Tell cookie to redisplay this cookie.
- cvs-cookie-handle
- (cvs-fileinfo->dir sel)))
- (t
- (cvs-set-fileinfo->marked sel t)
- (tin-invalidate cvs-cookie-handle tin)
- (tin-goto-next cvs-cookie-handle pos 1)))))
-
-
-(defun cvs-committable (tin)
- "Check if the TIN is committable.
-It is committable if it
- a) is not handled and
- b) is either MODIFIED, ADDED, REMOVED, MERGED or CONFLICT."
- (let* ((fileinfo (tin-cookie cvs-cookie-handle tin))
- (type (cvs-fileinfo->type fileinfo)))
- (and (not (cvs-fileinfo->handled fileinfo))
- (or (eq type 'MODIFIED)
- (eq type 'ADDED)
- (eq type 'REMOVED)
- (eq type 'MERGED)
- (eq type 'CONFLICT)))))
-
-(defun cvs-mode-commit ()
-
- "Check in all marked files, or the current file.
-The user will be asked for a log message in a buffer.
-If cvs-erase-input-buffer is non-nil that buffer will be erased.
-Otherwise mark and point will be set around the entire contents of the
-buffer so that it is easy to kill the contents of the buffer with \\[kill-region]."
-
- (interactive)
-
- (let* ((cvs-buf (current-buffer))
- (marked (cvs-filter (function cvs-committable)
- (cvs-get-marked))))
- (if (null marked)
- (error "Nothing to commit!")
- (pop-to-buffer (get-buffer-create cvs-commit-prompt-buffer))
- (goto-char (point-min))
-
- (if cvs-erase-input-buffer
- (erase-buffer)
- (push-mark (point-max)))
- (cvs-edit-mode)
- (make-local-variable 'cvs-commit-list)
- (setq cvs-commit-list marked)
- (message "Press C-c C-c when you are done editing."))))
-
-
-(defun cvs-edit-done ()
- "Commit the files to the repository."
- (interactive)
- (if (null cvs-commit-list)
- (error "You have already commited the files"))
- (if (and (> (point-max) 1)
- (/= (char-after (1- (point-max))) ?\n)
- (or (eq cvs-commit-buffer-require-final-newline t)
- (and cvs-commit-buffer-require-final-newline
- (yes-or-no-p
- (format "Buffer %s does not end in newline. Add one? "
- (buffer-name))))))
- (save-excursion
- (goto-char (point-max))
- (insert ?\n)))
- (save-some-buffers)
- (let ((cc-list cvs-commit-list)
- (cc-buffer (get-buffer cvs-buffer-name))
- (msg-buffer (current-buffer))
- (msg (buffer-substring (point-min) (point-max))))
- (pop-to-buffer cc-buffer)
- (bury-buffer msg-buffer)
- (cvs-use-temp-buffer)
- (message "Committing...")
- (if (cvs-execute-list cc-list cvs-program
- (if cvs-cvsroot
- (list "-d" cvs-cvsroot "commit" "-m" msg)
- (list "commit" "-m" msg)))
- (error "Something went wrong. Check the %s buffer carefully."
- cvs-temp-buffer-name))
- (let ((ccl cc-list))
- (while ccl
- (cvs-after-commit-function (tin-cookie cvs-cookie-handle (car ccl)))
- (setq ccl (cdr ccl))))
- (apply 'tin-invalidate cvs-cookie-handle cc-list)
- (set-buffer msg-buffer)
- (setq cvs-commit-list nil)
- (set-buffer cc-buffer)
- (if cvs-auto-remove-handled
- (cvs-mode-remove-handled)))
-
- (message "Committing... Done."))
-
-(defun cvs-after-commit-function (fileinfo)
- "Do everything that needs to be done when FILEINFO has been commited.
-The fileinfo->handle is set, and if the buffer is present it is reverted."
- (cvs-set-fileinfo->handled fileinfo t)
- (if cvs-auto-revert-after-commit
- (let* ((file (cvs-fileinfo->full-path fileinfo))
- (buffer (get-file-buffer file)))
- ;; For a revert to happen...
- (if buffer
- ;; ...the user must be editing the file...
- (save-excursion
- (set-buffer buffer)
- (if (not (buffer-modified-p))
- ;; ...but it must be unmodified.
- (revert-buffer 'dont-use-auto-save-file 'dont-ask)))))))
-
-
-(defun cvs-execute-list (tin-list program constant-args)
- "Run PROGRAM on all elements on TIN-LIST.
-Args: TIN-LIST PROGRAM CONSTANT-ARGS
-The PROGRAM will be called with pwd set to the directory the
-files reside in. CONSTANT-ARGS should be a list of strings. The
-arguments given to the program will be CONSTANT-ARGS followed by all
-the files (from TIN-LIST) that resides in that directory. If the files
-in TIN-LIST resides in different directories the PROGRAM will be run
-once for each directory (if all files in the same directory appears
-after each other).
-
-Any output from PROGRAM will be inserted in the current buffer.
-
-This function return nil if all went well, or the numerical exit
-status or a signal name as a string. Note that PROGRAM might be called
-several times. This will return non-nil if something goes wrong, but
-there is no way to know which process that failed."
-
- (let ((exitstatus nil))
- (while tin-list
- (let ((current-dir (cvs-fileinfo->dir
- (tin-cookie cvs-cookie-handle
- (car tin-list))))
- arg-list arg-str)
-
- ;; Collect all marked files in this directory.
-
- (while (and tin-list
- (string=
- current-dir
- (cvs-fileinfo->dir
- (tin-cookie cvs-cookie-handle (car tin-list)))))
- (setq arg-list
- (cons (cvs-fileinfo->file-name
- (tin-cookie cvs-cookie-handle (car tin-list)))
- arg-list))
- (setq tin-list (cdr tin-list)))
-
- (setq arg-list (nreverse arg-list))
-
- ;; Execute the command on all the files that were collected.
-
- (setq default-directory (file-name-as-directory current-dir))
- (insert (format "=== cd %s\n" default-directory))
- (insert (format "=== %s %s\n\n"
- program
- (mapconcat '(lambda (foo) foo)
- (nconc (copy-sequence constant-args)
- arg-list)
- " ")))
- (let ((res (apply 'call-process program nil t t
- (nconc (copy-sequence constant-args) arg-list))))
- ;; Remember the first, or highest, exitstatus.
- (if (and (not (and (integerp res) (zerop res)))
- (or (null exitstatus)
- (and (integerp exitstatus) (= 1 exitstatus))))
- (setq exitstatus res)))
- (goto-char (point-max))))
- exitstatus))
-
-
-(defun cvs-execute-single-file-list (tin-list extractor program constant-args)
- "Run PROGRAM on all elements on TIN-LIST.
-
-Args: TIN-LIST EXTRACTOR PROGRAM CONSTANT-ARGS
-
-The PROGRAM will be called with pwd set to the directory the files
-reside in. CONSTANT-ARGS is a list of strings to pass as arguments to
-PROGRAM. The arguments given to the program will be CONSTANT-ARGS
-followed by the list that EXTRACTOR returns.
-
-EXTRACTOR will be called once for each file on TIN-LIST. It is given
-one argument, the cvs-fileinfo. It can return t, which means ignore
-this file, or a list of arguments to send to the program."
-
- (while tin-list
- (let ((default-directory (file-name-as-directory
- (cvs-fileinfo->dir
- (tin-cookie cvs-cookie-handle
- (car tin-list)))))
- (arg-list
- (funcall extractor
- (tin-cookie cvs-cookie-handle (car tin-list)))))
-
- ;; Execute the command unless extractor returned t.
-
- (if (eq arg-list t)
- nil
- (insert (format "=== cd %s\n" default-directory))
- (insert (format "=== %s %s\n\n"
- program
- (mapconcat '(lambda (foo) foo)
- (nconc (copy-sequence constant-args)
- arg-list)
- " ")))
- (apply 'call-process program nil t t
- (nconc (copy-sequence constant-args) arg-list))
- (goto-char (point-max))))
- (setq tin-list (cdr tin-list))))
-
-
-(defun cvs-edit-mode ()
- "\\<cvs-edit-mode-map>Mode for editing cvs log messages.
-Commands:
-\\[cvs-edit-done] checks in the file when you are ready.
-This mode is based on fundamental mode."
- (interactive)
- (use-local-map cvs-edit-mode-map)
- (setq major-mode 'cvs-edit-mode)
- (setq mode-name "CVS Log")
- (auto-fill-mode 1))
-
-
-(if cvs-edit-mode-map
- nil
- (setq cvs-edit-mode-map (make-sparse-keymap))
- (define-prefix-command 'cvs-control-c-prefix)
- (define-key cvs-edit-mode-map "\C-c" 'cvs-control-c-prefix)
- (define-key cvs-edit-mode-map "\C-c\C-c" 'cvs-edit-done))
-
-
-(defun cvs-diffable (tins)
- "Return a list of all tins on TINS that it makes sense to run
-``cvs diff'' on."
- ;; +++ There is an unnecessary (nreverse) here. Get the list the
- ;; other way around instead!
- (let ((result nil))
- (while tins
- (let ((type (cvs-fileinfo->type
- (tin-cookie cvs-cookie-handle (car tins)))))
- (if (or (eq type 'MODIFIED)
- (eq type 'UPDATED)
- (eq type 'MERGED)
- (eq type 'CONFLICT)
- (eq type 'REMOVED) ;+++Does this line make sense?
- (eq type 'ADDED)) ;+++Does this line make sense?
- (setq result (cons (car tins) result)))
- (setq tins (cdr tins))))
- (nreverse result)))
-
-
-(defun cvs-mode-diff-cvs (&optional ignore-marks)
- "Diff the selected files against the repository.
-The flags in the variable cvs-diff-flags (which should be a list
-of strings) will be passed to ``cvs diff''. If the variable
-cvs-diff-ignore-marks is non-nil any marked files will not be
-considered to be selected. An optional prefix argument will invert
-the influence from cvs-diff-ignore-marks."
-
- (interactive "P")
-
- (if (not (listp cvs-diff-flags))
- (error "cvs-diff-flags should be a list of strings"))
-
- (save-some-buffers)
- (let ((marked (cvs-diffable
- (cvs-get-marked
- (or (and ignore-marks (not cvs-diff-ignore-marks))
- (and (not ignore-marks) cvs-diff-ignore-marks))))))
- (cvs-use-temp-buffer)
- (message "cvsdiffing...")
- ;; Don't care much about the exit status since it is the _sum_ of
- ;; the status codes from the different files (not the _max_ as it
- ;; should be).
- (if (cvs-execute-list marked cvs-program
- (if cvs-cvsroot
- (cons "-d" (cons cvs-cvsroot
- (cons "diff" cvs-diff-flags)))
- (cons "diff" cvs-diff-flags)))
- (message "cvsdiffing... Done.")
- (message "cvsdiffing... No differences found."))))
-
-
-(defun cvs-backup-diffable (tin)
- "Check if the TIN is backup-diffable.
-It must have a backup file to be diffable."
- (file-readable-p
- (cvs-fileinfo->backup-file (tin-cookie cvs-cookie-handle tin))))
-
-(defun cvs-mode-diff-backup (&optional ignore-marks)
- "Diff the files against the backup file.
-This command can be used on files that are marked with \"Merged\"
-or \"Conflict\" in the *cvs* buffer.
-
-If the variable cvs-diff-ignore-marks is non-nil any marked files will
-not be considered to be selected. An optional prefix argument will
-invert the influence from cvs-diff-ignore-marks.
-
-The flags in cvs-diff-flags will be passed to ``diff''."
-
- (interactive "P")
-
- (if (not (listp cvs-diff-flags))
- (error "cvs-diff-flags should be a list of strings."))
-
- (save-some-buffers)
- (let ((marked (cvs-filter
- (function cvs-backup-diffable)
- (cvs-get-marked
- (or
- (and ignore-marks (not cvs-diff-ignore-marks))
- (and (not ignore-marks) cvs-diff-ignore-marks))))))
- (if (null marked)
- (error "No ``Conflict'' or ``Merged'' file selected!"))
- (cvs-use-temp-buffer)
- (message "diffing...")
- (cvs-execute-single-file-list
- marked 'cvs-diff-backup-extractor cvs-diff-program cvs-diff-flags))
- (message "diffing... Done."))
-
-
-(defun cvs-diff-backup-extractor (fileinfo)
- "Return the filename and the name of the backup file as a list.
-Signal an error if there is no backup file."
- (if (not (file-readable-p (cvs-fileinfo->backup-file fileinfo)))
- (error "%s has no backup file."
- (concat
- (file-name-as-directory (cvs-fileinfo->dir fileinfo))
- (cvs-fileinfo->file-name fileinfo))))
- (list (cvs-fileinfo->backup-file fileinfo)
- (cvs-fileinfo->file-name fileinfo)))
-
-(defun cvs-mode-find-file-other-window (pos)
- "Select a buffer containing the file in another window.
-Args: POS"
- (interactive "d")
- (let ((tin (tin-locate cvs-cookie-handle pos)))
- (if tin
- (let ((type (cvs-fileinfo->type (tin-cookie cvs-cookie-handle
- tin))))
- (cond
- ((or (eq type 'REMOVED)
- (eq type 'CVS-REMOVED))
- (error "Can't visit a removed file."))
- ((eq type 'DIRCHANGE)
- (let ((obuf (current-buffer))
- (odir default-directory))
- (setq default-directory
- (file-name-as-directory
- (cvs-fileinfo->dir
- (tin-cookie cvs-cookie-handle tin))))
- (dired-other-window default-directory)
- (set-buffer obuf)
- (setq default-directory odir)))
- (t
- (find-file-other-window (cvs-full-path tin)))))
- (error "There is no file to find."))))
-
-(defun cvs-fileinfo->full-path (fileinfo)
- "Return the full path for the file that is described in FILEINFO."
- (concat
- (file-name-as-directory
- (cvs-fileinfo->dir fileinfo))
- (cvs-fileinfo->file-name fileinfo)))
-
-(defun cvs-full-path (tin)
- "Return the full path for the file that is described in TIN."
- (cvs-fileinfo->full-path (tin-cookie cvs-cookie-handle tin)))
-
-(defun cvs-mode-find-file (pos)
- "Select a buffer containing the file in another window.
-Args: POS"
- (interactive "d")
- (let* ((cvs-buf (current-buffer))
- (tin (tin-locate cvs-cookie-handle pos)))
- (if tin
- (let* ((fileinfo (tin-cookie cvs-cookie-handle tin))
- (type (cvs-fileinfo->type fileinfo)))
- (cond
- ((or (eq type 'REMOVED)
- (eq type 'CVS-REMOVED))
- (error "Can't visit a removed file."))
- ((eq type 'DIRCHANGE)
- (let ((odir default-directory))
- (setq default-directory
- (file-name-as-directory (cvs-fileinfo->dir fileinfo)))
- (dired default-directory)
- (set-buffer cvs-buf)
- (setq default-directory odir)))
- (t
- (find-file (cvs-full-path tin)))))
- (error "There is no file to find."))))
-
-(defun cvs-mode-mark-all-files ()
- "Mark all files.
-Directories are not marked."
- (interactive)
- (cookie-map (function (lambda (cookie)
- (cond
- ((not (eq (cvs-fileinfo->type cookie) 'DIRCHANGE))
- (cvs-set-fileinfo->marked cookie t)
- t))))
- cvs-cookie-handle))
-
-
-(defun cvs-mode-unmark (pos)
- "Unmark a fileinfo. Args: POS."
- (interactive "d")
-
- (let* ((tin (tin-locate cvs-cookie-handle pos))
- (sel (tin-cookie cvs-cookie-handle tin)))
-
- (cond
- ((eq (cvs-fileinfo->type sel) 'DIRCHANGE)
- (cookie-map
- (function (lambda (f dir)
- (cond
- ((cvs-dir-member-p f dir)
- (cvs-set-fileinfo->marked f nil)
- t))))
- cvs-cookie-handle
- (cvs-fileinfo->dir sel)))
- (t
- (cvs-set-fileinfo->marked sel nil)
- (tin-invalidate cvs-cookie-handle tin)
- (tin-goto-next cvs-cookie-handle pos 1)))))
-
-(defun cvs-mode-unmark-all-files ()
- "Unmark all files.
-Directories are also unmarked, but that doesn't matter, since
-they should always be unmarked."
- (interactive)
- (cookie-map (function (lambda (cookie)
- (cvs-set-fileinfo->marked cookie nil)
- t))
- cvs-cookie-handle))
-
-
-(defun cvs-do-removal (tins)
- "Remove files.
-Args: TINS.
-TINS is a list of tins that the
-user wants to delete. The files are deleted. If the type of
-the tin is 'UNKNOWN the tin is removed from the buffer. If it
-is anything else the file is added to a list that should be
-`cvs remove'd and the tin is changed to be of type 'REMOVED.
-
-Returns a list of tins files that should be `cvs remove'd."
- (cvs-use-temp-buffer)
- (mapcar 'cvs-insert-full-path tins)
- (cond
- ((and tins (yes-or-no-p (format "Delete %d files? " (length tins))))
- (let (files-to-remove)
- (while tins
- (let* ((tin (car tins))
- (fileinfo (tin-cookie cvs-cookie-handle tin))
- (type (cvs-fileinfo->type fileinfo)))
- (if (not (or (eq type 'REMOVED) (eq type 'CVS-REMOVED)))
- (progn
- (delete-file (cvs-full-path tin))
- (cond
- ((or (eq type 'UNKNOWN) (eq type 'MOVE-AWAY))
- (tin-delete cvs-cookie-handle tin))
- (t
- (setq files-to-remove (cons tin files-to-remove))
- (cvs-set-fileinfo->type fileinfo 'REMOVED)
- (cvs-set-fileinfo->handled fileinfo nil)
- (tin-invalidate cvs-cookie-handle tin))))))
- (setq tins (cdr tins)))
- files-to-remove))
- (t nil)))
-
-
-
-(defun cvs-mode-remove-file ()
- "Remove all marked files."
- (interactive)
- (let ((files-to-remove (cvs-do-removal (cvs-get-marked))))
- (if (null files-to-remove)
- nil
- (cvs-use-temp-buffer)
- (message "removing from repository...")
- (if (cvs-execute-list files-to-remove cvs-program
- (if cvs-cvsroot
- (list "-d" cvs-cvsroot "remove")
- '("remove")))
- (error "CVS exited with non-zero exit status.")
- (message "removing from repository... done.")))))
-
-(defun cvs-mode-undo-local-changes ()
- "Undo local changes to all marked files.
-The file is removed and `cvs update FILE' is run."
- (interactive)
- (let ((tins-to-undo (cvs-get-marked)))
- (cvs-use-temp-buffer)
- (mapcar 'cvs-insert-full-path tins-to-undo)
- (cond
- ((and tins-to-undo (yes-or-no-p (format "Undo changes to %d files? "
- (length tins-to-undo))))
- (let (files-to-update)
- (while tins-to-undo
- (let* ((tin (car tins-to-undo))
- (fileinfo (tin-cookie cvs-cookie-handle tin))
- (type (cvs-fileinfo->type fileinfo)))
- (cond
- ((or
- (eq type 'UPDATED) (eq type 'MODIFIED) (eq type 'MERGED)
- (eq type 'CONFLICT) (eq type 'CVS-REMOVED)
- (eq type 'REM-CONFLICT) (eq type 'MOVE-AWAY)
- (eq type 'REMOVED))
- (if (not (eq type 'REMOVED))
- (delete-file (cvs-full-path tin)))
- (setq files-to-update (cons tin files-to-update))
- (cvs-set-fileinfo->type fileinfo 'UPDATED)
- (cvs-set-fileinfo->handled fileinfo t)
- (tin-invalidate cvs-cookie-handle tin))
-
- ((eq type 'MOD-CONFLICT)
- (error "Use cvs-mode-add instead on %s."
- (cvs-fileinfo->file-name fileinfo)))
-
- ((eq type 'REM-CONFLICT)
- (error "Can't deal with a file you have removed and recreated."))
-
- ((eq type 'DIRCHANGE)
- (error "Undo on directories not supported (yet)."))
-
- ((eq type 'ADDED)
- (error "There is no old revision to get for %s"
- (cvs-fileinfo->file-name fileinfo)))
- (t (error "cvs-mode-undo-local-changes: can't handle an %s"
- type)))
-
- (setq tins-to-undo (cdr tins-to-undo))))
- (cvs-use-temp-buffer)
- (message "Regetting files from repository...")
- (if (cvs-execute-list files-to-update cvs-program
- (if cvs-cvsroot
- (list "-d" cvs-cvsroot "update")
- '("update")))
- (error "CVS exited with non-zero exit status.")
- (message "Regetting files from repository... done.")))))))
-
-(defun cvs-mode-acknowledge ()
- "Remove all marked files from the buffer."
- (interactive)
-
- (mapcar (function (lambda (tin)
- (tin-delete cvs-cookie-handle tin)))
- (cvs-get-marked)))
-
-
-(defun cvs-mode-unmark-up (pos)
- "Unmark the file on the previous line.
-Takes one argument POS, a buffer position."
- (interactive "d")
- (let ((tin (tin-goto-previous cvs-cookie-handle pos 1)))
- (cond
- (tin
- (cvs-set-fileinfo->marked (tin-cookie cvs-cookie-handle tin)
- nil)
- (tin-invalidate cvs-cookie-handle tin)))))
-
-(defun cvs-mode-previous-line (arg)
- "Go to the previous line.
-If a prefix argument is given, move by that many lines."
- (interactive "p")
- (tin-goto-previous cvs-cookie-handle (point) arg))
-
-(defun cvs-mode-next-line (arg)
- "Go to the next line.
-If a prefix argument is given, move by that many lines."
- (interactive "p")
- (tin-goto-next cvs-cookie-handle (point) arg))
-
-(defun cvs-add-file-update-buffer (tin)
- "Subfunction to cvs-mode-add. Internal use only.
-Update the display. Return non-nil if `cvs add' should be called on this
-file. Args: TIN.
-Returns 'ADD or 'RESURRECT."
- (let ((fileinfo (tin-cookie cvs-cookie-handle tin)))
- (cond
- ((eq (cvs-fileinfo->type fileinfo) 'UNKNOWN)
- (cvs-set-fileinfo->type fileinfo 'ADDED)
- (tin-invalidate cvs-cookie-handle tin)
- 'ADD)
- ((eq (cvs-fileinfo->type fileinfo) 'REMOVED)
- (cvs-set-fileinfo->type fileinfo 'UPDATED)
- (cvs-set-fileinfo->handled fileinfo t)
- (tin-invalidate cvs-cookie-handle tin)
- 'RESURRECT))))
-
-(defun cvs-add-sub (cvs-buf candidates)
- "Internal use only.
-Args: CVS-BUF CANDIDATES.
-CANDIDATES is a list of tins. Updates the CVS-BUF and returns a pair of lists.
-The first list is unknown tins that shall be `cvs add -m msg'ed.
-The second list is removed files that shall be `cvs add'ed (resurrected)."
- (let (add resurrect)
- (while candidates
- (let ((type (cvs-add-file-update-buffer (car candidates))))
- (cond ((eq type 'ADD)
- (setq add (cons (car candidates) add)))
- ((eq type 'RESURRECT)
- (setq resurrect (cons (car candidates) resurrect)))))
- (setq candidates (cdr candidates)))
- (cons add resurrect)))
-
-(defun cvs-mode-add ()
- "Add marked files to the cvs repository."
- (interactive)
-
- (let* ((buf (current-buffer))
- (result (cvs-add-sub buf (cvs-get-marked)))
- (added (car result))
- (resurrect (cdr result))
- (msg (if added (read-from-minibuffer "Enter description: "))))
-
- (if (or resurrect added)
- (cvs-use-temp-buffer))
-
- (cond (resurrect
- (message "Resurrecting files from repository...")
- (if (cvs-execute-list resurrect cvs-program
- (if cvs-cvsroot
- (list "-d" cvs-cvsroot "add")
- '("add")))
- (error "CVS exited with non-zero exit status.")
- (message "Done."))))
-
- (cond (added
- (message "Adding new files to repository...")
- (if (cvs-execute-list added cvs-program
- (if cvs-cvsroot
- (list "-d" cvs-cvsroot "add" "-m" msg)
- (list "add" "-m" msg)))
- (error "CVS exited with non-zero exit status.")
- (message "Done."))))))
-
-(defun cvs-mode-ignore ()
- "Arrange so that CVS ignores the selected files.
-This command ignores files that are not flagged as `Unknown'."
- (interactive)
-
- (mapcar (function (lambda (tin)
- (cond
- ((eq (cvs-fileinfo->type
- (tin-cookie cvs-cookie-handle tin))
- 'UNKNOWN)
- (cvs-append-to-ignore
- (tin-cookie cvs-cookie-handle tin))
- (tin-delete cvs-cookie-handle tin)))))
- (cvs-get-marked)))
-
-(defun cvs-append-to-ignore (fileinfo)
- "Append the file in fileinfo to the .cvsignore file"
- (save-window-excursion
- (set-buffer (find-file-noselect (concat (file-name-as-directory
- (cvs-fileinfo->dir fileinfo))
- ".cvsignore")))
- (goto-char (point-max))
- (if (not (zerop (current-column)))
- (insert "\n"))
- (insert (cvs-fileinfo->file-name fileinfo) "\n")
- (if cvs-sort-ignore-file
- (sort-lines nil (point-min) (point-max)))
- (save-buffer)))
-
-(defun cvs-mode-status ()
- "Show cvs status for all marked files."
- (interactive)
-
- (save-some-buffers)
- (let ((marked (cvs-get-marked)))
- (cvs-use-temp-buffer)
- (message "Running cvs status ...")
- (if (cvs-execute-list
- marked cvs-program
- (if cvs-cvsroot
- (cons "-d" (cons cvs-cvsroot (cons "status" cvs-status-flags)))
- (cons "status" cvs-status-flags)))
- (error "CVS exited with non-zero exit status.")
- (message "Running cvs status ... Done."))))
-
-(defun cvs-mode-log ()
- "Display the cvs log of all selected files."
- (interactive)
-
- (let ((marked (cvs-get-marked)))
- (cvs-use-temp-buffer)
- (message "Running cvs log ...")
- (if (cvs-execute-list marked cvs-program
- (if cvs-cvsroot
- (cons "-d" (cons cvs-cvsroot
- (cons "log" cvs-log-flags)))
- (cons "log" cvs-log-flags)))
- (error "CVS exited with non-zero exit status.")
- (message "Running cvs log ... Done."))))
-
-(defun cvs-byte-compile-files ()
- "Run byte-compile-file on all selected files that end in '.el'."
- (interactive)
- (let ((marked (cvs-get-marked)))
- (while marked
- (let ((filename (cvs-full-path (car marked))))
- (if (string-match "\\.el$" filename)
- (byte-compile-file filename)))
- (setq marked (cdr marked)))))
-
-(defun cvs-insert-full-path (tin)
- "Insert full path to the file described in TIN in the current buffer."
- (insert (format "%s\n" (cvs-full-path tin))))
-
-
-(defun cvs-mode-add-change-log-entry-other-window (pos)
- "Add a ChangeLog entry in the ChangeLog of the current directory.
-Args: POS."
- (interactive "d")
- (let* ((cvs-buf (current-buffer))
- (odir default-directory))
- (setq default-directory
- (file-name-as-directory
- (cvs-fileinfo->dir
- (tin-cookie
- cvs-cookie-handle
- (tin-locate cvs-cookie-handle pos)))))
- (if (not default-directory) ;In case there was no entries.
- (setq default-directory odir))
- (add-change-log-entry-other-window)
- (set-buffer cvs-buf)
- (setq default-directory odir)))
-
-
-(defun print-cvs-tin (foo)
- "Debug utility."
- (let ((cookie (tin-cookie cvs-cookie-handle foo))
- (stream (get-buffer-create "debug")))
- (princ "==============\n" stream)
- (princ (cvs-fileinfo->file-name cookie) stream)
- (princ "\n" stream)
- (princ (cvs-fileinfo->dir cookie) stream)
- (princ "\n" stream)
- (princ (cvs-fileinfo->full-log cookie) stream)
- (princ "\n" stream)
- (princ (cvs-fileinfo->marked cookie) stream)
- (princ "\n" stream)))
-
-(defun cvs-mode-emerge (pos)
- "Emerge appropriate revisions of the selected file.
-Args: POS"
- (interactive "d")
- (let* ((cvs-buf (current-buffer))
- (tin (tin-locate cvs-cookie-handle pos)))
- (if tin
- (let* ((fileinfo (tin-cookie cvs-cookie-handle tin))
- (type (cvs-fileinfo->type fileinfo)))
- (cond
- ((eq type 'MODIFIED)
- (require 'emerge)
- (let ((tmp-file
- (cvs-retrieve-revision-to-tmpfile fileinfo)))
- (unwind-protect
- (if (not (emerge-files
- t
- (cvs-fileinfo->full-path fileinfo)
- tmp-file
- (cvs-fileinfo->full-path fileinfo)))
- (error "Emerge session failed"))
- (delete-file tmp-file))))
-
- ((or (eq type 'MERGED)
- (eq type 'CONFLICT))
- (require 'emerge)
- (let ((tmp-file
- (cvs-retrieve-revision-to-tmpfile
- fileinfo))
- (ancestor-file
- (cvs-retrieve-revision-to-tmpfile
- fileinfo
- (cvs-fileinfo->base-revision fileinfo))))
- (unwind-protect
- (if (not (emerge-files-with-ancestor
- t
- (cvs-fileinfo->backup-file fileinfo)
- tmp-file
- ancestor-file
- (cvs-fileinfo->full-path fileinfo)))
- (error "Emerge session failed"))
- (delete-file tmp-file)
- (delete-file ancestor-file))))
- (t
- (error "Can only emerge \"Modified\", \"Merged\" or \"Conflict\"%s"
- " files"))))
- (error "There is no file to emerge."))))
-
-(defun cvs-retrieve-revision-to-tmpfile (fileinfo &optional revision)
- "Retrieve the latest revision of the file in FILEINFO to a temporary file.
-If second optional argument REVISION is given, retrieve that revision instead."
- (let
- ((temp-name (make-temp-name
- (concat (file-name-as-directory
- (or (getenv "TMPDIR") "/tmp"))
- "pcl-cvs." revision))))
- (cvs-kill-buffer-visiting temp-name)
- (if revision
- (message "Retrieving revision %s..." revision)
- (message "Retrieving latest revision..."))
- (let ((res (call-process cvs-shell nil nil nil "-c"
- (concat cvs-program " update -p "
- (if revision
- (concat "-r " revision " ")
- "")
- (cvs-fileinfo->full-path fileinfo)
- " > " temp-name))))
- (if (and res (not (and (integerp res) (zerop res))))
- (error "Something went wrong: %s" res))
-
- (if revision
- (message "Retrieving revision %s... Done." revision)
- (message "Retrieving latest revision... Done."))
- (find-file-noselect temp-name)
- temp-name)))
-
-(defun cvs-fileinfo->backup-file (fileinfo)
- "Construct the file name of the backup file for FILEINFO."
- (if (cvs-fileinfo->base-revision fileinfo)
- (concat cvs-bakprefix (cvs-fileinfo->file-name fileinfo)
- "." (cvs-fileinfo->base-revision fileinfo))))
-
-(defun cvs-kill-buffer-visiting (filename)
- "If there is any buffer visiting FILENAME, kill it (without confirmation)."
- (let ((l (buffer-list)))
- (while l
- (if (string= (buffer-file-name (car l)) filename)
- (kill-buffer (car l)))
- (setq l (cdr l)))))
-
-(defun cvs-change-cvsroot (newroot)
- "Change the cvsroot."
- (interactive "DNew repository: ")
- (if (or (file-directory-p (expand-file-name "CVSROOT" newroot))
- (y-or-n-p (concat "Warning: no CVSROOT found inside repository."
- " Change cvs-cvsroot anyhow?")))
- (setq cvs-cvsroot newroot)))
-
-(if (string-match "Lucid" emacs-version)
- (progn
- (autoload 'pcl-cvs-fontify "pcl-cvs-lucid")
- (add-hook 'cvs-mode-hook 'pcl-cvs-fontify)))
-
-
-(defvar cvs-changelog-full-paragraphs t
- "If non-nil, include full ChangeLog paragraphs in the CVS log.
-This may be set in the ``local variables'' section of a ChangeLog, to
-indicate the policy for that ChangeLog.
-
-A ChangeLog paragraph is a bunch of log text containing no blank lines;
-a paragraph usually describes a set of changes with a single purpose,
-but perhaps spanning several functions in several files. Changes in
-different paragraphs are unrelated.
-
-You could argue that the CVS log entry for a file should contain the
-full ChangeLog paragraph mentioning the change to the file, even though
-it may mention other files, because that gives you the full context you
-need to understand the change. This is the behavior you get when this
-variable is set to t.
-
-On the other hand, you could argue that the CVS log entry for a change
-should contain only the text for the changes which occurred in that
-file, because the CVS log is per-file. This is the behavior you get
-when this variable is set to nil.")
-
-(defun cvs-changelog-name (directory)
- "Return the name of the ChangeLog file that handles DIRECTORY.
-This is in DIRECTORY or one of its parents.
-Signal an error if we can't find an appropriate ChangeLog file."
- (let ((dir (file-name-as-directory directory))
- file)
- (while (and dir
- (not (file-exists-p
- (setq file (expand-file-name "ChangeLog" dir)))))
- (let ((last dir))
- (setq dir (file-name-directory (directory-file-name dir)))
- (if (equal last dir)
- (setq dir nil))))
- (or dir
- (error "Can't find ChangeLog for %s" directory))
- file))
-
-(defun cvs-narrow-changelog ()
- "Narrow to the top page of the current buffer, a ChangeLog file.
-Actually, the narrowed region doesn't include the date line.
-A \"page\" in a ChangeLog file is the area between two dates."
- (or (eq major-mode 'change-log-mode)
- (error "cvs-narrow-changelog: current buffer isn't a ChangeLog"))
-
- (goto-char (point-min))
-
- ;; Skip date line and subsequent blank lines.
- (forward-line 1)
- (if (looking-at "[ \t\n]*\n")
- (goto-char (match-end 0)))
-
- (let ((start (point)))
- (forward-page 1)
- (narrow-to-region start (point))
- (goto-char (point-min))))
-
-(defun cvs-changelog-paragraph ()
- "Return the bounds of the ChangeLog paragraph containing point.
-If we are between paragraphs, return the previous paragraph."
- (save-excursion
- (beginning-of-line)
- (if (looking-at "^[ \t]*$")
- (skip-chars-backward " \t\n" (point-min)))
- (list (progn
- (if (re-search-backward "^[ \t]*\n" nil 'or-to-limit)
- (goto-char (match-end 0)))
- (point))
- (if (re-search-forward "^[ \t\n]*$" nil t)
- (match-beginning 0)
- (point)))))
-
-(defun cvs-changelog-subparagraph ()
- "Return the bounds of the ChangeLog subparagraph containing point.
-A subparagraph is a block of non-blank lines beginning with an asterisk.
-If we are between subparagraphs, return the previous subparagraph."
- (save-excursion
- (end-of-line)
- (if (search-backward "*" nil t)
- (list (progn (beginning-of-line) (point))
- (progn
- (forward-line 1)
- (if (re-search-forward "^[ \t]*[\n*]" nil t)
- (match-beginning 0)
- (point-max))))
- (list (point) (point)))))
-
-(defun cvs-changelog-entry ()
- "Return the bounds of the ChangeLog entry containing point.
-The variable `cvs-changelog-full-paragraphs' decides whether an
-\"entry\" is a paragraph or a subparagraph; see its documentation string
-for more details."
- (if cvs-changelog-full-paragraphs
- (cvs-changelog-paragraph)
- (cvs-changelog-subparagraph)))
-
-(defun cvs-changelog-ours-p ()
- "See if ChangeLog entry at point is for the current user, today.
-Return non-nil iff it is."
- ;; Code adapted from add-change-log-entry.
- (looking-at (concat (regexp-quote (substring (current-time-string)
- 0 10))
- ".* "
- (regexp-quote (substring (current-time-string) -4))
- "[ \t]+"
- (regexp-quote add-log-full-name)
- " <" (regexp-quote add-log-mailing-address))))
-
-(defun cvs-relative-path (base child)
- "Return a directory path relative to BASE for CHILD.
-If CHILD doesn't seem to be in a subdirectory of BASE, just return
-the full path to CHILD."
- (let ((base (file-name-as-directory (expand-file-name base)))
- (child (expand-file-name child)))
- (or (string= base (substring child 0 (length base)))
- (error "cvs-relative-path: %s isn't in %s" child base))
- (substring child (length base))))
-
-(defun cvs-changelog-entries (file)
- "Return the ChangeLog entries for FILE, and the ChangeLog they came from.
-The return value looks like this:
- (LOGBUFFER (ENTRYSTART . ENTRYEND) ...)
-where LOGBUFFER is the name of the ChangeLog buffer, and each
-\(ENTRYSTART . ENTRYEND\) pair is a buffer region."
- (save-excursion
- (set-buffer (find-file-noselect
- (cvs-changelog-name
- (file-name-directory
- (expand-file-name file)))))
- (goto-char (point-min))
- (if (looking-at "[ \t\n]*\n")
- (goto-char (match-end 0)))
- (if (not (cvs-changelog-ours-p))
- (list (current-buffer))
- (save-restriction
- (cvs-narrow-changelog)
- (goto-char (point-min))
-
- ;; Search for the name of FILE relative to the ChangeLog. If that
- ;; doesn't occur anywhere, they're not using full relative
- ;; filenames in the ChangeLog, so just look for FILE; we'll accept
- ;; some false positives.
- (let ((pattern (cvs-relative-path
- (file-name-directory buffer-file-name) file)))
- (if (or (string= pattern "")
- (not (save-excursion
- (search-forward pattern nil t))))
- (setq pattern file))
-
- (let (texts)
- (while (search-forward pattern nil t)
- (let ((entry (cvs-changelog-entry)))
- (setq texts (cons entry texts))
- (goto-char (elt entry 1))))
-
- (cons (current-buffer) texts)))))))
-
-(defun cvs-changelog-insert-entries (buffer regions)
- "Insert those regions in BUFFER specified in REGIONS.
-Sort REGIONS front-to-back first."
- (let ((regions (sort regions 'car-less-than-car))
- (last))
- (while regions
- (if (and last (< last (car (car regions))))
- (newline))
- (setq last (elt (car regions) 1))
- (apply 'insert-buffer-substring buffer (car regions))
- (setq regions (cdr regions)))))
-
-(defun cvs-union (set1 set2)
- "Return the union of SET1 and SET2, according to `equal'."
- (while set2
- (or (member (car set2) set1)
- (setq set1 (cons (car set2) set1)))
- (setq set2 (cdr set2)))
- set1)
-
-(defun cvs-insert-changelog-entries (files)
- "Given a list of files FILES, insert the ChangeLog entries for them."
- (let ((buffer-entries nil))
-
- ;; Add each buffer to buffer-entries, and associate it with the list
- ;; of entries we want from that file.
- (while files
- (let* ((entries (cvs-changelog-entries (car files)))
- (pair (assq (car entries) buffer-entries)))
- (if pair
- (setcdr pair (cvs-union (cdr pair) (cdr entries)))
- (setq buffer-entries (cons entries buffer-entries))))
- (setq files (cdr files)))
-
- ;; Now map over each buffer in buffer-entries, sort the entries for
- ;; each buffer, and extract them as strings.
- (while buffer-entries
- (cvs-changelog-insert-entries (car (car buffer-entries))
- (cdr (car buffer-entries)))
- (if (and (cdr buffer-entries) (cdr (car buffer-entries)))
- (newline))
- (setq buffer-entries (cdr buffer-entries)))))
-
-(defun cvs-edit-delete-common-indentation ()
- "Unindent the current buffer rigidly until at least one line is flush left."
- (save-excursion
- (let ((common 100000))
- (goto-char (point-min))
- (while (< (point) (point-max))
- (if (not (looking-at "^[ \t]*$"))
- (setq common (min common (current-indentation))))
- (forward-line 1))
- (indent-rigidly (point-min) (point-max) (- common)))))
-
-(defun cvs-mode-changelog-commit ()
-
- "Check in all marked files, or the current file.
-Ask the user for a log message in a buffer.
-
-This is just like `\\[cvs-mode-commit]', except that it tries to provide
-appropriate default log messages by looking at the ChangeLogs. The
-idea is to write your ChangeLog entries first, and then use this
-command to commit your changes.
-
-To select default log text, we:
-- find the ChangeLogs for the files to be checked in,
-- verify that the top entry in the ChangeLog is on the current date
- and by the current user; if not, we don't provide any default text,
-- search the ChangeLog entry for paragraphs containing the names of
- the files we're checking in, and finally
-- use those paragraphs as the log text."
-
- (interactive)
-
- (let* ((cvs-buf (current-buffer))
- (marked (cvs-filter (function cvs-committable)
- (cvs-get-marked))))
- (if (null marked)
- (error "Nothing to commit!")
- (pop-to-buffer (get-buffer-create cvs-commit-prompt-buffer))
- (goto-char (point-min))
-
- (erase-buffer)
- (cvs-insert-changelog-entries
- (mapcar (lambda (tin)
- (let ((cookie (tin-cookie cvs-cookie-handle tin)))
- (expand-file-name
- (cvs-fileinfo->file-name cookie)
- (cvs-fileinfo->dir cookie))))
- marked))
- (cvs-edit-delete-common-indentation)
-
- (cvs-edit-mode)
- (make-local-variable 'cvs-commit-list)
- (setq cvs-commit-list marked)
- (message "Press C-c C-c when you are done editing."))))
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.elc b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.elc
deleted file mode 100644
index 45a7b5e9acb..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.elc
+++ /dev/null
Binary files differ
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info
deleted file mode 100644
index bbf572fda5f..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info
+++ /dev/null
@@ -1,66 +0,0 @@
-This is Info file pcl-cvs.info, produced by Makeinfo-1.55 from the
-input file ./pcl-cvs.texinfo.
-
- Copyright (C) 1992 Per Cederqvist
-
- Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public
-License" and this permission notice may be included in translations
-approved by the Free Software Foundation instead of in the original
-English.
-
-
-Indirect:
-pcl-cvs.info-1: 1013
-pcl-cvs.info-2: 50562
-
-Tag Table:
-(Indirect)
-Node: Top1013
-Node: Copying3575
-Node: Installation22813
-Node: Pcl-cvs installation23608
-Node: On-line manual installation25673
-Node: Typeset manual installation26696
-Node: About pcl-cvs27439
-Node: Contributors27813
-Node: Archives29121
-Node: Getting started29705
-Node: Buffer contents32146
-Node: File status32700
-Node: Selected files35730
-Node: Commands36403
-Node: Updating the directory37619
-Node: Movement commands39282
-Node: Marking files39873
-Node: Committing changes40735
-Node: Editing files42206
-Node: Getting info about files43056
-Node: Adding and removing files43541
-Node: Undoing changes44897
-Node: Removing handled entries45362
-Node: Ignoring files46285
-Node: Viewing differences46820
-Node: Emerge48134
-Node: Reverting your buffers49113
-Node: Miscellaneous commands49815
-Node: Customization50562
-Node: Future enhancements54248
-Node: Bugs58449
-Node: Function and Variable Index60235
-Node: Concept Index63033
-Node: Key Index69634
-
-End Tag Table
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-1 b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-1
deleted file mode 100644
index a56b771d50f..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-1
+++ /dev/null
@@ -1,1195 +0,0 @@
-This is Info file pcl-cvs.info, produced by Makeinfo-1.55 from the
-input file ./pcl-cvs.texinfo.
-
- Copyright (C) 1992 Per Cederqvist
-
- Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public
-License" and this permission notice may be included in translations
-approved by the Free Software Foundation instead of in the original
-English.
-
-
-File: pcl-cvs.info, Node: Top, Next: Copying, Prev: (dir), Up: (dir)
-
- This info manual describes pcl-cvs which is a GNU Emacs front-end
-to CVS. It works with CVS version 1.3. This manual is updated to
-release 1.05 of pcl-cvs.
-
-* Menu:
-
-* Copying:: GNU General Public License
-* Installation:: How to install pcl-cvs on your system.
-* About pcl-cvs:: Authors and ftp sites.
-
-* Getting started:: An introduction with a walk-through example.
-* Buffer contents:: An explanation of the buffer contents.
-* Commands:: All commands, grouped by type.
-
-* Customization:: How you can tailor pcl-cvs to suit your needs.
-* Future enhancements:: Future enhancements of pcl-cvs.
-* Bugs:: Bugs (known and unknown).
-* Function and Variable Index:: List of functions and variables.
-* Concept Index:: List of concepts.
-* Key Index:: List of keystrokes.
-
- -- The Detailed Node Listing --
-
-Installation
-
-* Pcl-cvs installation:: How to install pcl-cvs on your system.
-* On-line manual installation:: How to install the on-line manual.
-* Typeset manual installation:: How to create typeset documentation
- about pcl-cvs.
-
-About pcl-cvs
-
-* Contributors:: Contributors to pcl-cvs.
-* Archives:: Where can I get a copy of Pcl-Cvs?
-
-Buffer contents
-
-* File status:: The meaning of the second field.
-* Selected files:: How selection works.
-
-Commands
-
-* Updating the directory:: Commands to update the local directory
-* Movement commands:: How to move up and down in the buffer
-* Marking files:: How to mark files that other commands
- will later operate on.
-* Committing changes:: Checking in your modifications to the
- CVS repository.
-* Editing files:: Loading files into Emacs.
-* Getting info about files:: Display the log and status of files.
-* Adding and removing files:: Adding and removing files
-* Undoing changes:: Undoing changes
-* Removing handled entries:: Uninteresting lines can easily be removed.
-* Ignoring files:: Telling CVS to ignore generated files.
-* Viewing differences:: Commands to `diff' different versions.
-* Emerge::
-* Reverting your buffers:: Reverting your buffers
-* Miscellaneous commands:: Miscellaneous commands
-
-
-File: pcl-cvs.info, Node: Copying, Next: Installation, Prev: Top, Up: Top
-
-GNU GENERAL PUBLIC LICENSE
-**************************
-
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-Preamble
-========
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software,
-and (2) offer you this license which gives you legal permission to
-copy, distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make
-certain that everyone understands that there is no warranty for this
-free software. If the software is modified by someone else and
-passed on, we want its recipients to know that what they have is not
-the original, so that any problems introduced by others will not
-reflect on the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at
-all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 1. This License applies to any program or other work which contains
- a notice placed by the copyright holder saying it may be
- distributed under the terms of this General Public License. The
- "Program", below, refers to any such program or work, and a
- "work based on the Program" means either the Program or any
- derivative work under copyright law: that is to say, a work
- containing the Program or a portion of it, either verbatim or
- with modifications and/or translated into another language.
- (Hereinafter, translation is included without limitation in the
- term "modification".) Each licensee is addressed as "you".
-
- Activities other than copying, distribution and modification are
- not covered by this License; they are outside its scope. The
- act of running the Program is not restricted, and the output
- from the Program is covered only if its contents constitute a
- work based on the Program (independent of having been made by
- running the Program). Whether that is true depends on what the
- Program does.
-
- 2. You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an
- appropriate copyright notice and disclaimer of warranty; keep
- intact all the notices that refer to this License and to the
- absence of any warranty; and give any other recipients of the
- Program a copy of this License along with the Program.
-
- You may charge a fee for the physical act of transferring a
- copy, and you may at your option offer warranty protection in
- exchange for a fee.
-
- 3. You may modify your copy or copies of the Program or any portion
- of it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section
- 1 above, provided that you also meet all of these conditions:
-
- a. You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any
- change.
-
- b. You must cause any work that you distribute or publish,
- that in whole or in part contains or is derived from the
- Program or any part thereof, to be licensed as a whole at
- no charge to all third parties under the terms of this
- License.
-
- c. If the modified program normally reads commands
- interactively when run, you must cause it, when started
- running for such interactive use in the most ordinary way,
- to print or display an announcement including an
- appropriate copyright notice and a notice that there is no
- warranty (or else, saying that you provide a warranty) and
- that users may redistribute the program under these
- conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive
- but does not normally print such an announcement, your work
- based on the Program is not required to print an
- announcement.)
-
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the
- Program, and can be reasonably considered independent and
- separate works in themselves, then this License, and its terms,
- do not apply to those sections when you distribute them as
- separate works. But when you distribute the same sections as
- part of a whole which is a work based on the Program, the
- distribution of the whole must be on the terms of this License,
- whose permissions for other licensees extend to the entire
- whole, and thus to each and every part regardless of who wrote
- it.
-
- Thus, it is not the intent of this section to claim rights or
- contest your rights to work written entirely by you; rather, the
- intent is to exercise the right to control the distribution of
- derivative or collective works based on the Program.
-
- In addition, mere aggregation of another work not based on the
- Program with the Program (or with a work based on the Program)
- on a volume of a storage or distribution medium does not bring
- the other work under the scope of this License.
-
- 4. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the
- terms of Sections 1 and 2 above provided that you also do one of
- the following:
-
- a. Accompany it with the complete corresponding
- machine-readable source code, which must be distributed
- under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- b. Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than
- your cost of physically performing source distribution, a
- complete machine-readable copy of the corresponding source
- code, to be distributed under the terms of Sections 1 and 2
- above on a medium customarily used for software
- interchange; or,
-
- c. Accompany it with the information you received as to the
- offer to distribute corresponding source code. (This
- alternative is allowed only for noncommercial distribution
- and only if you received the program in object code or
- executable form with such an offer, in accord with
- Subsection b above.)
-
- The source code for a work means the preferred form of the work
- for making modifications to it. For an executable work,
- complete source code means all the source code for all modules
- it contains, plus any associated interface definition files,
- plus the scripts used to control compilation and installation of
- the executable. However, as a special exception, the source
- code distributed need not include anything that is normally
- distributed (in either source or binary form) with the major
- components (compiler, kernel, and so on) of the operating system
- on which the executable runs, unless that component itself
- accompanies the executable.
-
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are
- not compelled to copy the source along with the object code.
-
- 5. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program
- is void, and will automatically terminate your rights under this
- License. However, parties who have received copies, or rights,
- from you under this License will not have their licenses
- terminated so long as such parties remain in full compliance.
-
- 6. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to
- modify or distribute the Program or its derivative works. These
- actions are prohibited by law if you do not accept this License.
- Therefore, by modifying or distributing the Program (or any
- work based on the Program), you indicate your acceptance of this
- License to do so, and all its terms and conditions for copying,
- distributing or modifying the Program or works based on it.
-
- 7. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program
- subject to these terms and conditions. You may not impose any
- further restrictions on the recipients' exercise of the rights
- granted herein. You are not responsible for enforcing
- compliance by third parties to this License.
-
- 8. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent
- issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this
- License, they do not excuse you from the conditions of this
- License. If you cannot distribute so as to satisfy
- simultaneously your obligations under this License and any other
- pertinent obligations, then as a consequence you may not
- distribute the Program at all. For example, if a patent license
- would not permit royalty-free redistribution of the Program by
- all those who receive copies directly or indirectly through you,
- then the only way you could satisfy both it and this License
- would be to refrain entirely from distribution of the Program.
-
- If any portion of this section is held invalid or unenforceable
- under any particular circumstance, the balance of the section is
- intended to apply and the section as a whole is intended to
- apply in other circumstances.
-
- It is not the purpose of this section to induce you to infringe
- any patents or other property right claims or to contest
- validity of any such claims; this section has the sole purpose
- of protecting the integrity of the free software distribution
- system, which is implemented by public license practices. Many
- people have made generous contributions to the wide range of
- software distributed through that system in reliance on
- consistent application of that system; it is up to the
- author/donor to decide if he or she is willing to distribute
- software through any other system and a licensee cannot impose
- that choice.
-
- This section is intended to make thoroughly clear what is
- believed to be a consequence of the rest of this License.
-
- 9. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted
- interfaces, the original copyright holder who places the Program
- under this License may add an explicit geographical distribution
- limitation excluding those countries, so that distribution is
- permitted only in or among countries not thus excluded. In such
- case, this License incorporates the limitation as if written in
- the body of this License.
-
- 10. The Free Software Foundation may publish revised and/or new
- versions of the General Public License from time to time. Such
- new versions will be similar in spirit to the present version,
- but may differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
- Program specifies a version number of this License which applies
- to it and "any later version", you have the option of following
- the terms and conditions either of that version or of any later
- version published by the Free Software Foundation. If the
- Program does not specify a version number of this License, you
- may choose any version ever published by the Free Software
- Foundation.
-
- 11. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to
- the author to ask for permission. For software which is
- copyrighted by the Free Software Foundation, write to the Free
- Software Foundation; we sometimes make exceptions for this. Our
- decision will be guided by the two goals of preserving the free
- status of all derivatives of our free software and of promoting
- the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
- HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
- WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
- QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
- SERVICING, REPAIR OR CORRECTION.
-
- 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
- MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
- LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
- OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
- ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-Appendix: How to Apply These Terms to Your New Programs
-=======================================================
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
- To do so, attach the following notices to the program. It is
-safest to attach them to the start of each source file to most
-effectively convey the exclusion of warranty; and each file should
-have at least the "copyright" line and a pointer to where the full
-notice is found.
-
- ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
- Copyright (C) 19YY NAME OF AUTHOR
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Also add information on how to contact you by electronic and paper
-mail.
-
- If the program is interactive, make it output a short notice like
-this when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
- The hypothetical commands `show w' and `show c' should show the
-appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than `show w' and
-`show c'; they could even be mouse-clicks or menu items--whatever
-suits your program.
-
- You should also get your employer (if you work as a programmer) or
-your school, if any, to sign a "copyright disclaimer" for the
-program, if necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- SIGNATURE OF TY COON, 1 April 1989
- Ty Coon, President of Vice
-
- This General Public License does not permit incorporating your
-program into proprietary programs. If your program is a subroutine
-library, you may consider it more useful to permit linking
-proprietary applications with the library. If this is what you want
-to do, use the GNU Library General Public License instead of this
-License.
-
-
-File: pcl-cvs.info, Node: Installation, Next: About pcl-cvs, Prev: Copying, Up: Top
-
-Installation
-************
-
- This section describes the installation of pcl-cvs, the GNU Emacs
-CVS front-end. You should install not only the elisp files
-themselves, but also the on-line documentation so that your users
-will know how to use it. You can create typeset documentation from
-the file `pcl-cvs.texinfo' as well as an on-line info file. The
-following steps are also described in the file `INSTALL' in the source
-directory.
-
-* Menu:
-
-* Pcl-cvs installation:: How to install pcl-cvs on your system.
-* On-line manual installation:: How to install the on-line manual.
-* Typeset manual installation:: How to create typeset documentation
- about pcl-cvs.
-
-
-File: pcl-cvs.info, Node: Pcl-cvs installation, Next: On-line manual installation, Prev: Installation, Up: Installation
-
-Installation of the pcl-cvs program
-===================================
-
- 1. Edit the file `Makefile' to reflect the situation at your site.
- The only things you have to change is the definition of `lispdir'
- and `infodir'. The elisp files will be copied to `lispdir', and
- the info file to `infodir'.
-
- 2. Configure pcl-cvs.el
-
- There are a couple of paths that you have to check to make sure
- that they match you system. They appear early in the file
- pcl-cvs.el.
-
- *NOTE:* If your system is running emacs 18.57 or earlier you
- MUST uncomment the line that says:
-
- (setq delete-exited-processes nil)
-
- Setting `delete-exited-processes' to `nil' works around a bug in
- emacs that causes it to dump core. The bug was fixed in emacs
- 18.58.
-
- 3. Release 1.05 and later of pcl-cvs requires parts of the Elib
- library, version 0.07 or later. Elib is available via anonymous
- ftp from prep.ai.mit.edu in `pub/gnu/elib-0.07.tar.z', and from
- a lot of other sites that mirrors prep. Get Elib, and install
- it, before proceeding.
-
- 4. Type `make install' in the source directory. This will
- byte-compile all `.el' files and copy both the `.el' and the
- `.elc' into the directory you specified in step 1.
-
- If you don't want to install the `.el' files but only the `.elc'
- files (the byte-compiled files), you can type ``make
- install_elc'' instead of ``make install''.
-
- If you only want to create the compiled elisp files, but don't
- want to install them, you can type `make elcfiles' instead.
- This is what happens if you only type `make' without parameters.
-
- 5. Edit the file `default.el' in your emacs lisp directory (usually
- `/usr/gnu/emacs/lisp' or something similar) and enter the
- contents of the file `pcl-cvs-startup.el' into it. It contains
- a couple of `auto-load's that facilitates the use of pcl-cvs.
-
-
-
-File: pcl-cvs.info, Node: On-line manual installation, Next: Typeset manual installation, Prev: Pcl-cvs installation, Up: Installation
-
-Installation of the on-line manual.
-===================================
-
- 1. Create the info file `pcl-cvs' from `pcl-cvs.texinfo' by typing
- `make info'. If you don't have the program `makeinfo' you can
- get it by anonymous ftp from e.g. `ftp.gnu.ai.mit.edu' as
- `pub/gnu/texinfo-2.14.tar.Z' (there might be a newer version
- there when you read this), or you could use the preformatted
- info file `pcl-cvs.info' that is included in the distribution
- (type `cp pcl-cvs.info pcl-cvs').
-
- 2. Move the info file `pcl-cvs' to your standard info directory.
- This might be called something like `/usr/gnu/emacs/info'.
-
- 3. Edit the file `dir' in the info directory and enter one line to
- contain a pointer to the info file `pcl-cvs'. The line can, for
- instance, look like this:
-
- * Pcl-cvs: (pcl-cvs). An Emacs front-end to CVS.
-
-
-File: pcl-cvs.info, Node: Typeset manual installation, Prev: On-line manual installation, Up: Installation
-
-How to make typeset documentation from pcl-cvs.texinfo
-======================================================
-
- If you have TeX installed at your site, you can make a typeset
-manual from `pcl-cvs.texinfo'.
-
- 1. Run TeX by typing ``make pcl-cvs.dvi''. You will not get the
- indices unless you have the `texindex' program.
-
- 2. Convert the resulting device independent file `pcl-cvs.dvi' to a
- form which your printer can output and print it. If you have a
- postscript printer there is a program, `dvi2ps', which does.
- There is also a program which comes together with TeX, `dvips',
- which you can use.
-
-
-
-File: pcl-cvs.info, Node: About pcl-cvs, Next: Getting started, Prev: Installation, Up: Top
-
-About pcl-cvs
-*************
-
- Pcl-cvs is a front-end to CVS version 1.3. It integrates the most
-frequently used CVS commands into emacs.
-
-* Menu:
-
-* Contributors:: Contributors to pcl-cvs.
-* Archives:: Where can I get a copy of Pcl-Cvs?
-
-
-File: pcl-cvs.info, Node: Contributors, Next: Archives, Prev: About pcl-cvs, Up: About pcl-cvs
-
-Contributors to pcl-cvs
-=======================
-
- Contributions to the package are welcome. I have limited time to
-work on this project, but I will gladly add any code that you
-contribute to me to this package (*note Bugs::.).
-
- The following persons have made contributions to pcl-cvs.
-
- * Brian Berliner wrote CVS, together with some other contributors.
- Without his work on CVS this package would be useless...
-
- * Per Cederqvist wrote most of the otherwise unattributed
- functions in pcl-cvs as well as all documentation.
-
- * Inge Wallin (`inge@lysator.liu.se') wrote the skeleton to
- `pcl-cvs.texinfo', and gave useful comments on it. He also wrote
- the files `elib-node.el' and `compile-all.el'. The file
- `cookie.el' was inspired by Inge.
-
- * Linus Tolke (`linus@lysator.liu.se') contributed useful comments
- on both the functionality and the documentation.
-
- * Jamie Zawinski (`jwz@lucid.com') contributed `pcl-cvs-lucid.el'.
-
- * Leif Lonnblad contributed RCVS support.
-
- Apart from these, a lot of people have send me suggestions, ideas,
-requests, bug reports and encouragement. Thanks a lot! Without your
-there would be no new releases of pcl-cvs.
-
-
-File: pcl-cvs.info, Node: Archives, Prev: Contributors, Up: About pcl-cvs
-
-Where can I get pcl-cvs?
-========================
-
- The latest release of pcl-cvs can be fetched via anonymous ftp from
-`ftp.lysator.liu.se', (IP no. 130.236.254.1) in the directory
-`pub/emacs'. If you don't live in Scandinavia you should probably
-check with archie to see if there is a site closer to you that
-archives pcl-cvs.
-
- New releases will be announced to appropriate newsgroups. If you
-send your email address to me I will add you to my list of people to
-mail when I make a new release.
-
-
-File: pcl-cvs.info, Node: Getting started, Next: Buffer contents, Prev: About pcl-cvs, Up: Top
-
-Getting started
-***************
-
- This document assumes that you know what CVS is, and that you at
-least knows the fundamental concepts of CVS. If that is not the case
-you should read the man page for CVS.
-
- Pcl-cvs is only useful once you have checked out a module. So
-before you invoke it you must have a copy of a module somewhere in
-the file system.
-
- You invoke pcl-cvs by typing `M-x cvs-update RET'. If your emacs
-responds with `[No match]' your system administrator has not
-installed pcl-cvs properly. Try `M-x load-library RET pcl-cvs RET'.
-If that also fails - talk to your root. If it succeeds you might put
-this line in your `.emacs' file so that you don't have to type the
-`load-library' command every time you wish to use pcl-cvs:
-
- (autoload 'cvs-update "pcl-cvs" nil t)
-
- The function `cvs-update' will ask for a directory. The command
-`cvs update' will be run in that directory. (It should contain files
-that have been checked out from a CVS archive.) The output from
-`cvs' will be parsed and presented in a table in a buffer called
-`*cvs*'. It might look something like this:
-
- PCL-CVS release 1.05.
-
- In directory /users/ceder/FOO/test:
- Updated bar
- Updated file.txt
- Modified ci namechange
- Updated newer
-
- In directory /users/ceder/FOO/test/sub:
- Modified ci ChangeLog
- ---------- End -----
-
- In this example the three files (`bar', `file.txt' and `newer')
-that are marked with `Updated' have been copied from the CVS
-repository to `/users/ceder/FOO/test/' since someone else have
-checked in newer versions of them. Two files (`namechange' and
-`sub/ChangeLog') have been modified locally, and needs to be checked
-in.
-
- You can move the cursor up and down in the buffer with `C-n' and
-`C-p' or `n' and `p'. If you press `c' on one of the `Modified'
-files that file will be checked in to the CVS repository. *Note
-Committing changes::. You can press `x' to get rid of the
-"uninteresting" files that have only been `Updated' (and don't
-require any further action from you).
-
- You can also easily get a `diff' between your modified file and the
-base version that you started from, and you can get the output from
-`cvs log' and `cvs status' on the listed files simply by pressing a
-key (*note Getting info about files::.).
-
-
-File: pcl-cvs.info, Node: Buffer contents, Next: Commands, Prev: Getting started, Up: Top
-
-Buffer contents
-***************
-
- The display contains four columns. They contain, from left to
-right:
-
- * An asterisk when the file is "marked" (*note Selected files::.).
-
- * The status of the file. See *Note File status::, for more
- information.
-
- * A "need to be checked in"-marker (`ci').
-
- * The file name.
-
-* Menu:
-
-* File status:: The meaning of the second field.
-* Selected files:: How selection works.
-
-
-File: pcl-cvs.info, Node: File status, Next: Selected files, Prev: Buffer contents, Up: Buffer contents
-
-File status
-===========
-
- The `file status' field can have the following values:
-
-`Updated'
- The file was brought up to date with respect to the repository.
- This is done for any file that exists in the repository but not
- in your source, and for files that you haven't changed but are
- not the most recent versions available in the repository.
-
-`Modified'
- The file is modified in your working directory, and there was
- no modification to the same file in the repository.
-
-`Merged'
- The file is modified in your working directory, and there were
- modifications in the repository as well as in your copy, but
- they were merged successfully, without conflict, in your working
- directory.
-
-`Conflict'
- A conflict was detected while trying to merge your changes to
- FILE with changes from the source repository. FILE (the copy in
- your working directory) is now the output of the `rcsmerge'
- command on the two versions; an unmodified copy of your file is
- also in your working directory, with the name `.#FILE.VERSION',
- where VERSION is the RCS revision that your modified file started
- from. *Note Viewing differences::, for more details.
-
-`Added'
- The file has been added by you, but it still needs to be checked
- in to the repository.
-
-`Removed'
- The file has been removed by you, but it needs to be checked in
- to the repository. You can resurrect it by typing `a' (*note
- Adding and removing files::.).
-
-`Unknown'
- A file that was detected in your directory, but that neither
- appears in the repository, nor is present on the list of files
- that CVS should ignore.
-
- There are also a few special cases, that rarely occur, which have
-longer strings in the fields:
-
-`Removed from repository'
- The file has been removed from your directory since someone has
- removed it from the repository. (It is still present in the
- Attic directory, so no permanent loss has occurred). This,
- unlike the other entries in this table, is not an error
- condition.
-
-`Removed from repository, changed by you'
- You have modified a file that someone have removed from the
- repository. You can correct this situation by removing the file
- manually (see *note Adding and removing files::.).
-
-`Removed by you, changed in repository'
- You have removed a file, and before you committed the removal
- someone committed a change to that file. You could use `a' to
- resurrect the file (see *note Adding and removing files::.).
-
-`Move away FILE - it is in the way'
- For some reason CVS does not like the file FILE. Rename or
- remove it.
-
-`This repository is missing! Remove this dir manually.'
- It is impossible to remove a directory in the CVS repository in
- a clean way. Someone have tried to remove one, and CVS gets
- confused. Remove your copy of the directory.
-
-
-File: pcl-cvs.info, Node: Selected files, Prev: File status, Up: Buffer contents
-
-Selected files
-==============
-
- Many of the commands works on the current set of "selected" files.
-
- * If there are any files that are marked they constitute the set of
- selected files.
-
- * Otherwise, if the cursor points to a file, that file is the
- selected file.
-
- * Otherwise, if the cursor points to a directory, all the files in
- that directory that appears in the buffer are the selected files.
-
- This scheme might seem a little complicated, but once one get used
-to it, it is quite powerful.
-
- *Note Marking files:: tells how you mark and unmark files.
-
-
-File: pcl-cvs.info, Node: Commands, Next: Customization, Prev: Buffer contents, Up: Top
-
-Commands
-********
-
- The nodes in this menu contains explanations about all the
-commands that you can use in pcl-cvs. They are grouped together by
-type.
-
-* Menu:
-
-* Updating the directory:: Commands to update the local directory
-* Movement commands:: How to move up and down in the buffer
-* Marking files:: How to mark files that other commands
- will later operate on.
-* Committing changes:: Checking in your modifications to the
- CVS repository.
-* Editing files:: Loading files into Emacs.
-* Getting info about files:: Display the log and status of files.
-* Adding and removing files:: Adding and removing files
-* Undoing changes:: Undoing changes
-* Removing handled entries:: Uninteresting lines can easily be removed.
-* Ignoring files:: Telling CVS to ignore generated files.
-* Viewing differences:: Commands to `diff' different versions.
-* Emerge::
-* Reverting your buffers:: Reverting your buffers
-* Miscellaneous commands:: Miscellaneous commands
-
-
-File: pcl-cvs.info, Node: Updating the directory, Next: Movement commands, Prev: Commands, Up: Commands
-
-Updating the directory
-======================
-
-`M-x cvs-update'
- Run a `cvs update' command. You will be asked for the directory
- in which the `cvs update' will be run. The output will be
- parsed by pcl-cvs, and the result printed in the `*cvs*' buffer
- (see *note Buffer contents::. for a description of the contents).
-
- By default, `cvs-update' will descend recursively into
- subdirectories. You can avoid that behavior by giving a prefix
- argument to it (e.g., by typing `C-u M-x cvs-update RET').
-
- All other commands in pcl-cvs requires that you have a `*cvs*'
- buffer. This is the command that you use to get one.
-
- CVS uses lock files in the repository to ensure the integrity of
- the data files in the repository. They might be left behind
- i.e. if a workstation crashes in the middle of a CVS operation.
- CVS outputs a message when it is waiting for a lock file to go
- away. Pcl-cvs will show the same message in the *cvs* buffer,
- together with instructions for deleting the lock files. You
- should normally not have to delete them manually -- just wait a
- little while and the problem should fix itself. But if the lock
- files doesn't disappear you can delete them with `M-x
- cvs-delete-lock RET'.
-
-`g'
- This will run `cvs update' again. It will always use the same
- buffer that was used with the previous `cvs update'. Give a
- prefix argument to avoid descending into subdirectories. This
- runs the command `cvs-mode-update-no-prompt'.
-
-
-File: pcl-cvs.info, Node: Movement commands, Next: Marking files, Prev: Updating the directory, Up: Commands
-
-Movement Commands
-=================
-
- You can use most normal Emacs commands to move forward and
-backward in the buffer. Some keys are rebound to functions that take
-advantage of the fact that the buffer is a pcl-cvs buffer:
-
-`SPC'
-`C-n'
-`n'
- These keys move the cursor one file forward, towards the end of
- the buffer (`cookie-next-cookie').
-
-`C-p'
-`p'
- These keys move one file backward, towards the beginning of the
- buffer (`cookie-previous-cookie').
-
-
-File: pcl-cvs.info, Node: Marking files, Next: Committing changes, Prev: Movement commands, Up: Commands
-
-Marking files
-=============
-
- Pcl-cvs works on a set of "selected files" (*note Selected
-files::.). You can mark and unmark files with these commands:
-
-`m'
- This marks the file that the cursor is positioned on. If the
- cursor is positioned on a directory all files in that directory
- will be marked. (`cvs-mode-mark').
-
-`u'
- Unmark the file that the cursor is positioned on. If the cursor
- is on a directory, all files in that directory will be unmarked.
- (`cvs-mode-unmark').
-
-`M'
- Mark *all* files in the buffer (`cvs-mode-mark-all-files').
-
-`ESC DEL'
- Unmark *all* files (`cvs-mode-unmark-all-files').
-
-`DEL'
- Unmark the file on the previous line, and move point to that line
- (`cvs-mode-unmark-up').
-
-
-File: pcl-cvs.info, Node: Committing changes, Next: Editing files, Prev: Marking files, Up: Commands
-
-Committing changes
-==================
-
-`c'
- All files that have a "need to be checked in"-marker (*note
- Buffer contents::.) can be checked in with the `c' command. It
- checks in all selected files (*note Selected files::.) (except
- those who lack the "ci"-marker - they are ignored). Pressing
- `c' causes `cvs-mode-commit' to be run.
-
- When you press `c' you will get a buffer called
- `*cvs-commit-message*'. Enter the log message for the file(s) in
- it. When you are ready you should press `C-c C-c' to actually
- commit the files (using `cvs-edit-done').
-
- Normally the `*cvs-commit-message*' buffer will retain the log
- message from the previous commit, but if the variable
- `cvs-erase-input-buffer' is set to a non-`nil' value the buffer
- will be erased. Point and mark will always be located around the
- entire buffer so that you can easily erase it with `C-w'
- (`kill-region').
-
- If you are editing the files in your emacs an automatic
- `revert-buffer' will be performed. (If the file contains `$Id: pcl-cvs.info-1,v 1.1 1995/12/19 09:21:41 deraadt Exp $'
- keywords `cvs commit' will write a new file with the new values
- substituted. The auto-revert makes sure that you get them into
- your buffer). The revert will not occur if you have modified
- your buffer, or if `cvs-auto-revert-after-commit' is set to
- `nil'.
-
-
-File: pcl-cvs.info, Node: Editing files, Next: Getting info about files, Prev: Committing changes, Up: Commands
-
-Editing files
-=============
-
- There are currently three commands that can be used to find a file
-(that is, load it into a buffer and start editing it there). These
-commands work on the line that the cursor is situated at. They
-ignore any marked files.
-
-`f'
- Find the file that the cursor points to. Run `dired' (*note
- Dired: (Emacs)Dired.) if the cursor points to a directory
- (`cvs-mode-find-file').
-
-`o'
- Like `f', but use another window
- (`cvs-mode-find-file-other-window').
-
-`A'
- Invoke `add-change-log-entry-other-window' to edit a `ChangeLog'
- file. The `ChangeLog' will be found in the directory of the
- file the cursor points to.
- (`cvs-mode-add-change-log-entry-other-window').
-
-
-File: pcl-cvs.info, Node: Getting info about files, Next: Adding and removing files, Prev: Editing files, Up: Commands
-
-Getting info about files
-========================
-
- Both of the following commands can be customized. *Note
-Customization::.
-
-`l'
- Run `cvs log' on all selected files, and show the result in a
- temporary buffer (`cvs-mode-log').
-
-`s'
- Run `cvs status' on all selected files, and show the result in a
- temporary buffer (`cvs-mode-status').
-
-
-File: pcl-cvs.info, Node: Adding and removing files, Next: Undoing changes, Prev: Getting info about files, Up: Commands
-
-Adding and removing files
-=========================
-
- The following commands are available to make it easy to add and
-remove files from the CVS repository.
-
-`a'
- Add all selected files. This command can be used on `Unknown'
- files (see *note File status::.). The status of the file will
- change to `Added', and you will have to use `c'
- (`cvs-mode-commit', see *note Committing changes::.) to really
- add the file to the repository.
-
- This command can also be used on `Removed' files (before you
- commit them) to resurrect them.
-
- Selected files that are neither `Unknown' nor `Removed' will be
- ignored by this command.
-
- The command that is run is `cvs-mode-add'.
-
-`r'
- This command removes the selected files (after prompting for
- confirmation). The files are `rm'ed from your directory and
- (unless the status was `Unknown'; *note File status::.) they will
- also be `cvs remove'd. If the files were `Unknown' they will
- disappear from the buffer. Otherwise their status will change to
- `Removed', and you must use `c' (`cvs-mode-commit', *note
- Committing changes::.) to commit the removal.
-
- The command that is run is `cvs-mode-remove-file'.
-
-
-File: pcl-cvs.info, Node: Undoing changes, Next: Removing handled entries, Prev: Adding and removing files, Up: Commands
-
-Undoing changes
-===============
-
-`U'
- If you have modified a file, and for some reason decide that you
- don't want to keep the changes, you can undo them with this
- command. It works by removing your working copy of the file and
- then getting the latest version from the repository
- (`cvs-mode-undo-local-changes'.
-
-
-File: pcl-cvs.info, Node: Removing handled entries, Next: Ignoring files, Prev: Undoing changes, Up: Commands
-
-Removing handled entries
-========================
-
-`x'
- This command allows you to remove all entries that you have
- processed. More specifically, the lines for `Updated' files
- (*note File status::. and files that have been checked in (*note
- Committing changes::.) are removed from the buffer. If a
- directory becomes empty the heading for that directory is also
- removed. This makes it easier to get an overview of what needs
- to be done.
-
- The command is called `cvs-mode-remove-handled'. If
- `cvs-auto-remove-handled' is set to non-`nil' this will
- automatically be performed after every commit.
-
-`C-k'
- This command can be used for lines that
- `cvs-mode-remove-handled' would not delete, but that you want to
- delete (`cvs-mode-acknowledge').
-
-
-File: pcl-cvs.info, Node: Ignoring files, Next: Viewing differences, Prev: Removing handled entries, Up: Commands
-
-Ignoring files
-==============
-
-`i'
- Arrange so that CVS will ignore the selected files. The file
- names are added to the `.cvsignore' file in the corresponding
- directory. If the `.cvsignore' doesn't exist it will be created.
-
- The `.cvsignore' file should normally be added to the repository,
- but you could ignore it also if you like it better that way.
-
- This runs `cvs-mode-ignore'.
-
-
-File: pcl-cvs.info, Node: Viewing differences, Next: Emerge, Prev: Ignoring files, Up: Commands
-
-Viewing differences
-===================
-
-`d'
- Display a `cvs diff' between the selected files and the RCS
- version that they are based on. *Note Customization:: describes
- how you can send flags to `cvs diff'. If CVS-DIFF-IGNORE-MARKS
- is set to a non-`nil' value or if a prefix argument is given
- (but not both) any marked files will not be considered to be
- selected. (`cvs-mode-diff-cvs').
-
-`b'
- If CVS finds a conflict while merging two versions of a file
- (during a `cvs update', *note Updating the directory::.) it will
- save the original file in a file called `.#FILE.VERSION' where
- FILE is the name of the file, and VERSION is the RCS version
- number that your file was based on.
-
- With the `b' command you can run a `diff' on the files
- `.#FILE.VERSION' and `FILE'. You can get a context- or Unidiff
- by setting `cvs-diff-flags' - *note Customization::.. This
- command only works on files that have status `Conflict' or
- `Merged'.
-
- If CVS-DIFF-IGNORE-MARKS is set to a non-`nil' value or if a
- prefix argument is given (but not both) any marked files will
- not be considered to be selected. (`cvs-mode-diff-backup').
-
-
-File: pcl-cvs.info, Node: Emerge, Next: Reverting your buffers, Prev: Viewing differences, Up: Commands
-
-Running emerge
-==============
-
-`e'
- Invoke `emerge' on one file. This command works slightly
- different depending on the file status.
-
- `Modified'
- Run `emerge-files' with your working file as file A, and
- the latest revision in the repository as file B.
-
- `Merged'
- `Conflict'
- Run `emerge-files-with-ancestor' with your working file (as
- it was prior to your invocation of `cvs-update') as file A,
- the latest revision in the repository as file B, and the
- revision that you based your local modifications on as
- ancestor.
-
- *Note:* CVS has already performed a merge. The resulting file is
- not used in any way if you use this command. If you use the `q'
- command inside `emerge' (to successfully terminate the merge) the
- file that CVS created will be overwritten.
-
-
-File: pcl-cvs.info, Node: Reverting your buffers, Next: Miscellaneous commands, Prev: Emerge, Up: Commands
-
-Reverting your buffers
-======================
-
-`R'
- If you are editing (or just viewing) a file in a buffer, and
- that file is changed by CVS during a `cvs-update', all you have
- to do is type `R' in the *cvs* buffer to read in the new
- versions of the files.
-
- All files that are `Updated', `Merged' or in `Conflict' are
- reverted from the disk. Any other files are ignored. Only files
- that you were already editing are read.
-
- An error is signalled if you have modified the buffer since it
- was last changed. (`cvs-mode-revert-updated-buffers').
-
-
-File: pcl-cvs.info, Node: Miscellaneous commands, Prev: Reverting your buffers, Up: Commands
-
-Miscellaneous commands
-======================
-
-`M-x cvs-byte-compile-files'
- Byte compile all selected files that end in .el.
-
-`M-x cvs-delete-lock'
- This command can be used in any buffer, and deletes the lock
- files that the *cvs* buffer informs you about. You should
- normally never have to use this command since CVS tries very
- carefully to always remove the lock files itself.
-
- You can only use this command when a message in the *cvs* buffer
- tells you so. You should wait a while before using this command
- in case someone else is running a cvs command.
-
-`q'
- Bury the *cvs* buffer. (`bury-buffer').
-
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-2 b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-2
deleted file mode 100644
index ef28caa179a..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.info-2
+++ /dev/null
@@ -1,449 +0,0 @@
-This is Info file pcl-cvs.info, produced by Makeinfo-1.55 from the
-input file ./pcl-cvs.texinfo.
-
- Copyright (C) 1992 Per Cederqvist
-
- Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public
-License" and this permission notice may be included in translations
-approved by the Free Software Foundation instead of in the original
-English.
-
-
-File: pcl-cvs.info, Node: Customization, Next: Future enhancements, Prev: Commands, Up: Top
-
-Customization
-*************
-
- If you have an idea about any customization that would be handy but
-isn't present in this list, please tell me! *Note Bugs:: for info on
-how to reach me.
-
-`cvs-erase-input-buffer'
- If set to anything else than `nil' the edit buffer will be erased
- before you write the log message (*note Committing changes::.).
-
-`cvs-inhibit-copyright-message'
- The copyright message that is displayed on startup can be
- annoying after a while. Set this variable to `t' if you want to
- get rid of it. (But don't set this to `t' in the system
- defaults file - new users should see this message at least once).
-
-`cvs-diff-flags'
- A list of strings to pass as arguments to the `cvs diff' and
- `diff' programs. This is used by `cvs-mode-diff-cvs' and
- `cvs-mode-diff-backup' (key `b', *note Viewing differences::.).
- If you prefer the Unidiff format you could add this line to your
- `.emacs' file:
-
- (setq cvs-diff-flags '("-u"))
-
-`cvs-diff-ignore-marks'
- If this variable is non-`nil' or if a prefix argument is given
- (but not both) to `cvs-mode-diff-cvs' or `cvs-mode-diff-backup'
- marked files are not considered selected.
-
-`cvs-log-flags'
- List of strings to send to `cvs log'. Used by `cvs-mode-log'
- (key `l', *note Getting info about files::.).
-
-`cvs-status-flags'
- List of strings to send to `cvs status'. Used by
- `cvs-mode-status' (key `s', *note Getting info about files::.).
-
-`cvs-auto-remove-handled'
- If this variable is set to any non-`nil' value
- `cvs-mode-remove-handled' will be called every time you check in
- files, after the check-in is ready. *Note Removing handled
- entries::.
-
-`cvs-auto-revert-after-commit'
- If this variable is set to any non-`nil' value any buffers you
- have that visit a file that is committed will be automatically
- reverted. This variable is default `t'. *Note Committing
- changes::.
-
-`cvs-update-prog-output-skip-regexp'
- The `-u' flag in the `modules' file can be used to run a command
- whenever a `cvs update' is performed (see cvs(5)). This regexp
- is used to search for the last line in that output. It is
- normally set to `"$"'. That setting is only correct if the
- command outputs nothing. Note that pcl-cvs will get very
- confused if the command outputs *anything* to `stderr'.
-
-`cvs-cvsroot'
- This variable can be set to override `CVSROOT'. It should be a
- string. If it is set then everytime a cvs command is run it will
- be called as `cvs -d CVS-CVSROOT...' This can be useful if your
- site has several repositories.
-
-`TMPDIR'
- Pcl-cvs uses this *environment variable* to decide where to put
- the temporary files it needs. It defaults to `/tmp' if it is
- not set.
-
-`cvs-commit-buffer-require-final-newline'
- When you enter a log message in the `*cvs-commit-message*' buffer
- pcl-cvs will normally automatically insert a trailing newline,
- unless there already is one. This behavior can be controlled via
- `cvs-commit-buffer-require-final-newline'. If it is `t' (the
- default behavior), a newline will always be appended. If it is
- `nil', newlines will never be appended. Any other value causes
- pcl-cvs to ask the user whenever there is no trailing newline in
- the commit message buffer.
-
-`cvs-sort-ignore-file'
- If this variable is set to any non-`nil' value the `.cvsignore'
- will always be sorted whenever you use `cvs-mode-ignore' to add
- a file to it. This option is on by default.
-
-
-File: pcl-cvs.info, Node: Future enhancements, Next: Bugs, Prev: Customization, Up: Top
-
-Future enhancements
-*******************
-
- Pcl-cvs is still under development and needs a number of
-enhancements to be called complete. Below is my current wish-list
-for future releases of pcl-cvs. Please, let me know which of these
-features you want most. They are listed below in approximately the
-order that I currently think I will implement them in.
-
- * Rewritten parser code. There are many situations where pcl-cvs
- will fail to recognize the output from CVS. The situation could
- be greatly increased.
-
- * `cvs-status'. This will run `cvs status' in a directory and
- produce a buffer that looks pretty much like the current *cvs*
- buffer. That buffer will include information for all
- version-controlled files. (There will be a simple keystroke to
- remove all "uninteresting" files, that is, files that are
- "Up-to-date"). In this new buffer you will be able to update a
- file, commit a file, et c. The big win with this is that you
- will be able to watch the differences between your current
- working file and the head revision in the repository before you
- update the file, and you can then choose to update it or let it
- wait for a while longer.
-
- * Log mode. When this mode is finished you will be able to move
- around (using `n' and `p') between the revisions of a file, mark
- two of them, and run a diff between them. You will be able to
- hide branches (similar to the way you can hide sub-paragraphs in
- outline-mode) and do merges between revisions. Other ideas
- about this are welcome.
-
- * The current model for marks in the *cvs* buffer seems to be
- confusing. I am considering to use the VM model instead, where
- marks are normally inactive. To activate the mark, you issue a
- command like `cvs-mode-next-command-uses-marks'. I might
- implement a flag so that you can use either version. Feedback
- on this before I start coding it is very welcome.
-
- * It should be possible to run commands such as `cvs log', `cvs
- status' and `cvs commit' directly from a buffer containing a
- file, instead of having to `cvs-update'. If the directory
- contains many files the `cvs-update' can take quite some time,
- especially on a slow machine. I planed to put these kind of
- commands on the prefix `C-c C-v', but that turned out to be used
- by for instance c++-mode. If you have any suggestions for a
- better prefix key, please let me know.
-
- * Increased robustness. For instance, you can not currently press
- `C-g' when you are entering the description of a file that you
- are adding without confusing pcl-cvs.
-
- * Support for multiple active *cvs* buffers.
-
- * Dired support. I have an experimental `dired-cvs.el' that works
- together with CVS 1.2. Unfortunately I wrote it on top of a
- non-standard `dired.el', so it must be rewritten.
-
- * An ability to send user-supplied options to all the cvs commands.
-
- * Pcl-cvs is not at all clever about what it should do when `cvs
- update' runs a program (due to the `-u' option in the `modules'
- file -- see `cvs(5)'). The current release uses a regexp to
- search for the end. At the very least that regexp should be
- configured for different modules. Tell me if you have any idea
- about what is the right thing to do. In a perfect world the
- program should also be allowed to print to `stderr' without
- causing pcl-cvs to crash.
-
- If you miss something in this wish-list, let me know! I don't
-promise that I will write it, but I will at least try to coordinate
-the efforts of making a good Emacs front end to CVS. See *Note
-Bugs:: for information about how to reach me.
-
- So far, I have written most of pcl-cvs in my all-to-rare spare
-time. If you want pcl-cvs to be developed faster you can write a
-contract with Signum Support to do the extension. You can reach
-Signum Support by email to `info@signum.se' or via mail to Signum
-Support AB, Box 2044, S-580 02 Linkoping, Sweden. Phone: +46 (0) 13 -
-21 46 00. Fax: +46 (0) 13 - 21 47 00.
-
-
-File: pcl-cvs.info, Node: Bugs, Next: Function and Variable Index, Prev: Future enhancements, Up: Top
-
-Bugs (known and unknown)
-************************
-
- If you find a bug or misfeature, don't hesitate to tell me! Send
-email to `ceder@lysator.liu.se'.
-
- If you have ideas for improvements, or if you have written some
-extensions to this package, I would like to hear from you. I hope
-that you find this package useful!
-
- Below is a partial list of currently known problems with pcl-cvs
-version 1.05.
-
-Commit causes Emacs to hang
- Emacs waits for the `cvs commit' command to finish before you can
- do anything. If you start a background job from the loginfo
- file you must take care that it closes `stdout' and `stderr' if
- you do not want to wait for it. (You do that with
- `background-command &>- 2&>- &' if you are starting
- `background-command' from a `/bin/sh' shell script).
-
- Your emacs will also hang if there was a lock file in the
- repository. In this case you can type `C-g' to get control over
- your emacs again.
-
-Name clash in Emacs 19
- This is really a bug in Elib or the Emacs 19 distribution. Both
- Elib and Emacs 19.6 through at least 19.10 contains a file named
- `cookie.el'. One of the files will have to be renamed, and we
- are currently negotiating about which of the files to rename.
-
-Commands while cvs-update is running
- It is possible to type commands in the *cvs* buffer while the
- update is running, but error messages is all that you will get.
- The error messages should be better.
-
-Unexpected output from CVS
- Unexpected output from CVS confuses pcl-cvs. It will currently
- create a bug report that you can mail to me. It should do
- something more civilized.
-
-
-File: pcl-cvs.info, Node: Function and Variable Index, Next: Concept Index, Prev: Bugs, Up: Top
-
-Function and Variable Index
-***************************
-
-* Menu:
-
-* bury-buffer: Miscellaneous commands.
-* cookie-next-cookie: Movement commands.
-* cookie-previous-cookie: Movement commands.
-* cvs-auto-remove-handled (variable): Customization.
-* cvs-auto-revert-after-commit (variable): Customization.
-* cvs-auto-revert-after-commit (variable): Committing changes.
-* cvs-byte-compile-files: Miscellaneous commands.
-* cvs-commit-buffer-require-final-newline (variable): Customization.
-* cvs-cvsroot (variable): Customization.
-* cvs-delete-lock: Updating the directory.
-* cvs-diff-flags (variable): Customization.
-* cvs-diff-ignore-marks (variable): Customization.
-* cvs-diff-ignore-marks (variable): Viewing differences.
-* cvs-erase-input-buffer (variable): Customization.
-* cvs-erase-input-buffer (variable): Committing changes.
-* cvs-inhibit-copyright-message (variable): Customization.
-* cvs-log-flags (variable): Customization.
-* cvs-mode-acknowledge: Removing handled entries.
-* cvs-mode-add: Adding and removing files.
-* cvs-mode-add-change-log-entry-other-window: Editing files.
-* cvs-mode-commit: Committing changes.
-* cvs-mode-diff-backup: Viewing differences.
-* cvs-mode-diff-cvs: Viewing differences.
-* cvs-mode-emerge: Emerge.
-* cvs-mode-find-file: Editing files.
-* cvs-mode-find-file-other-window: Editing files.
-* cvs-mode-ignore: Removing handled entries.
-* cvs-mode-log: Getting info about files.
-* cvs-mode-mark: Marking files.
-* cvs-mode-mark-all-files: Marking files.
-* cvs-mode-remove-file: Adding and removing files.
-* cvs-mode-remove-handled: Removing handled entries.
-* cvs-mode-revert-updated-buffers: Reverting your buffers.
-* cvs-mode-status: Getting info about files.
-* cvs-mode-undo-local-changes: Undoing changes.
-* cvs-mode-unmark: Marking files.
-* cvs-mode-unmark-all-files: Marking files.
-* cvs-mode-unmark-up: Marking files.
-* cvs-mode-update-no-prompt: Updating the directory.
-* cvs-sort-ignore-file (variable): Customization.
-* cvs-status-flags (variable): Customization.
-* cvs-update: Updating the directory.
-* cvs-update-prog-output-skip-regexp (variable): Customization.
-* TMPDIR (environment variable): Customization.
-
-
-File: pcl-cvs.info, Node: Concept Index, Next: Key Index, Prev: Function and Variable Index, Up: Top
-
-Concept Index
-*************
-
-* Menu:
-
-* -u option in modules file: Customization.
-* .cvsignore file, sorting: Customization.
-* About pcl-cvs: About pcl-cvs.
-* Active files: Selected files.
-* Added (file status): File status.
-* Adding files: Adding and removing files.
-* Archives: Archives.
-* Author, how to reach: Bugs.
-* Authors: Contributors.
-* Automatically inserting newline: Customization.
-* Automatically remove handled files: Customization.
-* Automatically sorting .cvsignore: Customization.
-* Buffer contents: Buffer contents.
-* Bugs, how to report them: Bugs.
-* Bugs, known: Bugs.
-* Byte compilation: Miscellaneous commands.
-* Ci: Committing changes.
-* Commit buffer: Committing changes.
-* Commit message, inserting newline: Customization.
-* Committing changes: Committing changes.
-* Conflict (file status): File status.
-* Conflicts, how to resolve them: Viewing differences.
-* Conflicts, resolving: Emerge.
-* Context diff, how to get: Customization.
-* Contributors: Contributors.
-* Copyright message, getting rid of it: Customization.
-* Customization: Customization.
-* Deleting files: Adding and removing files.
-* Diff: Viewing differences.
-* Dired: Editing files.
-* Edit buffer: Committing changes.
-* Editing files: Editing files.
-* Email archives: Archives.
-* Email to the author: Bugs.
-* Emerge: Emerge.
-* Enhancements: Future enhancements.
-* Erasing commit message: Committing changes.
-* Erasing the input buffer: Customization.
-* Example run: Getting started.
-* Expunging uninteresting entries: Removing handled entries.
-* FAQ: Bugs.
-* File selection: Selected files.
-* File status: File status.
-* Finding files: Editing files.
-* Flush changes: Undoing changes.
-* Ftp-sites: Archives.
-* Generating a typeset manual: Typeset manual installation.
-* Generating the on-line manual: On-line manual installation.
-* Getting pcl-cvs: Archives.
-* Getting rid of lock files: Miscellaneous commands.
-* Getting rid of the Copyright message.: Customization.
-* Getting rid of uninteresting lines: Removing handled entries.
-* Getting status: Getting info about files.
-* Getting the *cvs* buffer: Updating the directory.
-* Handled lines, removing them: Removing handled entries.
-* Info-file (how to generate): On-line manual installation.
-* Inhibiting the Copyright message.: Customization.
-* Installation: Installation.
-* Installation of elisp files: Pcl-cvs installation.
-* Installation of on-line manual: On-line manual installation.
-* Installation of typeset manual: Typeset manual installation.
-* Introduction: Getting started.
-* Invoking dired: Editing files.
-* Invoking emerge: Emerge.
-* Known bugs: Bugs.
-* Loading files: Editing files.
-* Lock files: Miscellaneous commands.
-* Log (RCS/cvs command): Getting info about files.
-* Manual installation (on-line): On-line manual installation.
-* Manual installation (typeset): Typeset manual installation.
-* Marked files: Selected files.
-* Marking files: Marking files.
-* Merged (file status): File status.
-* Modified (file status): File status.
-* Modules file (-u option): Customization.
-* Move away FILE - it is in the way (file status): File status.
-* Movement Commands: Movement commands.
-* On-line manual (how to generate): On-line manual installation.
-* Printing a manual: Typeset manual installation.
-* Problems, list of common: Bugs.
-* Putting files under CVS control: Adding and removing files.
-* Recompiling elisp files: Miscellaneous commands.
-* Removed (file status): File status.
-* Removed by you, changed in repository (file status): File status.
-* Removed from repository (file status): File status.
-* Removed from repository, changed by you (file status): File status.
-* Removing files: Adding and removing files.
-* Removing uninteresting (processed) lines: Removing handled entries.
-* Reporting bugs and ideas: Bugs.
-* Require final newline: Customization.
-* Resolving conflicts: Emerge.
-* Resurrecting files: Adding and removing files.
-* Reverting buffers: Reverting your buffers.
-* Reverting buffers after commit: Committing changes.
-* Reverting buffers after commit: Customization.
-* Selected files: Selected files.
-* Selecting files (commands to mark files): Marking files.
-* Sites: Archives.
-* Sorting the .cvsignore file: Customization.
-* Status (cvs command): Getting info about files.
-* Syncing buffers: Reverting your buffers.
-* TeX - generating a typeset manual: Typeset manual installation.
-* This repository is missing!... (file status): File status.
-* Undo changes: Undoing changes.
-* Unidiff, how to get: Customization.
-* Uninteresting entries, getting rid of them: Removing handled entries.
-* Unknown (file status): File status.
-* Update program (-u option in modules file): Customization.
-* Updated (file status): File status.
-* Variables, list of all: Customization.
-* Viewing differences: Viewing differences.
-
-
-File: pcl-cvs.info, Node: Key Index, Prev: Concept Index, Up: Top
-
-Key Index
-*********
-
-* Menu:
-
-* a - add a file: Adding and removing files.
-* A - add ChangeLog entry: Editing files.
-* b - diff backup file: Viewing differences.
-* c - commit files: Committing changes.
-* C-k - remove selected entries: Removing handled entries.
-* C-n - Move down one file: Movement commands.
-* C-p - Move up one file: Movement commands.
-* d - run cvs diff: Viewing differences.
-* DEL - unmark previous file: Marking files.
-* e - invoke emerge: Emerge.
-* ESC DEL - unmark all files: Marking files.
-* f - find file or directory: Editing files.
-* g - Rerun cvs update: Updating the directory.
-* l - run cvs log: Getting info about files.
-* m - marking a file: Marking files.
-* M - marking all files: Marking files.
-* n - Move down one file: Movement commands.
-* o - find file in other window: Editing files.
-* p - Move up on file: Movement commands.
-* q - bury the *cvs* buffer: Miscellaneous commands.
-* r - remove a file: Adding and removing files.
-* R - revert buffers: Reverting your buffers.
-* s - run cvs status: Getting info about files.
-* SPC - Move down one file: Movement commands.
-* U - undo changes: Undoing changes.
-* u - unmark a file: Marking files.
-* x - remove processed entries: Removing handled entries.
-
-
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.ps b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.ps
deleted file mode 100644
index e1f6664326c..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.ps
+++ /dev/null
@@ -1,3288 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
-%%Title: pcl-cvs.dvi
-%%Pages: 32 1
-%%BoundingBox: 0 0 612 792
-%%EndComments
-%%BeginProcSet: tex.pro
-/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
-load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
-isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
-Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
-round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
-N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
-/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
-statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
-/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
-/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
-/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
-array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
-B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
-setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
-length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
-ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
-/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
-N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
-dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
-ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
-ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
-imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
-put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
-div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
-known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
-showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
-known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
-array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
-/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
-/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
-7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
-TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
--.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
-moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
-S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
-/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
-}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
-a}B /bos{/SS save N}B /eos{clear SS restore}B end
-/TeXscale { 65536 div } def
-
-/DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap
-currentlinejoin currentdash currentgray currentmiterlimit ] cvx def
-
-/startTexFig {
- /SavedState save def
- userdict maxlength dict begin
- currentpoint transform
-
- DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap
- setlinewidth setmatrix
-
- itransform moveto
-
- /ury exch TeXscale def
- /urx exch TeXscale def
- /lly exch TeXscale def
- /llx exch TeXscale def
- /y exch TeXscale def
- /x exch TeXscale def
-
- currentpoint /cy exch def /cx exch def
-
- /sx x urx llx sub div def % scaling for x
- /sy y ury lly sub div def % scaling for y
-
- sx sy scale % scale by (sx,sy)
-
- cx sx div llx sub
- cy sy div ury sub translate
-
- /DefFigCTM matrix currentmatrix def
-
- /initmatrix {
- DefFigCTM setmatrix
- } def
- /defaultmatrix {
- DefFigCTM exch copy
- } def
-
- /initgraphics {
- DocumentInitState setmiterlimit setgray setdash
- setlinejoin setlinecap setlinewidth setmatrix
- DefFigCTM setmatrix
- } def
-
- /showpage {
- initgraphics
- } def
- /erasepage {
- initgraphics
- } def
- /copypage {} def
-
-} def
-/clipFig {
- currentpoint 6 2 roll
- newpath 4 copy
- 4 2 roll moveto
- 6 -1 roll exch lineto
- exch lineto
- exch lineto
- closepath clip
- newpath
- moveto
-} def
-/doclip { llx lly urx ury clipFig } def
-/endTexFig {
- end SavedState restore
-} def
-%%EndProcSet
-TeXDict begin 1000 300 300 @start /Fa 1 47 df<70F8F8F0E005057B840E>46
-D E /Fb 1 47 df<387CFCFCF87006067A8512>46 D E /Fc 51 123 df<001F83E000706E3000
-C07C780180F8780380F07807007000070070000700700007007000070070000700700007007000
-0700700007007000FFFFFFC0070070000700700007007000070070000700700007007000070070
-000700700007007000070070000700700007007000070070000700700007007000070070000700
-700007007000070078007FE3FF801D2380A21C>11 D<00200040008001000300060004000C000C
-00180018003000300030007000600060006000E000E000E000E000E000E000E000E000E000E000
-E000E000E000E0006000600060007000300030003000180018000C000C00040006000300010000
-80004000200B327CA413>40 D<800040002000100018000C000400060006000300030001800180
-018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
-C000C000C001C0018001800180030003000600060004000C00180010002000400080000B327DA4
-13>I<FFE0FFE00B027F8B10>45 D<01F000071C000C06001803003803803803807001C07001C0
-7001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0
-F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C0600071C0001F000
-13227EA018>48 D<008003800F80F3800380038003800380038003800380038003800380038003
-8003800380038003800380038003800380038003800380038003800380038007C0FFFE0F217CA0
-18>I<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0F801E02003E0
-0003E00003C00003C0000780000700000E00001C0000180000300000600000C000018000010000
-0200200400200800201800603000403FFFC07FFFC0FFFFC013217EA018>I<03F8000C1E001007
-002007804007C07807C07803C07807C03807C0000780000780000700000F00000E0000380003F0
-00001C00000F000007800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003
-C0400780200780100F000C1C0003F00013227EA018>I<000200000600000E00000E00001E0000
-1E00002E00004E00004E00008E00008E00010E00020E00020E00040E00040E00080E00100E0010
-0E00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E0000
-1F0001FFF015217FA018>I<1000801E07001FFF001FFE001FF80013E000100000100000100000
-10000010000010000010F800130E001407001803801003800001C00001C00001E00001E00001E0
-0001E07001E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227E
-A018>I<007E0001C1000300800601C00E03C01C03C01801803800003800007800007000007000
-00F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001
-E07001E07001E03801C03801C01803801C03000C0600070C0001F00013227EA018>I<40000060
-00007FFFE07FFFC07FFFC0400080C0010080010080020080020000040000080000080000100000
-300000200000600000600000600000E00000C00000C00001C00001C00001C00001C00003C00003
-C00003C00003C00003C00003C00003C00003C00001800013237DA118>I<01F800060E00080300
-1001802001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F800
-03FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C00060600040
-6000C03000801803000E0E0003F00013227EA018>I<0001800000018000000180000003C00000
-03C0000003C0000005E0000005E000000DF0000008F0000008F0000010F8000010780000107800
-00203C0000203C0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF00010007
-8001000780030007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E00
-01F8FF800FFF20237EA225>65 D<FFFFF8000F800E0007800780078003C0078003E0078001E007
-8001F0078001F0078001F0078001F0078001F0078001E0078003E0078007C007800F8007803E00
-07FFFE0007800780078003C0078001E0078001F0078000F0078000F8078000F8078000F8078000
-F8078000F8078000F8078001F0078001F0078003E0078007C00F800F00FFFFFC001D227EA123>
-I<0007E0100038183000E0063001C00170038000F0070000F00E0000701E0000701C0000303C00
-00303C0000307C0000107800001078000010F8000000F8000000F8000000F8000000F8000000F8
-000000F8000000F800000078000000780000107C0000103C0000103C0000101C0000201E000020
-0E000040070000400380008001C0010000E0020000381C000007E0001C247DA223>I<FFFFFFC0
-0F8007C0078001C0078000C0078000400780004007800060078000200780002007800020078020
-20078020000780200007802000078060000780E00007FFE0000780E00007806000078020000780
-200007802000078020080780000807800008078000100780001007800010078000300780003007
-800070078000E00F8003E0FFFFFFE01D227EA121>69 D<FFFFFFC00F8007C0078001C0078000C0
-078000400780004007800060078000200780002007800020078020200780200007802000078020
-00078060000780E00007FFE0000780E00007806000078020000780200007802000078020000780
-000007800000078000000780000007800000078000000780000007800000078000000FC00000FF
-FE00001B227EA120>I<0007F008003C0C1800E0021801C001B8038000F8070000780F0000381E
-0000381E0000183C0000183C0000187C0000087800000878000008F8000000F8000000F8000000
-F8000000F8000000F8000000F8000000F8001FFF780000F8780000787C0000783C0000783C0000
-781E0000781E0000780F00007807000078038000B801C000B800E00318003C0C080007F0002024
-7DA226>I<FFFC0FC0078007800780078007800780078007800780078007800780078007800780
-0780078007800780078007800780078007800780078007800780078007800FC0FFFC0E227EA112
->73 D<FFFC03FF000FC000F8000780006000078000400007800080000780010000078002000007
-800400000780080000078010000007802000000780400000078080000007818000000783C00000
-0787E000000789E000000788F000000790F0000007A078000007C03C000007803C000007801E00
-0007800F000007800F00000780078000078007C000078003C000078001E000078001E000078000
-F000078000F8000FC000FC00FFFC07FF8021227EA126>75 D<FFFE00000FC00000078000000780
-000007800000078000000780000007800000078000000780000007800000078000000780000007
-800000078000000780000007800000078000000780000007800000078000000780000007800080
-078000800780008007800080078001800780018007800100078003000780030007800F000F803F
-00FFFFFF0019227EA11E>I<FF8007FF07C000F807C0007005E0002004F0002004F00020047800
-20047C0020043C0020041E0020041F0020040F002004078020040780200403C0200401E0200401
-E0200400F0200400F8200400782004003C2004003E2004001E2004000F2004000F20040007A004
-0003E0040003E0040001E0040001E0040000E00E0000601F000060FFE0002020227EA125>78
-D<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E0078003E0078003E00780
-03E0078003E0078003E0078003C0078007C00780078007800F0007803C0007FFF0000780000007
-800000078000000780000007800000078000000780000007800000078000000780000007800000
-0780000007800000078000000FC00000FFFC00001B227EA121>80 D<FFFFE000000F803C000007
-800E00000780078000078007C000078003C000078003E000078003E000078003E000078003E000
-078003E000078003C000078007C000078007800007800E000007803C000007FFE0000007807000
-00078038000007801C000007801E000007800E000007800F000007800F000007800F000007800F
-000007800F800007800F800007800F800007800F808007800FC080078007C0800FC003C100FFFC
-01E2000000007C0021237EA124>82 D<03F0200C0C601802603001E07000E0600060E00060E000
-60E00020E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007
-E00001E00000F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C801
-80C6070081FC0014247DA21B>I<FFFC07FF0FC000F80780007007800020078000200780002007
-800020078000200780002007800020078000200780002007800020078000200780002007800020
-078000200780002007800020078000200780002007800020078000200780002007800020078000
-200380004003C0004003C0004001C0008000E000800060010000300600001C08000003F0002023
-7EA125>85 D<FFF0007FC01F80001F000F00000C000780000C000780000800078000080003C000
-100003C000100003E000300001E000200001E000200000F000400000F000400000F00040000078
-0080000078008000007C018000003C010000003C010000001E020000001E020000001F02000000
-0F040000000F040000000F8C0000000788000000078800000003D000000003D000000003F00000
-0001E000000001E000000000C000000000C000000000C0000022237FA125>I<0FE0001838003C
-0C003C0E0018070000070000070000070000FF0007C7001E07003C0700780700700700F00708F0
-0708F00708F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00
-000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00
-300E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00
-380F00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C078038030078000070
-0000F00000F00000F00000F00000F00000F00000F000007000007800403800401C00800C010007
-060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0
-F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE
-17237EA21B>I<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F000
-00F00000F00000F000007000007800203800201C00400E008007030000FC0013157F9416>I<00
-007001F198071E180E0E181C07001C07003C07803C07803C07803C07801C07001C07000E0E000F
-1C0019F0001000001000001800001800001FFE000FFFC00FFFE03800F0600030400018C00018C0
-0018C000186000306000303800E00E038003FE0015217F9518>103 D<0E0000FE00001E00000E
-00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E
-80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
-00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C000000000000
-00000000000000000000000E00FE001E000E000E000E000E000E000E000E000E000E000E000E00
-0E000E000E000E000E000E00FFC00A227FA10E>I<0E0000FE00001E00000E00000E00000E0000
-0E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E0200
-0E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E0
-0E00F00E00F8FFE3FE17237FA21A>107 D<0E00FE001E000E000E000E000E000E000E000E000E
-000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
-0E000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F00
-3C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
-003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0
-FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E0070
-0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F
-941B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078F000
-78F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>I<0E1F00FE
-61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E
-003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E
-00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E
-000E000E000E000E000E000E000E000E000F00FFF010157F9413>114 D<0F8830786018C018C0
-08C008E008F0007F803FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>
-I<02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E000E000E00
-0E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00
-F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
-700E00F00E00F006017003827800FC7F18157F941B>I<FFC1FE1E00780E00300E00200E002007
-004007004003808003808003808001C10001C10000E20000E20000E20000740000740000380000
-380000380000100017157F941A>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E010
-07026020070270200702702003843040038438400384384001C8188001C81C8001C81C8000F00D
-0000F00F0000F00F0000600600006006000060060020157F9423>I<FF83FE1F01F00E00C00700
-8003810003830001C20000E400007800007800003800003C00004E00008E000187000103800201
-C00401E00C00E03E01F0FF03FE17157F941A>I<FFC1FE1E00780E00300E00200E002007004007
-004003808003808003808001C10001C10000E20000E20000E20000740000740000380000380000
-3800001000001000002000002000002000004000F04000F08000F180004300003C0000171F7F94
-1A>I<3FFFC0380380300780200700600E00401C00403C0040380000700000E00001E00001C000
-0380400700400F00400E00C01C0080380080780180700780FFFF8012157F9416>I
-E /Fd 1 59 df<60F0F06004047D830B>58 D E /Fe 66 123 df<00FC7C0183C607078E060704
-0E07000E07000E07000E07000E07000E0700FFFFF00E07000E07000E07000E07000E07000E0700
-0E07000E07000E07000E07000E07000E07000E07000E07007F0FF0171A809916>11
-D<00FC000182000703000607000E02000E00000E00000E00000E00000E0000FFFF000E07000E07
-000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07007F0F
-E0131A809915>I<00FF000387000707000607000E07000E07000E07000E07000E07000E0700FF
-FF000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
-07000E07007F9FE0131A809915>I<60F0F0F0F0F0F060606060606060606060200000000060F0
-F060041A7D990B>33 D<00800100020004000C00080018003000300030006000600060006000E0
-00E000E000E000E000E000E000E000E000E0006000600060006000300030003000180008000C00
-040002000100008009267D9B0F>40 D<8000400020001000180008000C00060006000600030003
-000300030003800380038003800380038003800380038003800300030003000300060006000600
-0C0008001800100020004000800009267E9B0F>I<0300030003000300E31C73381FE007800780
-1FE07338E31C03000300030003000E107E9B13>I<60F0F07010101020204080040B7D830B>44
-D<FFC0FFC00A0280880D>I<60F0F06004047D830B>I<0004000C00180018001800300030003000
-600060006000C000C000C00180018001800300030003000600060006000C000C000C0018001800
-1800300030003000600060006000C000C0000E257E9B13>I<078018603030303060186018E01C
-E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C6018601870383030186007800E187E9713
->I<03000700FF0007000700070007000700070007000700070007000700070007000700070007
-000700070007000700FFF00C187D9713>I<0F80106020304038803CC01CE01C401C003C003800
-380070006000C001800100020004040804100430083FF87FF8FFF80E187E9713>I<0F8010E020
-70607870382038007800700070006000C00F8000E000700038003C003CE03CE03CC03C40384070
-30E00F800E187E9713>I<00300030007000F000F001700370027004700C700870107030702070
-4070C070FFFF00700070007000700070007007FF10187F9713>I<30183FF03FE03FC020002000
-20002000200027C03860203000380018001C001C401CE01CE01C80184038403030E00F800E187E
-9713>I<01E006100C1818383038300070006000E000E7C0E860F030F018E018E01CE01CE01C60
-1C601C701830183030186007C00E187E9713>I<40007FFE7FFC7FFC4008801080108020004000
-400080018001800100030003000300030007000700070007000700070002000F197E9813>I<07
-8018603030201860186018601870103C303E600F8007C019F030F86038401CC00CC00CC00CC00C
-6008201018600FC00E187E9713>I<000C0000000C0000000C0000001E0000001E0000003F0000
-00270000002700000043800000438000004380000081C0000081C0000081C0000100E0000100E0
-0001FFE000020070000200700006007800040038000400380008001C0008001C001C001E00FF00
-FFC01A1A7F991D>65 D<FFFF000E01C00E00E00E00700E00780E00780E00780E00780E00780E00
-F00E00E00E03C00FFF800E01E00E00700E00780E003C0E003C0E003C0E003C0E003C0E00380E00
-780E00F00E01E0FFFF80161A7E991B>I<003F0201C0C603002E0E001E1C000E1C000638000678
-0002700002700002F00000F00000F00000F00000F00000F000007000027000027800023800041C
-00041C00080E000803003001C0C0003F00171A7E991C>I<FFFF000E01C00E00E00E00300E0038
-0E001C0E001C0E000E0E000E0E000F0E000F0E000F0E000F0E000F0E000F0E000F0E000F0E000E
-0E000E0E001E0E001C0E00380E00380E00700E01C0FFFF00181A7E991D>I<FFFFF00E00700E00
-300E00100E00180E00080E00080E00080E04000E04000E04000E0C000FFC000E0C000E04000E04
-000E04000E00040E00040E00080E00080E00080E00180E00380E0070FFFFF0161A7E991A>I<FF
-FFE00E00E00E00600E00200E00300E00100E00100E00100E04000E04000E04000E0C000FFC000E
-0C000E04000E04000E04000E00000E00000E00000E00000E00000E00000E00000E0000FFF00014
-1A7E9919>I<003F020001C0C60003002E000E001E001C000E001C000600380006007800020070
-00020070000200F0000000F0000000F0000000F0000000F0000000F001FFC070000E0070000E00
-78000E0038000E001C000E001C000E000E000E000300160001C06600003F82001A1A7E991E>I<
-FFE7FF0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700FFFF0
-0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF
-181A7E991D>I<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
-0E000E000E000E000E000E000E000E000E00FFE00B1A7F990E>I<FFE07F800E001E000E001800
-0E0010000E0020000E0040000E0080000E0100000E0200000E0400000E0800000E1C00000E2E00
-000E4E00000E8700000F0380000E0380000E01C0000E00E0000E00E0000E0070000E0070000E00
-38000E001C000E003E00FFE0FF80191A7E991E>75 D<FFF0000E00000E00000E00000E00000E00
-000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00200E00
-200E00200E00600E00400E00400E00C00E03C0FFFFC0131A7E9918>I<FF0003FC0F0003C00F00
-03C00B8005C00B8005C00B8005C009C009C009C009C009C009C008E011C008E011C008E011C008
-7021C0087021C0083841C0083841C0083841C0081C81C0081C81C0081C81C0080F01C0080F01C0
-080F01C0080601C01C0601C0FF861FFC1E1A7E9923>I<007F000001C1C000070070000E003800
-1C001C003C001E0038000E0078000F0070000700F0000780F0000780F0000780F0000780F00007
-80F0000780F0000780F000078078000F0078000F0038000E003C001E001C001C000E0038000700
-700001C1C000007F0000191A7E991E>79 D<FFFF000E03C00E00E00E00700E00700E00780E0078
-0E00780E00780E00700E00700E00E00E03C00FFF000E00000E00000E00000E00000E00000E0000
-0E00000E00000E00000E00000E0000FFE000151A7E991A>I<007F000001C1C000070070000E00
-38001C001C003C001E0038000E0078000F0070000700F0000780F0000780F0000780F0000780F0
-000780F0000780F0000780F00007807000070078000F0038000E003C1C1E001C221C000E413800
-0741F00001E1C000007F80800001C0800000C0800000E1800000FF0000007F0000003E0000001C
-0019217E991E>I<FFFC00000E0780000E01C0000E00E0000E00F0000E00F0000E00F0000E00F0
-000E00F0000E00E0000E01C0000E0780000FFC00000E0600000E0300000E0180000E01C0000E01
-C0000E01C0000E01E0000E01E0000E01E0000E01E0800E00F0800E007100FFE03E00191A7E991C
->I<0FC21836200E6006C006C002C002C002E00070007E003FE01FF807FC003E000E0007000380
-0380038003C002C006E004D81887E0101A7E9915>I<7FFFFF00701C0700401C0100401C0100C0
-1C0180801C0080801C0080801C0080001C0000001C0000001C0000001C0000001C0000001C0000
-001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C00
-00001C000003FFE000191A7F991C>I<FFE1FF0E00380E00100E00100E00100E00100E00100E00
-100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100600
-2007002003004001804000C180003E00181A7E991D>I<FF801FC01E000F001C0006000E000400
-0E000400070008000700080007000800038010000380100003C0300001C0200001C0200000E040
-0000E0400000E040000070800000708000003900000039000000390000001E0000001E0000001E
-0000000C0000000C00001A1A7F991D>I<7FC0FF000F003C0007003000078020000380600001C0
-400001E0800000E1800000710000007A0000003C0000001C0000001E0000001E00000017000000
-278000004380000041C0000081E0000100E0000100700002007800040038000C001C001E003E00
-FF80FFC01A1A7F991D>88 D<3F8070C070E020700070007007F01C7030707070E070E071E071E0
-F171FB1E3C10107E8F13>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00
-001C00001CF8001F0E001E07001C03801C01801C01C01C01C01C01C01C01C01C01C01C01C01C03
-801C03001E07001B0C0010F000121A7F9915>I<07F80C1C381C30087000E000E000E000E000E0
-00E0007000300438080C1807E00E107F8F11>I<007E00000E00000E00000E00000E00000E0000
-0E00000E00000E00000E0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00E00E00E0
-0E00E00E00600E00700E00381E001C2E0007CFC0121A7F9915>I<07C01C3030187018600CE00C
-FFFCE000E000E000E0006000300438080C1807E00E107F8F11>I<01F0031807380E100E000E00
-0E000E000E000E00FFC00E000E000E000E000E000E000E000E000E000E000E000E000E000E007F
-E00D1A80990C>I<0FCE187330307038703870387038303018602FC02000600070003FF03FFC1F
-FE600FC003C003C003C0036006381C07E010187F8F13>I<FC00001C00001C00001C00001C0000
-1C00001C00001C00001C00001C00001CF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E00
-1C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0121A7F9915>I<18003C003C001800
-000000000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C
-001C00FF80091A80990A>I<FC00001C00001C00001C00001C00001C00001C00001C00001C0000
-1C00001C3F801C1E001C18001C10001C20001C40001DC0001FE0001CE0001C70001C78001C3800
-1C1C001C1E001C1F00FF3FC0121A7F9914>107 D<FC001C001C001C001C001C001C001C001C00
-1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A
->I<FC7C1F001D8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C
-0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FCF8001D0C
-001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
-00FF9FC012107F8F15>I<07E01C38300C700E6006E007E007E007E007E007E0076006700E381C
-1C3807E010107F8F13>I<FCF8001F0E001E07001C03801C03801C01C01C01C01C01C01C01C01C
-01C01C01C01C03801C03001E07001F0C001CF0001C00001C00001C00001C00001C00001C0000FF
-800012177F8F15>I<03C2000C2600381E00300E00700E00E00E00E00E00E00E00E00E00E00E00
-E00E00700E00700E00381E001C2E0007CE00000E00000E00000E00000E00000E00000E00007FC0
-12177F8F14>I<FCE01D701E701E201C001C001C001C001C001C001C001C001C001C001C00FFC0
-0C107F8F0F>I<1F2060E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F80
-0C107F8F0F>I<0400040004000C000C001C003C00FFC01C001C001C001C001C001C001C001C00
-1C201C201C201C201C200E4003800B177F960F>I<FC7E001C0E001C0E001C0E001C0E001C0E00
-1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C1E000C2E0007CFC012107F8F15>I<FF1F
-803C06001C04001C04001E0C000E08000E080007100007100007900003A00003A00001C00001C0
-0001C00000800011107F8F14>I<FF3F9F803C0E0700380E06001C1604001C1704001E170C000E
-2308000E2388000F239800074190000741D00003C1E0000380E0000380E0000180C00001004000
-19107F8F1C>I<FF3F803C1C001C18000E100007200007600003C00001C00001E00003E0000270
-00043800083800181C00381E00FC3FC012107F8F14>I<FF1F803C06001C04001C04001E0C000E
-08000E080007100007100007900003A00003A00001C00001C00001C00000800000800001000001
-0000E10000E20000E4000078000011177F8F14>I<7FF86070407040E041C041C0038007000700
-0E081C081C08381070107030FFF00D107F8F11>I E /Ff 4 109 df<000F8000304000E0E001C0
-E001C0C00380000380000380000380000380003FFFC00703800703800703800703800703800703
-800E07000E07000E07000E07000E07000E07001C0E001C0E00FF1FC0131A7F9915>12
-D<7070F06004047D830B>46 D<01F006181C0C380C300E700E7FFEE000E000E000E00060006004
-3008183007C00F107E8F11>101 D<0FC001C001C001C001C00380038003800380038003800700
-070007000700070007000E000E000E000E000E000E001C001C00FF800A1A80990A>108
-D E /Fg 38 122 df<60F0F878181818303060C080050C789614>39 D<038003800380638CF39E
-FFFE3FF80FE00FE03FF8FFFEF39E638C0380038003800F107E9214>42 D<FFFEFFFEFFFE0F037E
-8C14>45 D<01C00003E00003E0000360000360000770000770000770000770000630000E38000E
-38000E38000E38000E38001FFC001FFC001C1C001C1C003C1E00380E00FE3F80FE3F8011177F96
-14>65 D<03C60FFE1C3E181E381E700E700E600EE000E000E000E000E000E000E000600E700E70
-0E380C181C1C380FF003C00F177E9614>67 D<FFE000FFF800383C00381E00380E003807003807
-00380700380380380380380380380380380380380380380380380380380700380700380E00381E
-00383C00FFF800FFE00011177F9614>I<FFFF00FFFF0038070038070038070038070038000038
-00003870003870003FF0003FF00038700038700038000038000038000038038038038038038038
-0380FFFF80FFFF8011177F9614>I<FF00FF003800380038003800380038003800380038003800
-380038003800380038003807380738073807FFFFFFFF10177E9614>76 D<FE0FE0FE0FE03E0F80
-3B1B803B1B803B1B803B1B803BBB803BBB8039B38039B38039B38039F38038E38038E380380380
-380380380380380380380380380380FE0FE0FE0FE01317809614>I<FFF0FFFC381E380E380738
-07380738073807380E381E3FFC3FF038003800380038003800380038003800FE00FE0010177F96
-14>80 D<FFE000FFF800383C00381C00380E00380E00380E00380E00381C00383C003FF8003FF0
-00383800381C00381C00381C00381C00381C00381C80381DC0381DC0FE0F80FE070012177F9614
->82 D<0FCC1FFC307C603CE01CE01CE01CE00070007E003FE00FF001F8001C001E000E600EE00E
-E00EF01CF838FFF0C7E00F177E9614>I<FE0FE0FE0FE038038038038038038038038038038038
-03803803803803803803803803803803803803803803803803803803803803801C07001C07000E
-0E0007FC0001F0001317809614>85 D<0818306060C0C0C0F0F87830050C799914>96
-D<1FC0007FF000707800201800001C00001C0007FC001FFC003C1C00701C00E01C00E01C00E01C
-00707C003FFF800F8F8011107E8F14>I<FC0000FC00001C00001C00001C00001C00001C00001C
-F8001DFE001F07001E03001C03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F
-0E001DFC000CF8001217809614>I<03F80FFC1C1C380870006000E000E000E000E00060007000
-380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E00000E00000E00000E00000E0007CE00
-0FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00301E00383E00
-1FEFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFFFEE00060007000380E
-1C1E0FFC03F00F107E8F14>I<007C00FE01CE03840380038003807FFEFFFE0380038003800380
-038003800380038003800380038003807FFC7FFC0F177F9614>I<07CF001FFF80383B80301800
-701C00701C00701C003018003838003FF00037C0007000007000003FF8001FFC003FFE00700F00
-E00380E00380E00380E003807007003C1E001FFC0007F00011197F8F14>I<FC0000FC00001C00
-001C00001C00001C00001C00001C78001DFE001F86001E07001C07001C07001C07001C07001C07
-001C07001C07001C07001C07001C0700FF8FE0FF8FE01317809614>I<03000780078003000000
-0000000000007F807F80038003800380038003800380038003800380038003800380FFFCFFFC0E
-187D9714>I<FC0000FC00001C00001C00001C00001C00001C00001DFF801DFF801C3C001C7800
-1CF0001DE0001FC0001FC0001FE0001EF0001C70001C38001C38001C1C00FE3F80FE3F8011177F
-9614>107 D<FF80FF800380038003800380038003800380038003800380038003800380038003
-800380038003800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803CF38038E38038E38038
-E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FE79E01310808F14>I<FC7800
-FDFE001F86001E07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
-FF8FE0FF8FE01310808F14>I<07C01FF03C78701C701CE00EE00EE00EE00EE00EE00E701C783C
-3C781FF007C00F107E8F14>I<FCF800FDFE001F07001E03001C03801C01C01C01C01C01C01C01
-C01C01C01C01C01C03801E03001F0E001DFC001CF8001C00001C00001C00001C00001C00001C00
-00FF8000FF80001218808F14>I<03CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E0
-0E00E00E00E00E00700E00301E001C3E000FEE0007CE00000E00000E00000E00000E00000E0000
-0E00007FC0007FC012187F8F14>I<FE1F00FE7F800EE3800F81000F00000F00000E00000E0000
-0E00000E00000E00000E00000E00000E0000FFF000FFF00011107F8F14>I<0FD83FF86038C038
-C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E8F14>I<0300070007000700
-07007FFCFFFC07000700070007000700070007000700070E070E070E070C03FC00F00F157F9414
->I<FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C
-07001C1F000FFFE003E7E01310808F14>I<FE3F80FE3F801C1C001C1C001C1C001C1C000E3800
-0E38000E380006300007700007700007700003E00003E00003E00011107F8F14>I<FF7F80FF7F
-80380E00380E00380E00380E0039CE0039CE0019CC001B6C001B6C001A6C001A6C001E7C000E78
-000E780011107F8F14>I<7E3F007E3F001E38000E780007700007E00003E00001C00003C00003
-E0000770000E78000E38001C1C00FE3F80FE3F8011107F8F14>I<FE3F80FE3F801C1C001C1C00
-1C1C000E1C000E38000E380007380007300007300003700003700001E00001E00001E00001C000
-01C00001C0000380007380007700007E00003C000011187F8F14>I E /Fh
-30 122 df<0003F07C001E0DC600380F0F00701E0F00E01E0E00E00C0001C01C0001C01C0001C0
-1C0001C01C0001C01C00038038007FFFFFC0038038000380380003803800038038000700700007
-007000070070000700700007007000070070000E00E0000E00E0000E00E0000E00E0000E00E000
-0E00E0001C01C0001E01E000FF8FFE0020207E9F1B>11 D<0003E0001C1800381800703C00E03C
-00E03801C00001C00001C00001C00001C0000380007FFFF00380700380700380700380700700E0
-0700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0
-FF0FF816207E9F19>I<FFC0FFC00A027D8A0F>45 D<07FFFFF8007C0078003C0038003C001800
-780018007800080078000800780008007800080078080800F0100000F0100000F0100000F03000
-00FFF00000F0700001E0200001E0200001E0200001E0200001E0000801E0001003C0001003C000
-1003C0002003C0002003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>69
-D<07FFFFF8007C0078003C0038003C001800780018007800080078000800780008007800080078
-000800F0100000F0100000F0100000F0300000F0700000FFF00001E0600001E0200001E0200001
-E0200001E0200001E0000003C0000003C0000003C0000003C0000003C0000003C0000007800000
-07C00000FFFE00001D1F7E9E1E>I<07FFE0007C00003C00003C00007800007800007800007800
-00780000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E000
-01E00003C00003C00003C00003C00003C00003C00007800007C000FFFC00131F7F9E10>73
-D<07FFF000007E0000003C0000003C000000780000007800000078000000780000007800000078
-000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001
-E0000001E0008001E0010003C0010003C0010003C0030003C0020003C0060003C0060007801E00
-07807C00FFFFFC00191F7E9E1C>76 D<07FC01FFC0003E003E00003E001800003E001800004F00
-1000004F001000004780100000478010000043C010000043C010000083C020000081E020000081
-E020000080F020000080F020000080782000010078400001007C400001003C400001003C400001
-001E400001001E400002000F800002000F800002000F8000020007800002000780000600038000
-06000300000F00010000FFE0010000221F7E9E22>78 D<0003F800001E0E000038070000E00380
-01C001C003C001E0078000E00F0000F00F0000F01E0000F01E0000F83E0000F83C0000F87C0000
-F87C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E07800
-03C0780007C07C0007803C000F003C001E001E001C000E0038000700F00003C3C00000FE00001D
-217B9F23>I<07FFFC00007C0700003C03C0003C01E0007801E0007801F0007801F0007801F000
-7801F0007801E000F003E000F003C000F0078000F00F0000F03C0000FFF00001E0300001E03800
-01E01C0001E01C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E
-0207803E0407C01F04FFFC0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C0300
-1C0700180600080E00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FFC0007F
-E00007E00001E00000E00000F00000F04000E04000E04000E04000E06000C0600180E00380F803
-00C60C0081F80016217D9F19>I<FFF003FE1F8000F80F0000600F0000400F0000400F80008007
-80018007800100078002000780020007C0040003C0040003C0080003C0080003C0100003E01000
-01E0200001E0200001E0400001E0400001F0800000F1000000F1000000F2000000F2000000FC00
-00007C000000780000007800000070000000700000002000001F207A9E22>86
-D<07F8000C0C001E06001E07001C070000070000070000070000FF0007C7001E07003C0E00780E
-00F00E10F00E10F00E10F01E10F02E20784F401F878014147D9317>97 D<0700003F00000F0000
-0700000700000E00000E00000E00000E00000E00000E00001C00001C7C001D87001E03801C01C0
-1C01C03801C03801E03801E03801E03801E03801E07003C07003C0700380700780700700700E00
-E81C00C4380083E00013207B9F19>I<01FC07060E0F1C0F380E78007000F000F000F000F000E0
-00E000E000E000F0027004300818300FC010147C9314>I<0000700003F00000F0000070000070
-0000E00000E00000E00000E00000E00000E00001C000F9C00305C00E03C01C03C03801C0780380
-700380F00380F00380F00380F00380E00700E00700E00700E00700E00700700F00301E00186F00
-0F8FE014207C9F19>I<00F800070E000E07001C0700380380780380700380F00380F00380FFFF
-80F00000E00000E00000E00000E00000F001007002003004001C180007E00011147D9314>I<00
-000E003E1100E1A301C1C20381E00780E00701E00F01E00F01E00F01E00703C007038007870004
-FC000800000800001800001C00000FFF000FFFC007FFE01800F0300030600030C00030C00030C0
-00306000603000C01C070007FC00181F809417>103 D<00E00007E00001E00000E00000E00001
-C00001C00001C00001C00001C00001C000038000038F800390E003A0E003C0600380600780E007
-00E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF
-CFF815207E9F19>I<01C003E003E003C0018000000000000000000000000003801F8007800380
-03800700070007000700070007000E000E000E000E000E000E001C001E00FF800B1F7F9E0C>I<
-00E00007E00001E00000E00000E00001C00001C00001C00001C00001C00001C0000380000383FC
-0380F00380C0038180038100070400070800071800073800077C00071C000E1C000E0E000E0E00
-0E0F000E07000E07801C03801E07C0FF8FF016207E9F18>107 D<00E007E001E000E000E001C0
-01C001C001C001C001C00380038003800380038003800700070007000700070007000E000E000E
-000E000E000E001C001E00FFC00B207F9F0C>I<0387C07C001F9861860007A072070003C03403
-0003803803000780780700070070070007007007000700700700070070070007007007000E00E0
-0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E01E01E00FFCF
-FCFFC022147E9326>I<038F801F90E007A0E003C0600380600780E00700E00700E00700E00700
-E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FFCFF815147E9319>I<00
-FC000387000E01801C00C03800E03800E07000F0F000F0F000F0F000F0F000F0E001E0E001E0E0
-01C0E003C0F00380700700380E001C1C0007E00014147D9317>I<038E001FB38007C78003C780
-0383000780000700000700000700000700000700000E00000E00000E00000E00000E00000E0000
-1C00001E0000FFE00011147E9312>114 D<01F2060E080618061802380438001E001FE00FF003
-F8003C401C400C400C600C6018E010D0608FC00F147E9312>I<0080010001000100030007000F
-001E00FFF80E000E000E000E001C001C001C001C001C001C003800382038203820382038403840
-18800F000D1C7C9B12>I<FF83F81E00E01C00C01C00800E00800E01000E02000E02000F040007
-040007080007080007100003900003A00003E00003C00003800001800001000015147C9318>
-118 D<0FF83F8001E00E0001C00C0001C0080000E0180000E0100000E0200000E0200000F04000
-0070400000708000007080000071000000390000003A0000003E0000003C000000380000001800
-00001000000010000000200000002000000040000070C00000F0800000F1000000E20000007C00
-0000191D809318>121 D E /Fi 1 59 df<70F8F8F87005057C840D>58
-D E /Fj 8 117 df<387CFEFEFE7C38000000000000387CFEFEFE7C3807147D930D>58
-D<FFFFFE00FFFFFE000FC03E000FC00E000FC00E000FC006000FC007000FC003000FC003000FC1
-83000FC183000FC180000FC180000FC380000FFF80000FFF80000FC380000FC180000FC180000F
-C180C00FC180C00FC000C00FC001800FC001800FC001800FC003800FC003800FC007800FC03F00
-FFFFFF00FFFFFF001A1F7E9E1E>69 D<FFC007FEFFC007FE0FE000600FF000600DF800600DF800
-600CFC00600C7E00600C7E00600C3F00600C1F80600C0FC0600C0FC0600C07E0600C03F0600C03
-F8600C01F8600C00FC600C007E600C007E600C003F600C001FE00C000FE00C000FE00C0007E00C
-0003E00C0003E00C0001E00C0000E0FFC00060FFC000601F1F7E9E24>78
-D<003F800001FFF00003E0F8000FC07E001F803F001F001F003F001F803F001F807E000FC07E00
-0FC07E000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE
-000FE07E000FC07E000FC07F001FC03F001F803F001F801F803F001F803F000FC07E0003E0F800
-01FFF000003F80001B1F7D9E22>I<7FFFFFC07FFFFFC07C1F83C0701F81C0601F80C0601F80C0
-E01F80E0C01F8060C01F8060C01F8060C01F8060001F8000001F8000001F8000001F8000001F80
-00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
-8000001F8000001F800007FFFE0007FFFE001B1E7E9D20>84 D<03F8000FFE001F0F003E07803C
-07807C07C07C07C0FC07C0FFFFC0FFFFC0FC0000FC0000FC00007C00007C00003E00C03E00C01F
-038007FF0001FC0012147F9315>101 D<01F8000FFF001F0F803E07C07C03E07C03E07C03E0FC
-03F0FC03F0FC03F0FC03F0FC03F0FC03F0FC03F07C03E07C03E03E07C01F0F800FFF0003FC0014
-147F9317>111 D<0300030003000300070007000F000F003F00FFF8FFF81F001F001F001F001F
-001F001F001F001F001F001F181F181F181F181F180F3007F003E00D1D7F9C12>116
-D E /Fk 64 123 df<0001FF01FE00001FFFCFFF00007F01FF0F8000FC03FE1FC001F807FC1FC0
-03F807FC1FC007F007F81FC007F007F80F8007F003F8000007F003F8000007F003F8000007F003
-F8000007F003F8000007F003F8000007F003F80000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF000
-07F003F8000007F003F8000007F003F8000007F003F8000007F003F8000007F003F8000007F003
-F8000007F003F8000007F003F8000007F003F8000007F003F8000007F003F8000007F003F80000
-07F003F8000007F003F8000007F003F8000007F003F8000007F003F8000007F003F8000007F003
-F8000007F003F800007FFF3FFFC0007FFF3FFFC0007FFF3FFFC0002A2A7FA927>11
-D<0001FF0000001FFFC000007F81E00000FC01E00001F807F00003F807F00007F007F00007F007
-F00007F007F00007F007F00007F001C00007F000000007F000000007F000000007F03FF800FFFF
-FFF800FFFFFFF800FFFFFFF80007F003F80007F003F80007F003F80007F003F80007F003F80007
-F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F800
-07F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F8
-007FFF3FFF807FFF3FFF807FFF3FFF80212A7FA925>I<00030006001C0038007800F000E001E0
-03C003C007800F800F801F001F001F003E003E003E007E007E007E007C00FC00FC00FC00FC00FC
-00FC00FC00FC00FC00FC00FC00FC00FC00FC007C007E007E007E003E003E003E001F001F001F00
-0F800F80078003C003C001E000E000F000780038001C00060003103C7BAC1A>40
-D<C000600038001C001E000F000700078003C003C001E001F001F000F800F800F8007C007C007C
-007E007E007E003E003F003F003F003F003F003F003F003F003F003F003F003F003F003F003E00
-7E007E007E007C007C007C00F800F800F801F001F001E003C003C0078007000F001E001C003800
-6000C000103C7CAC1A>I<FFFFFFFFFFFFFFFFFFFFFFFF10067F9016>45
-D<1C007F007F00FF80FF80FF807F007F001C0009097B8813>I<003F800001FFF00007E0FC000F
-C07E001F803F001F001F003F001F803E000F807E000FC07E000FC07E000FC07E000FC0FE000FE0
-FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000F
-E0FE000FE0FE000FE0FE000FE0FE000FE07E000FC07E000FC07E000FC07E000FC03F001F803F00
-1F801F001F001F803F000FC07E0007E0FC0001FFF000003F80001B277DA622>48
-D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE
-0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
-0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFF
-FE17277BA622>I<00FF800007FFF0000FFFFC001E03FE003800FF807C003F80FE003FC0FF001F
-C0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE000001FC000001FC000003F800000
-3F0000007E000000FC000000F8000001F0000003E00000078000000F0000001E0000003C00E000
-7000E000E000E001C001C0038001C0060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80
-FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F80FE001F007F003F807F00
-3F803F803F803F803F803F801F803F801F003F8000007F0000007F0000007E000000FC000001F8
-000007F00000FFC00000FFC0000001F80000007E0000003F0000003F8000001FC000001FC00000
-1FE000001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FC0FF003FC0FE003F807C007F003F
-00FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E0000
-00FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E00
-00E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E
-00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000
-FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<180003001F801F001FFF
-FE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C0000001C0000001C0000001C0000001C
-0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F0008003F0000001F8000001FC0
-00001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001F
-C078003F8078003F803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F8
-00003FFE0000FFFF0001FC078003F00FC007C01FC00F801FC01F801FC01F001FC03F000F803F00
-00007E0000007E0000007E000000FE020000FE1FF000FE3FFC00FE603E00FE801F00FF801F80FF
-000FC0FF000FC0FE000FE0FE000FE0FE000FE0FE000FE07E000FE07E000FE07E000FE07E000FE0
-3E000FE03F000FC01F000FC01F001F800F801F0007E07E0003FFFC0001FFF800003FC0001B277D
-A622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF
-0070000E0070000E0070001C00E0003800E0007000E000E0000001E0000001C000000380000007
-800000070000000F0000001F0000001E0000003E0000003E0000007E0000007C0000007C000000
-FC000000FC000000FC000000FC000001FC000001FC000001FC000001FC000001FC000001FC0000
-01FC000000F80000007000001C297CA822>I<003FC00001FFF00003FFFC0007C07E000F003F00
-1E001F001E000F803E000F803E000F803F000F803F800F803FC00F803FF01F001FFC1E001FFE3C
-000FFFF8000FFFE00007FFF80001FFFC0001FFFE0007FFFF000F0FFF801E03FFC03E01FFC07C00
-7FE07C001FE0F8000FE0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07E0007803F
-000F001FC03F000FFFFC0003FFF800007FC0001B277DA622>I<007F800001FFF00007FFF8000F
-C0FC001F803E003F001F007E001F807E001F807E000F80FE000FC0FE000FC0FE000FC0FE000FE0
-FE000FE0FE000FE0FE000FE0FE000FE07E001FE07E001FE03F003FE01F002FE00F80CFE007FF8F
-E001FF0FE000080FE000000FC000000FC000000FC000001F803E001F807F001F807F003F007F00
-3E007F007E007E00FC003E03F8001FFFE0000FFF800001FE00001B277DA622>I<01FF000FFFE0
-1E03F03801F87800FCFC00FEFE00FEFE00FEFE00FE7C00FE3800FC0001FC0003F80007E0000FC0
-000F80001E00001E00003C00003800003800007000007000007000007000007000007000007000
-00000000000000000000000000000000700000F80001FC0003FE0003FE0003FE0001FC0000F800
-007000172A7CA920>63 D<00000780000000000780000000000FC0000000000FC0000000000FC0
-000000001FE0000000001FE0000000003FF0000000003FF0000000003FF00000000077F8000000
-0077F800000000F7FC00000000E3FC00000000E3FC00000001C1FE00000001C1FE00000003C1FF
-0000000380FF0000000380FF00000007007F80000007007F8000000F007FC000000E003FC00000
-0E003FC000001C001FE000001C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007
-F80000700007F80000F00007FC0000E00003FC0000E00003FC0001C00001FE0001C00001FE0003
-C00001FF00FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65
-D<FFFFFFF800FFFFFFFF00FFFFFFFFC003F8001FE003F8000FF003F80007F803F80003F803F800
-03FC03F80003FC03F80001FC03F80001FC03F80001FC03F80003FC03F80003F803F80003F803F8
-0007F003F8000FF003F8001FC003F800FF8003FFFFFE0003FFFFFFC003F8000FF003F80003F803
-F80001FC03F80001FE03F80000FE03F80000FE03F80000FF03F80000FF03F80000FF03F80000FF
-03F80000FF03F80000FF03F80000FE03F80001FE03F80003FC03F80007FC03F8001FF8FFFFFFFF
-E0FFFFFFFFC0FFFFFFFE0028297DA830>I<00007FE0030007FFFC07001FFFFF0F007FF00F9F00
-FF0001FF01FC0000FF03F800007F07F000003F0FE000001F1FC000001F1FC000000F3F8000000F
-3F800000077F800000077F800000077F00000000FF00000000FF00000000FF00000000FF000000
-00FF00000000FF00000000FF00000000FF00000000FF000000007F000000007F800000007F8000
-00073F800000073F800000071FC00000071FC000000E0FE000000E07F000001C03F800003C01FC
-00007800FF0001F0007FF007C0001FFFFF800007FFFE0000007FF00028297CA831>I<FFFFFFFC
-0000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0003FC0003FC0000FE0003FC00007F0003
-FC00003F8003FC00001FC003FC00001FC003FC00000FE003FC00000FE003FC000007F003FC0000
-07F003FC000007F003FC000007F003FC000007F803FC000007F803FC000007F803FC000007F803
-FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC0000
-07F003FC000007F003FC000007F003FC00000FE003FC00000FE003FC00000FC003FC00001FC003
-FC00003F8003FC00007F0003FC0000FF0003FC0003FC0003FC001FF800FFFFFFFFF000FFFFFFFF
-8000FFFFFFFC00002D297EA834>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007
-F003FC0001F003FC0001F003FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01
-C03803FC01C03803FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FF
-FFC00003FC0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03
-FC00001C03FC00001C03FC00001C03FC00003C03FC00003803FC00007803FC0000F803FC0001F8
-03FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF027297EA82C>I<FFFFFFFFC0FFFF
-FFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003
-FC0000E003FC0000E003FC0000F003FC01C07003FC01C07003FC01C07003FC01C00003FC03C000
-03FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C0
-0003FC01C00003FC01C00003FC01C00003FC01C00003FC00000003FC00000003FC00000003FC00
-000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFF
-FC000024297EA82A>I<00007FE003000007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF
-0001FC0000FF0003F800007F0007F000003F000FE000001F001FC000001F001FC000000F003F80
-00000F003F80000007007F80000007007F80000007007F0000000000FF0000000000FF00000000
-00FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00
-00FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F800000FF003F800000FF001FC00000FF
-001FC00000FF000FE00000FF0007F00000FF0003F80000FF0001FC0000FF0000FF0001FF00007F
-F007FF00001FFFFF9F000007FFFE0F0000007FF003002D297CA835>I<FFFFF00FFFFFFFFFF00F
-FFFFFFFFF00FFFFF03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
-FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
-3FC003FC00003FC003FC00003FC003FC00003FC003FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003
-FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
-3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
-FC00003FC003FC00003FC003FC00003FC003FC00003FC0FFFFF00FFFFFFFFFF00FFFFFFFFFF00F
-FFFF30297EA835>I<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE00
-01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
-01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
-01FE0001FE00FFFFFCFFFFFCFFFFFC16297FA819>I<FFFFF001FFFCFFFFF001FFFCFFFFF001FF
-FC03FC00001E0003FC00003C0003FC0000780003FC0000F00003FC0001E00003FC0003C00003FC
-0007000003FC001E000003FC003C000003FC0078000003FC00F0000003FC01E0000003FC038000
-0003FC07C0000003FC1FC0000003FC3FE0000003FC7FF0000003FCFFF8000003FDE7F8000003FF
-83FC000003FF03FE000003FE01FF000003FC00FF000003FC007F800003FC007FC00003FC003FE0
-0003FC001FE00003FC000FF00003FC000FF80003FC0007F80003FC0003FC0003FC0001FE0003FC
-0001FF0003FC0000FF0003FC00007F80FFFFF00FFFFEFFFFF00FFFFEFFFFF00FFFFE2F297EA835
->75 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003
-FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
-0003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC00038003FC00
-038003FC00078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFF
-FFFF00FFFFFFFF00FFFFFFFF0022297EA828>I<FFFE0000003FFF80FFFE0000003FFF80FFFF00
-00007FFF8003FF0000007FE00003FF0000007FE00003BF800000EFE00003BF800000EFE000039F
-C00001CFE000039FC00001CFE000038FE000038FE000038FE000038FE000038FE000038FE00003
-87F000070FE0000387F000070FE0000383F8000E0FE0000383F8000E0FE0000381FC001C0FE000
-0381FC001C0FE0000381FC001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE0
-0003807F00700FE00003803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00F
-E00003801FC1C00FE00003800FE3800FE00003800FE3800FE000038007F7000FE000038007F700
-0FE000038007F7000FE000038003FE000FE000038003FE000FE000038001FC000FE000038001FC
-000FE000038000F8000FE000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF8039297D
-A840>I<FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC00001C003BFE00001
-C0039FE00001C0039FF00001C0038FF80001C00387FC0001C00383FE0001C00381FF0001C00380
-FF8001C003807F8001C003807FC001C003803FE001C003801FF001C003800FF801C0038007FC01
-C0038003FC01C0038003FE01C0038001FF01C0038000FF81C00380007FC1C00380003FE1C00380
-001FF1C00380000FF1C00380000FF9C003800007FDC003800003FFC003800001FFC003800000FF
-C0038000007FC0038000007FC0038000003FC0038000001FC0038000000FC00380000007C0FFFE
-000003C0FFFE000001C0FFFE000001C030297EA835>I<0000FFC00000000FFFFC0000003F807F
-000000FE001FC00001F80007E00003F00003F00007E00001F8000FE00001FC001FC00000FE001F
-C00000FE003F8000007F003F8000007F007F8000007F807F0000003F807F0000003F807F000000
-3F80FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF
-0000003FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F800000
-7F803F8000007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F80003
-F80007F00001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC000002A297CA8
-33>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC0007F003FC0003F803FC0003FC03
-FC0001FC03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE
-03FC0001FC03FC0003FC03FC0003F803FC0007F003FC003FE003FFFFFF8003FFFFFE0003FC0000
-0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
-000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFF
-F00000FFFFF00000FFFFF0000027297EA82E>I<0000FFC00000000FFFFC0000003FC0FF000000
-FE001FC00001FC000FE00003F00003F00007F00003F8000FE00001FC001FC00000FE001FC00000
-FE003F8000007F003F8000007F007F8000007F807F8000007F807F0000003F807F0000003F80FF
-0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF000000
-3FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F803F
-8000007F003F8000007F001FC00000FE001FC03E00FE000FE07F81FC0007E0C1C1F80003F180E3
-F00001F980E7E00000FF807FC000003FC07F0000000FFFFC00000000FFF800C00000007C00C000
-00003E00C00000003E01C00000003F83C00000001FFFC00000001FFF800000001FFF800000000F
-FF0000000007FF0000000003FE0000000001FC0000000000F8002A357CA833>I<FFFFFFE00000
-FFFFFFFE0000FFFFFFFF800003FC003FE00003FC000FF00003FC0007F80003FC0003FC0003FC00
-01FC0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE00
-03FC0001FC0003FC0003F80003FC0007F80003FC000FE00003FC003FC00003FFFFFE000003FFFF
-FE000003FC00FF800003FC003FC00003FC001FE00003FC000FF00003FC0007F80003FC0007F800
-03FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC00
-07F80003FC0007F80E03FC0007F80E03FC0003F80E03FC0001FC1CFFFFF000FE1CFFFFF0007FF8
-FFFFF0000FE02F297EA832>I<00FF00C003FFE1C00FFFF9C01F80FFC03F003FC03E000FC07C00
-07C07C0007C0FC0003C0FC0003C0FC0001C0FE0001C0FE0001C0FF000000FFC000007FFC00007F
-FFE0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF0
-00000FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007
-C0FF000F80FFE01F80E3FFFF00E1FFFC00C01FF0001C297CA825>I<7FFFFFFFFF807FFFFFFFFF
-807FFFFFFFFF807F807F807F807C007F800F8078007F80078078007F80078070007F800380F000
-7F8003C0F0007F8003C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001
-C000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000
-7F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000
-0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000
-7F80000000007F80000000007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F
->I<FFFFF000FFFEFFFFF000FFFEFFFFF000FFFE03FC0000038003FC0000038003FC0000038003
-FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000
-038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003
-FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000
-038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038001FC0000070001
-FE0000070000FE00000E00007F00000E00003F00003C00001FC0007800000FF003F0000007FFFF
-E0000000FFFF800000001FFC00002F297EA834>I<FFFFF0007FFFFFFFF0007FFFFFFFF0007FFF
-03FE000001C001FE0000038001FE0000038000FF0000070000FF0000070000FF80000F00007F80
-000E00007FC0000E00003FC0001C00003FE0001C00001FE0003800001FE0003800001FF0007800
-000FF0007000000FF800F0000007F800E0000007FC00E0000003FC01C0000003FC01C0000003FE
-03C0000001FE0380000001FF0780000000FF0700000000FF87000000007F8E000000007F8E0000
-00007FDE000000003FDC000000003FFC000000001FF8000000001FF8000000000FF0000000000F
-F0000000000FF00000000007E00000000007E00000000003C00000000003C0000030297FA833>
-I<FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC003FC0003FC0000700003FC
-0003FC0000700003FE0003FE0000F00001FE0001FE0000E00001FE0001FE0000E00001FF0001FF
-0001E00000FF0001FF0001C00000FF0001FF0001C000007F8003FF80038000007F8003FF800380
-00007FC007FFC0078000003FC0073FC0070000003FC0073FC0070000003FE00F3FE00F0000001F
-E00E1FE00E0000001FE00E1FE00E0000000FF01C0FF01C0000000FF01C0FF01C0000000FF01C0F
-F81C00000007F83807F83800000007F83807F83800000007FC7807FC7800000003FC7003FC7000
-000003FC7003FC7000000003FEF003FEF000000001FEE001FEE000000001FEE001FEE000000000
-FFC000FFC000000000FFC000FFC000000000FFC000FFC0000000007F80007F80000000007F8000
-7F80000000007F80007F80000000003F00003F00000000003F00003F00000000003F00003F0000
-0000001E00001E00000000001E00001E00000042297FA845>I<7FFFF81FFFE07FFFF81FFFE07F
-FFF81FFFE001FF0000F00000FF8001E00000FFC001C000007FC003C000003FE0078000001FF00F
-0000001FF00E0000000FF81E00000007FC3C00000007FC3800000003FE7800000001FFF0000000
-01FFE000000000FFC0000000007FC0000000003FE0000000003FE0000000001FF0000000001FF8
-000000003FF8000000003FFC000000007BFE00000000F3FE00000001E1FF00000001C0FF800000
-03C07FC0000007807FC000000F003FE000000E001FF000001E001FF000003C000FF80000380007
-FC0000780007FC0000F00003FE0001E00001FF00FFFF003FFFFCFFFF003FFFFCFFFF003FFFFC2E
-297EA833>I<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F801F003F8000
-003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F801F803F803F003F807E003F80
-FC003F80FC003F80FC003F80FC003F80FC005F807E00DF803F839FFC1FFE0FFC03F803FC1E1B7E
-9A21>97 D<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE1FE000FE7FF800FFE07E00F
-F803F00FF001F80FE000FC0FE000FC0FE0007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F
-0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001
-F80FF803F00F9C0FE00F0FFF800E01FC00202A7EA925>I<003FF00001FFFC0003F03E000FC07F
-001F807F003F007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE00
-0000FE000000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000F
-E00E0003F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F000
-0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
-000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E0007F07E0007
-F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F07E00
-07F07E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01FFE7FF007F87FF202A7EA925
->I<003FC00001FFF00003E07C000F803E001F801F001F001F003F000F807E000F807E000FC07E
-000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE000000FE0000007E0000007E000000
-7F0000003F0001C01F0001C00F80038007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<
-0007F8003FFC007E3E01FC7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F000
-07F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F000
-07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
-7FFF807FFF807FFF80182A7EA915>I<007F80F001FFE3F807C0FE1C0F807C7C1F003E7C1F003E
-103F003F003F003F003F003F003F003F003F003F003F003F001F003E001F003E000F807C0007C0
-F80005FFE0000C7F8000180000001C0000001C0000001E0000001FFFF8001FFFFF000FFFFFC007
-FFFFE003FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F0
-7C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>I<FFE00000FFE00000FFE00000
-0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000
-000FE000000FE000000FE07E000FE1FF800FE30FC00FE40FE00FE807E00FF807F00FF007F00FF0
-07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF
-202A7DA925>I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000
-FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
-E00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FFE00000FFE00000FFE000000FE000000F
-E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
-0FE000000FE03FF80FE03FF80FE03FF80FE007000FE00E000FE03C000FE078000FE0F0000FE1E0
-000FE3C0000FE780000FEFC0000FFFE0000FFFE0000FF7F0000FE3F8000FC1FC000FC1FC000FC0
-FE000FC07F000FC07F000FC03F800FC01FC00FC01FC0FFFC7FFCFFFC7FFCFFFC7FFC1E2A7EA923
->107 D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
-E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE0FFFEFFFEFFFE0F2A7EA912>I<FFC07F001FC000FFC1FFC07FF000FFC307E0C1F8000F
-C407F101FC000FC803F200FC000FD803FE00FE000FD003FC00FE000FD003FC00FE000FE003F800
-FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE0
-03F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE
-000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3F
-FF8FFFE0FFFE3FFF8FFFE0331B7D9A38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00F
-D807F00FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0
-0FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3F
-FFFFFE3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F0007
-E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE00
-03F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F8007F07F0001
-FFFC00003FE0001D1B7E9A22>I<FFE1FE00FFE7FF80FFFE0FE00FF803F00FF001F80FE001FC0F
-E000FC0FE000FE0FE000FE0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F
-0FE0007F0FE0007E0FE000FE0FE000FE0FE000FC0FE001FC0FF001F80FF803F00FFC0FE00FEFFF
-800FE1FC000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
-0000FFFE0000FFFE0000FFFE000020277E9A25>I<FFC3E0FFC7F8FFCC7C0FD8FE0FD0FE0FD0FE
-0FF0FE0FE07C0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
-0FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00171B7E9A1B>114
-D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFF
-E01FFFF007FFF800FFF80007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FF
-C0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F00001F00003F00003
-F00007F0001FFFE0FFFFE0FFFFE007F00007F00007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F07007F07007F07007F07007F07007F07007F07003F0E001
-F8C000FFC0003F0014267FA51A>I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00FE007F0
-0FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007
-F00FE007F00FE007F00FE007F00FE007F00FE007F00FE00FF00FE00FF007E017F003F067FF01FF
-C7FF007F87FF201B7D9A25>I<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F8
-01C003F801C001FC038001FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C0000
-3F9C00003FFC00001FF800001FF800000FF000000FF000000FF0000007E0000007E0000003C000
-0003C000201B7F9A23>I<FFFC7FFC1FFCFFFC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0
-038007F007E0038007F807F0078003F807F0070003F807F8070001FC0FF80E0001FC0FF80E0001
-FE1FFC1E0000FE1CFC1C0000FE1CFE1C0000FF387E3C00007F387E3800007F787F3800003FF03F
-7000003FF03F7000003FE01FF000001FE01FE000001FE01FE000000FC00FC000000FC00FC00000
-0FC00FC0000007800780000007800780002E1B7F9A31>I<FFFC1FFEFFFC1FFEFFFC1FFE07F007
-8003F8070001FC0F0001FE1E0000FE3C00007F7800003FF800003FF000001FE000000FE0000007
-F0000007F800000FF800001FFC00003DFE000038FF0000787F0000F03F8001E03FC003C01FE003
-800FE0FFF03FFFFFF03FFFFFF03FFF201B7F9A23>I<FFFE07FFFFFE07FFFFFE07FF07F000E007
-F000E007F801E003F801C003F801C001FC038001FC038001FE078000FE070000FF0F00007F0E00
-007F0E00003F9C00003F9C00003FFC00001FF800001FF800000FF000000FF0000007F0000007E0
-000007E0000003C0000003C000000380000003800000078000380700007C070000FE0E0000FE0E
-0000FE1C0000FE3800007C7000003FE000000F80000020277F9A23>I<3FFFFF3FFFFF3F00FE3C
-01FE3803FC7803F87807F0700FF0700FE0701FC0003FC0003F80007F0000FF0000FE0001FC0703
-FC0703F80707F0070FF00F0FE00F1FC00E3FC01E7F803E7F00FEFFFFFEFFFFFE181B7E9A1E>I
-E /Fl 68 123 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C77
-9B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D0E7B9C18>
-I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E
-000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C001E3C001E3C
-001E3C000C1800131C7E9B18>I<00C00001C00001C00001C00003F0000FFC003FFE007DCF0071
-C700E1C380E1C780E1C780E1C780F1C00079C0003DC0001FE0000FF80003FC0001DE0001CF0001
-C70061C380F1C380F1C380E1C380E1C70071C70079DE003FFE001FF80007E00001C00001C00001
-C00000C00011247D9F18>I<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F0
-1C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800E0F800
-E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>38 D<387C7C7E3E0E0E0E1C1C38F8F0
-C0070E789B18>I<007000F001E003C007800F001E001C00380038007000700070007000E000E0
-00E000E000E000E000E000E0007000700070007000380038001C001E000F00078003C001F000F0
-00700C24799F18>I<6000F00078003C001E000F000780038001C001C000E000E000E000E00070
-007000700070007000700070007000E000E000E000E001C001C0038007800F001E003C007800F0
-0060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F0
-0007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<00
-600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000
-F00000F00000F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860
-080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<3078FCFC78300606778518>I<00
-0300000780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000780000
-F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00001F00001E
-00003E00003C00003C00007C0000780000F80000F00000F0000060000011247D9F18>I<01F000
-07FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0
-E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC00
-01F000131C7E9B18>I<01800380038007800F803F80FF80FB8043800380038003800380038003
-8003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE
-003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C00003C00007
-80000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFF
-E0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C00003C000038000
-0F0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0F000E0F000E0F001C0F0
-03C07C07803FFF001FFE0003F800131C7E9B18>I<1FFF803FFF803FFF80380000380000380000
-3800003800003800003800003800003BF8003FFE003FFF003C07801803C00001C00000E00000E0
-6000E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C7E9B18>53
-D<E00000FFFFE0FFFFE0FFFFE0E003C0E00780000700000E00001E00001C000038000038000070
-0000700000E00000E00000E00001C00001C00001C00001C00003C0000380000380000380000380
-00038000038000038000131D7E9C18>55 D<3078FCFC783000000000000000003078FCFC783006
-14779318>58 D<600000F00000FC00007E00003F00001FC00007E00003F00001FC00007E00003F
-00001F80001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000F000006000
-0011187D9918>62 D<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1E0
-E1C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C1C00
-1E00E00F83E007FFC001FF80007E00131C7E9B18>64 D<00700000F80000F80000D80000D80001
-DC0001DC0001DC00018C00038E00038E00038E00038E000306000707000707000707000707000F
-FF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<00F8E0
-03FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000
-E00000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE00
-00F800131C7E9B18>67 D<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C
-00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C
-01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C0070
-1C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E00
-1C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFF
-E0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC
-001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000FFC000FFC0
-00FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C070
-0000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C038
-03C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7FFF00FFFF807FFF0001C00001C000
-01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
-01C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>73
-D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E00707FFF
-F0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE0
-3B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800E0
-3800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81
-C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39
-C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18
->I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E0
-0380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F007F
-FF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C0070
-1C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C0000
-1C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<7FF800FFFE007FFF001C0F
-801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07
-001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18
->82 D<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000007000007800003F0000
-1FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780
-FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E070380070
-000070000070000070000070000070000070000070000070000070000070000070000070000070
-0000700000700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C
-00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
-00701C00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B
-18>I<FF07F8FF07F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F0780
-070700070700070700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D800
-00F80000F800007000151C7F9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E0
-00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
-E000E000FFF8FFF8FFF80D24779F18>91 D<FFF8FFF8FFF8003800380038003800380038003800
-380038003800380038003800380038003800380038003800380038003800380038003800380038
-003800380038FFF8FFF8FFF80D247F9F18>93 D<1FE0003FF8007FFC00781E00300E0000070000
-070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF01FFBF007
-E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF
-800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00
-700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E078038030070
-0000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01FFF8007
-FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000038003E380
-0FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E00380700780
-700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F003807
-80700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF
-8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007F
-FFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
-C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E1E30
-1C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0003800001C0000
-1FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC00FFF80
-01FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF
-800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C00003800000
-00000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001
-C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<
-0038007C007C007C003800000000000000000FFC1FFC0FFC001C001C001C001C001C001C001C00
-1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE03F80
-0E277E9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3F
-F00E07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03
-800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E00000E00000E00000
-E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
-E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFB
-F8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C
-1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F0019148193
-18>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E0
-0E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF
-003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07
-803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E
-00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E
-3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<
-01E38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E00380
-700780700780380F803C1F801FFF800FFB8003E380000380000380000380000380000380000380
-000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C0
-0003C0000380000380000380000380000380000380000380000380000380007FFE00FFFF007FFE
-0015147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003
-FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<018000
-0380000380000380000380007FFFC0FFFFC0FFFFC0038000038000038000038000038000038000
-0380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F9818>
-I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E
-03C00E03800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001
-DC0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C0
-1C01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F80070700
-15147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F0
-0000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF
-8FF87F8FF00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000
-CC0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0007F
-80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E00
-003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F
-9318>I E /Fm 52 123 df<00003FFC07F8000003FFFF3FFE00000FF807FF0F00003FC003FC1F
-80007F0007F83FC000FE000FF83FC001FE000FF03FC001FC000FF03FC003FC000FF01F8003FC00
-0FF0060003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF00000
-03FC000FF0000003FC000FF0000003FC000FF00000FFFFFFFFFFF000FFFFFFFFFFF000FFFFFFFF
-FFF00003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003
-FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0
-000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC
-000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF000
-0003FC000FF0000003FC000FF0000003FC000FF0000003FC000FF000007FFFE1FFFFC0007FFFE1
-FFFFC0007FFFE1FFFFC00032327FB12F>11 D<0000600000E00001C0000380000700000E00001C
-00003C0000780000F80000F00001F00003E00003E00007C00007C0000FC0000F80001F80001F80
-001F00003F00003F00003F00007F00007E00007E00007E00007E0000FE0000FE0000FE0000FE00
-00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007E00007E00007E00
-007E00007F00003F00003F00003F00001F00001F80001F80000F80000FC00007C00007C00003E0
-0003E00001F00000F00000F800007800003C00001C00000E000007000003800001C00000E00000
-60134879B51F>40 D<800000C00000E000007000003800001C00000E00000F000007800007C000
-03C00003E00001F00001F00000F80000F80000FC00007C00007E00007E00003E00003F00003F00
-003F00003F80001F80001F80001F80001F80001FC0001FC0001FC0001FC0001FC0001FC0001FC0
-001FC0001FC0001FC0001FC0001FC0001FC0001FC0001F80001F80001F80001F80003F80003F00
-003F00003F00003E00007E00007E00007C0000FC0000F80000F80001F00001F00003E00003C000
-07C0000780000F00000E00001C0000380000700000E00000C0000080000012487BB51F>I<FFFF
-F8FFFFF8FFFFF8FFFFF8FFFFF8FFFFF8FFFFF815077F921B>45 D<0001C0000003C000000FC000
-007FC0001FFFC000FFFFC000FFBFC000E03FC000003FC000003FC000003FC000003FC000003FC0
-00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
-C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
-3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
-003FC0007FFFFFE07FFFFFE07FFFFFE01B2E7AAD28>49 D<003FE00001FFFE0007FFFF800F80FF
-C01E003FE038001FF07C000FF87E0007FCFF0007FCFF8007FEFF8007FEFF8003FEFF8003FE7F00
-03FE3E0007FE000007FE000007FC000007FC00000FF800000FF800000FF000001FE000001FC000
-003F8000007F0000007E000000F8000001F0000003E0000007C000000F0000001E000E003C000E
-0038000E0070001E00E0001C01C0001C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFFFFFC7FFFFF
-F8FFFFFFF8FFFFFFF8FFFFFFF81F2E7CAD28>I<001FF80000007FFF000001FFFFC00003E03FE0
-0007800FF0000FC00FF8001FE007F8001FE007FC001FE007FC001FE007FC001FE007FC000FC007
-FC00078007FC0000000FF80000000FF80000000FF00000001FE00000001FC00000003F80000000
-FE0000003FF80000003FFF800000001FE000000007F000000007F800000003FC00000003FE0000
-0001FF00000001FF00000001FF80000001FF80000001FF801C0001FF803E0001FF807F0001FF80
-FF8001FF80FF8001FF00FF8001FF00FF8003FE007F0003FE007E0007FC003C0007F8001FC01FF0
-000FFFFFC00003FFFF0000003FF80000212E7DAD28>I<0000007000000000F000000001F00000
-0003F000000007F00000000FF00000000FF00000001FF00000003FF000000077F0000000F7F000
-0000E7F0000001C7F000000387F000000707F000000F07F000000E07F000001C07F000003807F0
-00007007F00000F007F00000E007F00001C007F000038007F000070007F0000F0007F0000E0007
-F0001C0007F000380007F000700007F000E00007F000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE00000
-0FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000
-000FF000000FFFFFE0000FFFFFE0000FFFFFE0232E7EAD28>I<0C0000300FC003F00FFFFFE00F
-FFFFC00FFFFF800FFFFF000FFFFE000FFFF8000FFFF0000FFF80000E0000000E0000000E000000
-0E0000000E0000000E0000000E0000000E0000000E1FF0000E7FFE000FE03F800F800FC00E0007
-E00C0007F0000007F8000003FC000003FC000003FC000003FE000003FE180003FE3E0003FE7F00
-03FEFF0003FEFF0003FEFF0003FCFF0003FCFE0003FC780007F8780007F03C000FE01E001FC00F
-C07F8007FFFF0001FFFC00003FE0001F2E7CAD28>I<0000FF80000007FFE000001FFFF000007F
-80F80000FE003C0001F8007C0003F000FE0007F001FE000FE001FE000FE001FE001FC001FE003F
-C000FC003FC00078003FC00000007F800000007F800000007F80000000FF83FC0000FF8FFF8000
-FF9C0FC000FFB003F000FFB001F800FFE001FC00FFC001FE00FFC000FE00FFC000FF00FFC000FF
-00FF8000FF80FF8000FF80FF8000FF80FF8000FF807F8000FF807F8000FF807F8000FF807F8000
-FF803F8000FF003FC000FF001FC000FF001FC000FE000FC001FC0007E001FC0003F003F80001FC
-0FE00000FFFFC000003FFF0000000FFC0000212E7DAD28>I<38000000003E000000003FFFFFFF
-C03FFFFFFFC03FFFFFFFC03FFFFFFF807FFFFFFF007FFFFFFE007FFFFFFC007FFFFFF800780000
-38007000007000700000E000F00001C000E000038000E000070000E00007000000000E00000000
-1C00000000380000000038000000007800000000F000000000F000000001F000000001E0000000
-03E000000003E000000007E000000007E00000000FC00000000FC00000000FC00000001FC00000
-001FC00000001FC00000001FC00000001FC00000003FC00000003FC00000003FC00000003FC000
-00003FC00000003FC00000003FC00000003FC00000001F800000000F00000022307CAF28>I<00
-0FF80000003FFF000000FFFFC00001F80FE00003E003F00007C001F8000F8001F8000F8000FC00
-0F8000FC001F8000FC001F8000FC001FC000FC001FC000FC001FF000F8001FFC01F8000FFE01F0
-000FFF83E00007FFE7C00007FFFF800003FFFE000001FFFF000000FFFFC000003FFFE00001FFFF
-F00003E3FFF80007C1FFFC001F807FFE003F001FFF003E0007FF007E0003FF807E0000FF80FC00
-007F80FC00003F80FC00001F80FC00001F80FC00001F80FC00001F007E00001F007E00001F007F
-00003E003F00007C001FC000F8000FF007F00003FFFFE00000FFFF8000001FF80000212E7DAD28
->I<0000007800000000000078000000000000FC000000000000FC000000000000FC0000000000
-01FE000000000001FE000000000003FF000000000003FF000000000007FF800000000007FF8000
-00000007FF80000000000FFFC0000000000E7FC0000000001E7FE0000000001C3FE0000000001C
-3FE000000000383FF000000000381FF000000000781FF800000000700FF800000000700FF80000
-0000E00FFC00000000E007FC00000001E007FE00000001C003FE00000001C003FE000000038003
-FF000000038001FF000000078001FF800000070000FF800000070000FF8000000FFFFFFFC00000
-0FFFFFFFC000001FFFFFFFE000001C00003FE000003C00003FF000003800001FF000003800001F
-F000007000001FF800007000000FF80000F000000FFC0000E0000007FC0000E0000007FC0001C0
-000007FE0003E0000003FE00FFFF8001FFFFFCFFFF8001FFFFFCFFFF8001FFFFFC36317DB03D>
-65 D<FFFFFFFFE00000FFFFFFFFFE0000FFFFFFFFFF800000FF0000FFC00000FF00003FF00000
-FF00001FF80000FF00000FF80000FF000007FC0000FF000007FC0000FF000007FE0000FF000003
-FE0000FF000003FE0000FF000003FE0000FF000003FE0000FF000007FE0000FF000007FE0000FF
-000007FC0000FF000007FC0000FF00000FF80000FF00001FF00000FF00003FE00000FF0000FF80
-0000FF000FFF000000FFFFFFFE000000FFFFFFFFC00000FF00001FF00000FF000007F80000FF00
-0003FE0000FF000003FE0000FF000001FF0000FF000001FF8000FF000000FF8000FF000000FFC0
-00FF000000FFC000FF000000FFC000FF000000FFC000FF000000FFC000FF000000FFC000FF0000
-00FFC000FF000000FF8000FF000001FF8000FF000001FF0000FF000003FF0000FF000007FE0000
-FF00000FFC0000FF00007FF800FFFFFFFFFFE000FFFFFFFFFF8000FFFFFFFFFC000032317EB039
->I<000003FF80018000003FFFF003800001FFFFFC07800007FF003F0F80001FF800079F80003F
-C00001FF8000FF800000FF8001FE0000007F8003FC0000003F8007FC0000001F8007F80000000F
-800FF00000000F801FF000000007801FF000000007803FE000000007803FE000000003807FE000
-000003807FE000000003807FC000000000007FC00000000000FFC00000000000FFC00000000000
-FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000
-000000FFC000000000007FC000000000007FC000000000007FE000000000007FE000000003803F
-E000000003803FE000000003801FF000000003801FF000000007800FF0000000070007F8000000
-070007FC0000000E0003FC0000001E0001FE0000001C0000FF8000007800003FC00000F000001F
-F80003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF80000031317CB03A>
-I<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FF80003FF000FF800007F800FF800003F800FF
-800000F800FF800000F800FF8000007800FF8000007800FF8000003800FF8000003800FF800000
-3800FF8000001C00FF8007001C00FF8007001C00FF8007001C00FF8007000000FF8007000000FF
-800F000000FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F00
-0000FF801F000000FF800F000000FF8007000000FF8007000000FF8007000700FF8007000700FF
-8007000700FF8000000E00FF8000000E00FF8000000E00FF8000000E00FF8000001E00FF800000
-1E00FF8000003C00FF8000003C00FF8000007C00FF800000FC00FF800001FC00FF800007FC00FF
-80003FFCFFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF830317EB035>69 D<FFFFFFFFFFE0FFFFFF
-FFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF800003F000FF800001F000FF800001F0
-00FF800000F000FF800000F000FF8000007000FF8000007000FF8000007000FF8000003800FF80
-00003800FF8007003800FF8007003800FF8007000000FF8007000000FF8007000000FF800F0000
-00FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F000000FF80
-1F000000FF800F000000FF8007000000FF8007000000FF8007000000FF8007000000FF80070000
-00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
-00000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000FFFFFFE00000
-FFFFFFE00000FFFFFFE000002D317EB033>I<000003FF00030000007FFFF007000001FFFFFC0F
-000007FF007E1F00001FF0000FBF00007FC00003FF0000FF800001FF0001FE0000007F0003FC00
-00007F0007FC0000003F000FF80000001F000FF00000001F001FF00000000F001FF00000000F00
-3FE000000007003FE000000007007FE000000007007FE000000007007FC00000000000FFC00000
-000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FF
-C00000000000FFC00000000000FFC00000000000FFC00000000000FFC00007FFFFFC7FC00007FF
-FFFC7FE00007FFFFFC7FE0000001FF003FE0000001FF003FE0000001FF001FF0000001FF001FF0
-000001FF000FF0000001FF000FF8000001FF0007FC000001FF0003FC000001FF0001FE000001FF
-0000FF800001FF00007FC00003FF00001FF800077F000007FF003E3F000001FFFFFC1F0000007F
-FFF00F00000003FF80030036317CB03F>I<FFFFFF80FFFFFF80FFFFFF8000FF800000FF800000
-FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF80
-0000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
-FF800000FF8000FFFFFF80FFFFFF80FFFFFF8019317EB01E>73 D<FFFFFF8003FFFF00FFFFFF80
-03FFFF00FFFFFF8003FFFF0000FF8000001F800000FF8000001E000000FF8000003C000000FF80
-000078000000FF800000F0000000FF800001C0000000FF80000780000000FF80000F00000000FF
-80001E00000000FF80003C00000000FF80007800000000FF8000E000000000FF8003C000000000
-FF80078000000000FF800F0000000000FF801E0000000000FF803E0000000000FF807F00000000
-00FF80FF0000000000FF83FF8000000000FF87FFC000000000FF8F7FE000000000FF9E3FE00000
-0000FFBC1FF000000000FFF01FF800000000FFE00FFC00000000FFC007FC00000000FF8003FE00
-000000FF8003FF00000000FF8001FF80000000FF8000FF80000000FF80007FC0000000FF80007F
-E0000000FF80003FE0000000FF80001FF0000000FF80000FF8000000FF80000FFC000000FF8000
-07FC000000FF800003FE000000FF800003FF000000FF800001FF800000FF800000FF800000FF80
-0000FFC000FFFFFF801FFFFF80FFFFFF801FFFFF80FFFFFF801FFFFF8039317EB03F>75
-D<FFFFFFE00000FFFFFFE00000FFFFFFE0000000FF8000000000FF8000000000FF8000000000FF
-8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
-8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF800001C000FF800001C000FF
-800001C000FF800001C000FF800003C000FF8000038000FF8000038000FF8000078000FF800007
-8000FF8000078000FF80000F8000FF80001F8000FF80003F8000FF80007F8000FF8000FF0000FF
-8007FF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF002A317EB030>I<FFFF800001FFFFC0FFFF
-C00001FFFFC0FFFFE00001FFFFC000FFF0000003E00000FFF8000001C00000EFFC000001C00000
-E7FC000001C00000E7FE000001C00000E3FF000001C00000E1FF800001C00000E0FFC00001C000
-00E07FE00001C00000E03FE00001C00000E03FF00001C00000E01FF80001C00000E00FFC0001C0
-0000E007FE0001C00000E003FE0001C00000E001FF0001C00000E001FF8001C00000E000FFC001
-C00000E0007FE001C00000E0003FF001C00000E0001FF001C00000E0001FF801C00000E0000FFC
-01C00000E00007FE01C00000E00003FF01C00000E00001FF81C00000E00000FF81C00000E00000
-FFC1C00000E000007FE1C00000E000003FF1C00000E000001FF9C00000E000000FFDC00000E000
-0007FDC00000E0000007FFC00000E0000003FFC00000E0000001FFC00000E0000000FFC00000E0
-0000007FC00000E00000003FC00000E00000003FC00000E00000001FC00000E00000000FC00001
-F000000007C000FFFFE0000003C000FFFFE0000001C000FFFFE0000001C0003A317EB03F>78
-D<FFFFFFFFE000FFFFFFFFFE00FFFFFFFFFF8000FF8000FFE000FF80003FF000FF80000FF800FF
-800007FC00FF800007FC00FF800003FE00FF800003FE00FF800003FF00FF800003FF00FF800003
-FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FE00FF800003FE00FF
-800007FC00FF800007F800FF80000FF800FF80003FE000FF8000FFC000FFFFFFFF0000FFFFFFF8
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
-8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
-80000000FFFFFF800000FFFFFF800000FFFFFF80000030317EB037>80 D<FFFFFFFF80000000FF
-FFFFFFF8000000FFFFFFFFFE00000000FF8003FF80000000FF80007FE0000000FF80001FF00000
-00FF80000FF8000000FF80000FF8000000FF80000FFC000000FF800007FC000000FF800007FE00
-0000FF800007FE000000FF800007FE000000FF800007FE000000FF800007FE000000FF800007FE
-000000FF800007FC000000FF80000FFC000000FF80000FF8000000FF80001FF0000000FF80003F
-E0000000FF80007FC0000000FF8003FF00000000FFFFFFF800000000FFFFFFE000000000FF8007
-F800000000FF8001FC00000000FF8000FE00000000FF80007F00000000FF80007F80000000FF80
-003FC0000000FF80003FC0000000FF80003FE0000000FF80003FE0000000FF80003FE0000000FF
-80003FE0000000FF80003FE0000000FF80003FF0000000FF80003FF0000000FF80003FF0000000
-FF80003FF0000000FF80003FF0038000FF80003FF8038000FF80001FF8038000FF80001FF80300
-00FF80000FFC0700FFFFFF8003FE0E00FFFFFF8001FFFC00FFFFFF80001FF00039317EB03C>82
-D<001FF8018000FFFF038003FFFFC78007F007EF800F8000FF801F00007F803E00001F803E0000
-0F807C00000F807C00000780FC00000780FC00000780FC00000380FE00000380FE00000380FF00
-000000FFC00000007FF00000007FFF8000003FFFF800003FFFFF80001FFFFFF0000FFFFFF80007
-FFFFFE0003FFFFFF0000FFFFFF80003FFFFF800001FFFFC000001FFFE0000000FFE00000003FE0
-0000001FF00000000FF000000007F060000007F0E0000003F0E0000003F0E0000003F0E0000003
-E0F0000003E0F0000003E0F8000007C0FC000007C0FF00000F80FFC0001F00FBFC00FE00F1FFFF
-F800E03FFFF000C003FF800024317CB02D>I<7FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF
-007FC00FF801FF007E000FF8003F007C000FF8001F0078000FF8000F0078000FF8000F0070000F
-F8000700F0000FF8000780F0000FF8000780F0000FF8000780E0000FF8000380E0000FF8000380
-E0000FF8000380E0000FF8000380E0000FF800038000000FF800000000000FF800000000000FF8
-00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000
-000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800
-000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000000000
-0FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000
-0000000FF800000000000FF800000000000FF8000000007FFFFFFF0000007FFFFFFF0000007FFF
-FFFF000031307DAF38>I<FFFFFF8003FFFF80FFFFFF8003FFFF80FFFFFF8003FFFF8000FF8000
-0007C00000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF
-80000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003800000
-FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF800000038000
-00FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80000003
-800000FF80000003800000FF80000003800000FF800000038000007F800000038000007F800000
-070000007FC00000070000003FC000000E0000003FC000000E0000001FE000001C0000000FF000
-003800000007F800007000000003FC0001E000000000FF801FC0000000003FFFFF80000000000F
-FFFE000000000000FFE000000039317EB03E>I<FFFFFC0000FFFFFFFFFC0000FFFFFFFFFC0000
-FFFF03FF00000003C001FF000000038001FF800000078000FF800000070000FFC000000700007F
-C000000E00007FC000000E00007FE000001E00003FE000001C00003FF000003C00001FF0000038
-00001FF800003800000FF800007000000FFC000070000007FC0000E0000007FC0000E0000007FE
-0001E0000003FE0001C0000003FF0003C0000001FF000380000001FF800380000000FF80070000
-0000FFC00700000000FFC00F000000007FC00E000000007FE01E000000003FE01C000000003FF0
-3C000000001FF038000000001FF838000000000FF870000000000FF870000000000FFCF0000000
-0007FCE00000000007FFE00000000003FFC00000000003FFC00000000001FF800000000001FF80
-0000000000FF000000000000FF000000000000FF0000000000007E0000000000007E0000000000
-003C0000000000003C00000038317EB03D>I<00FFF0000003FFFE00000F803F80000FC00FE000
-1FE007F0001FE007F0001FE003F8000FC003FC00078003FC00000003FC00000003FC00000003FC
-00000003FC000000FFFC00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC003FC003
-FC007F8003FC007F8003FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF0007FC007F80
-0DFC003FC019FE001FE070FFF007FFE07FF000FF803FF024207E9F27>97
-D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800000007F800
-000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
-00000007F800000007F800000007F83FE00007F8FFFC0007FBE07F0007FF001F8007FE000FC007
-FC000FE007F80007F007F80007F807F80007F807F80003FC07F80003FC07F80003FC07F80003FE
-07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003
-FC07F80003FC07F80003FC07F80007F807F80007F807F80007F007FC000FE007FE000FC007E700
-3F8007C3C0FE000780FFF80007003FC00027327EB12D>I<000FFF00007FFFC001FC01F003F003
-F007E007F80FE007F81FC007F83FC003F03FC001E07F8000007F8000007F800000FF800000FF80
-0000FF800000FF800000FF800000FF800000FF800000FF8000007F8000007F8000007F8000003F
-C0001C3FC0001C1FC000380FE0003807E0007003F001E001FC07C0007FFF00000FF8001E207D9F
-24>I<0000000FC0000007FFC0000007FFC0000007FFC00000007FC00000003FC00000003FC000
-00003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0
-0000003FC00000003FC00000003FC00007F83FC0003FFF3FC000FE07BFC003F801FFC007E0007F
-C00FE0007FC01FC0003FC03FC0003FC03FC0003FC07F80003FC07F80003FC07F80003FC0FF8000
-3FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC07F80
-003FC07F80003FC07F80003FC03FC0003FC03FC0003FC01FC0003FC00FE0007FC007E000FFC003
-F003FFE001FC0F3FFE007FFE3FFE000FF03FFE27327DB12D>I<000FFC00007FFF8001FC0FC003
-F003E007E001F00FE001F81FC000FC3FC000FE3FC000FE7F80007E7F80007F7F80007FFF80007F
-FF80007FFFFFFFFFFFFFFFFFFF800000FF800000FF800000FF8000007F8000007F8000007F8000
-003FC000071FC000071FC0000E0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE002020
-7E9F25>I<0001FE00000FFF80001FC3C0007F07E000FE0FF001FE0FF001FC0FF003FC0FF003FC
-07E003FC018003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000FF
-FFFC00FFFFFC00FFFFFC0003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
-03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00
-0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00007FFF
-F0007FFFF0007FFFF0001C327EB119>I<001FF007C000FFFE3FE001F83F79F007E00FC3F00FE0
-0FE1F00FC007E0E01FC007F0001FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003F
-C007F8001FC007F0001FC007F0000FC007E0000FE00FE00007E00FC00003F83F000006FFFE0000
-0E1FF000000E000000001E000000001E000000001F000000001F800000001FFFFF80000FFFFFF0
-000FFFFFFC0007FFFFFE0003FFFFFF0003FFFFFF800FFFFFFFC01F00007FC07E00001FE07C0000
-0FE0FC000007E0FC000007E0FC000007E0FC000007E07E00000FC03E00000F803F00001F800FC0
-007E0007F803FC0001FFFFF000001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF80000
-00FFF80000000FF800000007F800000007F800000007F800000007F800000007F800000007F800
-000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
-07F80007F83FFE0007F8783F0007F8C03F8007F9801FC007FB001FC007FE001FE007FC001FE007
-FC001FE007FC001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
-E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3
-FFFF28327DB12D>I<03C00007E0000FF0001FF8001FF8001FF8001FF8000FF00007E00003C000
-00000000000000000000000000000000000000000000000000000001F800FFF800FFF800FFF800
-0FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80
-FFFF80FFFF8011337DB217>I<01F8000000FFF8000000FFF8000000FFF80000000FF800000007
-F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8000000
-07F800000007F800000007F800000007F800000007F800000007F801FFF807F801FFF807F801FF
-F807F8003F0007F8003C0007F800780007F800F00007F803C00007F807800007F80F000007F81E
-000007F878000007F8FC000007F9FE000007FBFE000007FFFF000007FE7F800007FC7FC00007F8
-3FC00007F01FE00007F00FF00007F00FF80007F007FC0007F003FC0007F001FE0007F000FF0007
-F000FF8007F0007F8007F0007FC0FFFF81FFFEFFFF81FFFEFFFF81FFFE27327EB12B>107
-D<01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F8
-0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
-0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
-0007F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117
->I<03F007F8001FE000FFF03FFE00FFF800FFF0783F01E0FC00FFF0C03F8300FE000FF1801FC6
-007F0007F3001FCC007F0007F6001FF8007F8007FC001FF0007F8007FC001FF0007F8007FC001F
-F0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F800
-1FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8
-001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007
-F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80
-FFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F800FFF03F
-FE00FFF0783F00FFF0C03F800FF1801FC007F3001FC007F6001FE007FC001FE007FC001FE007FC
-001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
-F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28207D9F
-2D>I<0007FC0000007FFFC00001FC07F00003F001F80007E000FC000FC0007E001FC0007F003F
-C0007F803F80003F807F80003FC07F80003FC07F80003FC0FF80003FE0FF80003FE0FF80003FE0
-FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE07F80003FC07F80003FC07F80003F
-C03FC0007F803FC0007F801FC0007F000FE000FE0007E000FC0003F803F80001FE0FF000007FFF
-C0000007FC000023207E9F28>I<01F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007FE001FC0
-07FC000FE007F8000FF007F80007F807F80007F807F80007FC07F80003FC07F80003FC07F80003
-FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F800
-03FC07F80007FC07F80007FC07F80007F807F80007F807F8000FF007FC000FE007FE001FC007FF
-003F8007FBC0FE0007F8FFF80007F83FC00007F800000007F800000007F800000007F800000007
-F800000007F800000007F800000007F800000007F800000007F800000007F8000000FFFFC00000
-FFFFC00000FFFFC00000272E7E9F2D>I<03F03F00FFF07FC0FFF1C3E0FFF187E00FF30FF007F6
-0FF007F60FF007FC07E007FC03C007FC000007FC000007F8000007F8000007F8000007F8000007
-F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000
-07F8000007F8000007F8000007F80000FFFFE000FFFFE000FFFFE0001C207E9F21>114
-D<01FF860007FFFE001F00FE003C003E0078001E0078000E00F8000E00F8000E00F8000E00FC00
-0000FF800000FFFC00007FFFC0007FFFF0003FFFF8001FFFFC0007FFFE0001FFFF00003FFF0000
-00FF8000003F8060001F80E0000F80E0000F80F0000F80F0000F00F8000F00FC001E00FE001C00
-FF807800F3FFF000C07F800019207D9F20>I<001C0000001C0000001C0000001C0000001C0000
-003C0000003C0000003C0000007C0000007C000000FC000001FC000003FC000007FC00001FFFFE
-00FFFFFE00FFFFFE0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC038003
-FC038003FC038003FC038003FC038003FC038003FC038001FC038001FC070000FE0700007F0E00
-003FFC000007F000192E7FAD1F>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003F
-E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
-1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
-001FE007F8001FE007F8001FE007F8001FE007F8003FE007F8003FE003F8007FE003F8007FE001
-FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F2D>I<FFFF801FFCFFFF801FFCFFFF80
-1FFC0FF80003C007F800038007FC00078003FC00070003FE000F0001FE000E0001FF000E0000FF
-001C0000FF001C00007F803800007F803800007FC07800003FC07000003FE0F000001FE0E00000
-1FF1E000000FF1C000000FF9C0000007FB80000007FB80000003FF00000003FF00000003FF0000
-0001FE00000001FE00000000FC00000000FC00000000780000000078000026207E9F2B>I<FFFF
-1FFFE07FF8FFFF1FFFE07FF8FFFF1FFFE07FF80FF000FE0007800FF800FE00078007F800FE0007
-0007F8007F00070003FC007F000E0003FC00FF800E0003FE00FF801E0001FE00FF801C0001FE01
-DFC01C0001FF01DFC03C0000FF03DFE0380000FF838FE07800007F838FE07000007F8707F07000
-007FC707F0F000003FCF07F8E000003FCE03F8E000001FEE03F9C000001FFC01FDC000001FFC01
-FFC000000FFC01FF8000000FF800FF80000007F800FF00000007F0007F00000007F0007F000000
-03F0007E00000003E0003E00000001E0003C00000001C0001C000035207E9F3A>I<7FFF807FFC
-7FFF807FFC7FFF807FFC03FE000F0001FE001E0000FF003C0000FF807800007FC07800003FE0F0
-00001FE1E000000FF3C000000FFF80000007FF00000003FE00000001FE00000000FF00000000FF
-80000000FFC0000001FFC0000003DFE00000078FF00000078FF800000F07FC00001E03FC00003C
-01FE00007800FF0000F000FF8000E0007FC001E0003FC0FFFC01FFFFFFFC01FFFFFFFC01FFFF28
-207F9F2B>I<FFFF801FFCFFFF801FFCFFFF801FFC0FF80003C007F800038007FC00078003FC00
-070003FE000F0001FE000E0001FF000E0000FF001C0000FF001C00007F803800007F803800007F
-C07800003FC07000003FE0F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB800000
-07FB80000003FF00000003FF00000003FF00000001FE00000001FE00000000FC00000000FC0000
-00007800000000780000000070000000007000000000F000000000E000000001E000007C01C000
-00FE03C00000FE03800000FE07800000FE0F000000FC1E000000787C0000003FF00000000FC000
-0000262E7E9F2B>I<3FFFFFF83FFFFFF83F800FF03E001FE03C003FE038003FC078007F807800
-FF807001FF007001FE007003FE007007FC000007F800000FF800001FF000001FE000003FC00000
-7FC00000FF801C00FF001C01FF001C03FE001C03FC001C07FC003C0FF8003C0FF000381FE00078
-3FE000F83FC001F87F8007F8FFFFFFF8FFFFFFF81E207E9F24>I E /Fn
-3 16 df<FFFFFFC0FFFFFFC01A027C8B23>0 D<0001FE00000007FF8000001E01E00000780078
-0000E0001C000180000600030000030006000001800C000000C00C000000C01800000060300000
-003030000000303000000030600000001860000000186000000018C00000000CC00000000CC000
-00000CC00000000CC00000000CC00000000CC00000000CC00000000CC00000000C600000001860
-00000018600000001830000000303000000030300000003018000000600C000000C00C000000C0
-06000001800300000300018000060000E0001C000078007800001E01E0000007FF80000001FE00
-00262B7DA02D>13 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC
-1FF80FF003C010127D9317>15 D E /Fo 83 125 df<001F83E000F06E3001C078780380F87803
-00F03007007000070070000700700007007000070070000700700007007000FFFFFF8007007000
-070070000700700007007000070070000700700007007000070070000700700007007000070070
-00070070000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>
-11 D<003F0000E0C001C0C00381E00701E00701E0070000070000070000070000070000070000
-FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0
-0700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000E0E001C1E00381
-E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E00700E00700
-E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
-E00700E07FE7FE1720809F19>I<70F8F8F8F8F8F8F87070707070707070707020202020200000
-00000070F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A04020402040208040804100810
-08201040200F0E7E9F17>I<0080008007E00C981084208260824081C087C08FC08FC086E080F0
-8078803F803FE01FF807FC00FE009E008E00870087F083F083F0838083808240864084208818B0
-07C000800080008010257DA117>36 D<70F8FCFC74040404080810102040060E7C9F0D>39
-D<0020004000800100020006000C000C00180018003000300030007000600060006000E000E000
-E000E000E000E000E000E000E000E000E000E0006000600060007000300030003000180018000C
-000C000600020001000080004000200B2E7DA112>I<800040002000100008000C000600060003
-00030001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E0
-00E000C000C000C001C001800180018003000300060006000C00080010002000400080000B2E7D
-A112>I<01800180018001800180C183F18F399C0FF003C003C00FF0399CF18FC1830180018001
-800180018010147DA117>I<70F8FCFC74040404080810102040060E7C840D>44
-D<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<000100030003000600060006000C000C
-000C00180018001800300030003000600060006000C000C000C001800180018003000300030006
-00060006000C000C000C00180018001800300030003000600060006000C000C000C000102D7DA1
-17>I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F003C0F003C0
-F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0700380700380700380
-7807803807001806001C0E000E1C0003F000121F7E9D17>I<018003800F80F380038003800380
-038003800380038003800380038003800380038003800380038003800380038003800380038003
-80038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00200700400780800780F007C0F803C0F8
-03C0F803C02007C00007C0000780000780000F00000E00001C0000380000700000600000C00001
-80000300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00
-100E00200F00780F80780780780780380F80000F80000F00000F00000E00001C0000380003F000
-003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F00780400780400F00
-200E001C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E
-00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E00400E00C00E
-00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<1803001F
-FE001FFC001FF8001FE00010000010000010000010000010000010000011F000161C00180E0010
-07001007800003800003800003C00003C00003C07003C0F003C0F003C0E0038040038040070020
-0600100E000C380003E000121F7E9D17>I<007C000182000701000E03800C07801C0780380300
-380000780000700000700000F1F000F21C00F40600F80700F80380F80380F003C0F003C0F003C0
-F003C0F003C07003C07003C07003803803803807001807000C0E00061C0001F000121F7E9D17>
-I<4000007FFFC07FFF807FFF804001008002008002008004000008000008000010000020000020
-0000400000400000C00000C00001C0000180000380000380000380000380000780000780000780
-00078000078000078000078000030000121F7D9D17>I<03F0000C0C0010060030030020018060
-01806001806001807001807803003E03003F06001FC8000FF00003F80007FC000C7E00103F0030
-0F806003804001C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F00012
-1F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003C0F003C0
-F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C0000380000380000380000700
-300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F870000000000000
-0000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F0F8F878080808
-101010202040051D7C930D>I<0FC0307040384038E03CF03CF03C603C0038007000E000C00180
-0180010003000200020002000200020002000000000000000000000007000F800F800F8007000E
-207D9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0000009E000
-0009E0000009E0000010F0000010F0000010F00000207800002078000020780000403C0000403C
-0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F0002000780020007800200
-0780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007
-801F0007800F0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007801E00
-07803C0007FFF00007803C0007801E0007800F0007800F8007800780078007C0078007C0078007
-C0078007C0078007C00780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>
-I<000FC040007030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C00
-00407C00004078000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
-000000F8000000780000007C0000407C0000403C0000401C0000401E0000800E00008007000100
-0380020001C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E0007800700
-07800380078003C0078001E0078001E0078001F0078000F0078000F0078000F8078000F8078000
-F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078000F00780
-01E0078001E0078003C0078003800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFF
-FF000F800F00078003000780030007800100078001800780008007800080078000800780808007
-80800007808000078080000781800007FF80000781800007808000078080000780800007808000
-078000200780002007800020078000400780004007800040078000C0078000C0078001800F800F
-80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F0007800300078003000780010007800180078000
-80078000800780008007800080078080000780800007808000078080000781800007FF80000781
-800007808000078080000780800007808000078000000780000007800000078000000780000007
-80000007800000078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E003
-8002E0070001E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000
-F8000000F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001
-E03C0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820000F
-E0001E217D9F24>I<FFF8FFF80F800F8007800F0007800F0007800F0007800F0007800F000780
-0F0007800F0007800F0007800F0007800F0007800F0007800F0007FFFF0007800F0007800F0007
-800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
-07800F0007800F000F800F80FFF8FFF81D1F7E9E22>I<FFFC0FC0078007800780078007800780
-078007800780078007800780078007800780078007800780078007800780078007800780078007
-8007800FC0FFFC0E1F7F9E10>I<0FFFC0007C00003C00003C00003C00003C00003C00003C0000
-3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000
-3C00003C00203C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>I<
-FFFC0FFC0FC003E007800180078001000780020007800400078008000780100007802000078040
-0007808000078100000783000007878000078F80000793C0000791E00007A1E00007C0F0000780
-F0000780780007803C0007803C0007801E0007801E0007800F000780078007800780078007C00F
-C007E0FFFC3FFC1E1F7E9E23>I<FFFE000FC00007800007800007800007800007800007800007
-800007800007800007800007800007800007800007800007800007800007800007800007800207
-800207800207800207800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>I<FF8000
-1FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E0004F0004E0004F000470
-008F000470008F000470008F000438010F000438010F000438010F00041C020F00041C020F0004
-1C020F00040E040F00040E040F00040E040F000407080F000407080F000407080F000403900F00
-0403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F7E9E
-2A>I<FF803FF807C007C007C0038005E0010005E0010004F001000478010004780100043C0100
-043C0100041E0100040F0100040F010004078100040781000403C1000401E1000401E1000400F1
-000400F1000400790004003D0004003D0004001F0004001F0004000F0004000700040007000E00
-03001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E000F000F000E00
-07001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F8
-0001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C0
-3C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>I<
-FFFFE0000F80780007801C0007801E0007800F0007800F8007800F8007800F8007800F8007800F
-8007800F8007800F0007801E0007801C000780780007FFE0000780000007800000078000000780
-00000780000007800000078000000780000007800000078000000780000007800000078000000F
-C00000FFFC0000191F7E9E1F>I<FFFF80000F80F0000780780007803C0007801E0007801E0007
-801F0007801F0007801F0007801F0007801E0007801E0007803C00078078000780F00007FF8000
-0781C0000780E0000780F0000780700007807800078078000780780007807C0007807C0007807C
-0007807C0407807E0407803E040FC01E08FFFC0F10000003E01E207E9E21>82
-D<07E0800C1980100780300380600180600180E00180E00080E00080E00080F00000F000007800
-007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C08001C08001C08001
-C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F
-0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F000000
-0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
-000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800007FFFE001C1F7E
-9E21>I<FFFC3FF80FC007C0078003800780010007800100078001000780010007800100078001
-000780010007800100078001000780010007800100078001000780010007800100078001000780
-01000780010007800100078001000780010007800100038002000380020001C0020001C0040000
-E008000070180000382000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F80006007
-8000400780004003C0008003C0008003C0008001E0010001E0010001F0010000F0020000F00200
-00F806000078040000780400003C0800003C0800003C0800001E1000001E1000001F3000000F20
-00000F20000007C0000007C0000007C000000380000003800000038000000100001F207F9E22>
-I<FFF07FF81FF01F800FC007C00F00078003800F00078001000F0007C00100078007C002000780
-07C00200078007C0020003C009E0040003C009E0040003C009E0040003E010F00C0001E010F008
-0001E010F0080001F02078080000F02078100000F02078100000F0403C10000078403C20000078
-403C20000078C03E2000003C801E4000003C801E4000003C801E4000001F000F8000001F000F80
-00001F000F8000001E00078000000E00070000000E00070000000C000300000004000200002C20
-7F9E2F>I<7FF83FF80FE00FC007C0070003C0020001E0040001F00C0000F0080000781000007C
-1000003C2000003E4000001E4000000F8000000F8000000780000003C0000007E0000005E00000
-09F0000018F8000010780000207C0000603C0000401E0000801F0001800F0001000780020007C0
-070003C01F8007E0FFE01FFE1F1F7F9E22>I<FFF003FF1F8000F80F8000600780004007C00040
-03E0008001E0008001F0010000F0030000F80200007C0400003C0400003E0800001E0800001F10
-00000FB0000007A0000007C0000003C0000003C0000003C0000003C0000003C0000003C0000003
-C0000003C0000003C0000003C0000003C0000007C000007FFE00201F7F9E22>I<7FFFF87C00F8
-7000F06001E04001E0C003C0C003C0800780800F80800F00001E00001E00003C00003C00007800
-00F80000F00001E00001E00003C00403C0040780040F80040F000C1E000C1E00083C00183C0018
-780038F801F8FFFFF8161F7D9E1C>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>I<08041008201020104020
-4020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE060606060606060606060606
-0606060606060606060606060606060606060606060606060606060606FEFE072D7FA10D>I<08
-1020204040808080B8FCFC7C38060E7D9F0D>96 D<1FE000303000781800781C00300E00000E00
-000E00000E0000FE00078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E10386720
-0F83C014147E9317>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00
-780E00780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C
-1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C020E0C03F010147E
-9314>I<000380003F800003800003800003800003800003800003800003800003800003800003
-8003E380061B801C0780380380380380700380700380F00380F00380F00380F00380F00380F003
-807003807003803803803807801C07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E0038
-0700380700700700700380F00380F00380FFFF80F00000F00000F0000070000070000038008018
-00800C010007060001F80011147F9314>I<007C00C6018F038F07060700070007000700070007
-000700FFF007000700070007000700070007000700070007000700070007000700070007000700
-07007FF01020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F0078
-0F00380E001C1C001E380033E0002000002000003000003000003FFE001FFF800FFFC03001E060
-0070C00030C00030C00030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE0000
-0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E8180
-0F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
-0E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C0000000000000000000000
-00000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
-00FFC00A1F809E0C>I<00E001F001F001F000E0000000000000000000000000007007F000F000
-700070007000700070007000700070007000700070007000700070007000700070007000700070
-00706070F060F0C061803F000C28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00
-000E00000E00000E00000E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30
-000E70000EF8000F38000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF81520
-7F9F18>I<0E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
-0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F
-01F000FE618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E
-00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
-0E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C0
-0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
-0E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C07000E07000E0F000
-F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C0380070E0001F8001414
-7F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E00780E00780E00780E00780E
-00780E00780E00700E00F00E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E
-00000E00000E00000E0000FFE000151D7F9319>I<03E0800619801C05803C0780380380780380
-700380F00380F00380F00380F00380F00380F003807003807803803803803807801C0B800E1380
-03E380000380000380000380000380000380000380000380000380003FF8151D7E9318>I<0E78
-FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F
-147F9312>I<1F9030704030C010C010C010E00078007F803FE00FF00070803880188018C018C0
-18E030D0608F800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E
-000E000E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E
-01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
-01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E01C00C00E0080
-0E00800E008007010007010003820003820003820001C40001C40001EC0000E80000E800007000
-00700000700000200015147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380
-400E03C0400707C0800704C0800704E080038861000388710003C8730001D0320001D03A0000F0
-3C0000E01C0000E01C0000601800004008001E147F9321>I<7FC3FC0F01E00701C00701800381
-0001C20000E40000EC00007800003800003C00007C00004E000087000107000303800201C00601
-E01E01E0FF07FE1714809318>I<FF83F81E01E01C00C00E00800E00800E008007010007010003
-820003820003820001C40001C40001EC0000E80000E80000700000700000700000200000200000
-4000004000004000F08000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40
-384078407000E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FF
-FFFFFFFFF02C01808C2D>124 D E /Fp 25 119 df<0F003F807FC07FE0FFF0FFF0FFF8FFF87F
-F87FF83FF80F3800380038003800700070007000E000E001E001C00380038007000E001C003800
-10000D1D79BB1B>39 D<FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FF
-FFFF8019087F9620>45 D<0000001FFE000060000003FFFFE000E000001FFFFFF801E000007FFF
-FFFE03E00001FFFC00FF07E00007FFC0001FCFE0000FFF000007FFE0001FFC000001FFE0003FF0
-000000FFE0007FE00000007FE000FFC00000003FE001FF800000001FE003FF000000000FE007FF
-000000000FE00FFE0000000007E00FFE0000000007E01FFC0000000003E01FFC0000000003E03F
-F80000000003E03FF80000000001E03FF80000000001E07FF80000000001E07FF80000000001E0
-7FF00000000000007FF0000000000000FFF0000000000000FFF0000000000000FFF00000000000
-00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000
-0000FFF0000000000000FFF0000000000000FFF00000000000007FF00000000000007FF0000000
-0000007FF80000000000007FF80000000001E03FF80000000001E03FF80000000001E03FF80000
-000001E01FFC0000000001E01FFC0000000003C00FFE0000000003C00FFE0000000003C007FF00
-000000078003FF00000000078001FF800000000F0000FFC00000001F00007FE00000003E00003F
-F00000007C00001FFC000000F800000FFF000003F0000007FFC0000FE0000001FFFC007F800000
-007FFFFFFF000000001FFFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67
-D<FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0007FF00001FFF0007FF0
-00003FF8007FF000000FF8007FF0000007F8007FF0000003F8007FF0000001F8007FF0000000F8
-007FF0000000F8007FF000000078007FF000000078007FF000000078007FF000000078007FF000
-78007C007FF00078003C007FF00078003C007FF00078003C007FF00078003C007FF00078000000
-7FF000F80000007FF000F80000007FF001F80000007FF007F80000007FFFFFF80000007FFFFFF8
-0000007FFFFFF80000007FFFFFF80000007FF007F80000007FF001F80000007FF000F80000007F
-F000F80000007FF000780000007FF00078000F007FF00078000F007FF00078000F007FF0007800
-1E007FF00078001E007FF00000001E007FF00000001E007FF00000003E007FF00000003E007FF0
-0000003C007FF00000003C007FF00000007C007FF00000007C007FF0000000FC007FF0000001FC
-007FF0000003F8007FF0000007F8007FF000000FF8007FF000003FF8007FF00003FFF8FFFFFFFF
-FFFFF8FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0383B7CBA40>69
-D<FFFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0007FF00007FFC0007FF0
-00007FE0007FF000003FE0007FF000000FE0007FF0000007E0007FF0000007E0007FF0000003E0
-007FF0000003E0007FF0000001E0007FF0000001E0007FF0000001E0007FF0000001E0007FF000
-0001F0007FF000F000F0007FF000F000F0007FF000F000F0007FF000F000F0007FF000F0000000
-7FF000F00000007FF001F00000007FF001F00000007FF003F00000007FF00FF00000007FFFFFF0
-0000007FFFFFF00000007FFFFFF00000007FFFFFF00000007FF00FF00000007FF003F00000007F
-F001F00000007FF001F00000007FF000F00000007FF000F00000007FF000F00000007FF000F000
-00007FF000F00000007FF000F00000007FF000000000007FF000000000007FF000000000007FF0
-00000000007FF000000000007FF000000000007FF000000000007FF000000000007FF000000000
-007FF000000000007FF000000000007FF000000000007FF000000000007FF000000000FFFFFFFE
-000000FFFFFFFE000000FFFFFFFE000000FFFFFFFE000000343B7CBA3D>I<0000001FFC0000C0
-00000003FFFFC001C00000001FFFFFF003C00000007FFFFFFC07C0000001FFFC00FE0FC0000007
-FFC0001F9FC000000FFE000007FFC000003FF8000003FFC000007FF0000000FFC00000FFE00000
-007FC00001FFC00000007FC00001FF800000003FC00003FF000000001FC00007FE000000001FC0
-000FFE000000000FC0000FFC000000000FC0001FFC0000000007C0001FFC0000000007C0003FF8
-0000000007C0003FF80000000003C0003FF80000000003C0007FF80000000003C0007FF8000000
-0003C0007FF0000000000000007FF000000000000000FFF000000000000000FFF0000000000000
-00FFF000000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF0
-00000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000001F
-FFFFFF807FF000001FFFFFFF807FF000001FFFFFFF807FF800001FFFFFFF807FF800000001FFC0
-003FF800000001FFC0003FF800000001FFC0003FF800000001FFC0001FFC00000001FFC0001FFC
-00000001FFC0000FFE00000001FFC0000FFE00000001FFC00007FF00000001FFC00003FF000000
-01FFC00001FF80000001FFC00001FFC0000001FFC00000FFE0000001FFC000007FF0000003FFC0
-00003FFC000003FFC000000FFF000007FFC0000007FFC0001FBFC0000001FFFC00FF1FC0000000
-7FFFFFFE0FC00000001FFFFFF803C000000003FFFFE000C0000000001FFE00000000413D7BBB4C
->I<0003FF000300003FFFE0070000FFFFFC0F0001FFFFFE1F0003FE00FF3F0007F0001FFF000F
-E00007FF001FC00001FF003F800000FF003F800000FF007F0000007F007F0000003F007F000000
-3F00FF0000001F00FF0000001F00FF0000001F00FF8000000F00FF8000000F00FFC000000F00FF
-C000000F00FFF0000000007FFC000000007FFF800000003FFFF80000003FFFFFC000001FFFFFFC
-00001FFFFFFF00000FFFFFFFC00007FFFFFFF00003FFFFFFF80000FFFFFFFC00007FFFFFFE0000
-1FFFFFFE000003FFFFFF0000001FFFFF80000001FFFF800000000FFFC000000003FFC000000000
-FFC0000000007FE0000000007FE0700000003FE0F00000003FE0F00000001FE0F00000001FE0F0
-0000001FE0F80000001FE0F80000001FC0F80000001FC0FC0000001FC0FC0000003F80FE000000
-3F80FF0000003F00FFC000007F00FFE00000FE00FFFC0001FC00FDFFC00FF800F87FFFFFF000F0
-1FFFFFC000E003FFFF0000C0003FF800002B3D7BBB36>83 D<FFFFFFF8001FFFFF80FFFFFFF800
-1FFFFF80FFFFFFF8001FFFFF80FFFFFFF8001FFFFF80007FF00000001F8000007FF00000000F00
-00007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007F
-F00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000
-000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F00
-00007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007F
-F00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000
-000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F00
-00007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007F
-F00000000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000007FF00000
-000F0000007FF00000000F0000007FF00000000F0000007FF00000000F0000003FF00000001E00
-00003FF00000001E0000003FF80000001E0000001FF80000003C0000001FF80000003C0000000F
-FC0000007800000007FC000000F800000007FE000001F000000003FF000003F000000001FF8000
-07E000000000FFE0001FC0000000003FFC01FF80000000001FFFFFFE000000000007FFFFF80000
-00000000FFFFE00000000000000FFE00000000413C7CBA4A>85 D<FFFFFFE00000FFFFF0FFFFFF
-E00000FFFFF0FFFFFFE00000FFFFF0FFFFFFE00000FFFFF000FFF000000003F000007FF0000000
-01E000007FF800000001E000007FF800000003E000003FF800000003C000003FFC00000007C000
-001FFC000000078000001FFE0000000F8000000FFE0000000F0000000FFF0000000F00000007FF
-0000001E00000007FF0000001E00000007FF8000003E00000003FF8000003C00000003FFC00000
-7C00000001FFC000007800000001FFE000007800000000FFE00000F000000000FFF00000F00000
-0000FFF00001F0000000007FF00001E0000000007FF80003E0000000003FF80003C0000000003F
-FC0007C0000000001FFC000780000000001FFE000780000000001FFE000F80000000000FFE000F
-00000000000FFF001F000000000007FF001E000000000007FF803E000000000003FF803C000000
-000003FFC03C000000000003FFC07C000000000001FFC078000000000001FFE0F8000000000000
-FFE0F0000000000000FFF1F00000000000007FF1E00000000000007FF9E00000000000003FFBC0
-0000000000003FFFC00000000000003FFFC00000000000001FFF800000000000001FFF80000000
-0000000FFF000000000000000FFF0000000000000007FE0000000000000007FE00000000000000
-07FE0000000000000003FC0000000000000003FC0000000000000001F80000000000000001F800
-00000000000000F000000000443B7EBA49>I<003FFE00000001FFFFE0000007FFFFF800000FE0
-07FC00000FF001FE00001FF800FF00001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE0
-0007E0003FE00003C0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000
-FFFFE000001FFFFFE000007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0
-003FE0003FE0007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000FF80
-003FE000FF80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE007FFFE0FFF
-E001FFF807FFE0003FE000FFE02B267DA52F>97 D<0001FFF000000FFFFE00003FFFFF8000FF80
-1FC001FE003FC003FC007FE007F8007FE00FF0007FE01FF0007FE03FE0003FC03FE0001F807FE0
-000F007FC00000007FC00000007FC0000000FFC0000000FFC0000000FFC0000000FFC0000000FF
-C0000000FFC0000000FFC0000000FFC00000007FC00000007FC00000007FE00000007FE0000000
-3FE00000003FF00000F01FF00000F00FF80001E007F80001E003FC0003C001FF000F8000FFC03F
-00003FFFFE00000FFFF8000001FFC00024267DA52B>99 D<000000003F800000003FFF80000000
-3FFF800000003FFF800000003FFF8000000001FF8000000000FF8000000000FF8000000000FF80
-00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
-00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
-0000FF80FF80000FFFF0FF80003FFFFCFF8000FFC03FFF8001FE000FFF8003FC0003FF8007F800
-01FF800FF00000FF801FF00000FF803FE00000FF803FE00000FF807FE00000FF807FC00000FF80
-7FC00000FF807FC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC000
-00FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF807FC00000FF807FC00000FF80
-7FC00000FF803FE00000FF803FE00000FF801FE00000FF800FF00001FF8007F00003FF8003F800
-07FF8001FE001FFFC000FF807EFFFE007FFFF8FFFE000FFFE0FFFE0001FF00FFFE2F3C7DBB36>
-I<0001FF8000000FFFF000003FFFFC0000FF81FE0003FE007F8007F8003F800FF8001FC00FF000
-0FE01FE0000FE03FE0000FF03FE00007F07FC00007F07FC00007F87FC00007F8FFC00007F8FFC0
-0007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFC0000000FFC0000000FFC0000000FFC00000007F
-C00000007FC00000007FC00000003FE00000003FE00000781FE00000781FF00000780FF00000F0
-07F80001F003FC0003E001FE000FC000FFC07F80003FFFFE00000FFFF8000000FFC00025267DA5
-2C>I<00FE00000000FFFE00000000FFFE00000000FFFE00000000FFFE0000000007FE00000000
-03FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00
-00000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00000000
-03FE0000000003FE0000000003FE0000000003FE00FF800003FE03FFF00003FE0FFFF80003FE1E
-03FC0003FE3801FE0003FE6001FF0003FEC000FF0003FFC000FF8003FF8000FF8003FF0000FF80
-03FF0000FF8003FF0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE00
-00FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80
-03FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE00
-00FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80FFFFF83FFFFEFFFFF83FFFFE
-FFFFF83FFFFEFFFFF83FFFFE2F3C7CBB36>104 D<01E00007F8000FFC000FFC001FFE001FFE00
-1FFE001FFE000FFC000FFC0007F80001E000000000000000000000000000000000000000000000
-00000000000000000000000000FE00FFFE00FFFE00FFFE00FFFE0007FE0003FE0003FE0003FE00
-03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
-03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00FFFFF0
-FFFFF0FFFFF0FFFFF0143D7DBC1A>I<00FE00FFFE00FFFE00FFFE00FFFE0007FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00FFFFF8FFFFF8FFFFF8FFFF
-F8153C7DBB1A>108 D<01FC007FC0000FF80000FFFC03FFF8007FFF0000FFFC0FFFFC01FFFF80
-00FFFC1F03FE03E07FC000FFFC3800FF07001FE00007FC7000FF8E001FF00003FCC0007F98000F
-F00003FDC0007FB8000FF00003FD80007FF0000FF80003FF00007FE0000FF80003FF00007FE000
-0FF80003FF00007FE0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00007FC0
-000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00007F
-C0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE0000
-7FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00
-007FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE
-00007FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF80003FE00007FC0000FF800FF
-FFF81FFFFF03FFFFE0FFFFF81FFFFF03FFFFE0FFFFF81FFFFF03FFFFE0FFFFF81FFFFF03FFFFE0
-4B267CA552>I<01FC00FF8000FFFC03FFF000FFFC0FFFF800FFFC1E03FC00FFFC3801FE0007FC
-6001FF0003FCC000FF0003FDC000FF8003FD8000FF8003FF0000FF8003FF0000FF8003FF0000FF
-8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
-0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
-8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
-0000FF8003FE0000FF8003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFEFFFFF83FFF
-FE2F267CA536>I<0001FFC00000000FFFF80000007FFFFF000000FF80FF800003FE003FE00007
-F8000FF0000FF00007F8000FF00007F8001FE00003FC003FE00003FE003FE00003FE007FC00001
-FF007FC00001FF007FC00001FF007FC00001FF00FFC00001FF80FFC00001FF80FFC00001FF80FF
-C00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF807FC00001
-FF007FC00001FF007FC00001FF003FE00003FE003FE00003FE001FE00003FC001FF00007FC000F
-F00007F80007F8000FF00003FE003FE00000FF80FF8000007FFFFF0000000FFFF800000001FFC0
-000029267DA530>I<00FE01FF0000FFFE1FFFF000FFFE7FFFFC00FFFEFC07FE00FFFFF001FF00
-07FFC0007F8003FF00003FC003FE00003FE003FE00001FF003FE00001FF803FE00000FF803FE00
-000FFC03FE00000FFC03FE000007FC03FE000007FE03FE000007FE03FE000007FE03FE000007FE
-03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FC03FE00
-000FFC03FE00000FFC03FE00000FFC03FE00000FF803FE00001FF003FE00001FF003FF00003FE0
-03FF80007FC003FFC000FF8003FFE001FF0003FEFC07FE0003FE7FFFF80003FE1FFFE00003FE03
-FE000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00000000
-03FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00
-000000FFFFF8000000FFFFF8000000FFFFF8000000FFFFF80000002F377DA536>I<01FC03F000
-FFFC0FFC00FFFC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FCC0FFC003FD80FFC003FD80FF
-C003FF807F8003FF003F0003FF001E0003FF00000003FE00000003FE00000003FE00000003FE00
-000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE
-00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003
-FE00000003FE000000FFFFFC0000FFFFFC0000FFFFFC0000FFFFFC000022267DA528>114
-D<003FF07003FFFEF007FFFFF01FC01FF03F0003F03E0001F07C0001F07C0000F0FC0000F0FC00
-00F0FE0000F0FF000000FFC00000FFFC00007FFFF0003FFFFE003FFFFF801FFFFFC00FFFFFE003
-FFFFF000FFFFF8001FFFFC00007FFC000007FE700001FEF00000FEF000007EF800007EF800007E
-FC00007EFC00007CFE0000FCFF0000F8FF8001F0FFF00FE0F9FFFFC0F07FFF00C01FF8001F267D
-A526>I<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F00
-00003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF0FFFF
-FFF0FFFFFFF0FFFFFFF001FF000001FF000001FF000001FF000001FF000001FF000001FF000001
-FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF0000
-01FF000001FF000001FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF00
-3C00FF007800FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377EB626>I<00FE00
-003F80FFFE003FFF80FFFE003FFF80FFFE003FFF80FFFE003FFF8007FE0001FF8003FE0000FF80
-03FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE00
-00FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80
-03FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE00
-00FF8003FE0000FF8003FE0001FF8003FE0001FF8003FE0003FF8001FE0003FF8001FE0006FF80
-00FF000CFFC0007F8078FFFE003FFFF0FFFE001FFFE0FFFE0003FF80FFFE2F267CA536>I<FFFF
-F001FFFCFFFFF001FFFCFFFFF001FFFCFFFFF001FFFC03FE00001F8003FF00001F0001FF00001E
-0001FF80003E0000FF80003C0000FF80003C00007FC0007800007FC0007800007FE000F800003F
-E000F000003FF001F000001FF001E000001FF803E000000FF803C000000FFC03C0000007FC0780
-000007FC0780000007FE0F80000003FE0F00000003FF1F00000001FF1E00000001FFBE00000000
-FFBC00000000FFFC000000007FF8000000007FF8000000007FF8000000003FF0000000003FF000
-0000001FE0000000001FE0000000000FC0000000000FC000000000078000002E267EA533>I
-E end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300
-TeXDict begin
-%%EndSetup
-%%Page: 1 1
-bop 701 942 a Fp(User's)32 b(Guide)932 1067 y(to)154 1191 y(p)s(cl-cvs)i(-)e
-(the)g(Emacs)f(F)-8 b(ron)m(t-End)31 b(to)i(CVS)703 1378 y
-Fo(release)16 b(1.05-CVS-$Name: $)827 1627 y(P)o(er)c(Cederqvist)720
-1876 y(last)g(up)q(dated)h(20)f(No)o(v)f(1995)p eop
-%%Page: 2 2
-bop 0 1814 a Fo(Cop)o(yrigh)o(t)226 1813 y(c)214 1814 y Fn(\015)15
-b Fo(1992)f(P)o(er)h(Cederqvist)0 1951 y(P)o(ermission)e(is)g(gran)o(ted)f
-(to)f(mak)o(e)h(and)h(distribute)h(v)o(erbatim)e(copies)h(of)f(this)h(man)o
-(ual)g(pro)o(vided)g(the)f(cop)o(yrigh)o(t)0 2014 y(notice)k(and)f(this)h(p)q
-(ermission)h(notice)e(are)g(preserv)o(ed)h(on)f(all)h(copies.)0
-2151 y(P)o(ermission)f(is)f(gran)o(ted)f(to)h(cop)o(y)g(and)g(distribute)h
-(mo)q(di\014ed)h(v)o(ersions)e(of)f(this)i(man)o(ual)f(under)h(the)f
-(conditions)0 2213 y(for)20 b(v)o(erbatim)g(cop)o(ying,)i(pro)o(vided)f(also)
-g(that)f(the)g(section)h(en)o(titled)h(\\GNU)e(General)h(Public)h(License")g
-(is)0 2275 y(included)14 b(exactly)e(as)f(in)i(the)f(original,)h(and)e(pro)o
-(vided)i(that)e(the)g(en)o(tire)h(resulting)h(deriv)o(ed)g(w)o(ork)d(is)i
-(distributed)0 2337 y(under)k(the)f(terms)g(of)g(a)f(p)q(ermission)j(notice)f
-(iden)o(tical)h(to)e(this)g(one.)0 2474 y(P)o(ermission)20
-b(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f(distribute)i(translations)f(of)f
-(this)h(man)o(ual)f(in)o(to)h(another)f(language,)0 2537 y(under)f(the)f(ab)q
-(o)o(v)o(e)f(conditions)j(for)d(mo)q(di\014ed)i(v)o(ersions,)f(except)h(that)
-e(the)h(section)h(en)o(titled)g(\\GNU)f(General)0 2599 y(Public)i(License")f
-(and)f(this)g(p)q(ermission)i(notice)e(ma)o(y)f(b)q(e)i(included)h(in)f
-(translations)f(appro)o(v)o(ed)f(b)o(y)h(the)g(F)l(ree)0 2661
-y(Soft)o(w)o(are)d(F)l(oundation)h(instead)h(of)f(in)h(the)f(original)h
-(English.)p eop
-%%Page: 1 3
-bop 0 -58 a Fo(Chapter)15 b(1:)k(Installation)1470 b(1)0 183
-y Fm(1)41 b(Installation)62 371 y Fo(This)17 b(section)g(describ)q(es)h(the)f
-(installation)h(of)e(p)q(cl-cvs,)i(the)f(GNU)f(Emacs)g(CVS)h(fron)o(t-end.)23
-b(Y)l(ou)17 b(should)0 434 y(install)j(not)e(only)h(the)g(elisp)h(\014les)f
-(themselv)o(es,)g(but)g(also)f(the)h(on-line)h(do)q(cumen)o(tation)f(so)f
-(that)g(y)o(our)g(users)0 496 y(will)d(kno)o(w)e(ho)o(w)g(to)g(use)h(it.)20
-b(Y)l(ou)13 b(can)h(create)f(t)o(yp)q(eset)h(do)q(cumen)o(tation)g(from)e
-(the)i(\014le)h(`)p Fl(pcl-cvs.texinfo)p Fo(')10 b(as)0 558
-y(w)o(ell)15 b(as)e(an)h(on-line)h(info)f(\014le.)21 b(The)14
-b(follo)o(wing)g(steps)g(are)f(also)h(describ)q(ed)h(in)g(the)f(\014le)h(`)p
-Fl(INSTALL)p Fo(')d(in)i(the)g(source)0 620 y(directory)l(.)0
-847 y Fk(1.1)33 b(Installation)16 b(of)f(the)g(p)r(cl-cvs)h(program)25
-984 y Fo(1.)29 b(P)o(ossibly)13 b(edit)g(the)f(\014le)h(`)p
-Fl(Makefile)p Fo(')d(to)i(re\015ect)g(the)g(situation)h(at)e(y)o(our)h(site.)
-19 b(W)l(e)12 b(sa)o(y)g Fl(")p Fo(p)q(ossibly)p Fl(")h Fo(b)q(ecause)90
-1046 y(the)j(v)o(ersion)f(of)h(p)q(cl-cvs)h(included)h(with)e(CVS)g(uses)f(a)
-h(con\014guration)f(mec)o(hanism)i(in)o(tegrated)e(with)h(the)90
-1109 y(o)o(v)o(erall)e(mec)o(hanisms)g(used)g(b)o(y)g(the)f(CVS)h(build)i
-(and)e(install)h(pro)q(cedures.)20 b(Th)o(us)13 b(the)h(\014le)h
-Fl(Makefile)d Fo(will)90 1171 y(b)q(e)k(generated)f(automatically)h(from)f
-(the)g(\014le)h Fl(Makefile.in)p Fo(,)e(and)h(it)h(should)g(not)f(b)q(e)h
-(necessary)g(to)e(edit)90 1233 y(it)h(further.)90 1308 y(If)20
-b(y)o(ou)e(do)i(ha)o(v)o(e)e(to)h(edit)h(the)f(`)p Fl(Makefile)p
-Fo(',)f(the)i(only)g(things)f(y)o(ou)g(ha)o(v)o(e)g(to)g(c)o(hange)g(is)h
-(the)f(de\014nition)90 1370 y(of)h Fl(lispdir)e Fo(and)j Fl(infodir)p
-Fo(.)33 b(The)20 b(elisp)h(\014les)g(will)h(b)q(e)f(copied)g(to)e
-Fl(lispdir)p Fo(,)h(and)g(the)g(info)g(\014le\(s\))h(to)90
-1433 y Fl(infodir)p Fo(.)25 1508 y(2.)29 b(Con\014gure)15 b(p)q(cl-cvs.el)90
-1582 y(There)i(are)f(a)h(couple)h(of)e(pathnames)h(that)f(y)o(ou)g(ha)o(v)o
-(e)h(to)f(c)o(hec)o(k)h(to)f(mak)o(e)g(sure)h(that)f(they)h(matc)o(h)f(y)o
-(our)90 1645 y(system.)j(They)d(app)q(ear)f(early)h(in)g(the)f(\014le)h(`)p
-Fl(pcl-cvs.el)p Fo('.)90 1720 y Fj(NOTE:)f Fo(If)h(y)o(our)f(system)g(is)i
-(running)g(emacs)f(18.57)e(or)h(earlier)i(y)o(ou)f(MUST)f(uncommen)o(t)h(the)
-g(line)i(that)90 1782 y(sa)o(ys:)210 1847 y Fl(\(setq)23 b
-(delete-exited-processes)e(nil\))90 1922 y Fo(Setting)12 b
-Fl(delete-exited-processes)c Fo(to)j Fl(nil)g Fo(w)o(orks)f(around)i(a)f(bug)
-h(in)g(emacs)f(that)g(causes)h(it)g(to)e(dump)90 1984 y(core.)20
-b(The)15 b(bug)h(w)o(as)e(\014xed)i(in)g(emacs)f(18.58.)25
-2059 y(3.)29 b(Release)16 b(1.05)e(and)h(later)h(of)e(p)q(cl-cvs)j(requires)f
-(parts)e(of)h(the)g(Elib)h(library)l(,)g(v)o(ersion)f(1.0)g(or)f(later.)20
-b(Elib)c(is)90 2121 y(a)o(v)m(ailable)g(via)f(anon)o(ymous)f(ftp)g(from)f
-(prep.ai.mit.edu)i(in)h(`)p Fl(pub/gnu/elib-1.0.tar.g)o(z)p
-Fo(',)11 b(and)k(from)e(a)90 2183 y(lot)i(of)g(other)g(sites)g(that)g(mirror)
-g(prep.)20 b(Get)15 b(Elib,)h(and)f(install)i(it,)e(b)q(efore)g(pro)q
-(ceeding.)90 2258 y Fj(NOTE:)f Fo(The)h(v)o(ersion)g(of)g(p)q(cl-cvs)h
-(included)i(with)d(CVS)g(includes)j(a)c(cop)o(y)h(of)g(Elib)h(in)g(the)f
-(sub-directory)90 2321 y(`)p Fl(elib)p Fo(')f(under)i(the)f(`)p
-Fl(contrib/pcl-cvs)p Fo(')d(directory)l(.)25 2396 y(4.)29 b(T)o(yp)q(e)18
-b(`)p Fl(make)d(install)p Fo(')h(in)j(the)f(source)h(directory)l(.)29
-b(This)18 b(will)i(b)o(yte-compile)g(all)f(`)p Fl(.el)p Fo(')e(\014les)i(and)
-f(cop)o(y)90 2458 y(the)d(`)p Fl(*.elc)p Fo(')f(\014les)i(in)o(to)f(the)h
-(directory)f(y)o(ou)g(sp)q(eci\014ed)i(in)f(step)f(1.)90 2533
-y(If)g(y)o(ou)g(w)o(an)o(t)f(to)h(install)i(the)e(`)p Fl(*.el)p
-Fo(')f(\014les)i(to)q(o,)e(y)o(ou)h(can)g(t)o(yp)q(e)h(`)p
-Fl(make)e(install-el)p Fo(')f(to)i(do)g(so.)90 2608 y(If)e(y)o(ou)g(only)g(w)
-o(an)o(t)f(to)g(create)h(the)g(compiled)i(elisp)f(\014les,)g(but)f(don't)g(w)
-o(an)o(t)f(to)g(install)i(them,)f(y)o(ou)g(can)g(t)o(yp)q(e)90
-2670 y(`)p Fl(make)p Fo(')h(without)h(parameters.)p eop
-%%Page: 2 4
-bop 0 -58 a Fo(Chapter)15 b(1:)k(Installation)1470 b(2)25 183
-y(5.)29 b(Edit)11 b(the)f(\014le)h(`)p Fl(default.el)p Fo(')d(in)j(y)o(our)f
-(emacs)g(lisp)h(directory)g(\(usually)g(`)p Fl(/usr/gnu/lib/emacs/si)o
-(te-lisp)p Fo(')p 2009 195 21 46 v 90 246 a(or)j(something)i(similar\))g(and)
-f(en)o(ter)g(the)g(con)o(ten)o(ts)f(of)h(the)g(\014le)h(`)p
-Fl(pcl-cvs-startup.el)p Fo(')c(in)o(to)j(it.)20 b(It)15 b(con-)90
-308 y(tains)g(a)g(couple)i(of)d Fl(auto-load)p Fo(s)g(that)h(facilitates)h
-(the)f(use)h(of)e(p)q(cl-cvs.)0 532 y Fk(1.2)33 b(Installation)16
-b(of)f(the)g(on-line)i(man)n(ual.)25 669 y Fo(1.)29 b(Create)e(the)h(info)h
-(\014le\(s\))f(`)p Fl(pcl-cvs.info*)p Fo(')d(from)i(`)p Fl(pcl-cvs.texinfo)p
-Fo(')e(b)o(y)j(t)o(yping)g(`)p Fl(make)14 b(info)p Fo('.)90
-731 y(If)27 b(y)o(ou)g(don't)f(ha)o(v)o(e)g(the)h(program)f(`)p
-Fl(makeinfo)p Fo(')f(y)o(ou)i(can)g(get)f(it)h(b)o(y)g(anon)o(ymous)f(ftp)h
-(from)f(e.g.)90 793 y(`)p Fl(prep.ai.mit.edu)p Fo(')12 b(as)i(`)p
-Fl(pub/gnu/texinfo-3.7.tar.g)o(z)p Fo(')e(\(there)i(migh)o(t)h(b)q(e)g(a)f
-(new)o(er)h(v)o(ersion)g(there)90 856 y(when)h(y)o(ou)f(read)g(this\).)25
-930 y(2.)29 b(Install)14 b(the)e(info)h(\014le\(s\))g(`)p Fl(pcl-cvs.info*)p
-Fo(')c(in)o(to)k(y)o(our)f(standard)g(`)p Fl(info)p Fo(')f(directory)l(.)19
-b(Y)l(ou)13 b(should)g(b)q(e)g(able)90 993 y(to)i(do)g(this)g(b)o(y)g(t)o
-(yping)h(`)p Fl(make)e(install-info)p Fo('.)25 1067 y(3.)29
-b(Edit)18 b(the)g(\014le)g(`)p Fl(dir)p Fo(')f(in)h(the)g(`)p
-Fl(info)p Fo(')e(directory)i(and)g(en)o(ter)f(one)h(line)h(to)e(con)o(tain)h
-(a)f(p)q(oin)o(ter)h(to)f(the)h(info)90 1130 y(\014le\(s\))e(`)p
-Fl(pcl-cvs.info*)p Fo('.)h(The)e(line)i(can,)e(for)g(instance,)g(lo)q(ok)h
-(lik)o(e)g(this:)210 1194 y Fl(*)24 b(Pcl-cvs:)e(\(pcl-cvs\).)262
-b(An)23 b(Emacs)g(front-end)g(to)h(CVS.)0 1418 y Fk(1.3)33
-b(Ho)n(w)14 b(to)h(mak)n(e)g(t)n(yp)r(eset)g(do)r(cumen)n(tation)h(from)f(p)r
-(cl-cvs.texinfo)62 1555 y Fo(If)e(y)o(ou)g(ha)o(v)o(e)g(T)317
-1565 y(E)342 1555 y(X)g(installed)i(at)d(y)o(our)h(site,)g(y)o(ou)g(can)g
-(mak)o(e)f(a)h(t)o(yp)q(eset)g(man)o(ual)g(from)f(`)p Fl(pcl-cvs.texinfo)p
-Fo('.)25 1692 y(1.)29 b(Run)19 b(T)217 1702 y(E)243 1692 y(X)f(b)o(y)h(t)o
-(yping)f(\\)p Fl(make)d(pcl-cvs.dvi)p Fo(''.)27 b(Y)l(ou)18
-b(will)i(not)e(get)g(the)h(indices)h(unless)g(y)o(ou)e(ha)o(v)o(e)g(the)90
-1754 y Fl(texindex)c Fo(program.)25 1829 y(2.)29 b(Con)o(v)o(ert)14
-b(the)h(resulting)h(device)g(indep)q(enden)o(t)i(\014le)e(`)p
-Fl(pcl-cvs.dvi)p Fo(')c(to)j(a)f(form)g(whic)o(h)i(y)o(our)f(prin)o(ter)g
-(can)90 1891 y(output)h(and)g(prin)o(t)g(it.)23 b(If)16 b(y)o(ou)g(ha)o(v)o
-(e)g(a)f(p)q(ostscript)i(prin)o(ter)f(there)g(is)h(a)e(program,)g
-Fl(dvi2ps)p Fo(,)g(whic)o(h)i(do)q(es.)90 1954 y(There)e(is)h(also)f(a)g
-(program)f(whic)o(h)i(comes)f(together)g(with)g(T)1150 1963
-y(E)1176 1954 y(X,)g Fl(dvips)p Fo(,)f(whic)o(h)i(y)o(ou)f(can)g(use.)p
-eop
-%%Page: 3 5
-bop 0 -58 a Fo(Chapter)15 b(2:)k(Ab)q(out)d(p)q(cl-cvs)1418
-b(3)0 183 y Fm(2)41 b(Ab)r(out)15 b(p)r(cl-cvs)62 390 y Fo(Pcl-cvs)i(is)e(a)g
-(fron)o(t-end)h(to)e(CVS)i(v)o(ersions)f(1.5)g(through)g(1.7)f(and)h(new)o
-(er;)g(and)h(p)q(ossibly)h(v)o(erison)e(1.3)g(and)0 452 y(1.4A2.)k(It)c(in)o
-(tegrates)g(the)g(most)f(frequen)o(tly)i(used)g(CVS)f(commands)g(in)o(to)g
-(an)h(emacs)f(in)o(terface.)0 713 y Fk(2.1)33 b(Con)n(tributors)16
-b(to)f(p)r(cl-cvs)62 854 y Fo(Con)o(tributions)j(to)f(the)g(pac)o(k)m(age)h
-(are)f(w)o(elcome.)27 b(I)18 b(ha)o(v)o(e)f(limited)i(time)f(to)e(w)o(ork)h
-(on)g(this)h(pro)s(ject,)f(but)h(I)0 916 y(will)d(gladly)f(add)g(an)o(y)f(co)
-q(de)g(that)g(y)o(ou)g(con)o(tribute)h(to)e(me)i(to)e(this)i(pac)o(k)m(age)f
-(\(see)h(Chapter)f(8)f([Bugs],)h(page)g(22\).)62 1057 y(The)j(follo)o(wing)g
-(p)q(ersons)f(ha)o(v)o(e)g(made)g(con)o(tributions)h(to)f(p)q(cl-cvs.)37
-1198 y Fn(\017)30 b Fo(Brian)16 b(Berliner)h(wrote)e(CVS,)g(together)f(with)i
-(some)f(other)g(con)o(tributors.)21 b(Without)15 b(his)h(w)o(ork)e(on)i(CVS)
-90 1260 y(this)g(pac)o(k)m(age)f(w)o(ould)g(b)q(e)h(useless)p
-Fi(:)8 b(:)g(:)37 1339 y Fn(\017)30 b Fo(P)o(er)19 b(Cederqvist)h(wrote)f
-(most)f(of)h(the)h(otherwise)f(unattributed)h(functions)g(in)h(p)q(cl-cvs)g
-(as)e(w)o(ell)h(as)f(all)90 1401 y(do)q(cumen)o(tation.)37
-1480 y Fn(\017)30 b Fo(Inge)23 b(W)l(allin)h(\(`)p Fl(inge@lysator.liu.se)p
-Fo(')o(\))19 b(wrote)j(the)g(sk)o(eleton)h(to)e(`)p Fl(pcl-cvs.texinfo)p
-Fo(',)g(and)i(ga)o(v)o(e)90 1542 y(useful)c(commen)o(ts)f(on)g(it.)29
-b(He)19 b(also)f(wrote)f(the)h(\014les)h(`)p Fl(elib-node.el)p
-Fo(')d(and)j(`)p Fl(compile-all.el)p Fo('.)26 b(The)90 1604
-y(\014le)16 b(`)p Fl(cookie.el)p Fo(')d(w)o(as)i(inspired)i(b)o(y)e(Inge.)37
-1683 y Fn(\017)30 b Fo(Lin)o(us)13 b(T)l(olk)o(e)g(\(`)p Fl
-(linus@lysator.liu.se)o Fo('\))c(con)o(tributed)k(useful)g(commen)o(ts)f(on)g
-(b)q(oth)g(the)h(functionalit)o(y)90 1745 y(and)i(the)h(do)q(cumen)o(tation.)
-37 1824 y Fn(\017)30 b Fo(Jamie)16 b(Za)o(winski)g(\(`)p Fl(jwz@lucid.com)p
-Fo('\))c(con)o(tributed)j(`)p Fl(pcl-cvs-lucid.el)p Fo('.)37
-1903 y Fn(\017)30 b Fo(Leif)12 b(Lonn)o(blad)g(con)o(tributed)g(R)o(CVS)f
-(supp)q(ort.)18 b(\(Since)12 b(sup)q(erceded)h(b)o(y)e(the)g(new)g(remote)g
-(CVS)g(supp)q(ort.\))37 1981 y Fn(\017)30 b Fo(Jim)20 b(Blandy)f(\(`)p
-Fl(jimb@cyclic.com)p Fo('\))c(con)o(tributed)20 b(ho)q(oks)e(to)g
-(automatically)h(guess)g(CVS)g(log)g(en)o(tries)90 2044 y(from)12
-b(ChangeLog)h(con)o(ten)o(ts;)g(and)g(initial)i(supp)q(ort)f(of)e(the)i(new)f
-(Cygn)o(us)g(/)f(Cyclic)j(remote)d(CVS;)h(as)g(w)o(ell)90 2106
-y(as)i(v)m(arious)g(sundry)h(bug)g(\014xes)f(and)g(clean)o(ups.)37
-2185 y Fn(\017)30 b Fo(Jim)16 b(Kingdon)g(\(`)p Fl(kingdon@cyclic.com)p
-Fo('\))c(con)o(tributed)j(lots)g(of)g(\014xes)h(to)e(the)h(build)i(and)f
-(install)g(pro)q(ce-)90 2247 y(dure.)37 2326 y Fn(\017)30 b
-Fo(Greg)17 b(A.)g(W)l(o)q(o)q(ds)g(\(`)p Fl(woods@planix.com)p
-Fo('\))d(con)o(tributed)k(co)q(de)g(to)f(implemen)o(t)h(the)g(use)g(of)f(p)q
-(er-\014le)i(di\013)90 2388 y(bu\013ers;)14 b(and)g(v)o(endor)g(join)g
-(di\013s)g(with)h(emerge)e(and)h(edi\013;)h(as)f(w)o(ell)g(as)g(v)m(arious)g
-(an)g(sundry)g(bug)h(\014xes)f(and)90 2450 y(clean)o(ups.)62
-2608 y(Apart)k(from)g(these,)h(a)f(lot)h(of)f(p)q(eople)i(ha)o(v)o(e)e(send)h
-(me)g(suggestions,)f(ideas,)i(requests,)f(bug)g(rep)q(orts)f(and)0
-2670 y(encouragemen)o(t.)i(Thanks)15 b(a)g(lot!)20 b(Without)15
-b(y)o(our)f(there)i(w)o(ould)f(b)q(e)h(no)f(new)h(releases)f(of)g(p)q
-(cl-cvs.)p eop
-%%Page: 4 6
-bop 0 -58 a Fo(Chapter)15 b(2:)k(Ab)q(out)d(p)q(cl-cvs)1418
-b(4)0 183 y Fk(2.2)33 b(Where)15 b(can)g(I)h(get)e(p)r(cl-cvs?)62
-320 y Fo(The)i(curren)o(t)f(release)h(of)e(p)q(cl-cvs)j(is)f(included)i(in)e
-(CVS-1.7.)62 457 y(The)i(author's)f(release)i(of)e(p)q(cl-cvs)i(can)f(b)q(e)h
-(fetc)o(hed)f(via)g(anon)o(ymous)f(ftp)h(from)f Fl(ftp.lysator.liu.se)p
-Fo(,)0 519 y(\(IP)i(no.)30 b(130.236.254.1\))15 b(in)20 b(the)f(directory)g
-Fl(pub/emacs)p Fo(.)29 b(If)19 b(y)o(ou)f(don't)h(liv)o(e)h(in)f(Scandina)o
-(via)h(y)o(ou)f(should)0 582 y(probably)d(c)o(hec)o(k)f(with)h(arc)o(hie)f
-(to)g(see)h(if)f(there)g(is)h(a)f(site)h(closer)f(to)g(y)o(ou)g(that)f(arc)o
-(hiv)o(es)i(p)q(cl-cvs.)62 719 y(New)h(releases)g(will)h(b)q(e)f(announced)h
-(to)e(appropriate)h(newsgroups.)23 b(If)17 b(y)o(ou)f(send)h(y)o(our)f(email)
-i(address)f(to)0 781 y(me)e(I)h(will)h(add)e(y)o(ou)g(to)f(m)o(y)h(list)h(of)
-f(p)q(eople)i(to)d(mail)i(when)g(I)f(mak)o(e)g(a)g(new)g(release.)p
-eop
-%%Page: 5 7
-bop 0 -58 a Fo(Chapter)15 b(3:)k(Getting)c(started)1388 b(5)0
-183 y Fm(3)41 b(Getting)15 b(started)62 410 y Fo(This)k(do)q(cumen)o(t)f
-(assumes)f(that)g(y)o(ou)g(kno)o(w)g(what)h(CVS)f(is,)i(and)f(that)f(y)o(ou)g
-(at)g(least)h(kno)o(ws)f(the)g(funda-)0 472 y(men)o(tal)e(concepts)h(of)f
-(CVS.)g(If)g(that)g(is)g(not)g(the)g(case)h(y)o(ou)e(should)j(read)e(the)g
-(man)g(page)g(for)g(CVS.)62 617 y(Pcl-cvs)k(is)f(only)g(useful)g(once)g(y)o
-(ou)f(ha)o(v)o(e)h(c)o(hec)o(k)o(ed)g(out)f(a)g(mo)q(dule.)28
-b(So)17 b(b)q(efore)h(y)o(ou)f(in)o(v)o(ok)o(e)h(it)f(y)o(ou)h(m)o(ust)0
-679 y(ha)o(v)o(e)d(a)g(cop)o(y)g(of)g(a)f(mo)q(dule)j(somewhere)e(in)h(the)f
-(\014le)h(system.)62 824 y(Y)l(ou)h(in)o(v)o(ok)o(e)g(p)q(cl-cvs)i(b)o(y)e(t)
-o(yping)g Fl(M-x)d(cvs-update)g(RET)p Fo(.)25 b(If)17 b(y)o(our)f(emacs)h
-(resp)q(onds)h(with)f(`)p Fl([No)d(match])p Fo(')0 887 y(y)o(our)f(system)h
-(administrator)g(has)g(not)f(installed)j(p)q(cl-cvs)g(prop)q(erly)l(.)k(T)l
-(ry)14 b Fl(M-x)h(load-library)e(RET)i(pcl-cvs)0 949 y(RET)p
-Fo(.)k(If)14 b(that)f(also)h(fails)h(-)f(talk)f(to)h(y)o(our)f(ro)q(ot.)19
-b(If)14 b(it)g(succeeds)h(y)o(ou)e(migh)o(t)h(put)g(this)g(line)i(in)e(y)o
-(our)g(`)p Fl(.emacs)p Fo(')e(\014le)0 1011 y(so)j(that)f(y)o(ou)h(don't)g
-(ha)o(v)o(e)g(to)f(t)o(yp)q(e)h(the)h(`)p Fl(load-library)p
-Fo(')d(command)i(ev)o(ery)g(time)g(y)o(ou)g(wish)h(to)e(use)i(p)q(cl-cvs:)120
-1146 y Fl(\(autoload)23 b('cvs-update)f("pcl-cvs")h(nil)g(t\))62
-1291 y Fo(The)18 b(function)h Fl(cvs-update)d Fo(will)k(ask)d(for)h(a)f
-(directory)l(.)28 b(The)18 b(command)g(`)p Fl(cvs)c(update)p
-Fo(')j(will)j(b)q(e)e(run)g(in)0 1353 y(that)11 b(directory)l(.)20
-b(\(It)11 b(should)i(con)o(tain)f(\014les)h(that)f(ha)o(v)o(e)f(b)q(een)i(c)o
-(hec)o(k)o(ed)g(out)e(from)g(a)h(CVS)g(arc)o(hiv)o(e.\))19
-b(The)12 b(output)0 1415 y(from)g Fl(cvs)h Fo(will)h(b)q(e)g(parsed)f(and)g
-(presen)o(ted)g(in)h(a)e(table)i(in)f(a)g(bu\013er)g(called)h(`)p
-Fl(*cvs*)p Fo('.)k(It)13 b(migh)o(t)g(lo)q(ok)g(something)0
-1478 y(lik)o(e)j(this:)120 1612 y Fl(PCL-CVS)23 b(release)g(1.05-CVS-$Name:)
-45 b($.)120 1716 y(In)24 b(directory)e(/users/ceder/FOO/test:)168
-1768 y(Updated)118 b(bar)168 1820 y(Updated)g(file.txt)168
-1872 y(Modified)22 b(ci)i(namechange)168 1923 y(Updated)118
-b(newer)120 2027 y(In)24 b(directory)e(/users/ceder/FOO/test/sub:)168
-2079 y(Modified)g(ci)i(ChangeLog)120 2131 y(----------)e(End)i(-----)62
-2276 y Fo(In)18 b(this)f(example)h(the)f(t)o(w)o(o)f(\014les)h(\(`)p
-Fl(bar)p Fo(',)f(`)p Fl(file.txt)p Fo(',)f(and)i(`)p Fl(newer)p
-Fo('\))e(that)h(are)h(mark)o(ed)f(with)i(`)p Fl(Updated)p Fo(')0
-2338 y(ha)o(v)o(e)d(b)q(een)h(copied)g(from)e(the)h(CVS)h(rep)q(ository)f(to)
-f(`)p Fl(/users/ceder/FOO/test/)p Fo(')d(since)16 b(someone)f(else)h(ha)o(v)o
-(e)0 2401 y(c)o(hec)o(k)o(ed)23 b(in)g(new)o(er)f(v)o(ersions)g(of)g(them.)41
-b(Tw)o(o)21 b(\014les)j(\(`)p Fl(namechange)p Fo(')19 b(and)k(`)p
-Fl(sub/ChangeLog)p Fo('\))c(ha)o(v)o(e)j(b)q(een)0 2463 y(mo)q(di\014ed)17
-b(lo)q(cally)l(,)f(and)g(needs)g(to)e(b)q(e)i(c)o(hec)o(k)o(ed)g(in.)62
-2608 y(Y)l(ou)g(can)g(mo)o(v)o(e)e(the)i(cursor)f(up)h(and)g(do)o(wn)f(in)h
-(the)g(bu\013er)g(with)f Fl(C-n)g Fo(and)h Fl(C-p)f Fo(or)g
-Fl(n)h Fo(and)f Fl(p)p Fo(.)21 b(If)16 b(y)o(ou)f(press)0 2670
-y Fl(c)g Fo(on)h(one)f(of)g(the)h(`)p Fl(Modified)p Fo(')d(\014les)k(that)d
-(\014le)j(will)g(b)q(e)f(c)o(hec)o(k)o(ed)g(in)g(to)f(the)g(CVS)h(rep)q
-(ository)l(.)21 b(See)16 b(Section)g(5.4)p eop
-%%Page: 6 8
-bop 0 -58 a Fo(Chapter)15 b(3:)k(Getting)c(started)1388 b(6)0
-183 y([Committing)17 b(c)o(hanges],)g(page)g(11.)26 b(Y)l(ou)18
-b(can)g(press)f Fl(x)g Fo(to)g(get)g(rid)h(of)f(the)h Fl(")p
-Fo(unin)o(teresting)p Fl(")g Fo(\014les)h(that)d(ha)o(v)o(e)0
-246 y(only)g(b)q(een)g(`)p Fl(Updated)p Fo(')e(\(and)h(don't)f(require)i(an)o
-(y)f(further)g(action)h(from)e(y)o(ou\).)62 382 y(Y)l(ou)f(can)g(also)g
-(easily)h(get)f(a)f(`)p Fl(diff)p Fo(')g(b)q(et)o(w)o(een)h(y)o(our)g(mo)q
-(di\014ed)h(\014le)g(and)f(the)g(base)g(v)o(ersion)g(that)f(y)o(ou)h(started)
-0 445 y(from,)18 b(and)h(y)o(ou)g(can)g(get)f(the)h(output)f(from)g(`)p
-Fl(cvs)c(log)p Fo(')k(and)h(`)p Fl(cvs)c(status)p Fo(')i(on)i(the)f(listed)i
-(\014les)g(simply)g(b)o(y)0 507 y(pressing)c(a)f(k)o(ey)g(\(see)g(Section)h
-(5.6)e([Getting)h(info)h(ab)q(out)f(\014les],)g(page)g(12\).)p
-eop
-%%Page: 7 9
-bop 0 -58 a Fo(Chapter)15 b(4:)k(Bu\013er)d(con)o(ten)o(ts)1392
-b(7)0 183 y Fm(4)41 b(Bu\013er)15 b(con)n(ten)n(ts)62 379 y
-Fo(The)h(displa)o(y)g(con)o(tains)f(four)g(columns.)21 b(They)15
-b(con)o(tain,)g(from)g(left)g(to)g(righ)o(t:)37 518 y Fn(\017)30
-b Fo(An)15 b(asterisk)h(when)f(the)h(\014le)g(is)f Fh(mark)o(ed)i
-Fo(\(see)e(Section)h(4.2)e([Selected)j(\014les],)e(page)g(8\).)37
-595 y Fn(\017)30 b Fo(The)15 b(status)g(of)g(the)g(\014le.)21
-b(See)16 b(See)f(Section)h(4.1)f([File)h(status],)d(page)i(7,)g(for)f(more)h
-(information.)37 672 y Fn(\017)30 b Fo(A)15 b Fl(")p Fo(need)h(to)f(b)q(e)h
-(c)o(hec)o(k)o(ed)f(in)p Fl(")p Fo(-mark)o(er)g(\(`)p Fl(ci)p
-Fo('\).)37 748 y Fn(\017)30 b Fo(The)15 b(\014le)i(name.)0
-989 y Fk(4.1)33 b(File)16 b(status)62 1128 y Fo(The)g(`)p Fl(file)e(status)p
-Fo(')g(\014eld)i(can)g(ha)o(v)o(e)f(the)g(follo)o(wing)h(v)m(alues:)0
-1281 y(`)p Fl(Updated)p Fo(')46 b(The)18 b(\014le)g(w)o(as)f(brough)o(t)g(up)
-h(to)f(date)g(with)h(resp)q(ect)g(to)f(the)h(rep)q(ository)l(.)27
-b(This)18 b(is)g(done)g(for)f(an)o(y)240 1344 y(\014le)g(that)f(exists)g(in)h
-(the)f(rep)q(ository)g(but)g(not)g(in)h(y)o(our)f(source,)g(and)g(for)g
-(\014les)h(that)e(y)o(ou)h(ha)o(v)o(en't)240 1406 y(c)o(hanged)g(but)f(are)g
-(not)g(the)g(most)f(recen)o(t)h(v)o(ersions)h(a)o(v)m(ailable)h(in)f(the)f
-(rep)q(ository)l(.)0 1497 y(`)p Fl(Patched)p Fo(')46 b(The)14
-b(\014le)h(w)o(as)e(brough)o(t)h(up)g(to)f(date)h(with)g(resp)q(ect)h(to)e(a)
-h(remote)f(rep)q(ository)h(b)o(y)g(w)o(a)o(y)f(of)g(fetc)o(hing)240
-1559 y(and)h(applying)g(a)f(patc)o(h)g(to)g(the)h(\014le)g(in)g(y)o(our)f
-(source.)19 b(This)14 b(is)g(done)g(for)e(an)o(y)h(\014le)i(that)d(exists)i
-(in)g(a)240 1621 y(remote)h(rep)q(ository)g(and)h(in)g(y)o(our)f(source;)h
-(of)f(whic)o(h)h(y)o(ou)f(ha)o(v)o(en't)g(c)o(hanged)h(lo)q(cally)h(but)e(is)
-h(not)240 1684 y(the)f(most)g(recen)o(t)g(v)o(ersion)g(a)o(v)m(ailable)i(in)f
-(the)f(remote)g(rep)q(ository)l(.)0 1775 y(`)p Fl(Modified)p
-Fo(')240 1837 y(The)k(\014le)g(is)g(mo)q(di\014ed)h(in)f(y)o(our)f(w)o
-(orking)g(directory)l(,)h(and)g(there)g(w)o(as)e(no)h(mo)q(di\014cation)i(to)
-e(the)240 1899 y(same)d(\014le)h(in)g(the)f(rep)q(ository)l(.)0
-1990 y(`)p Fl(Merged)p Fo(')70 b(The)21 b(\014le)h(is)g(mo)q(di\014ed)g(in)g
-(y)o(our)e(w)o(orking)h(directory)l(,)h(and)f(there)g(w)o(ere)g(mo)q
-(di\014cations)h(in)g(the)240 2052 y(rep)q(ository)15 b(as)f(w)o(ell)h(as)f
-(in)i(y)o(our)e(cop)o(y)l(,)g(but)h(they)g(w)o(ere)f(merged)g(successfully)l
-(,)j(without)d(con\015ict,)240 2115 y(in)i(y)o(our)f(w)o(orking)g(directory)l
-(.)0 2205 y(`)p Fl(Conflict)p Fo(')240 2268 y(A)i(con\015ict)g(w)o(as)f
-(detected)i(while)g(trying)f(to)f(merge)g(y)o(our)h(c)o(hanges)f(to)h
-Fh(\014le)j Fo(with)d(c)o(hanges)g(from)240 2330 y(the)h(source)g(rep)q
-(ository)l(.)28 b Fh(\014le)21 b Fo(\(the)d(cop)o(y)f(in)i(y)o(our)e(w)o
-(orking)h(directory\))f(is)i(no)o(w)e(the)h(output)f(of)240
-2392 y(the)g(`)p Fl(rcsmerge)p Fo(')e(command)i(on)g(the)g(t)o(w)o(o)e(v)o
-(ersions;)j(an)f(unmo)q(di\014ed)i(cop)o(y)e(of)f(y)o(our)h(\014le)h(is)f
-(also)240 2455 y(in)j(y)o(our)f(w)o(orking)h(directory)l(,)g(with)g(the)g
-(name)f(`)p Fl(.#)p Fh(\014le)p Fl(.)p Fh(v)o(ersion)p Fo(',)i(where)e
-Fh(v)o(ersion)h Fo(is)g(the)g(R)o(CS)240 2517 y(revision)g(that)e(y)o(our)g
-(mo)q(di\014ed)i(\014le)g(started)e(from.)29 b(See)20 b(Section)f(5.11)f
-([Viewing)i(di\013erences],)240 2579 y(page)15 b(14,)f(for)h(more)g(details.)
-0 2670 y(`)p Fl(Added)p Fo(')94 b(The)15 b(\014le)i(has)e(b)q(een)h(added)g
-(b)o(y)f(y)o(ou,)g(but)g(it)g(still)i(needs)f(to)e(b)q(e)i(c)o(hec)o(k)o(ed)g
-(in)g(to)f(the)g(rep)q(ository)l(.)p eop
-%%Page: 8 10
-bop 0 -58 a Fo(Chapter)15 b(4:)k(Bu\013er)d(con)o(ten)o(ts)1392
-b(8)0 183 y(`)p Fl(Removed)p Fo(')46 b(The)14 b(\014le)h(has)f(b)q(een)h
-(remo)o(v)o(ed)f(b)o(y)g(y)o(ou,)g(but)g(it)g(needs)h(to)e(b)q(e)i(c)o(hec)o
-(k)o(ed)g(in)g(to)e(the)h(rep)q(ository)l(.)20 b(Y)l(ou)240
-246 y(can)15 b(resurrect)g(it)h(b)o(y)f(t)o(yping)g Fl(a)g
-Fo(\(see)h(Section)g(5.7)e([Adding)i(and)f(remo)o(ving)g(\014les],)h(page)f
-(13\).)0 334 y(`)p Fl(Unknown)p Fo(')46 b(A)16 b(\014le)i(that)d(w)o(as)h
-(detected)h(in)g(y)o(our)f(directory)l(,)h(but)f(that)g(neither)h(app)q(ears)
-g(in)g(the)f(rep)q(ository)l(,)240 396 y(nor)f(is)h(presen)o(t)f(on)g(the)g
-(list)h(of)f(\014les)h(that)f(CVS)g(should)h(ignore.)62 547
-y(There)g(are)f(also)g(a)g(few)g(sp)q(ecial)i(cases,)d(that)h(rarely)g(o)q
-(ccur,)g(whic)o(h)i(ha)o(v)o(e)d(longer)i(strings)f(in)h(the)f(\014elds:)0
-698 y(`)p Fl(Removed)f(from)g(repository)p Fo(')240 760 y(The)h(\014le)h(has)
-f(b)q(een)i(remo)o(v)o(ed)d(from)h(y)o(our)f(directory)h(since)i(someone)e
-(has)g(remo)o(v)o(ed)f(it)i(from)e(the)240 823 y(rep)q(ository)l(.)19
-b(\(It)12 b(is)g(still)h(presen)o(t)f(in)h(the)f(A)o(ttic)g(directory)l(,)h
-(so)e(no)h(p)q(ermanen)o(t)g(loss)g(has)g(o)q(ccurred\).)240
-885 y(This,)j(unlik)o(e)i(the)f(other)e(en)o(tries)i(in)g(this)g(table,)f(is)
-h(not)e(an)i(error)e(condition.)0 974 y(`)p Fl(Removed)g(from)g(repository,)g
-(changed)g(by)h(you)p Fo(')240 1036 y(Y)l(ou)20 b(ha)o(v)o(e)g(mo)q(di\014ed)
-h(a)f(\014le)h(that)e(someone)h(ha)o(v)o(e)g(remo)o(v)o(ed)g(from)f(the)h
-(rep)q(ository)l(.)35 b(Y)l(ou)20 b(can)240 1098 y(correct)d(this)h
-(situation)g(b)o(y)f(remo)o(ving)g(the)h(\014le)g(man)o(ually)g(\(see)f(see)h
-(Section)g(5.7)f([Adding)h(and)240 1160 y(remo)o(ving)d(\014les],)h(page)f
-(13\).)0 1249 y(`)p Fl(Removed)f(by)h(you,)f(changed)g(in)h(repository)p
-Fo(')240 1311 y(Y)l(ou)g(ha)o(v)o(e)f(remo)o(v)o(ed)f(a)i(\014le,)g(and)f(b)q
-(efore)h(y)o(ou)f(committed)h(the)f(remo)o(v)m(al)h(someone)f(committed)g(a)
-240 1374 y(c)o(hange)j(to)f(that)g(\014le.)26 b(Y)l(ou)18 b(could)f(use)h
-Fl(a)e Fo(to)h(resurrect)f(the)h(\014le)h(\(see)f(see)g(Section)h(5.7)e
-([Adding)240 1436 y(and)f(remo)o(ving)g(\014les],)h(page)f(13\).)0
-1524 y(`)p Fl(Move)f(away)h Fh(\014le)k Fl(-)c(it)g(is)f(in)h(the)g(way)p
-Fo(')240 1587 y(F)l(or)g(some)f(reason)h(CVS)h(do)q(es)f(not)g(lik)o(e)h(the)
-g(\014le)g Fh(\014le)p Fo(.)21 b(Rename)16 b(or)e(remo)o(v)o(e)h(it.)0
-1675 y(`)p Fl(This)f(repository)g(is)h(missing!)f(Remove)g(this)h(dir)g
-(manually.)p Fo(')240 1738 y(It)h(is)g(imp)q(ossible)i(to)d(remo)o(v)o(e)g(a)
-h(directory)g(in)h(the)e(CVS)h(rep)q(ository)g(in)h(a)e(clean)i(w)o(a)o(y)l
-(.)k(Someone)240 1800 y(ha)o(v)o(e)15 b(tried)g(to)g(remo)o(v)o(e)f(one,)h
-(and)g(CVS)g(gets)g(confused.)21 b(Remo)o(v)o(e)15 b(y)o(our)f(cop)o(y)h(of)g
-(the)g(directory)l(.)0 2031 y Fk(4.2)33 b(Selected)15 b(\014les)62
-2168 y Fo(Man)o(y)g(of)g(the)g(commands)g(w)o(orks)f(on)h(the)g(curren)o(t)h
-(set)e(of)h Fh(selected)j Fo(\014les.)37 2306 y Fn(\017)30
-b Fo(If)15 b(there)h(are)f(an)o(y)f(\014les)j(that)d(are)h(mark)o(ed)g(they)g
-(constitute)g(the)h(set)f(of)f(selected)j(\014les.)37 2381
-y Fn(\017)30 b Fo(Otherwise,)16 b(if)f(the)h(cursor)e(p)q(oin)o(ts)i(to)f(a)g
-(\014le,)g(that)g(\014le)h(is)g(the)f(selected)i(\014le.)37
-2457 y Fn(\017)30 b Fo(Otherwise,)15 b(if)f(the)h(cursor)f(p)q(oin)o(ts)g(to)
-g(a)f(directory)l(,)i(all)g(the)f(\014les)h(in)g(that)f(directory)g(that)g
-(app)q(ears)g(in)h(the)90 2519 y(bu\013er)g(are)g(the)g(selected)i(\014les.)
-62 2670 y(This)f(sc)o(heme)g(migh)o(t)f(seem)g(a)g(little)h(complicated,)h
-(but)e(once)h(one)f(get)g(used)g(to)g(it,)g(it)g(is)h(quite)g(p)q(o)o(w)o
-(erful.)p eop
-%%Page: 9 11
-bop 0 -58 a Fo(Chapter)15 b(4:)k(Bu\013er)d(con)o(ten)o(ts)1392
-b(9)62 183 y(See)16 b(Section)g(5.3)e([Marking)h(\014les],)g(page)g(11)g
-(tells)h(ho)o(w)f(y)o(ou)g(mark)f(and)i(unmark)f(\014les.)p
-eop
-%%Page: 10 12
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(10)0 183 y
-Fm(5)41 b(Commands)62 386 y Fo(This)16 b(c)o(hapter)f(describ)q(es)i(all)f
-(the)f(commands)g(that)g(y)o(ou)g(can)g(use)g(in)i(p)q(cl-cvs.)0
-640 y Fk(5.1)33 b(Up)r(dating)15 b(the)h(directory)0 796 y
-Fl(M-x)f(cvs-update)240 858 y Fo(Run)j(a)e(`)p Fl(cvs)f(update)p
-Fo(')g(command.)25 b(Y)l(ou)17 b(will)h(b)q(e)g(ask)o(ed)e(for)h(the)g
-(directory)g(in)g(whic)o(h)h(the)f(`)p Fl(cvs)240 921 y(update)p
-Fo(')f(will)j(b)q(e)f(run.)27 b(The)18 b(output)f(will)i(b)q(e)g(parsed)e(b)o
-(y)h(p)q(cl-cvs,)h(and)e(the)h(result)g(prin)o(ted)g(in)240
-983 y(the)e(`)p Fl(*cvs*)p Fo(')e(bu\013er)i(\(see)g(see)g(Chapter)f(4)h
-([Bu\013er)f(con)o(ten)o(ts],)g(page)g(7)h(for)f(a)g(description)j(of)d(the)
-240 1045 y(con)o(ten)o(ts\).)240 1123 y(By)j(default,)g(`)p
-Fl(cvs-update)p Fo(')e(will)j(descend)g(recursiv)o(ely)g(in)o(to)f(sub)q
-(directories.)29 b(Y)l(ou)18 b(can)g(a)o(v)o(oid)240 1185 y(that)f(b)q(eha)o
-(vior)h(b)o(y)f(giving)h(a)f(pre\014x)h(argumen)o(t)f(to)g(it)g(\(e.g.,)g(b)o
-(y)g(t)o(yping)h Fl(C-u)d(M-x)f(cvs-update)240 1248 y(RET)p
-Fo(\).)240 1326 y(All)21 b(other)e(commands)g(in)i(p)q(cl-cvs)g(requires)f
-(that)f(y)o(ou)g(ha)o(v)o(e)g(a)g(`)p Fl(*cvs*)p Fo(')f(bu\013er.)33
-b(This)20 b(is)g(the)240 1388 y(command)15 b(that)g(y)o(ou)f(use)i(to)f(get)f
-(one.)240 1466 y(CVS)20 b(uses)g(lo)q(c)o(k)g(\014les)h(in)g(the)f(rep)q
-(ository)g(to)f(ensure)h(the)g(in)o(tegrit)o(y)g(of)f(the)h(data)f(\014les)i
-(in)g(the)240 1528 y(rep)q(ository)l(.)j(They)17 b(migh)o(t)f(b)q(e)h(left)g
-(b)q(ehind)h(i.e.)24 b(if)17 b(a)g(w)o(orkstation)e(crashes)h(in)h(the)g
-(middle)h(of)e(a)240 1590 y(CVS)h(op)q(eration.)24 b(CVS)17
-b(outputs)f(a)h(message)f(when)h(it)g(is)g(w)o(aiting)g(for)f(a)g(lo)q(c)o(k)
-h(\014le)h(to)e(go)g(a)o(w)o(a)o(y)l(.)240 1653 y(Pcl-cvs)22
-b(will)h(sho)o(w)e(the)h(same)f(message)g(in)h(the)f(*cvs*)g(bu\013er,)i
-(together)d(with)i(instructions)240 1715 y(for)16 b(deleting)j(the)e(lo)q(c)o
-(k)g(\014les.)26 b(Y)l(ou)17 b(should)h(normally)g(not)e(ha)o(v)o(e)h(to)f
-(delete)i(them)f(man)o(ually)h(|)240 1777 y(just)f(w)o(ait)g(a)g(little)h
-(while)h(and)e(the)h(problem)f(should)i(\014x)e(itself.)27
-b(But)17 b(if)h(the)f(lo)q(c)o(k)h(\014les)g(do)q(esn't)240
-1840 y(disapp)q(ear)e(y)o(ou)f(can)g(delete)i(them)e(with)g
-Fl(M-x)g(cvs-delete-lock)e(RET)p Fo(.)0 1933 y Fl(g)216 b Fo(This)14
-b(will)g(run)f(`)p Fl(cvs)i(update)p Fo(')d(again.)19 b(It)13
-b(will)h(alw)o(a)o(ys)f(use)g(the)g(same)g(bu\013er)g(that)f(w)o(as)g(used)i
-(with)240 1996 y(the)i(previous)h(`)p Fl(cvs)d(update)p Fo('.)21
-b(Giv)o(e)16 b(a)f(pre\014x)i(argumen)o(t)e(to)g(a)o(v)o(oid)g(descending)j
-(in)o(to)e(sub)q(direc-)240 2058 y(tories.)k(This)c(runs)f(the)g(command)g(`)
-p Fl(cvs-mode-update-no-prompt)p Fo(')o(.)0 2152 y Fl(G)216
-b Fo(This)18 b(will)g(run)f(`)p Fl(cvs)e(update)p Fo(')g(and)j(prompt)e(for)g
-(a)h(new)g(directory)g(to)g(up)q(date.)25 b(This)18 b(runs)f(the)240
-2214 y(command)e(`)p Fl(cvs-update)p Fo('.)0 2467 y Fk(5.2)33
-b(Mo)n(v)n(emen)n(t)15 b(Commands)62 2608 y Fo(Y)l(ou)f(can)g(use)g(most)f
-(normal)h(Emacs)g(commands)f(to)g(mo)o(v)o(e)g(forw)o(ard)g(and)h(bac)o(kw)o
-(ard)f(in)i(the)f(bu\013er.)19 b(Some)0 2670 y(k)o(eys)c(are)g(reb)q(ound)h
-(to)f(functions)h(that)e(tak)o(e)h(adv)m(an)o(tage)f(of)h(the)g(fact)g(that)f
-(the)i(bu\013er)f(is)h(a)e(p)q(cl-cvs)j(bu\013er:)p eop
-%%Page: 11 13
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(11)0 183 y
-Fl(SPC)0 246 y(C-n)0 308 y(n)216 b Fo(These)18 b(k)o(eys)f(mo)o(v)o(e)g(the)g
-(cursor)g(one)h(\014le)g(forw)o(ard,)e(to)o(w)o(ards)g(the)h(end)i(of)d(the)i
-(bu\013er)f(\()p Fl(cookie-)240 370 y(next-cookie)p Fo(\).)0
-453 y Fl(C-p)0 516 y(p)216 b Fo(These)23 b(k)o(eys)f(mo)o(v)o(e)f(one)i
-(\014le)g(bac)o(kw)o(ard,)g(to)o(w)o(ards)e(the)h(b)q(eginning)j(of)d(the)g
-(bu\013er)g(\()p Fl(cookie-)240 578 y(previous-cookie)p Fo(\).)0
-795 y Fk(5.3)33 b(Marking)16 b(\014les)62 932 y Fo(Pcl-cvs)i(w)o(orks)e(on)g
-(a)h(set)f(of)g Fh(selected)i(\014les)i Fo(\(see)c(Section)i(4.2)e([Selected)
-h(\014les],)h(page)e(8\).)24 b(Y)l(ou)17 b(can)g(mark)0 994
-y(and)e(unmark)g(\014les)i(with)e(these)h(commands:)0 1141
-y Fl(m)216 b Fo(This)19 b(marks)e(the)h(\014le)h(that)e(the)h(cursor)g(is)g
-(p)q(ositioned)i(on.)28 b(If)18 b(the)g(cursor)f(is)i(p)q(ositioned)g(on)f(a)
-240 1204 y(directory)d(all)i(\014les)f(in)g(that)e(directory)i(will)h(b)q(e)e
-(mark)o(ed.)20 b(\()p Fl(cvs-mode-mark)p Fo(\).)0 1287 y Fl(u)216
-b Fo(Unmark)13 b(the)h(\014le)h(that)d(the)i(cursor)f(is)h(p)q(ositioned)i
-(on.)j(If)14 b(the)f(cursor)h(is)g(on)f(a)g(directory)l(,)h(all)h(\014les)240
-1349 y(in)h(that)f(directory)g(will)i(b)q(e)f(unmark)o(ed.)k(\()p
-Fl(cvs-mode-unmark)p Fo(\).)0 1433 y Fl(M)216 b Fo(Mark)14
-b Fh(all)k Fo(\014les)e(in)g(the)g(bu\013er)f(\()p Fl
-(cvs-mode-mark-all-files)o Fo(\).)0 1516 y Fl(ESC)g(DEL)81
-b Fo(Unmark)15 b Fh(all)j Fo(\014les)e(\()p Fl(cvs-mode-unmark-all-file)o(s)p
-Fo(\).)0 1600 y Fl(DEL)168 b Fo(Unmark)15 b(the)g(\014le)h(on)f(the)g
-(previous)g(line,)i(and)e(mo)o(v)o(e)f(p)q(oin)o(t)h(to)g(that)f(line)j(\()p
-Fl(cvs-mode-unmark-)240 1662 y(up)p Fo(\).)0 1879 y Fk(5.4)33
-b(Committing)16 b(c)n(hanges)0 2026 y Fl(c)216 b Fo(All)17
-b(\014les)g(that)f(ha)o(v)o(e)g(a)f Fl(")p Fo(need)i(to)f(b)q(e)g(c)o(hec)o
-(k)o(ed)h(in)p Fl(")p Fo(-mark)o(er)f(\(see)g(Chapter)g(4)g([Bu\013er)f(con)o
-(ten)o(ts],)240 2088 y(page)20 b(7\))g(can)h(b)q(e)g(c)o(hec)o(k)o(ed)g(in)g
-(with)g(the)g Fl(c)f Fo(command.)36 b(It)20 b(c)o(hec)o(ks)h(in)g(all)h
-(selected)g(\014les)f(\(see)240 2151 y(Section)c(4.2)f([Selected)i(\014les],)
-f(page)g(8\))f(\(except)g(those)h(who)f(lac)o(k)h(the)f Fl(")p
-Fo(ci)p Fl(")p Fo(-mark)o(er)h(-)g(they)f(are)240 2213 y(ignored\).)k
-(Pressing)c Fl(c)f Fo(causes)g Fl(cvs-mode-commit)e Fo(to)i(b)q(e)h(run.)240
-2286 y(When)f(y)o(ou)g(press)g Fl(c)g Fo(y)o(ou)f(will)j(get)d(a)h(bu\013er)g
-(called)h(`)p Fl(*cvs-commit-message*)p Fo('.)g(En)o(ter)f(the)g(log)240
-2348 y(message)f(for)g(the)h(\014le\(s\))g(in)h(it.)k(When)15
-b(y)o(ou)g(are)f(ready)h(y)o(ou)f(should)i(press)f Fl(C-c)g(C-c)f
-Fo(to)g(actually)240 2410 y(commit)h(the)g(\014les)i(\(using)e
-Fl(cvs-edit-done)p Fo(\).)240 2483 y(Normally)23 b(the)f(`)p
-Fl(*cvs-commit-message*)p Fo(')d(bu\013er)j(will)i(retain)e(the)g(log)h
-(message)e(from)h(the)240 2545 y(previous)g(commit,)g(but)g(if)f(the)h(v)m
-(ariable)g Fl(cvs-erase-input-buffer)d Fo(is)i(set)g(to)g(a)g(non-)p
-Fl(nil)240 2608 y Fo(v)m(alue)h(the)e(bu\013er)h(will)h(b)q(e)f(erased.)35
-b(P)o(oin)o(t)20 b(and)h(mark)f(will)i(alw)o(a)o(ys)d(b)q(e)i(lo)q(cated)g
-(around)g(the)240 2670 y(en)o(tire)16 b(bu\013er)f(so)g(that)f(y)o(ou)h(can)g
-(easily)i(erase)e(it)g(with)h Fl(C-w)e Fo(\(`)p Fl(kill-region)p
-Fo('\).)p eop
-%%Page: 12 14
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(12)240 183
-y(If)25 b(y)o(ou)g(are)g(editing)i(the)e(\014les)h(in)g(y)o(our)f(emacs)g(an)
-g(automatic)g(`)p Fl(revert-buffer)p Fo(')d(will)27 b(b)q(e)240
-246 y(p)q(erformed.)39 b(\(If)21 b(the)h(\014le)g(con)o(tains)f(`)p
-Fl($Id: pcl-cvs.ps,v 1.1 1996/01/30 00:41:35 tholo Exp $)p Fo(')g(k)o(eyw)o(ords)f(`)p Fl(cvs)14 b(commit)p
-Fo(')21 b(will)i(write)e(a)g(new)h(\014le)240 308 y(with)i(the)g(new)g(v)m
-(alues)h(substituted.)47 b(The)24 b(auto-rev)o(ert)f(mak)o(es)g(sure)h(that)f
-(y)o(ou)h(get)f(them)240 370 y(in)o(to)d(y)o(our)g(bu\013er\).)35
-b(The)20 b(rev)o(ert)g(will)i(not)e(o)q(ccur)h(if)f(y)o(ou)g(ha)o(v)o(e)g(mo)
-q(di\014ed)i(y)o(our)e(bu\013er,)h(or)e(if)240 432 y(`)p Fl
-(cvs-auto-revert-after-c)o(ommit)p Fo(')12 b(is)j(set)g(to)g(`)p
-Fl(nil)p Fo('.)0 516 y Fl(C)216 b Fo(This)15 b(is)f(just)g(lik)o(e)i(`)p
-Fl(cvs-mode-commit)p Fo(',)11 b(except)k(that)e(it)h(tries)h(to)e(pro)o(vide)
-i(appropriate)f(default)240 578 y(log)k(messages)f(b)o(y)h(lo)q(oking)h(at)e
-(the)h(`)p Fl(ChangeLog)p Fo('s)e(in)i(the)g(curren)o(t)g(directory)l(.)28
-b(The)19 b(idea)f(is)h(to)240 640 y(write)11 b(y)o(our)f(ChangeLog)h(en)o
-(tries)g(\014rst,)g(and)g(then)h(use)f(this)g(command)g(to)f(commit)h(y)o
-(our)f(c)o(hanges.)240 703 y(Pressing)16 b Fl(C)f Fo(causes)g
-Fl(cvs-mode-changelog-commit)d Fo(to)i(b)q(e)i(run.)240 775
-y(T)l(o)f(select)h(default)g(log)f(text,)f(p)q(cl-cvs:)265
-848 y Fn(\000)30 b Fo(\014nds)16 b(the)f(ChangeLogs)g(for)g(the)g(\014les)h
-(to)f(b)q(e)g(c)o(hec)o(k)o(ed)h(in;)265 921 y Fn(\000)30 b
-Fo(v)o(eri\014es)20 b(that)f(the)g(top)g(en)o(try)g(in)h(the)f(ChangeLog)g
-(is)h(on)f(the)h(curren)o(t)f(date)g(and)h(b)o(y)f(the)330
-983 y(curren)o(t)c(user;)g(if)h(not,)e(no)h(default)h(text)f(is)g(pro)o
-(vided;)265 1056 y Fn(\000)30 b Fo(searc)o(h)13 b(the)h(ChangeLog)f(en)o(try)
-g(for)g(paragraphs)g(con)o(taining)h(the)g(names)f(of)g(the)h(\014les)h(w)o
-(e're)330 1118 y(c)o(hec)o(king)h(in;)g(and)f(\014nally)265
-1191 y Fn(\000)30 b Fo(uses)24 b(those)f(paragraphs)f(as)h(the)g(default)h
-(log)f(text)g(in)h(the)f(`)p Fl(*cvs-commit-message*)p Fo(')330
-1254 y(bu\013er.)240 1337 y(Y)l(ou)15 b(can)h(then)f(commit)g(the)h(`)p
-Fl(ChangeLog)p Fo(')d(\014le)j(once)g(p)q(er)f(da)o(y)g(without)g(an)o(y)g
-(log)g(message.)0 1554 y Fk(5.5)33 b(Editing)17 b(\014les)62
-1691 y Fo(There)d(are)g(curren)o(tly)g(three)g(commands)g(that)f(can)h(b)q(e)
-h(used)f(to)g(\014nd)g(a)g(\014le)h(\(that)e(is,)h(load)g(it)g(in)o(to)g(a)g
-(bu\013er)0 1753 y(and)h(start)f(editing)j(it)e(there\).)20
-b(These)15 b(commands)g(w)o(ork)g(on)g(the)g(line)i(that)d(the)i(cursor)e(is)
-i(situated)g(at.)j(They)0 1815 y(ignore)c(an)o(y)g(mark)o(ed)g(\014les.)0
-1963 y Fl(f)216 b Fo(Find)16 b(the)g(\014le)g(that)f(the)g(cursor)g(p)q(oin)o
-(ts)h(to.)k(Run)c(`)p Fl(dired)p Fo(')e(if)i(the)f(cursor)g(p)q(oin)o(ts)h
-(to)f(a)g(directory)240 2025 y(\()p Fl(cvs-mode-find-file)p
-Fo(\).)0 2108 y Fl(o)216 b Fo(Lik)o(e)16 b Fl(f)p Fo(,)f(but)g(use)h(another)
-e(windo)o(w)i(\()p Fl(cvs-mode-find-file-oth)o(er-windo)o(w)p
-Fo(\).)0 2192 y Fl(A)216 b Fo(In)o(v)o(ok)o(e)29 b(`)p Fl
-(add-change-log-entry-other)o(-window)o Fo(')e(to)i(edit)h(a)f(`)p
-Fl(ChangeLog)p Fo(')f(\014le.)64 b(The)240 2254 y(`)p Fl(ChangeLog)p
-Fo(')20 b(will)k(b)q(e)f(found)g(in)g(the)f(directory)h(of)f(the)g(\014le)h
-(the)g(cursor)f(p)q(oin)o(ts)g(to.)41 b(\()p Fl(cvs-)240 2316
-y(mode-add-change-log-entry-)o(other-w)o(indow)p Fo(\))o(.)0
-2533 y Fk(5.6)33 b(Getting)15 b(info)h(ab)r(out)f(\014les)62
-2670 y Fo(Both)g(of)g(the)g(follo)o(wing)h(commands)f(can)h(b)q(e)f
-(customized.)21 b(See)16 b(Chapter)f(6)g([Customization],)f(page)h(18.)p
-eop
-%%Page: 13 15
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(13)0 183 y
-Fl(l)216 b Fo(Run)20 b(`)p Fl(cvs)14 b(log)p Fo(')k(on)h(all)g(selected)h
-(\014les,)g(and)f(sho)o(w)f(the)h(result)g(in)h(a)e(temp)q(orary)g(bu\013er)h
-(\()p Fl(cvs-)240 246 y(mode-log)p Fo(\).)0 345 y Fl(s)216
-b Fo(Run)15 b(`)p Fl(cvs)f(status)p Fo(')e(on)i(all)g(selected)h(\014les,)g
-(and)f(sho)o(w)f(the)g(result)i(in)f(a)f(temp)q(orary)g(bu\013er)h(\()p
-Fl(cvs-)240 407 y(mode-status)p Fo(\).)0 685 y Fk(5.7)33 b(Adding)16
-b(and)f(remo)n(ving)i(\014les)62 828 y Fo(The)h(follo)o(wing)g(commands)g
-(are)f(a)o(v)m(ailable)i(to)e(mak)o(e)g(it)h(easy)g(to)e(add)i(and)g(remo)o
-(v)o(e)f(\014les)h(from)f(the)h(CVS)0 890 y(rep)q(ository)l(.)0
-1051 y Fl(a)216 b Fo(Add)13 b(all)h(selected)g(\014les.)20
-b(This)13 b(command)g(can)g(b)q(e)h(used)f(on)g(`)p Fl(Unknown)p
-Fo(')e(\014les)i(\(see)g(see)g(Section)h(4.1)240 1114 y([File)j(status],)e
-(page)i(7\).)23 b(The)16 b(status)g(of)g(the)h(\014le)g(will)h(c)o(hange)f
-(to)f(`)p Fl(Added)p Fo(',)e(and)j(y)o(ou)f(will)i(ha)o(v)o(e)240
-1176 y(to)g(use)h Fl(c)f Fo(\(`)p Fl(cvs-mode-commit)p Fo(',)e(see)j(see)g
-(Section)h(5.4)d([Committing)i(c)o(hanges],)f(page)h(11\))f(to)240
-1238 y(really)e(add)g(the)f(\014le)h(to)f(the)g(rep)q(ository)l(.)240
-1319 y(This)g(command)f(can)h(also)f(b)q(e)h(used)h(on)e(`)p
-Fl(Removed)p Fo(')f(\014les)i(\(b)q(efore)f(y)o(ou)h(commit)f(them\))g(to)g
-(resur-)240 1381 y(rect)h(them.)240 1462 y(Selected)e(\014les)g(that)d(are)i
-(neither)g(`)p Fl(Unknown)p Fo(')e(nor)h(`)p Fl(Removed)p Fo(')f(will)j(b)q
-(e)f(ignored)g(b)o(y)g(this)f(command.)240 1543 y(The)k(command)h(that)e(is)i
-(run)f(is)h Fl(cvs-mode-add)p Fo(.)0 1642 y Fl(r)216 b Fo(This)16
-b(command)f(remo)o(v)o(es)f(the)h(selected)i(\014les)f(\(after)e(prompting)h
-(for)g(con\014rmation\).)20 b(The)15 b(\014les)240 1704 y(are)j(`)p
-Fl(rm)p Fo('ed)g(from)g(y)o(our)g(directory)h(and)f(\(unless)i(the)e(status)g
-(w)o(as)g(`)p Fl(Unknown)p Fo(';)g(see)h(Section)g(4.1)240
-1766 y([File)e(status],)e(page)h(7\))g(they)g(will)i(also)e(b)q(e)h(`)p
-Fl(cvs)d(remove)p Fo('d.)22 b(If)17 b(the)f(\014les)h(w)o(ere)f(`)p
-Fl(Unknown)p Fo(')f(they)240 1829 y(will)20 b(disapp)q(ear)f(from)e(the)h
-(bu\013er.)29 b(Otherwise)19 b(their)f(status)g(will)h(c)o(hange)g(to)e(`)p
-Fl(Removed)p Fo(',)g(and)240 1891 y(y)o(ou)g(m)o(ust)h(use)g
-Fl(c)f Fo(\(`)p Fl(cvs-mode-commit)p Fo(',)e(see)j(Section)h(5.4)d
-([Committing)i(c)o(hanges],)f(page)h(11\))240 1953 y(to)d(commit)g(the)g
-(remo)o(v)m(al.)240 2034 y(The)g(command)h(that)e(is)i(run)f(is)h
-Fl(cvs-mode-remove-file)p Fo(.)0 2312 y Fk(5.8)33 b(Undoing)15
-b(c)n(hanges)0 2473 y Fl(U)216 b Fo(If)14 b(y)o(ou)f(ha)o(v)o(e)h(mo)q
-(di\014ed)h(a)e(\014le,)i(and)f(for)f(some)h(reason)f(decide)i(that)e(y)o(ou)
-h(don't)f(w)o(an)o(t)g(to)g(k)o(eep)h(the)240 2535 y(c)o(hanges,)i(y)o(ou)g
-(can)g(undo)h(them)f(with)g(this)h(command.)22 b(It)17 b(w)o(orks)e(b)o(y)h
-(remo)o(ving)g(y)o(our)f(w)o(orking)240 2598 y(cop)o(y)20 b(of)g(the)g
-(\014le)h(and)g(then)f(getting)g(the)g(latest)g(v)o(ersion)h(from)e(the)h
-(rep)q(ository)h(\()p Fl(cvs-mode-)240 2660 y(undo-local-changes)p
-Fo(.)p eop
-%%Page: 14 16
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(14)0 183 y
-Fk(5.9)33 b(Remo)n(ving)15 b(handled)i(en)n(tries)0 329 y Fl(x)216
-b Fo(This)16 b(command)f(allo)o(ws)h(y)o(ou)f(to)g(remo)o(v)o(e)f(all)j(en)o
-(tries)f(that)e(y)o(ou)h(ha)o(v)o(e)g(pro)q(cessed.)22 b(More)14
-b(sp)q(ecif-)240 391 y(ically)l(,)20 b(the)e(lines)h(for)e(`)p
-Fl(Updated)p Fo(')f(\014les)i(\(see)g(Section)h(4.1)d([File)j(status],)d
-(page)i(7)f(and)h(\014les)h(that)240 454 y(ha)o(v)o(e)12 b(b)q(een)h(c)o(hec)
-o(k)o(ed)g(in)f(\(see)h(Section)f(5.4)g([Committing)f(c)o(hanges],)h(page)g
-(11\))f(are)h(remo)o(v)o(ed)g(from)240 516 y(the)h(bu\013er.)18
-b(If)13 b(a)f(directory)h(b)q(ecomes)g(empt)o(y)f(the)h(heading)g(for)f(that)
-g(directory)g(is)h(also)g(remo)o(v)o(ed.)240 578 y(This)j(mak)o(es)e(it)i
-(easier)g(to)e(get)h(an)g(o)o(v)o(erview)g(of)g(what)f(needs)i(to)f(b)q(e)h
-(done.)240 650 y(The)e(command)f(is)h(called)g Fl(cvs-mode-remove-handled)p
-Fo(.)j(If)c(`)p Fl(cvs-auto-remove-handled)p Fo(')c(is)240
-712 y(set)15 b(to)g(non-)p Fl(nil)g Fo(this)g(will)i(automatically)f(b)q(e)g
-(p)q(erformed)f(after)f(ev)o(ery)i(commit.)0 792 y Fl(C-k)168
-b Fo(This)11 b(command)f(can)h(b)q(e)g(used)g(for)e(lines)j(that)e(`)p
-Fl(cvs-mode-remove-handled)p Fo(')c(w)o(ould)11 b(not)f(delete,)240
-854 y(but)15 b(that)g(y)o(ou)g(w)o(an)o(t)f(to)g(delete)j(\()p
-Fl(cvs-mode-acknowledge)p Fo(\))o(.)0 1064 y Fk(5.10)32 b(Ignoring)16
-b(\014les)0 1210 y Fl(i)216 b Fo(Arrange)18 b(so)h(that)f(CVS)g(will)j
-(ignore)e(the)g(selected)g(\014les.)32 b(The)19 b(\014le)g(names)g(are)f
-(added)i(to)e(the)240 1273 y(`)p Fl(.cvsignore)p Fo(')d(\014le)k(in)f(the)f
-(corresp)q(onding)i(directory)l(.)26 b(If)18 b(the)f(`)p Fl(.cvsignore)p
-Fo(')f(do)q(esn't)h(exist)h(it)240 1335 y(will)f(b)q(e)f(created.)240
-1406 y(The)d(`)p Fl(.cvsignore)p Fo(')d(\014le)j(should)h(normally)f(b)q(e)g
-(added)g(to)e(the)i(rep)q(ository)l(,)g(but)f(y)o(ou)g(could)i(ignore)240
-1468 y(it)h(also)h(if)f(y)o(ou)g(lik)o(e)h(it)g(b)q(etter)f(that)g(w)o(a)o(y)
-l(.)240 1540 y(This)h(runs)f Fl(cvs-mode-ignore)p Fo(.)0 1750
-y Fk(5.11)32 b(Viewing)16 b(di\013erences)0 1896 y Fl(d)216
-b Fo(Displa)o(y)13 b(a)e(`)p Fl(cvs)k(diff)p Fo(')c(b)q(et)o(w)o(een)h(the)h
-(selected)g(\014les)g(and)f(the)h(R)o(CS)f(v)o(ersion)g(that)g(they)g(are)g
-(based)240 1958 y(on.)24 b(See)17 b(Chapter)f(6)g([Customization],)g(page)g
-(18)g(describ)q(es)i(ho)o(w)e(y)o(ou)g(can)h(send)g(\015ags)f(to)g(`)p
-Fl(cvs)240 2020 y(diff)p Fo('.)i(If)c Fh(cvs-di\013-ignore-marks)i
-Fo(is)e(set)f(to)g(a)g(non-)p Fl(nil)g Fo(v)m(alue)i(or)e(if)h(a)f(pre\014x)h
-(argumen)o(t)f(is)g(giv)o(en)240 2083 y(\(but)20 b(not)g(b)q(oth\))g(an)o(y)g
-(mark)o(ed)g(\014les)h(will)h(not)e(b)q(e)h(considered)h(to)d(b)q(e)i
-(selected.)37 b(\()p Fl(cvs-mode-)240 2145 y(diff-cvs)p Fo(\).)0
-2225 y Fl(b)216 b Fo(If)15 b(CVS)g(\014nds)h(a)f(con\015ict)g(while)i
-(merging)e(t)o(w)o(o)f(v)o(ersions)h(of)f(a)h(\014le)h(\(during)f(a)g(`)p
-Fl(cvs)f(update)p Fo(',)g(see)240 2287 y(Section)g(5.1)d([Up)q(dating)i(the)g
-(directory],)g(page)f(10\))g(it)h(will)h(sa)o(v)o(e)e(the)h(original)g
-(\014le)h(in)f(a)g(\014le)g(called)240 2350 y(`)p Fl(.#)p Fh(FILE)p
-Fl(.)p Fh(VERSION)5 b Fo(')18 b(where)g Fh(FILE)i Fo(is)e(the)g(name)f(of)g
-(the)h(\014le,)h(and)e Fh(VERSION)24 b Fo(is)18 b(the)g(R)o(CS)240
-2412 y(v)o(ersion)d(n)o(um)o(b)q(er)h(that)e(y)o(our)h(\014le)h(w)o(as)f
-(based)g(on.)240 2483 y(With)c(the)h Fl(b)e Fo(command)h(y)o(ou)g(can)h(run)f
-(a)g(`)p Fl(diff)p Fo(')f(on)h(the)g(\014les)h(`)p Fl(.#)p
-Fh(FILE)p Fl(.)p Fh(VERSION)5 b Fo(')12 b(and)f(`)p Fh(FILE)s
-Fo('.)240 2545 y(Y)l(ou)17 b(can)h(get)e(a)h(con)o(text-)g(or)f(Unidi\013)j
-(b)o(y)e(setting)g(`)p Fl(cvs-diff-flags)p Fo(')d(-)j(see)h(Chapter)e(6)h
-([Cus-)240 2608 y(tomization],)g(page)g(18.)24 b(This)18 b(command)f(only)g
-(w)o(orks)f(on)h(\014les)h(that)e(ha)o(v)o(e)h(status)f(`)p
-Fl(Conflict)p Fo(')240 2670 y(or)f(`)p Fl(Merged)p Fo('.)p
-eop
-%%Page: 15 17
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(15)240 183
-y(If)11 b Fh(cvs-di\013-ignore-marks)j Fo(is)d(set)g(to)g(a)f(non-)p
-Fl(nil)h Fo(v)m(alue)i(or)d(if)i(a)f(pre\014x)g(argumen)o(t)f(is)i(giv)o(en)f
-(\(but)g(not)240 246 y(b)q(oth\))h(an)o(y)f(mark)o(ed)h(\014les)g(will)i(not)
-d(b)q(e)i(considered)g(to)e(b)q(e)i(selected.)20 b(\()p Fl
-(cvs-mode-diff-backup)p Fo(\))o(.)0 490 y Fk(5.12)32 b(Running)17
-b(edi\013)0 644 y Fl(e)216 b Fo(This)14 b(command)g(w)o(orks)f(sligh)o(tly)h
-(di\013eren)o(t)g(dep)q(ending)i(on)e(the)g(v)o(ersion)g(of)f(`)p
-Fl(ediff)p Fo(')f(and)i(the)g(\014le)240 707 y(status.)240
-784 y(With)c(mo)q(dern)h(v)o(ersions)f(of)g(`)p Fl(ediff)p
-Fo(',)f(this)i(command)f(in)o(v)o(ok)o(es)g(`)p Fl(run-ediff-from-cvs-buf)o
-(fer)p Fo(')p 1959 792 21 41 v 240 846 a(on)15 b(one)g(\014le.)240
-923 y Fj(Note:)25 b Fo(When)19 b(the)f(\014le)h(status)f(is)h(`)p
-Fl(Merged)p Fo(')d(or)i(`)p Fl(Conflict)p Fo(',)f(CVS)h(has)g(already)h(p)q
-(erformed)f(a)240 985 y(merge.)24 b(The)17 b(resulting)g(\014le)h(is)f(not)f
-(used)h(in)h(an)o(y)e(w)o(a)o(y)f(if)j(y)o(ou)e(use)h(this)g(command.)24
-b(If)16 b(y)o(ou)h(use)240 1047 y(the)h Fl(q)h Fo(command)f(inside)i(`)p
-Fl(ediff)p Fo(')d(\(to)h(successfully)i(terminate)e(a)g(merge\))g(the)h
-(\014le)g(that)f(CVS)240 1110 y(created)d(will)i(b)q(e)f(o)o(v)o(erwritten.)
-240 1187 y(Older)11 b(v)o(ersions)g(of)e(`)p Fl(ediff)p Fo(')g(use)i(an)f(in)
-o(terface)g(similar)h(to)f(`)p Fl(emerge)p Fo('.)16 b(The)11
-b(function)g(`)p Fl(cvs-old-ediff-interfac)o(e)p Fo(')p 2274
-1197 21 42 v 240 1249 a(is)g(in)o(v)o(ok)o(ed)f(if)h(the)f(v)o(ersion)g(of)g
-(`)p Fl(ediff)p Fo(')f(y)o(ou)g(ha)o(v)o(e)h(do)q(esn't)g(supp)q(ort)g(`)p
-Fl(run-ediff-from-cvs-buffer)p Fo(')o(.)p 2036 1258 21 41 v
-240 1311 a(These)16 b(older)f(v)o(ersions)h(do)f(not)g(supp)q(ort)g(merging)g
-(of)g(revisions.)240 1403 y(`)p Fl(Modified)p Fo(')480 1465
-y(Run)g(`)p Fl(ediff-files)p Fo(')c(with)j(y)o(our)f(w)o(orking)g(\014le)i
-(as)e(\014le)i(A,)e(and)h(the)f(latest)h(revision)480 1527
-y(in)i(the)f(rep)q(ository)g(as)g(\014le)i(B.)240 1619 y(`)p
-Fl(Merged)p Fo(')240 1681 y(`)p Fl(Conflict)p Fo(')480 1744
-y(Run)d(`)p Fl(ediff-files3)p Fo(')c(with)k(y)o(our)e(w)o(orking)h(\014le)h
-(\(as)e(it)h(w)o(as)g(prior)g(to)f(y)o(our)h(in)o(v)o(o)q(ca-)480
-1806 y(tion)j(of)f(`)p Fl(cvs-update)p Fo('\))e(as)j(\014le)g(A,)g(the)f
-(latest)h(revision)h(in)f(the)g(rep)q(ository)g(as)f(\014le)480
-1868 y(B,)e(and)h(the)f(revision)i(that)d(y)o(ou)h(based)h(y)o(our)f(lo)q
-(cal)h(mo)q(di\014cations)h(on)e(as)g(ancestor.)240 1960 y(`)p
-Fl(Updated)p Fo(')240 2022 y(`)p Fl(Patched)p Fo(')46 b(Run)14
-b(`)p Fl(ediff-files)p Fo(')d(with)i(y)o(our)g(w)o(orking)g(\014le)h(as)f
-(\014le)h(A,)f(and)g(a)g(giv)o(en)h(revision)g(in)480 2084
-y(the)g(rep)q(ository)g(as)g(\014le)h(B.)f(Y)l(ou)g(are)g(prompted)g(for)f
-(the)h(revision)i(to)d(edi\013)i(against,)480 2147 y(and)e(y)o(ou)f(ma)o(y)g
-(sp)q(ecify)j(either)e(a)g(tag)e(name)i(or)f(a)h(n)o(umerical)h(revision)g(n)
-o(um)o(b)q(er)f(\(see)480 2209 y(Section)j(5.6)e([Getting)h(info)h(ab)q(out)f
-(\014les],)g(page)g(12\).)0 2454 y Fk(5.13)32 b(Running)17
-b(emerge)0 2608 y Fl(E)216 b Fo(In)o(v)o(ok)o(e)16 b(`)p Fl(emerge)p
-Fo(')g(on)g(one)h(\014le.)26 b(This)17 b(command)g(w)o(orks)e(sligh)o(tly)j
-(di\013eren)o(t)f(dep)q(ending)i(on)e(the)240 2670 y(\014le)f(status.)p
-eop
-%%Page: 16 18
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(16)240 183
-y(`)p Fl(Modified)p Fo(')480 246 y(Run)13 b(`)p Fl(emerge-files)p
-Fo(')c(with)j(y)o(our)f(w)o(orking)g(\014le)i(as)e(\014le)i(A,)e(and)h(the)f
-(latest)h(revision)480 308 y(in)k(the)f(rep)q(ository)g(as)g(\014le)i(B.)240
-396 y(`)p Fl(Merged)p Fo(')240 458 y(`)p Fl(Conflict)p Fo(')480
-520 y(Run)11 b(`)p Fl(emerge-files-with-ancest)o(or)p Fo(')c(with)k(y)o(our)e
-(w)o(orking)h(\014le)h(\(as)f(it)g(w)o(as)g(prior)480 582 y(to)20
-b(y)o(our)g(in)o(v)o(o)q(cation)h(of)f(`)p Fl(cvs-update)p
-Fo('\))e(as)j(\014le)g(A,)g(the)f(latest)h(revision)g(in)h(the)480
-645 y(rep)q(ository)11 b(as)f(\014le)h(B,)g(and)g(the)f(revision)i(that)e(y)o
-(ou)g(based)h(y)o(our)f(lo)q(cal)i(mo)q(di\014cations)480 707
-y(on)j(as)g(ancestor.)240 795 y Fj(Note:)25 b Fo(When)19 b(the)f(\014le)h
-(status)f(is)h(`)p Fl(Merged)p Fo(')d(or)i(`)p Fl(Conflict)p
-Fo(',)f(CVS)h(has)g(already)h(p)q(erformed)f(a)240 857 y(merge.)24
-b(The)17 b(resulting)g(\014le)h(is)f(not)f(used)h(in)h(an)o(y)e(w)o(a)o(y)f
-(if)j(y)o(ou)e(use)h(this)g(command.)24 b(If)16 b(y)o(ou)h(use)240
-919 y(the)d Fl(q)f Fo(command)g(inside)i(`)p Fl(emerge)p Fo(')d(\(to)h
-(successfully)i(terminate)f(the)f(merge\))g(the)h(\014le)g(that)f(CVS)240
-981 y(created)i(will)i(b)q(e)f(o)o(v)o(erwritten.)0 1208 y
-Fk(5.14)32 b(Rev)n(erting)17 b(y)n(our)f(bu\013ers)0 1358 y
-Fl(R)216 b Fo(If)17 b(y)o(ou)f(are)g(editing)i(\(or)e(just)g(viewing\))h(a)f
-(\014le)i(in)f(a)f(bu\013er,)h(and)f(that)g(\014le)i(is)f(c)o(hanged)f(b)o(y)
-h(CVS)240 1420 y(during)g(a)f(`)p Fl(cvs-update)p Fo(',)e(all)j(y)o(ou)f(ha)o
-(v)o(e)g(to)g(do)g(is)h(t)o(yp)q(e)f Fl(R)g Fo(in)h(the)g(*cvs*)f(bu\013er)g
-(to)g(read)g(in)h(the)240 1483 y(new)e(v)o(ersions)h(of)f(the)g(\014les.)240
-1558 y(All)h(\014les)g(that)e(are)g(`)p Fl(Updated)p Fo(',)f(`)p
-Fl(Merged)p Fo(')g(or)h(in)h(`)p Fl(Conflict)p Fo(')e(are)h(rev)o(erted)h
-(from)f(the)g(disk.)21 b(An)o(y)240 1620 y(other)15 b(\014les)h(are)f
-(ignored.)20 b(Only)d(\014les)f(that)e(y)o(ou)h(w)o(ere)g(already)h(editing)g
-(are)f(read.)240 1695 y(An)i(error)f(is)i(signalled)g(if)g(y)o(ou)e(ha)o(v)o
-(e)h(mo)q(di\014ed)h(the)f(bu\013er)g(since)h(it)f(w)o(as)f(last)h(c)o
-(hanged.)25 b(\()p Fl(cvs-)240 1757 y(mode-revert-updated-buffer)o(s)p
-Fo(\).)0 1984 y Fk(5.15)32 b(Miscellaneous)15 b(commands)0
-2134 y Fl(M-x)g(cvs-byte-compile-files)240 2196 y Fo(Byte)g(compile)i(all)f
-(selected)g(\014les)h(that)d(end)i(in)g(.el.)0 2284 y Fl(M-x)f
-(cvs-delete-lock)240 2346 y Fo(This)e(command)f(can)g(b)q(e)h(used)g(in)g(an)
-o(y)f(bu\013er,)g(and)g(deletes)i(the)e(lo)q(c)o(k)g(\014les)i(that)d(the)h
-(*cvs*)g(bu\013er)240 2408 y(informs)17 b(y)o(ou)f(ab)q(out.)25
-b(Y)l(ou)17 b(should)h(normally)g(nev)o(er)f(ha)o(v)o(e)f(to)g(use)i(this)f
-(command)g(since)h(CVS)240 2470 y(tries)d(v)o(ery)g(carefully)i(to)d(alw)o(a)
-o(ys)h(remo)o(v)o(e)f(the)h(lo)q(c)o(k)h(\014les)g(itself.)240
-2545 y(Y)l(ou)g(can)g(only)g(use)g(this)g(command)g(when)g(a)g(message)f(in)i
-(the)e(*cvs*)h(bu\013er)f(tells)i(y)o(ou)f(so.)21 b(Y)l(ou)240
-2608 y(should)d(w)o(ait)e(a)h(while)h(b)q(efore)g(using)f(this)h(command)e
-(in)i(case)f(someone)g(else)h(is)f(running)h(a)f(cvs)240 2670
-y(command.)p eop
-%%Page: 17 19
-bop 0 -58 a Fo(Chapter)15 b(5:)k(Commands)1450 b(17)0 183 y
-Fl(q)216 b Fo(Bury)15 b(the)h(*cvs*)e(bu\013er.)20 b(\()p Fl(bury-buffer)p
-Fo(\).)p eop
-%%Page: 18 20
-bop 0 -58 a Fo(Chapter)15 b(6:)k(Customization)1385 b(18)0
-183 y Fm(6)41 b(Customization)62 394 y Fo(If)16 b(y)o(ou)e(ha)o(v)o(e)h(an)g
-(idea)h(ab)q(out)f(an)o(y)f(customization)i(that)e(w)o(ould)i(b)q(e)f(handy)h
-(but)f(isn't)g(presen)o(t)g(in)h(this)g(list,)0 456 y(please)g(tell)g(me!)k
-(See)c(Chapter)f(8)g([Bugs],)f(page)h(22)g(for)f(info)i(on)f(ho)o(w)g(to)f
-(reac)o(h)h(me.)0 616 y(`)p Fl(cvs-erase-input-buffer)p Fo(')240
-678 y(If)h(set)f(to)g(an)o(ything)h(else)h(than)e Fl(nil)h
-Fo(the)f(edit)i(bu\013er)f(will)h(b)q(e)f(erased)g(b)q(efore)g(y)o(ou)f
-(write)h(the)g(log)240 740 y(message)f(\(see)g(Section)h(5.4)e([Committing)h
-(c)o(hanges],)f(page)h(11\).)0 837 y(`)p Fl(cvs-inhibit-copyright-m)o(essage)
-p Fo(')240 899 y(The)g(cop)o(yrigh)o(t)f(message)g(that)g(is)h(displa)o(y)o
-(ed)h(on)e(startup)g(can)h(b)q(e)g(anno)o(ying)g(after)f(a)g(while.)21
-b(Set)240 961 y(this)16 b(v)m(ariable)g(to)f(`)p Fl(t)p Fo(')f(if)i(y)o(ou)f
-(w)o(an)o(t)f(to)h(get)g(rid)h(of)f(it.)20 b(\(But)15 b(don't)g(set)g(this)h
-(to)f(`)p Fl(t)p Fo(')f(in)i(the)f(system)240 1024 y(defaults)h(\014le)g(-)f
-(new)h(users)f(should)h(see)g(this)f(message)g(at)g(least)g(once\).)0
-1120 y(`)p Fl(cvs-diff-flags)p Fo(')240 1183 y(A)i(list)g(of)f(strings)g(to)g
-(pass)g(as)g(argumen)o(ts)g(to)g(the)g(`)p Fl(cvs)f(diff)p
-Fo(')g(and)i(`)p Fl(diff)p Fo(')e(programs.)22 b(This)17 b(is)240
-1245 y(used)i(b)o(y)f(`)p Fl(cvs-mode-diff-cvs)p Fo(')c(and)19
-b(`)p Fl(cvs-mode-diff-backup)p Fo(')14 b(\(k)o(ey)k Fl(b)p
-Fo(,)g(see)g(Section)h(5.11)240 1307 y([Viewing)c(di\013erences],)f(page)f
-(14\).)19 b(If)14 b(y)o(ou)f(prefer)h(the)f(Unidi\013)i(format)e(y)o(ou)g
-(could)h(add)g(this)g(line)240 1370 y(to)h(y)o(our)f(`)p Fl(.emacs)p
-Fo(')g(\014le:)360 1439 y Fl(\(setq)23 b(cvs-diff-flags)f('\("-u"\)\))0
-1536 y Fo(`)p Fl(cvs-diff-ignore-marks)p Fo(')240 1598 y(If)10
-b(this)h(v)m(ariable)h(is)e(non-)p Fl(nil)g Fo(or)g(if)h(a)e(pre\014x)i
-(argumen)o(t)e(is)i(giv)o(en)g(\(but)f(not)f(b)q(oth\))h(to)g(`)p
-Fl(cvs-mode-diff-cvs)p Fo(')p 2112 1609 21 46 v 240 1660 a(or)15
-b(`)p Fl(cvs-mode-diff-backup)p Fo(')c(mark)o(ed)k(\014les)h(are)f(not)g
-(considered)i(selected.)0 1757 y(`)p Fl(cvs-log-flags)p Fo(')240
-1819 y(List)h(of)g(strings)g(to)f(send)h(to)g(`)p Fl(cvs)c(log)p
-Fo('.)27 b(Used)18 b(b)o(y)g(`)p Fl(cvs-mode-log)p Fo(')e(\(k)o(ey)h
-Fl(l)p Fo(,)h(see)g(Section)h(5.6)240 1881 y([Getting)c(info)g(ab)q(out)g
-(\014les],)h(page)f(12\).)0 1978 y(`)p Fl(cvs-status-flags)p
-Fo(')240 2040 y(List)j(of)f(strings)h(to)f(send)h(to)f(`)p
-Fl(cvs)d(status)p Fo('.)26 b(Used)18 b(b)o(y)g(`)p Fl(cvs-mode-status)p
-Fo(')d(\(k)o(ey)i Fl(s)p Fo(,)g(see)h(Sec-)240 2103 y(tion)d(5.6)g([Getting)f
-(info)i(ab)q(out)f(\014les],)g(page)g(12\).)0 2200 y(`)p Fl
-(cvs-auto-remove-handled)o Fo(')240 2262 y(If)h(this)g(v)m(ariable)h(is)f
-(set)f(to)g(an)o(y)g(non-)p Fl(nil)h Fo(v)m(alue)g(`)p Fl
-(cvs-mode-remove-handled)p Fo(')c(will)17 b(b)q(e)f(called)240
-2324 y(ev)o(ery)i(time)h(y)o(ou)f(c)o(hec)o(k)h(in)g(\014les,)h(after)d(the)i
-(c)o(hec)o(k-in)h(is)e(ready)l(.)30 b(See)19 b(Section)g(5.9)f([Remo)o(ving)
-240 2386 y(handled)f(en)o(tries],)e(page)g(14.)0 2483 y(`)p
-Fl(cvs-auto-revert-after-c)o(ommit)p Fo(')240 2545 y(If)f(this)f(v)m(ariable)
-i(is)f(set)f(to)g(an)o(y)g(non-`)p Fl(nil)p Fo(')f(v)m(alue)j(an)o(y)e
-(bu\013ers)g(y)o(ou)g(ha)o(v)o(e)g(that)f(visit)i(a)f(\014le)i(that)d(is)240
-2608 y(committed)j(will)i(b)q(e)f(automatically)g(rev)o(erted.)k(This)c(v)m
-(ariable)g(is)g(default)g(`)p Fl(t)p Fo('.)j(See)d(Section)g(5.4)240
-2670 y([Committing)f(c)o(hanges],)f(page)h(11.)p eop
-%%Page: 19 21
-bop 0 -58 a Fo(Chapter)15 b(6:)k(Customization)1385 b(19)0
-183 y(`)p Fl(cvs-update-prog-output-)o(skip-reg)o(exp)p Fo(')240
-246 y(The)20 b(`)p Fl(-u)p Fo(')f(\015ag)h(in)g(the)g(`)p Fl(modules)p
-Fo(')f(\014le)i(can)f(b)q(e)g(used)h(to)e(run)h(a)g(command)g(whenev)o(er)g
-(a)g(`)p Fl(cvs)240 308 y(update)p Fo(')12 b(is)h(p)q(erformed)g(\(see)g
-(cvs\(5\)\).)18 b(This)c(regexp)f(is)g(used)h(to)e(searc)o(h)h(for)f(the)h
-(last)g(line)i(in)f(that)240 370 y(output.)19 b(It)12 b(is)h(normally)g(set)f
-(to)g(`)p Fl("$")p Fo('.)18 b(That)12 b(setting)g(is)h(only)g(correct)f(if)h
-(the)g(command)f(outputs)240 432 y(nothing.)20 b(Note)14 b(that)g(p)q(cl-cvs)
-i(will)g(get)e(v)o(ery)g(confused)h(if)g(the)g(command)f(outputs)g
-Fh(an)o(ything)19 b Fo(to)240 495 y(`)p Fl(stderr)p Fo('.)0
-582 y(`)p Fl(cvs-cvsroot)p Fo(')240 644 y(This)e(v)m(ariable)h(can)f(b)q(e)g
-(set)g(to)f(o)o(v)o(erride)g(`)p Fl(CVSROOT)p Fo('.)23 b(It)16
-b(should)i(b)q(e)f(a)f(string.)24 b(If)17 b(it)g(is)g(set)g(then)240
-706 y(ev)o(erytime)h(a)g(cvs)g(command)f(is)i(run)f(it)g(will)i(b)q(e)e
-(called)i(as)d(`)p Fl(cvs)d(-d)h Fh(cvs-cvsro)q(ot)q Fi(:)8
-b(:)g(:)n Fo(')17 b(This)i(can)240 769 y(b)q(e)d(useful)g(if)g(y)o(our)f
-(site)g(has)g(sev)o(eral)h(rep)q(ositories.)0 856 y(`)p Fl(TMPDIR)p
-Fo(')70 b(Pcl-cvs)20 b(uses)f(this)g Fh(en)o(vironmen)o(t)g(v)m(ariable)k
-Fo(to)18 b(decide)j(where)e(to)f(put)h(the)g(temp)q(orary)f(\014les)i(it)240
-918 y(needs.)h(It)15 b(defaults)h(to)e(`)p Fl(/tmp)p Fo(')g(if)i(it)f(is)h
-(not)f(set.)0 1005 y(`)p Fl(cvs-commit-buffer-requi)o(re-final)o(-newlin)o(e)
-p Fo(')240 1067 y(When)g(y)o(ou)f(en)o(ter)h(a)f(log)h(message)f(in)h(the)g
-(`)p Fl(*cvs-commit-message*)p Fo(')c(bu\013er)k(p)q(cl-cvs)h(will)g(nor-)240
-1130 y(mally)d(automatically)f(insert)h(a)f(trailing)h(newline,)h(unless)g
-(there)e(already)g(is)h(one.)19 b(This)12 b(b)q(eha)o(vior)240
-1192 y(can)k(b)q(e)h(con)o(trolled)g(via)f(`)p Fl(cvs-commit-buffer-requi)o
-(re-fina)o(l-newli)o(ne)p Fo('.)j(If)d(it)h(is)f(`)p Fl(t)p
-Fo(')f(\(the)240 1254 y(default)g(b)q(eha)o(vior\),)f(a)g(newline)i(will)g
-(alw)o(a)o(ys)d(b)q(e)i(app)q(ended.)21 b(If)15 b(it)f(is)h(`)p
-Fl(nil)p Fo(',)e(newlines)j(will)g(nev)o(er)240 1316 y(b)q(e)21
-b(app)q(ended.)36 b(An)o(y)21 b(other)f(v)m(alue)h(causes)f(p)q(cl-cvs)i(to)e
-(ask)g(the)g(user)g(whenev)o(er)h(there)f(is)h(no)240 1379
-y(trailing)16 b(newline)h(in)f(the)g(commit)f(message)g(bu\013er.)0
-1466 y(`)p Fl(cvs-sort-ignore-file)p Fo(')240 1528 y(If)20
-b(this)f(v)m(ariable)i(is)f(set)f(to)f(an)o(y)h(non-`)p Fl(nil)p
-Fo(')g(v)m(alue)h(the)g(`)p Fl(.cvsignore)p Fo(')d(will)k(alw)o(a)o(ys)d(b)q
-(e)i(sorted)240 1590 y(whenev)o(er)c(y)o(ou)e(use)i(`)p Fl(cvs-mode-ignore)p
-Fo(')c(to)j(add)g(a)g(\014le)h(to)f(it.)20 b(This)c(option)f(is)h(on)f(b)o(y)
-g(default.)p eop
-%%Page: 20 22
-bop 0 -58 a Fo(Chapter)15 b(7:)k(F)l(uture)d(enhancemen)o(ts)1249
-b(20)0 183 y Fm(7)41 b(F)-7 b(uture)15 b(enhancemen)n(ts)62
-369 y Fo(Pcl-cvs)i(is)f(still)i(under)e(dev)o(elopmen)o(t)h(and)f(needs)h(a)e
-(n)o(um)o(b)q(er)h(of)g(enhancemen)o(ts)g(to)g(b)q(e)g(called)i(complete.)0
-431 y(Belo)o(w)h(is)h(m)o(y)f(curren)o(t)g(wish-list)i(for)d(future)h
-(releases)h(of)f(p)q(cl-cvs.)33 b(Please,)21 b(let)e(me)g(kno)o(w)g(whic)o(h)
-h(of)f(these)0 493 y(features)c(y)o(ou)g(w)o(an)o(t)f(most.)19
-b(They)c(are)g(listed)h(b)q(elo)o(w)g(in)g(appro)o(ximately)f(the)g(order)g
-(that)g(I)g(curren)o(tly)h(think)g(I)0 556 y(will)h(implemen)o(t)f(them)g
-(in.)37 693 y Fn(\017)30 b Fo(Rewritten)22 b(parser)e(co)q(de.)38
-b(There)22 b(are)e(man)o(y)h(situations)g(where)g(p)q(cl-cvs)i(will)g(fail)f
-(to)e(recognize)i(the)90 755 y(output)15 b(from)f(CVS.)h(The)h(situation)f
-(could)i(b)q(e)f(greatly)e(increased.)37 829 y Fn(\017)30 b
-Fo(`)p Fl(cvs-status)p Fo('.)39 b(This)23 b(will)h(run)e(`)p
-Fl(cvs)15 b(status)p Fo(')21 b(in)i(a)f(directory)g(and)h(pro)q(duce)g(a)f
-(bu\013er)g(that)g(lo)q(oks)90 892 y(prett)o(y)14 b(m)o(uc)o(h)h(lik)o(e)g
-(the)g(curren)o(t)g(*cvs*)f(bu\013er.)19 b(That)14 b(bu\013er)h(will)h
-(include)h(information)e(for)f(all)i(v)o(ersion-)90 954 y(con)o(trolled)h
-(\014les.)25 b(\(There)16 b(will)j(b)q(e)e(a)f(simple)i(k)o(eystrok)o(e)d(to)
-h(remo)o(v)o(e)g(all)h Fl(")p Fo(unin)o(teresting)p Fl(")h
-Fo(\014les,)f(that)f(is,)90 1016 y(\014les)j(that)f(are)g Fl(")p
-Fo(Up-to-date)p Fl(")p Fo(\).)29 b(In)19 b(this)g(new)g(bu\013er)f(y)o(ou)g
-(will)j(b)q(e)e(able)g(to)f(up)q(date)h(a)f(\014le,)i(commit)e(a)90
-1078 y(\014le,)e(et)f(c.)20 b(The)15 b(big)g(win)h(with)f(this)h(is)f(that)g
-(y)o(ou)f(will)j(b)q(e)f(able)f(to)g(w)o(atc)o(h)f(the)h(di\013erences)h(b)q
-(et)o(w)o(een)f(y)o(our)90 1141 y(curren)o(t)e(w)o(orking)g(\014le)h(and)g
-(the)f(head)g(revision)i(in)f(the)f(rep)q(ository)g(b)q(efore)h(y)o(ou)f(up)q
-(date)g(the)h(\014le,)g(and)f(y)o(ou)90 1203 y(can)i(then)h(c)o(ho)q(ose)f
-(to)g(up)q(date)g(it)h(or)f(let)g(it)h(w)o(ait)e(for)h(a)g(while)i(longer.)37
-1277 y Fn(\017)30 b Fo(Log)11 b(mo)q(de.)19 b(When)12 b(this)g(mo)q(de)g(is)g
-(\014nished)h(y)o(ou)f(will)h(b)q(e)f(able)g(to)f(mo)o(v)o(e)g(around)h
-(\(using)g Fl(n)f Fo(and)h Fl(p)p Fo(\))f(b)q(et)o(w)o(een)90
-1340 y(the)18 b(revisions)h(of)f(a)f(\014le,)j(mark)d(t)o(w)o(o)g(of)g(them,)
-h(and)h(run)f(a)g(di\013)g(b)q(et)o(w)o(een)g(them.)28 b(Y)l(ou)19
-b(will)g(b)q(e)g(able)g(to)90 1402 y(hide)14 b(branc)o(hes)e(\(similar)i(to)d
-(the)i(w)o(a)o(y)e(y)o(ou)h(can)h(hide)g(sub-paragraphs)f(in)i(outline-mo)q
-(de\))f(and)g(do)f(merges)90 1464 y(b)q(et)o(w)o(een)k(revisions.)k(Other)c
-(ideas)g(ab)q(out)f(this)g(are)g(w)o(elcome.)37 1539 y Fn(\017)30
-b Fo(The)13 b(curren)o(t)f(mo)q(del)h(for)f(marks)g(in)h(the)g(*cvs*)f
-(bu\013er)g(seems)g(to)g(b)q(e)h(confusing.)20 b(I)13 b(am)f(considering)i
-(to)e(use)90 1601 y(the)j(VM)g(mo)q(del)i(instead,)e(where)h(marks)e(are)h
-(normally)h(inactiv)o(e.)22 b(T)l(o)15 b(activ)m(ate)g(the)h(mark,)e(y)o(ou)h
-(issue)h(a)90 1663 y(command)g(lik)o(e)i(`)p Fl(cvs-mode-next-command-)o
-(uses-ma)o(rks)p Fo('.)i(I)d(migh)o(t)f(implemen)o(t)i(a)e(\015ag)g(so)g
-(that)f(y)o(ou)90 1725 y(can)g(use)h(either)g(v)o(ersion.)k(F)l(eedbac)o(k)15
-b(on)h(this)f(b)q(efore)h(I)f(start)f(co)q(ding)i(it)g(is)g(v)o(ery)f(w)o
-(elcome.)37 1800 y Fn(\017)30 b Fo(It)22 b(should)h(b)q(e)g(p)q(ossible)h(to)
-e(run)g(commands)h(suc)o(h)f(as)g(`)p Fl(cvs)14 b(log)p Fo(',)23
-b(`)p Fl(cvs)14 b(status)p Fo(')21 b(and)i(`)p Fl(cvs)14 b(commit)p
-Fo(')90 1862 y(directly)21 b(from)d(a)h(bu\013er)g(con)o(taining)h(a)f
-(\014le,)i(instead)f(of)e(ha)o(ving)i(to)e(`)p Fl(cvs-update)p
-Fo('.)30 b(If)19 b(the)h(directory)90 1924 y(con)o(tains)15
-b(man)o(y)g(\014les)h(the)g(`)p Fl(cvs-update)p Fo(')d(can)i(tak)o(e)g(quite)
-h(some)f(time,)g(esp)q(ecially)j(on)d(a)g(slo)o(w)g(mac)o(hine.)90
-1987 y(I)f(planed)h(to)f(put)g(these)g(kind)h(of)e(commands)h(on)g(the)g
-(pre\014x)g Fl(C-c)h(C-v)p Fo(,)e(but)h(that)g(turned)g(out)g(to)f(b)q(e)h
-(used)90 2049 y(b)o(y)k(for)f(instance)i(c)p Fl(++)p Fo(-mo)q(de.)28
-b(If)18 b(y)o(ou)f(ha)o(v)o(e)h(an)o(y)f(suggestions)h(for)f(a)h(b)q(etter)f
-(pre\014x)i(k)o(ey)l(,)f(please)h(let)f(me)90 2111 y(kno)o(w.)37
-2186 y Fn(\017)30 b Fo(Increased)15 b(robustness.)k(F)l(or)13
-b(instance,)i(y)o(ou)e(can)h(not)g(curren)o(tly)g(press)g Fl(C-g)f
-Fo(when)i(y)o(ou)e(are)h(en)o(tering)g(the)90 2248 y(description)j(of)d(a)h
-(\014le)i(that)d(y)o(ou)h(are)g(adding)h(without)f(confusing)h(p)q(cl-cvs.)37
-2322 y Fn(\017)30 b Fo(Supp)q(ort)16 b(for)e(m)o(ultiple)j(activ)o(e)f(*cvs*)
-e(bu\013ers.)37 2397 y Fn(\017)30 b Fo(Dired)20 b(supp)q(ort.)33
-b(I)20 b(ha)o(v)o(e)g(an)f(exp)q(erimen)o(tal)i(`)p Fl(dired-cvs.el)p
-Fo(')c(that)i(w)o(orks)g(together)g(with)h(CVS)f(1.2.)90 2459
-y(Unfortunately)c(I)h(wrote)e(it)i(on)f(top)g(of)f(a)h(non-standard)g(`)p
-Fl(dired.el)p Fo(',)e(so)i(it)h(m)o(ust)e(b)q(e)i(rewritten.)37
-2533 y Fn(\017)30 b Fo(An)15 b(abilit)o(y)i(to)d(send)i(user-supplied)i
-(options)d(to)g(all)h(the)f(cvs)h(commands.)37 2608 y Fn(\017)30
-b Fo(Pcl-cvs)18 b(is)g(not)f(at)g(all)h(clev)o(er)g(ab)q(out)f(what)g(it)h
-(should)g(do)f(when)h(`)p Fl(cvs)d(update)p Fo(')h(runs)h(a)g(program)g
-(\(due)90 2670 y(to)e(the)h(`)p Fl(-u)p Fo(')f(option)h(in)h(the)f(`)p
-Fl(modules)p Fo(')e(\014le)j(|)f(see)g(`)p Fl(cvs\(5\))p Fo('\).)k(The)d
-(curren)o(t)e(release)i(uses)f(a)g(regexp)g(to)p eop
-%%Page: 21 23
-bop 0 -58 a Fo(Chapter)15 b(7:)k(F)l(uture)d(enhancemen)o(ts)1249
-b(21)90 183 y(searc)o(h)17 b(for)f(the)g(end.)26 b(A)o(t)16
-b(the)h(v)o(ery)f(least)h(that)f(regexp)h(should)g(b)q(e)h(con\014gured)f
-(for)f(di\013eren)o(t)h(mo)q(dules.)90 246 y(T)l(ell)c(me)f(if)g(y)o(ou)g(ha)
-o(v)o(e)f(an)o(y)g(idea)i(ab)q(out)f(what)f(is)h(the)g(righ)o(t)f(thing)i(to)
-e(do.)19 b(In)12 b(a)f(p)q(erfect)i(w)o(orld)e(the)h(program)90
-308 y(should)k(also)f(b)q(e)h(allo)o(w)o(ed)g(to)e(prin)o(t)i(to)e(`)p
-Fl(stderr)p Fo(')g(without)h(causing)h(p)q(cl-cvs)h(to)d(crash.)62
-457 y(If)k(y)o(ou)f(miss)h(something)g(in)h(this)f(wish-list,)h(let)f(me)g
-(kno)o(w!)27 b(I)18 b(don't)f(promise)h(that)f(I)h(will)h(write)f(it,)g(but)0
-519 y(I)i(will)g(at)f(least)g(try)g(to)f(co)q(ordinate)i(the)f(e\013orts)f
-(of)h(making)g(a)g(go)q(o)q(d)g(Emacs)g(fron)o(t)f(end)i(to)f(CVS.)g(See)g
-(See)0 582 y(Chapter)c(8)g([Bugs],)f(page)h(22)g(for)f(information)h(ab)q
-(out)h(ho)o(w)e(to)h(reac)o(h)g(me.)62 719 y(So)j(far,)g(I)g(ha)o(v)o(e)f
-(written)h(most)f(of)h(p)q(cl-cvs)h(in)g(m)o(y)e(all-to-rare)h(spare)g(time.)
-28 b(If)18 b(y)o(ou)g(w)o(an)o(t)f(p)q(cl-cvs)i(to)e(b)q(e)0
-781 y(dev)o(elop)q(ed)e(faster)e(y)o(ou)g(can)g(write)h(a)f(con)o(tract)f
-(with)i(Sign)o(um)g(Supp)q(ort)g(to)f(do)g(the)h(extension.)20
-b(Y)l(ou)14 b(can)f(reac)o(h)0 843 y(Sign)o(um)g(Supp)q(ort)g(b)o(y)f(email)h
-(to)f(`)p Fl(info@signum.se)p Fo(')e(or)i(via)g(mail)h(to)f(Sign)o(um)h(Supp)
-q(ort)g(AB,)f(Bo)o(x)g(2044,)f(S-580)0 906 y(02)k(Link)o(oping,)h(Sw)o(eden.)
-21 b(Phone:)f Fl(+)p Fo(46)14 b(\(0\))g(13)h(-)g(21)g(46)g(00.)k(F)l(ax:)g
-Fl(+)p Fo(46)c(\(0\))f(13)h(-)g(21)f(47)h(00.)p eop
-%%Page: 22 24
-bop 0 -58 a Fo(Chapter)15 b(8:)k(Bugs)d(\(kno)o(wn)e(and)i(unkno)o(wn\))1112
-b(22)0 183 y Fm(8)41 b(Bugs)15 b(\(kno)n(wn)g(and)g(unkno)n(wn\))62
-370 y Fo(If)c(y)o(ou)f(\014nd)h(a)g(bug)f(or)g(misfeature,)h(don't)f
-(hesitate)h(to)f(tell)i(me!)18 b(Send)11 b(email)h(to)e(`)p
-Fl(ceder@lysator.liu.se)p Fo(')o(.)62 507 y(If)18 b(y)o(ou)g(ha)o(v)o(e)f
-(ideas)i(for)e(impro)o(v)o(emen)o(ts,)g(or)h(if)g(y)o(ou)f(ha)o(v)o(e)h
-(written)f(some)h(extensions)g(to)f(this)i(pac)o(k)m(age,)f(I)0
-569 y(w)o(ould)e(lik)o(e)g(to)e(hear)i(from)e(y)o(ou.)20 b(I)15
-b(hop)q(e)h(that)e(y)o(ou)h(\014nd)h(this)g(pac)o(k)m(age)f(useful!)62
-706 y(Belo)o(w)h(is)f(a)g(partial)h(list)g(of)f(curren)o(tly)g(kno)o(wn)g
-(problems)h(with)g(p)q(cl-cvs)g(v)o(ersion)g(1.05.)0 856 y(Commit)f(causes)g
-(Emacs)g(to)g(hang)240 918 y(Emacs)c(w)o(aits)g(for)h(the)f(`)p
-Fl(cvs)k(commit)p Fo(')10 b(command)i(to)f(\014nish)i(b)q(efore)f(y)o(ou)f
-(can)h(do)f(an)o(ything.)19 b(If)12 b(y)o(ou)240 980 y(start)i(a)h(bac)o
-(kground)g(job)h(from)e(the)i(loginfo)f(\014le)i(y)o(ou)e(m)o(ust)g(tak)o(e)f
-(care)h(that)g(it)h(closes)g(`)p Fl(stdout)p Fo(')240 1043
-y(and)c(`)p Fl(stderr)p Fo(')e(if)i(y)o(ou)f(do)h(not)f(w)o(an)o(t)g(to)g(w)o
-(ait)g(for)g(it.)19 b(\(Y)l(ou)11 b(do)h(that)f(with)h(`)p
-Fl(background-command)240 1105 y(&>-)j(2&>-)f(&)p Fo(')h(if)h(y)o(ou)f(are)f
-(starting)h(`)p Fl(background-command)p Fo(')d(from)i(a)h(`)p
-Fl(/bin/sh)p Fo(')f(shell)i(script\).)240 1180 y(Y)l(our)d(emacs)h(will)h
-(also)e(hang)h(if)g(there)f(w)o(as)g(a)g(lo)q(c)o(k)h(\014le)g(in)g(the)g
-(rep)q(ository)l(.)19 b(In)14 b(this)g(case)g(y)o(ou)f(can)240
-1242 y(t)o(yp)q(e)i Fl(C-g)g Fo(to)g(get)f(con)o(trol)h(o)o(v)o(er)g(y)o(our)
-f(emacs)h(again.)0 1329 y(Name)g(clash)h(in)g(Emacs)f(19)240
-1391 y(This)j(is)f(really)h(a)e(bug)h(in)h(Elib)h(or)d(the)h(Emacs)f(19)h
-(distribution.)27 b(Both)16 b(Elib)j(and)e(Emacs)f(19.6)240
-1453 y(through)f(at)f(least)i(19.10)e(con)o(tains)h(a)g(\014le)h(named)g(`)p
-Fl(cookie.el)p Fo('.)i(One)e(of)e(the)i(\014les)g(will)h(ha)o(v)o(e)e(to)240
-1516 y(b)q(e)h(renamed,)f(and)g(w)o(e)g(are)g(curren)o(tly)h(negotiating)f
-(ab)q(out)g(whic)o(h)h(of)f(the)g(\014les)i(to)d(rename.)0
-1603 y(Commands)h(while)h(cvs-up)q(date)g(is)g(running)240
-1665 y(It)h(is)h(p)q(ossible)h(to)e(t)o(yp)q(e)g(commands)g(in)h(the)g(*cvs*)
-e(bu\013er)i(while)g(the)g(up)q(date)g(is)f(running,)i(but)240
-1727 y(error)14 b(messages)h(is)h(all)g(that)e(y)o(ou)h(will)i(get.)j(The)15
-b(error)g(messages)f(should)i(b)q(e)g(b)q(etter.)0 1815 y(Unexp)q(ected)h
-(output)e(from)f(CVS)240 1877 y(Unexp)q(ected)19 b(output)f(from)f(CVS)h
-(confuses)g(p)q(cl-cvs.)29 b(It)18 b(will)i(curren)o(tly)e(create)g(a)f(bug)h
-(rep)q(ort)240 1939 y(that)c(y)o(ou)h(can)h(mail)g(to)e(me.)20
-b(It)15 b(should)i(do)e(something)g(more)g(civilized.)p eop
-%%Page: 23 25
-bop 0 -58 a Fo(App)q(endix)17 b(A:)e(GNU)g(GENERAL)h(PUBLIC)g(LICENSE)885
-b(23)0 183 y Fm(App)r(endix)13 b(A)41 b(GNU)15 b(GENERAL)i(PUBLIC)f(LICENSE)p
-eop
-%%Page: 24 26
-bop 0 -58 a Fo(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1337
-b(24)0 183 y Fm(F)-7 b(unction)15 b(and)g(V)-7 b(ariable)14
-b(Index)0 416 y Fk(B)0 482 y Fg(bury-buffe)o(r)t Ff(.)s(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Fe(16)0 590 y Fk(C)0 656 y Fg(cookie-nex)o(t-)o(coo)o(ki)o(e)t
-Ff(.)s(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)16 b Fe(10)0
-715 y Fg(cookie-pre)o(vi)o(ous)o(-c)o(ook)o(ie)7 b Ff(.)s(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)20 b Fe(10)0 773 y(cvs-auto-remo)o(v)o(e-handled)c(\(v)n(ariable\))t
-Ff(.)9 b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17
-b Fe(18)0 831 y(cvs-auto-rev)o(ert-after-commit)d(\(v)n(ariable\))e
-Ff(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Fe(11,)13 b(18)0
-889 y Fg(cvs-byte-c)o(om)o(pil)o(e-)o(fil)o(es)7 b Ff(.)s(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)20 b Fe(16)0 947 y(cvs-commit-bu\013er-require-\014n)q(al)q(-newli)q(ne)c
-(\(v)n(ariable\))5 b Ff(.)j(.)e(.)18 b Fe(18)0 1005 y(cvs-cvsro)q(ot)c(\(v)n
-(ariable\))8 b Ff(.)g(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Fe(18)0 1063 y Fg(cvs-delete)o(-l)o(ock)6 b Ff(.)t(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fe(10)0 1121 y(cvs-di\013-\015ags)15
-b(\(v)n(ariable\))7 b Ff(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19
-b Fe(18)0 1180 y(cvs-di\013-ignore-marks)d(\(v)n(ariable\))7
-b Ff(.)h(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20
-b Fe(14,)13 b(18)0 1238 y(cvs-erase-input-bu\013er)j(\(v)n(ariable\))c
-Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Fe(11,)13 b(18)0 1296 y(cvs-inhibit-copyrig)q(h)o(t-message)j(\(v)n
-(ariable\))9 b Ff(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)21
-b Fe(18)0 1354 y(cvs-log-\015ags)15 b(\(v)n(ariable\))9 b Ff(.)f(.)e(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)22 b Fe(18)0 1412 y Fg(cvs-mode-a)o(ck)o(now)o(le)o
-(dge)6 b Ff(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Fe(14)0
-1470 y Fg(cvs-mode-a)o(dd)8 b Ff(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Fe(13)0 1528 y Fg(cvs-mode-a)o(dd)o(-ch)o(an)
-o(ge-)o(log)o(-e)o(ntr)o(y-)o(oth)o(er)o(-wi)o(ndo)o(w)7 b
-Ff(.)s(.)f(.)20 b Fe(12)0 1586 y Fg(cvs-mode-c)o(ha)o(nge)o(lo)o(g-c)o(omm)o
-(it)r Ff(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)g(.)16 b Fe(11)0 1644 y Fg(cvs-mode-c)o(om)o(mit)6
-b Ff(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
-b Fe(11)0 1703 y Fg(cvs-mode-d)o(if)o(f-b)o(ac)o(kup)6 b Ff(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)22 b Fe(14)0 1761 y Fg(cvs-mode-d)o(if)o(f-c)o(vs)t
-Ff(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b
-Fe(14)0 1819 y Fg(cvs-mode-e)o(di)o(ff)8 b Ff(.)s(.)e(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)21 b Fe(15)0 1877 y Fg(cvs-mode-e)o(me)o(rge)6
-b Ff(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
-b Fe(15)1015 416 y Fg(cvs-mode-fi)o(nd)o(-fi)o(le)s Ff(.)s(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(12)1015 474
-y Fg(cvs-mode-fi)o(nd)o(-fi)o(le-)o(ot)o(her)o(-w)o(ind)o(ow)t
-Ff(.)s(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17
-b Fe(12)1015 532 y Fg(cvs-mode-ig)o(no)o(re)7 b Ff(.)s(.)f(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(14)1015 590 y Fg(cvs-mode-lo)o(g)8
-b Ff(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)25
-b Fe(12)1015 648 y Fg(cvs-mode-ma)o(rk)6 b Ff(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fe(11)1015 706 y Fg(cvs-mode-ma)o(rk)
-o(-al)o(l-f)o(il)o(es)5 b Ff(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(11)1015
-764 y Fg(cvs-mode-re)o(mo)o(ve-)o(fil)o(e)6 b Ff(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)23 b Fe(13)1015 823 y Fg(cvs-mode-re)o(mo)o(ve-)o(han)o(dl)o(ed)5
-b Ff(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(14)1015 881 y Fg(cvs-mode-re)o(ve)o(rt-)o
-(upd)o(at)o(ed-)o(bu)o(ffe)o(rs)t Ff(.)s(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)17 b Fe(16)1015 939 y Fg(cvs-mode-st)o(at)o(us)7
-b Ff(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Fe(12)1015 997 y Fg(cvs-mode-un)o(do)o(-lo)o(cal)o(-c)o(han)o(ge)o(s)9
-b Ff(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)22 b Fe(13)1015 1055 y Fg(cvs-mode-un)o(ma)o(rk)7 b
-Ff(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Fe(11)1015 1113 y Fg(cvs-mode-un)o(ma)o(rk-)o(all)o(-f)o(ile)o(s)s
-Ff(.)s(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)16 b Fe(11)1015 1171 y Fg(cvs-mode-un)o(ma)o(rk-)o(up)s
-Ff(.)s(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(11)1015
-1229 y Fg(cvs-mode-up)o(da)o(te-)o(no-)o(pr)o(omp)o(t)s Ff(.)s(.)6
-b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)16 b Fe(10)1015 1287 y Fg(cvs-old-edi)o(ff)o(-in)o(ter)o(fa)o(ce)5
-b Ff(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(15)1015 1346 y(cvs-sort-ignore-\014le)d
-(\(v)n(ariable\))8 b Ff(.)g(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 b Fe(18)1015 1404
-y(cvs-status-\015ags)15 b(\(v)n(ariable\))9 b Ff(.)f(.)e(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Fe(18)1015 1462 y Fg(cvs-update)5 b Ff(.)s(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(10)1015
-1520 y(cvs-up)q(date-prog-outpu)q(t-skip)q(-regexp)d(\(v)n(ariable\))8
-b Ff(.)g(.)e(.)g(.)g(.)g(.)21 b Fe(18)1015 1632 y Fk(R)1015
-1698 y Fg(run-ediff-f)o(ro)o(m-c)o(vs-)o(bu)o(ffe)o(r)s Ff(.)s(.)6
-b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)16 b Fe(15)1015 1810 y Fk(T)1015 1877 y Fe(TMPDIR)e(\(en)o(vironmen)o
-(t)h(v)n(ariable\))5 b Ff(.)j(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)18 b Fe(18)p eop
-%%Page: 25 27
-bop 0 -58 a Fo(Concept)15 b(Index)1616 b(25)0 183 y Fm(Concept)16
-b(Index)0 437 y Fk(-)0 503 y Fe(-u)d(option)h(in)g(mo)q(dules)h(\014le)9
-b Ff(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22 b Fe(18)0 616 y Fk(.)0
-682 y Fe(.cvsignore)14 b(\014le,)g(sorting)5 b Ff(.)j(.)e(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)18 b Fe(18)0 795 y Fk(A)0 861 y Fe(Ab)q(out)13
-b(p)q(cl-cvs)t Ff(.)8 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(3)0 920 y(Activ)o(e)d(\014les)s
-Ff(.)7 b(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)16 b Fe(8)0 978 y(Added)e(\(\014le)f(status\))7
-b Ff(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Fe(7)0 1036 y(Adding)14 b(\014les)t Ff(.)7 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)16 b Fe(13)0
-1094 y(Arc)o(hiv)o(es)7 b Ff(.)g(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Fe(4)0
-1152 y(Author,)13 b(ho)o(w)g(to)g(reac)o(h)c Ff(.)e(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)22 b Fe(22)0 1210 y(Authors)12 b Ff(.)6 b(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)23
-b Fe(3)0 1268 y(Automatically)16 b(inserting)f(newline)6 b
-Ff(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)19 b Fe(18)0 1326 y(Automatically)d(remo)o(v)o(e)d(handled)i(\014les)s
-Ff(.)8 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)16
-b Fe(18)0 1385 y(Automatically)g(sorting)e(.cvsignore)d Ff(.)6
-b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)22
-b Fe(18)0 1497 y Fk(B)0 1564 y Fe(Bu\013er)14 b(con)o(ten)o(ts)e
-Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24
-b Fe(7)0 1622 y(Bugs,)13 b(ho)o(w)g(to)g(rep)q(ort)h(them)5
-b Ff(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(22)0 1680 y(Bugs,)13
-b(kno)o(wn)t Ff(.)8 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)17 b Fe(22)0 1738 y(Byte)c(compilation)h
-Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)23
-b Fe(16)0 1851 y Fk(C)0 1917 y Fe(Ci)7 b Ff(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)20 b Fe(11)0 1975 y(Commit)13 b(bu\013er)6 b Ff(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)18 b Fe(11)0
-2033 y(Commit)13 b(message,)h(inserting)h(newline)t Ff(.)8
-b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Fe(18)0 2091 y(Committing)d(c)o(hanges)8 b Ff(.)g(.)e(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)21 b Fe(11)0 2149 y(Con\015ict)14 b(\(\014le)g(status\))t
-Ff(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)16
-b Fe(7)0 2208 y(Con\015icts,)e(ho)o(w)f(to)g(resolv)o(e)h(them)d
-Ff(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)24 b Fe(14)0 2266 y(Con\015icts,)14 b(resolving)s
-Ff(.)9 b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)16
-b Fe(15)0 2324 y(Con)o(text)d(di\013,)h(ho)o(w)f(to)g(get)t
-Ff(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(18)0 2382 y(Con)o(tributors)6
-b Ff(.)h(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)18 b Fe(3)0 2440 y(Cop)o(yrigh)o(t)c(message,)g(getting)g(rid)g
-(of)e(it)d Ff(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-22 b Fe(18)0 2498 y(Customization)7 b Ff(.)i(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Fe(18)0 2611 y Fk(D)0
-2677 y Fe(Deleting)15 b(\014les)s Ff(.)8 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)16 b Fe(13)1015 437
-y(Di\013)t Ff(.)8 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)17 b
-Fe(14)1015 495 y(Dired)5 b Ff(.)j(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19
-b Fe(12)1015 609 y Fk(E)1015 676 y Fe(Edi\013)7 b Ff(.)h(.)e(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20
-b Fe(14,)13 b(15)1015 734 y(Edit)h(bu\013er)s Ff(.)8 b(.)e(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Fe(11)1015 792 y(Editing)f(\014les)c Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)24 b Fe(12)1015
-850 y(Email)15 b(arc)o(hiv)o(es)7 b Ff(.)h(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(4)1015 908 y(Email)15
-b(to)e(the)g(author)t Ff(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-17 b Fe(22)1015 966 y(Emerge)6 b Ff(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19
-b Fe(15)1015 1024 y(Enhancemen)o(ts)7 b Ff(.)i(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(20)1015 1083 y(Erasing)15
-b(commit)f(message)8 b Ff(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b
-Fe(11)1015 1141 y(Erasing)15 b(the)e(input)i(bu\013er)s Ff(.)7
-b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)16 b Fe(18)1015 1199 y(Example)f(run)t
-Ff(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)17 b Fe(5)1015 1257 y(Expunging)f(unin)o(teresting)g(en)o(tries)6
-b Ff(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)19 b Fe(14)1015 1371 y Fk(F)1015 1438 y Fe(F)l(A)o(Q)t
-Ff(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(22)1015 1496
-y(File)d(selection)s Ff(.)8 b(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)16 b Fe(8)1015 1554 y(File)f(status)7
-b Ff(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)20 b Fe(7)1015 1612 y(Finding)c(\014les)9
-b Ff(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)22 b Fe(12)1015 1670 y(Flush)15 b(c)o(hanges)d Ff(.)6
-b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)24
-b Fe(13)1015 1728 y(Ftp-sites)5 b Ff(.)j(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
-b Fe(4)1015 1843 y Fk(G)1015 1909 y Fe(Generating)d(a)e(t)o(yp)q(eset)h(man)o
-(ual)6 b Ff(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(2)1015 1967 y(Generating)c(the)e
-(on-line)i(man)o(ual)d Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Fe(2)1015 2025
-y(Getting)15 b(p)q(cl-cvs)c Ff(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)23 b Fe(4)1015 2083 y(Getting)15
-b(rid)e(of)g(lo)q(c)o(k)h(\014les)f Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)25
-b Fe(16)1015 2141 y(Getting)15 b(rid)e(of)g(the)g(Cop)o(yrigh)o(t)i(message.)
-7 b Ff(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20
-b Fe(18)1015 2200 y(Getting)15 b(rid)e(of)g(unin)o(teresting)j(lines)7
-b Ff(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)20 b Fe(14)1015 2258 y(Getting)15 b(status)8 b Ff(.)e(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 b Fe(12)1015
-2316 y(Getting)15 b(the)e(*cvs*)g(bu\013er)f Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)24 b Fe(10)1015 2430 y Fk(H)1015 2497 y Fe(Handled)15 b(lines,)f(remo)o
-(ving)h(them)6 b Ff(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(14)1015 2611 y Fk(I)1015
-2677 y Fe(Info-\014le)14 b(\(ho)o(w)f(to)g(generate\))5 b Ff(.)i(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)18 b Fe(2)p eop
-%%Page: 26 28
-bop 0 -58 a Fo(Concept)15 b(Index)1616 b(26)0 183 y Fe(Inhibiting)16
-b(the)d(Cop)o(yrigh)o(t)i(message.)6 b Ff(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(18)0 241 y(Installation)9
-b Ff(.)g(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)21 b Fe(1)0 299 y(Installation)16 b(of)d(elisp)h(\014les)7
-b Ff(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Fe(1)0 358
-y(Installation)c(of)d(on-line)i(man)o(ual)c Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)22
-b Fe(2)0 416 y(Installation)16 b(of)d(t)o(yp)q(eset)g(man)o(ual)6
-b Ff(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)19 b Fe(2)0 474 y(In)o(tro)q(duction)8 b
-Ff(.)g(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)20 b Fe(5)0 532 y(In)o(v)o(oking)15 b(dired)8 b Ff(.)f(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(12)0
-590 y(In)o(v)o(oking)15 b(edi\013)c Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)22 b Fe(14,)13 b(15)0 648 y(In)o(v)o(oking)i(emerge)9
-b Ff(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22
-b Fe(15)0 781 y Fk(K)0 847 y Fe(Kno)o(wn)13 b(bugs)8 b Ff(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Fe(22)0 980 y Fk(L)0 1047 y Fe(Loading)15 b(\014les)6 b Ff(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19
-b Fe(12)0 1105 y(Lo)q(c)o(k)13 b(\014les)8 b Ff(.)f(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20
-b Fe(16)0 1163 y(Log)13 b(\(R)o(CS/cvs)h(command\))9 b Ff(.)e(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)22 b Fe(12)0 1296 y Fk(M)0 1362 y Fe(Man)o(ual)15 b(installation)h
-(\(on-line\))8 b Ff(.)h(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(2)0 1420 y(Man)o(ual)15
-b(installation)h(\(t)o(yp)q(eset\))t Ff(.)8 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Fe(2)0 1478 y(Mark)o(ed)d(\014les)e Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fe(8)0
-1537 y(Marking)15 b(\014les)d Ff(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Fe(11)0 1595 y(Merged)14
-b(\(\014le)g(status\))8 b Ff(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)20 b Fe(7)0 1653 y(Mo)q(di\014ed)15 b(\(\014le)f(status\))5
-b Ff(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b
-Fe(7)0 1711 y(Mo)q(dules)d(\014le)f(\(-u)f(option\))6 b Ff(.)h(.)f(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)19 b Fe(18)0 1769 y(Mo)o(v)o(e)13 b(a)o(w)o(a)o(y)g
-Ff(\014le)j Fe(-)d(it)g(is)h(in)g(the)f(w)o(a)o(y)g(\(\014le)h(status\))t
-Ff(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(7)0 1827 y(Mo)o(v)o(emen)o(t)d
-(Commands)d Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b
-Fe(10)0 1960 y Fk(O)0 2026 y Fe(On-line)15 b(man)o(ual)f(\(ho)o(w)f(to)g
-(generate\))7 b Ff(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)20 b Fe(2)0 2159 y Fk(P)0 2226 y Fe(P)o(atc)o(hed)14
-b(\(\014le)g(status\))d Ff(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)24 b Fe(7)0 2284 y(Prin)o(ting)15 b(a)e(man)o(ual)g Ff(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b
-Fe(2)0 2342 y(Problems,)14 b(list)g(of)f(common)8 b Ff(.)f(.)f(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)21 b Fe(22)0 2400 y(Putting)14 b(\014les)g(under)g(CVS)f(con)o(trol)7
-b Ff(.)g(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)20 b Fe(13)1015 183 y Fk(R)1015 250 y Fe(Recompilin)q(g)c(elisp)e
-(\014les)f Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)24 b
-Fe(16)1015 308 y(Remo)o(v)o(ed)14 b(\(\014le)g(status\))d Ff(.)6
-b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Fe(7)1015 366
-y(Remo)o(v)o(ed)14 b(b)o(y)e(y)o(ou,)h(c)o(hanged)g(in)h(rep)q(ository)g
-(\(\014le)f(status\))5 b Ff(.)i(.)17 b Fe(7)1015 424 y(Remo)o(v)o(ed)d(from)f
-(rep)q(ository)i(\(\014le)f(status\))d Ff(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Fe(7)1015 482 y(Remo)o(v)o(ed)14
-b(from)f(rep)q(ository)m(,)h(c)o(hanged)h(b)o(y)e(y)o(ou)g(\(\014le)h
-(status\))1099 540 y Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19
-b Fe(7)1015 598 y(Remo)o(ving)c(\014les)7 b Ff(.)g(.)g(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fe(13)1015 656
-y(Remo)o(ving)15 b(unin)o(teresting)h(\(pro)q(cessed\))e(lines)7
-b Ff(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Fe(14)1015
-715 y(Rep)q(orting)15 b(bugs)f(and)g(ideas)8 b Ff(.)g(.)e(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22
-b Fe(22)1015 773 y(Require)15 b(\014nal)f(newline)s Ff(.)9
-b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(18)1015
-831 y(Resolving)f(con\015icts)7 b Ff(.)h(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)21 b Fe(15)1015 889 y(Resurrecting)15 b(\014les)d
-Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23
-b Fe(13)1015 947 y(Rev)o(erting)15 b(bu\013ers)d Ff(.)6 b(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Fe(16)1015 1005 y(Rev)o(erting)15
-b(bu\013ers)f(after)f(commit)e Ff(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Fe(11,)13 b(18)1015 1113 y
-Fk(S)1015 1180 y Fe(Selected)i(\014les)6 b Ff(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19 b Fe(8)1015
-1238 y(Selecting)d(\014les)e(\(commands)g(to)f(mark)g(\014les\))7
-b Ff(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(11)1015
-1296 y(Sites)5 b Ff(.)j(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18
-b Fe(4)1015 1354 y(Sorting)d(the)e(.cvsignore)i(\014le)9 b
-Ff(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)g(.)22 b Fe(18)1015 1412 y(Status)14
-b(\(cvs)f(command\))c Ff(.)e(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)22
-b Fe(12)1015 1470 y(Syncing)15 b(bu\013ers)c Ff(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Fe(16)1015 1578
-y Fk(T)1015 1644 y Fe(T)m(eX)13 b(-)f(generating)j(a)e(t)o(yp)q(eset)h(man)o
-(ual)8 b Ff(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)21 b Fe(2)1015 1703 y(This)14 b(rep)q(ository)h(is)f(missing!)p
-Fd(:)7 b(:)f(:)19 b Fe(\(\014le)14 b(status\))e Ff(.)6 b(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)24 b Fe(7)1015 1810 y Fk(U)1015 1877 y Fe(Undo)14
-b(c)o(hanges)t Ff(.)7 b(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)17 b Fe(13)1015 1935 y(Unidi\013,)e(ho)o(w)e(to)g(get)5
-b Ff(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18
-b Fe(18)1015 1993 y(Unin)o(teresting)e(en)o(tries,)d(getting)i(rid)e(of)g
-(them)5 b Ff(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18 b
-Fe(14)1015 2051 y(Unkno)o(wn)c(\(\014le)g(status\))8 b Ff(.)e(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(7)1015 2109 y(Up)q(date)14
-b(program)g(\(-u)f(option)h(in)g(mo)q(dules)h(\014le\))c Ff(.)6
-b(.)h(.)f(.)g(.)g(.)g(.)g(.)24 b Fe(18)1015 2167 y(Up)q(dated)14
-b(\(\014le)g(status\))6 b Ff(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)19 b Fe(7)1015 2275 y Fk(V)1015 2342 y Fe(V)m(ariables,)c(list)f(of)f(all)
-c Ff(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22 b
-Fe(18)1015 2400 y(Viewing)15 b(di\013erences)5 b Ff(.)j(.)e(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)18 b Fe(14,)13 b(15)p eop
-%%Page: 27 29
-bop 0 -58 a Fo(Key)16 b(Index)1700 b(27)0 183 y Fm(Key)15 b(Index)0
-430 y Fk(A)0 496 y Fg(a)d(-)h(add)e(a)i(file)5 b Ff(.)g(.)h(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(13)0
-554 y Fg(A)12 b(-)h(add)e(ChangeLog)f(entry)f Ff(.)d(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24
-b Fe(12)0 679 y Fk(B)0 745 y Fg(b)12 b(-)h(diff)e(backup)g(file)6
-b Ff(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(14)0
-870 y Fk(C)0 936 y Fg(c)12 b(-)h(commit)d(files)e Ff(.)t(.)e(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Fe(11)0 994 y Fg(C)12
-b(-)h(commit)d(files)h(with)g(ChangeLog)f(message)c Ff(.)s(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)19 b Fe(11)0 1052 y Fg(C-k)12 b(-)g(remove)f(selected)e(entries)s
-Ff(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)16 b Fe(14)0 1110 y Fg(C-n)c(-)g(Move)f(down)h(one)f(file)t
-Ff(.)5 b(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Fe(10)0 1169 y Fg(C-p)12
-b(-)g(Move)f(up)h(one)g(file)7 b Ff(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20
-b Fe(10)0 1293 y Fk(D)0 1359 y Fg(d)12 b(-)h(run)e(`cvs)19
-b(diff')5 b Ff(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18
-b Fe(14)0 1418 y Fg(DEL)12 b(-)g(unmark)f(previous)e(file)e
-Ff(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)20 b Fe(11)0 1542 y Fk(E)0 1609 y Fg(e)12 b(-)h(invoke)d
-(`ediff')5 b Ff(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18
-b Fe(15)0 1667 y Fg(E)12 b(-)h(invoke)d(`emerge')t Ff(.)s(.)c(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)17 b Fe(15)0 1725 y Fg(ESC)12 b(DEL)f(-)i(unmark)d
-(all)i(files)c Ff(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b Fe(11)0 1849 y Fk(F)0 1916
-y Fg(f)12 b(-)h(find)e(file)g(or)h(directory)7 b Ff(.)f(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23
-b Fe(12)0 2040 y Fk(G)0 2107 y Fg(g)12 b(-)h(Rerun)e(`cvs)18
-b(update')9 b Ff(.)s(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)21 b Fe(10)0
-2231 y Fk(I)0 2298 y Fg(i)12 b(-)h(ignoring)d(files)5 b Ff(.)t(.)h(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(14)1015 430 y Fk(L)1015
-496 y Fg(l)13 b(-)f(run)g(`cvs)18 b(log')7 b Ff(.)t(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Fe(12)1015 604 y Fk(M)1015
-670 y Fg(m)13 b(-)f(marking)e(a)j(file)c Ff(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)22 b Fe(11)1015 729 y Fg(M)13 b(-)f(marking)e(all)i(files)
-5 b Ff(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Fe(11)1015
-836 y Fk(N)1015 903 y Fg(n)13 b(-)f(Move)g(down)f(one)g(file)c
-Ff(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Fe(10)1015 1011 y
-Fk(O)1015 1077 y Fg(o)13 b(-)f(find)g(file)f(in)h(other)f(window)c
-Ff(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)23 b Fe(12)1015 1185 y Fk(P)1015 1252 y Fg(p)13 b(-)f(Move)g(up)g(on)g
-(file)d Ff(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)24
-b Fe(10)1015 1359 y Fk(Q)1015 1426 y Fg(q)13 b(-)f(bury)g(the)f(*cvs*)g
-(buffer)s Ff(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)16 b Fe(16)1015 1534 y
-Fk(R)1015 1600 y Fg(r)d(-)f(remove)f(a)h(file)d Ff(.)d(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fe(13)1015 1658 y Fg(R)13 b(-)f(revert)f
-(buffers)5 b Ff(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19
-b Fe(16)1015 1766 y Fk(S)1015 1833 y Fg(s)13 b(-)f(run)g(`cvs)18
-b(status')9 b Ff(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)25 b
-Fe(12)1015 1891 y Fg(SPC)12 b(-)h(Move)e(down)g(one)h(file)t
-Ff(.)5 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(10)1015 1999 y Fk(U)1015
-2065 y Fg(U)13 b(-)f(undo)g(changes)c Ff(.)s(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)21 b Fe(13)1015 2123 y Fg(u)13 b(-)f(unmark)f(a)h
-(file)d Ff(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Fe(11)1015 2231 y Fk(X)1015 2298 y Fg(x)13 b(-)f(remove)f(processed)e
-(entries)c Ff(.)s(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)18 b Fe(14)p eop
-%%Page: -1 30
-bop 1937 -58 a Fo(i)0 183 y Fm(Short)16 b(Con)n(ten)n(ts)0
-299 y Fc(1)78 b(Installation)9 b Fb(.)i(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)26
-b Fc(1)0 366 y(2)78 b(Ab)q(out)17 b(p)q(cl-cvs)10 b Fb(.)f(.)h(.)g(.)g(.)g(.)
-g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)26
-b Fc(3)0 432 y(3)78 b(Getting)17 b(started)8 b Fb(.)i(.)g(.)g(.)g(.)g(.)g(.)g
-(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)25
-b Fc(5)0 499 y(4)78 b(Bu\013er)16 b(con)o(ten)o(ts)11 b Fb(.)f(.)g(.)f(.)h(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)28
-b Fc(7)0 565 y(5)78 b(Commands)13 b Fb(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
-h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)29
-b Fc(10)0 632 y(6)78 b(Customization)6 b Fb(.)j(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)22
-b Fc(18)0 698 y(7)78 b(F)l(uture)16 b(enhancemen)o(ts)f Fb(.)10
-b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)33
-b Fc(20)0 764 y(8)78 b(Bugs)17 b(\(kno)o(wn)f(and)h(unkno)o(wn\))d
-Fb(.)c(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)29 b Fc(22)0
-831 y(App)q(endix)16 b(A)49 b(GNU)15 b(GENERAL)i(PUBLIC)f(LICENSE)h
-Fb(.)10 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)33
-b Fc(23)0 897 y(F)l(unction)16 b(and)h(V)l(ariable)e(Index)i
-Fb(.)10 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)34
-b Fc(24)0 964 y(Concept)16 b(Index)e Fb(.)c(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)30
-b Fc(25)0 1030 y(Key)16 b(Index)g Fb(.)10 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
-(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
-(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
-(.)34 b Fc(27)p eop
-%%Page: -2 31
-bop 1925 -58 a Fo(ii)0 183 y Fm(T)-7 b(able)15 b(of)g(Con)n(ten)n(ts)0
-358 y Fk(1)67 b(Installation)13 b Fb(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)35 b Fk(1)149
-435 y Fo(1.1)45 b(Installation)16 b(of)f(the)g(p)q(cl-cvs)i(program)5
-b Fa(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)19 b Fo(1)149
-498 y(1.2)45 b(Installation)16 b(of)f(the)g(on-line)i(man)o(ual.)11
-b Fa(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)25 b Fo(2)149
-560 y(1.3)45 b(Ho)o(w)15 b(to)f(mak)o(e)h(t)o(yp)q(eset)g(do)q(cumen)o
-(tation)g(from)g(p)q(cl-cvs.texinfo)6 b Fa(.)j(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)21 b Fo(2)0 684 y Fk(2)67 b(Ab)r(out)22 b(p)r(cl-cvs)17
-b Fb(.)10 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
-(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
-(.)h(.)38 b Fk(3)149 762 y Fo(2.1)45 b(Con)o(tributors)14 b(to)h(p)q(cl-cvs)e
-Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)26 b Fo(3)149 825 y(2.2)45 b(Where)15 b(can)h(I)f(get)g(p)q
-(cl-cvs?)6 b Fa(.)k(.)d(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)21 b Fo(4)0 949 y Fk(3)67 b(Getting)23
-b(started)8 b Fb(.)i(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
-(.)g(.)g(.)30 b Fk(5)0 1089 y(4)67 b(Bu\013er)23 b(con)n(ten)n(ts)11
-b Fb(.)f(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)33
-b Fk(7)149 1167 y Fo(4.1)45 b(File)16 b(status)9 b Fa(.)e(.)g(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)23 b Fo(7)149 1229 y(4.2)45
-b(Selected)17 b(\014les)9 b Fa(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)23 b Fo(8)0 1354 y Fk(5)67 b(Commands)13 b Fb(.)c(.)h(.)f(.)h(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)35 b
-Fk(10)149 1432 y Fo(5.1)45 b(Up)q(dating)16 b(the)f(directory)e
-Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)28 b Fo(10)149 1494 y(5.2)45 b(Mo)o(v)o(emen)o(t)14
-b(Commands)9 b Fa(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fo(10)149 1556 y(5.3)45 b(Marking)15
-b(\014les)5 b Fa(.)k(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)20
-b Fo(11)149 1618 y(5.4)45 b(Committing)15 b(c)o(hanges)6 b
-Fa(.)h(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)21 b Fo(11)149 1681 y(5.5)45 b(Editing)16
-b(\014les)t Fa(.)9 b(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)20
-b Fo(12)149 1743 y(5.6)45 b(Getting)15 b(info)h(ab)q(out)f(\014les)c
-Fa(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)26 b Fo(12)149 1805 y(5.7)45 b(Adding)16 b(and)g(remo)o(ving)f
-(\014les)f Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)28 b Fo(13)149 1868 y(5.8)45 b(Undoing)16 b(c)o(hanges)9
-b Fa(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)24 b Fo(13)149 1930 y(5.9)45
-b(Remo)o(ving)16 b(handled)g(en)o(tries)6 b Fa(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fo(14)149 1992
-y(5.10)45 b(Ignoring)15 b(\014les)5 b Fa(.)k(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)21 b Fo(14)149 2054 y(5.11)45 b(Viewing)16 b(di\013erences)7
-b Fa(.)i(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)23 b Fo(14)149 2117 y(5.12)45 b(Running)17
-b(edi\013)10 b Fa(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b
-Fo(15)149 2179 y(5.13)45 b(Running)17 b(emerge)t Fa(.)7 b(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)19 b Fo(15)149 2241 y(5.14)45 b(Rev)o(erting)16 b(y)o(our)e(bu\013ers)
-8 b Fa(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)23 b Fo(16)149 2303 y(5.15)45 b(Miscellaneous)17
-b(commands)d Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)29 b Fo(16)0 2428 y Fk(6)67 b(Customization)6 b
-Fb(.)k(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)29
-b Fk(18)0 2568 y(7)67 b(F)-6 b(uture)24 b(enhancemen)n(ts)16
-b Fb(.)10 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fk(20)p
-eop
-%%Page: -3 32
-bop 1912 -58 a Fo(iii)0 45 y Fk(8)67 b(Bugs)22 b(\(kno)n(wn)h(and)g(unkno)n
-(wn\))14 b Fb(.)d(.)f(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)36 b Fk(22)0 185 y(App)r(endix)24 b(A)67
-b(GNU)22 b(GENERAL)g(PUBLIC)g(LICENSE)141 247 y Fb(.)10 b(.)g(.)g(.)g(.)g(.)f
-(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
-(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
-(.)h(.)g(.)g(.)g(.)g(.)g(.)29 b Fk(23)0 387 y(F)-6 b(unction)25
-b(and)d(V)-6 b(ariable)24 b(Index)17 b Fb(.)10 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38
-b Fk(24)0 527 y(Concept)22 b(Index)11 b Fb(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)f(.)
-h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)34 b Fk(25)0
-667 y(Key)22 b(Index)d Fb(.)10 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Fk(27)p
-eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo
deleted file mode 100644
index bb0a4fec3d8..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo
+++ /dev/null
@@ -1,1744 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-
-@comment Id: pcl-cvs.texinfo,v 1.45 1993/05/31 22:38:15 ceder Exp
-@comment Documentation for the GNU Emacs CVS mode.
-@comment Copyright (C) 1992 Per Cederqvist
-
-@comment This file is part of the pcl-cvs distribution.
-
-@comment Pcl-cvs is free software; you can redistribute it and/or modify
-@comment it under the terms of the GNU General Public License as published by
-@comment the Free Software Foundation; either version 1, or (at your option)
-@comment any later version.
-
-@comment Pcl-cvs is distributed in the hope that it will be useful,
-@comment but WITHOUT ANY WARRANTY; without even the implied warranty of
-@comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-@comment GNU General Public License for more details.
-
-@comment You should have received a copy of the GNU General Public License
-@comment along with pcl-cvs; see the file COPYING. If not, write to
-@comment the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-@setfilename pcl-cvs.info
-@settitle Pcl-cvs - The Emacs Front-End to CVS
-@setchapternewpage on
-
-@ifinfo
-Copyright @copyright{} 1992 Per Cederqvist
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-section entitled ``GNU General Public License'' is included exactly as
-in the original, and provided that the entire resulting derived work is
-distributed under the terms of a permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that the section entitled ``GNU General Public License'' and
-this permission notice may be included in translations approved by the
-Free Software Foundation instead of in the original English.
-@end ifinfo
-
-@synindex vr fn
-@comment The titlepage section does not appear in the Info file.
-@titlepage
-@sp 4
-@comment The title is printed in a large font.
-@center @titlefont{User's Guide}
-@sp
-@center @titlefont{to}
-@sp
-@center @titlefont{pcl-cvs - the Emacs Front-End to CVS}
-@sp 2
-@center release 1.05
-@comment -release-
-@sp 3
-@center Per Cederqvist
-@sp 3
-@center last updated 31 May 1993
-@comment -date-
-
-@comment The following two commands start the copyright page
-@comment for the printed manual. This will not appear in the Info file.
-@page
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1992 Per Cederqvist
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-section entitled ``GNU General Public License'' is included exactly as
-in the original, and provided that the entire resulting derived work is
-distributed under the terms of a permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that the section entitled ``GNU General Public License'' and
-this permission notice may be included in translations approved by the
-Free Software Foundation instead of in the original English.
-@end titlepage
-
-@comment ================================================================
-@comment The real text starts here
-@comment ================================================================
-
-@node Top, Copying, (dir), (dir)
-@comment node-name, next, previous, up
-
-
-@ifinfo
-This info manual describes pcl-cvs which is a GNU Emacs front-end to
-CVS. It works with CVS version 1.3. This manual is updated to release
-1.05 of pcl-cvs.
-@end ifinfo
-@comment -release-
-
-@menu
-* Copying:: GNU General Public License
-* Installation:: How to install pcl-cvs on your system.
-* About pcl-cvs:: Authors and ftp sites.
-
-* Getting started:: An introduction with a walk-through example.
-* Buffer contents:: An explanation of the buffer contents.
-* Commands:: All commands, grouped by type.
-
-* Customization:: How you can tailor pcl-cvs to suit your needs.
-* Future enhancements:: Future enhancements of pcl-cvs.
-* Bugs:: Bugs (known and unknown).
-* Function and Variable Index:: List of functions and variables.
-* Concept Index:: List of concepts.
-* Key Index:: List of keystrokes.
-
- --- The Detailed Node Listing ---
-
-Installation
-
-* Pcl-cvs installation:: How to install pcl-cvs on your system.
-* On-line manual installation:: How to install the on-line manual.
-* Typeset manual installation:: How to create typeset documentation
- about pcl-cvs.
-
-About pcl-cvs
-
-* Contributors:: Contributors to pcl-cvs.
-* Archives:: Where can I get a copy of Pcl-Cvs?
-
-Buffer contents
-
-* File status:: The meaning of the second field.
-* Selected files:: How selection works.
-
-Commands
-
-* Updating the directory:: Commands to update the local directory
-* Movement commands:: How to move up and down in the buffer
-* Marking files:: How to mark files that other commands
- will later operate on.
-* Committing changes:: Checking in your modifications to the
- CVS repository.
-* Editing files:: Loading files into Emacs.
-* Getting info about files:: Display the log and status of files.
-* Adding and removing files:: Adding and removing files
-* Undoing changes:: Undoing changes
-* Removing handled entries:: Uninteresting lines can easily be removed.
-* Ignoring files:: Telling CVS to ignore generated files.
-* Viewing differences:: Commands to @samp{diff} different versions.
-* Emerge::
-* Reverting your buffers:: Reverting your buffers
-* Miscellaneous commands:: Miscellaneous commands
-@end menu
-
-@node Copying, Installation, Top, Top
-@unnumbered GNU GENERAL PUBLIC LICENSE
-@center Version 2, June 1991
-
-@display
-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
-675 Mass Ave, Cambridge, MA 02139, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-@end display
-
-@unnumberedsec Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software---to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-@iftex
-@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end iftex
-@ifinfo
-@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end ifinfo
-
-@enumerate
-@item
-This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The ``Program'', below,
-refers to any such program or work, and a ``work based on the Program''
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term ``modification''.) Each licensee is addressed as ``you''.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-@item
-You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-@item
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-@enumerate a
-@item
-You must cause the modified files to carry prominent notices
-stating that you changed the files and the date of any change.
-
-@item
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-@item
-If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License. (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-@end enumerate
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-@item
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-@enumerate a
-@item
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-@item
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-@item
-Accompany it with the information you received as to the offer
-to distribute corresponding source code. (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-@end enumerate
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-@item
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-@item
-You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-@item
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-@item
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-@item
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-@item
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-@item
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-@iftex
-@heading NO WARRANTY
-@end iftex
-@ifinfo
-@center NO WARRANTY
-@end ifinfo
-
-@item
-BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-@item
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-@end enumerate
-
-@iftex
-@heading END OF TERMS AND CONDITIONS
-@end iftex
-@ifinfo
-@center END OF TERMS AND CONDITIONS
-@end ifinfo
-
-@page
-@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the ``copyright'' line and a pointer to where the full notice is found.
-
-@smallexample
-@var{one line to give the program's name and a brief idea of what it does.}
-Copyright (C) 19@var{yy} @var{name of author}
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-@end smallexample
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-@smallexample
-Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-This is free software, and you are welcome to redistribute it
-under certain conditions; type `show c' for details.
-@end smallexample
-
-The hypothetical commands @samp{show w} and @samp{show c} should show
-the appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than @samp{show w} and
-@samp{show c}; they could even be mouse-clicks or menu items---whatever
-suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary. Here is a sample; alter the names:
-
-@example
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-`Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-@var{signature of Ty Coon}, 1 April 1989
-Ty Coon, President of Vice
-@end example
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
-@node Installation, About pcl-cvs, Copying, Top
-@comment node-name, next, previous, up
-@chapter Installation
-@cindex Installation
-
-This section describes the installation of pcl-cvs, the GNU Emacs CVS
-front-end. You should install not only the elisp files themselves, but
-also the on-line documentation so that your users will know how to use
-it. You can create typeset documentation from the file
-@file{pcl-cvs.texinfo} as well as an on-line info file. The following
-steps are also described in the file @file{INSTALL} in the source
-directory.
-
-@menu
-* Pcl-cvs installation:: How to install pcl-cvs on your system.
-* On-line manual installation:: How to install the on-line manual.
-* Typeset manual installation:: How to create typeset documentation
- about pcl-cvs.
-@end menu
-
-@node Pcl-cvs installation, On-line manual installation, Installation, Installation
-@comment node-name, next, previous, up
-@section Installation of the pcl-cvs program
-@cindex Installation of elisp files
-
-@enumerate
-@item
-Edit the file @file{Makefile} to reflect the situation at your site.
-The only things you have to change is the definition of @code{lispdir}
-and @code{infodir}. The elisp files will be copied to @code{lispdir},
-and the info file to @code{infodir}.
-
-@item
-Configure pcl-cvs.el
-
-There are a couple of paths that you have to check to make sure that
-they match you system. They appear early in the file pcl-cvs.el.
-
-@strong{NOTE:} If your system is running emacs 18.57 or earlier you MUST
-uncomment the line that says:
-
-@example
-(setq delete-exited-processes nil)
-@end example
-
-Setting @code{delete-exited-processes} to @code{nil} works around a bug
-in emacs that causes it to dump core. The bug was fixed in emacs
-18.58.@refill
-
-@item
-Release 1.05 and later of pcl-cvs requires parts of the Elib library,
-version 0.07 or later. Elib is available via anonymous ftp from
-prep.ai.mit.edu in @file{pub/gnu/elib-0.07.tar.z}, and from a lot of
-other sites that mirrors prep. Get Elib, and install it, before
-proceeding.
-
-@item
-Type @samp{make install} in the source directory. This will
-byte-compile all @file{.el} files and copy both the @file{.el} and the
-@file{.elc} into the directory you specified in step 1.
-
-If you don't want to install the @file{.el} files but only the
-@file{.elc} files (the byte-compiled files), you can type `@samp{make
-install_elc}' instead of `@samp{make install}'.
-
-If you only want to create the compiled elisp files, but don't want to
-install them, you can type @samp{make elcfiles} instead. This is what
-happens if you only type @samp{make} without parameters.
-
-@item
-Edit the file @file{default.el} in your emacs lisp directory (usually
-@file{/usr/gnu/emacs/lisp} or something similar) and enter the contents
-of the file @file{pcl-cvs-startup.el} into it. It contains a couple of
-@code{auto-load}s that facilitates the use of pcl-cvs.
-
-@end enumerate
-
-@node On-line manual installation, Typeset manual installation, Pcl-cvs installation, Installation
-@comment node-name, next, previous, up
-@section Installation of the on-line manual.
-@cindex Manual installation (on-line)
-@cindex Installation of on-line manual
-@cindex Generating the on-line manual
-@cindex On-line manual (how to generate)
-@cindex Info-file (how to generate)
-
-@enumerate
-@item
-Create the info file @file{pcl-cvs} from @file{pcl-cvs.texinfo} by
-typing @samp{make info}. If you don't have the program @samp{makeinfo}
-you can get it by anonymous ftp from e.g. @samp{ftp.gnu.ai.mit.edu} as
-@file{pub/gnu/texinfo-2.14.tar.Z} (there might be a newer version there
-when you read this), or you could use the preformatted info file
-@file{pcl-cvs.info} that is included in the distribution (type
-@samp{cp pcl-cvs.info pcl-cvs}).@refill
-
-@item
-Move the info file @file{pcl-cvs} to your standard info directory.
-This might be called something like @file{/usr/gnu/emacs/info}.@refill
-
-@item
-Edit the file @file{dir} in the info directory and enter one line to
-contain a pointer to the info file @file{pcl-cvs}. The line can, for
-instance, look like this:@refill
-
-@example
-* Pcl-cvs: (pcl-cvs). An Emacs front-end to CVS.
-@end example
-@end enumerate
-
-@node Typeset manual installation, , On-line manual installation, Installation
-@comment node-name, next, previous, up
-@section How to make typeset documentation from pcl-cvs.texinfo
-@cindex Manual installation (typeset)
-@cindex Installation of typeset manual
-@cindex Printing a manual
-@cindex TeX - generating a typeset manual
-@cindex Generating a typeset manual
-
-If you have @TeX{} installed at your site, you can make a typeset manual
-from @file{pcl-cvs.texinfo}.
-
-@enumerate
-@item
-Run @TeX{} by typing `@samp{make pcl-cvs.dvi}'. You will not get the
-indices unless you have the @code{texindex} program.
-
-@item
-Convert the resulting device independent file @file{pcl-cvs.dvi} to a
-form which your printer can output and print it. If you have a
-postscript printer there is a program, @code{dvi2ps}, which does. There
-is also a program which comes together with @TeX{}, @code{dvips}, which
-you can use.
-
-@end enumerate
-
-@node About pcl-cvs, Getting started, Installation, Top
-@comment node-name, next, previous, up
-@chapter About pcl-cvs
-@cindex About pcl-cvs
-
-Pcl-cvs is a front-end to CVS version 1.3. It integrates the most
-frequently used CVS commands into emacs.
-
-@menu
-* Contributors:: Contributors to pcl-cvs.
-* Archives:: Where can I get a copy of Pcl-Cvs?
-@end menu
-
-@node Contributors, Archives, About pcl-cvs, About pcl-cvs
-@comment node-name, next, previous, up
-@section Contributors to pcl-cvs
-@cindex Contributors
-@cindex Authors
-
-Contributions to the package are welcome. I have limited time to work
-on this project, but I will gladly add any code that you contribute to
-me to this package (@pxref{Bugs}).
-
-The following persons have made contributions to pcl-cvs.
-
-@itemize @bullet
-@item
-Brian Berliner wrote CVS, together with some other contributors.
-Without his work on CVS this package would be useless@dots{}
-
-@item
-Per Cederqvist wrote most of the otherwise unattributed functions in
-pcl-cvs as well as all documentation.
-
-@item
-Inge Wallin (@samp{inge@@lysator.liu.se}) wrote the skeleton to
-@file{pcl-cvs.texinfo}, and gave useful comments on it. He also wrote
-the files @file{elib-node.el} and @file{compile-all.el}. The file
-@file{cookie.el} was inspired by Inge.@refill
-
-@item
-Linus Tolke (@samp{linus@@lysator.liu.se}) contributed useful comments
-on both the functionality and the documentation.@refill
-
-@item
-Jamie Zawinski (@samp{jwz@@lucid.com}) contributed
-@file{pcl-cvs-lucid.el}.
-
-@item
-Leif Lonnblad contributed RCVS support.
-@end itemize
-
-Apart from these, a lot of people have send me suggestions, ideas,
-requests, bug reports and encouragement. Thanks a lot! Without your
-there would be no new releases of pcl-cvs.
-
-@node Archives, , Contributors, About pcl-cvs
-@comment node-name, next, previous, up
-@section Where can I get pcl-cvs?
-@cindex Sites
-@cindex Archives
-@cindex Ftp-sites
-@cindex Getting pcl-cvs
-@cindex Email archives
-
-The latest release of pcl-cvs can be fetched via anonymous ftp from
-@code{ftp.lysator.liu.se}, (IP no. 130.236.254.1) in the directory
-@code{pub/emacs}. If you don't live in Scandinavia you should probably
-check with archie to see if there is a site closer to you that archives
-pcl-cvs.
-
-New releases will be announced to appropriate newsgroups. If you send
-your email address to me I will add you to my list of people to mail
-when I make a new release.
-
-@node Getting started, Buffer contents, About pcl-cvs, Top
-@comment node-name, next, previous, up
-@chapter Getting started
-@cindex Introduction
-@cindex Example run
-
-This document assumes that you know what CVS is, and that you at least
-knows the fundamental concepts of CVS. If that is not the case you
-should read the man page for CVS.
-
-Pcl-cvs is only useful once you have checked out a module. So before
-you invoke it you must have a copy of a module somewhere in the file
-system.
-
-You invoke pcl-cvs by typing @kbd{M-x cvs-update RET}. If your emacs
-responds with @samp{[No match]} your system administrator has not
-installed pcl-cvs properly. Try @kbd{M-x load-library RET pcl-cvs RET}.
-If that also fails - talk to your root. If it succeeds you might put
-this line in your @file{.emacs} file so that you don't have to type the
-@samp{load-library} command every time you wish to use pcl-cvs:
-
-@example
-(autoload 'cvs-update "pcl-cvs" nil t)
-@end example
-
-The function @code{cvs-update} will ask for a directory. The command
-@samp{cvs update} will be run in that directory. (It should contain
-files that have been checked out from a CVS archive.) The output from
-@code{cvs} will be parsed and presented in a table in a buffer called
-@samp{*cvs*}. It might look something like this:
-
-@example
-PCL-CVS release 1.05.
-@comment -release-
-
-In directory /users/ceder/FOO/test:
- Updated bar
- Updated file.txt
- Modified ci namechange
- Updated newer
-
-In directory /users/ceder/FOO/test/sub:
- Modified ci ChangeLog
----------- End -----
-@end example
-
-In this example the three files (@file{bar}, @file{file.txt} and
-@file{newer}) that are marked with @samp{Updated} have been copied from
-the CVS repository to @file{/users/ceder/FOO/test/} since someone else
-have checked in newer versions of them. Two files (@file{namechange}
-and @file{sub/ChangeLog}) have been modified locally, and needs to be
-checked in.
-
-You can move the cursor up and down in the buffer with @kbd{C-n} and
-@kbd{C-p} or @kbd{n} and @kbd{p}. If you press @kbd{c} on one of the
-@samp{Modified} files that file will be checked in to the CVS
-repository. @xref{Committing changes}. You can press @kbd{x} to get rid
-of the "uninteresting" files that have only been @samp{Updated} (and
-don't require any further action from you).@refill
-
-You can also easily get a @samp{diff} between your modified file and the
-base version that you started from, and you can get the output from
-@samp{cvs log} and @samp{cvs status} on the listed files simply by
-pressing a key (@pxref{Getting info about files}).
-
-@node Buffer contents, Commands, Getting started, Top
-@comment node-name, next, previous, up
-@chapter Buffer contents
-@cindex Buffer contents
-
-The display contains four columns. They contain, from left to right:
-
-@itemize @bullet
-@item
-An asterisk when the file is @dfn{marked} (@pxref{Selected
-files}).@refill
-@item
-The status of the file. See @xref{File status}, for more information.@refill
-@item
-A "need to be checked in"-marker (@samp{ci}).
-@item
-The file name.
-@end itemize
-
-@menu
-* File status:: The meaning of the second field.
-* Selected files:: How selection works.
-@end menu
-
-@node File status, Selected files, Buffer contents, Buffer contents
-@comment node-name, next, previous, up
-@section File status
-@cindex File status
-@cindex Updated (file status)
-@cindex Modified (file status)
-@cindex Merged (file status)
-@cindex Conflict (file status)
-@cindex Added (file status)
-@cindex Removed (file status)
-@cindex Unknown (file status)
-@cindex Removed from repository (file status)
-@cindex Removed from repository, changed by you (file status)
-@cindex Removed by you, changed in repository (file status)
-@cindex Move away @var{file} - it is in the way (file status)
-@cindex This repository is missing!@dots{} (file status)
-
-The @samp{file status} field can have the following values:
-
-@table @samp
-@item Updated
-The file was brought up to date with respect to the repository. This is
-done for any file that exists in the repository but not in your source,
-and for files that you haven't changed but are not the most recent
-versions available in the repository.@refill
-
-@item Modified
-The file is modified in your working directory, and there was no
-modification to the same file in the repository.@refill
-
-@item Merged
-The file is modified in your working directory, and there were
-modifications in the repository as well as in your copy, but they were
-merged successfully, without conflict, in your working directory.@refill
-
-@item Conflict
-A conflict was detected while trying to merge your changes to @var{file}
-with changes from the source repository. @var{file} (the copy in your
-working directory) is now the output of the @samp{rcsmerge} command on
-the two versions; an unmodified copy of your file is also in your
-working directory, with the name @file{.#@var{file}.@var{version}},
-where @var{version} is the RCS revision that your modified file started
-from. @xref{Viewing differences}, for more details.@refill
-
-@item Added
-The file has been added by you, but it still needs to be checked in to
-the repository.@refill
-
-@item Removed
-The file has been removed by you, but it needs to be checked in to the
-repository. You can resurrect it by typing @kbd{a} (@pxref{Adding and
-removing files}).@refill
-
-@item Unknown
-A file that was detected in your directory, but that neither appears in
-the repository, nor is present on the list of files that CVS should
-ignore.@refill
-
-@end table
-
-There are also a few special cases, that rarely occur, which have longer
-strings in the fields:
-
-@table @samp
-@item Removed from repository
-The file has been removed from your directory since someone has removed
-it from the repository. (It is still present in the Attic directory, so
-no permanent loss has occurred). This, unlike the other entries in this
-table, is not an error condition.@refill
-
-@item Removed from repository, changed by you
-You have modified a file that someone have removed from the repository.
-You can correct this situation by removing the file manually (see
-@pxref{Adding and removing files}).@refill
-
-@item Removed by you, changed in repository
-You have removed a file, and before you committed the removal someone
-committed a change to that file. You could use @kbd{a} to resurrect the
-file (see @pxref{Adding and removing files}).@refill
-
-@item Move away @var{file} - it is in the way
-For some reason CVS does not like the file @var{file}. Rename or remove
-it.@refill
-
-@item This repository is missing! Remove this dir manually.
-It is impossible to remove a directory in the CVS repository in a clean
-way. Someone have tried to remove one, and CVS gets confused. Remove
-your copy of the directory.@refill
-@end table
-
-@node Selected files, , File status, Buffer contents
-@comment node-name, next, previous, up
-@section Selected files
-@cindex Selected files
-@cindex Marked files
-@cindex File selection
-@cindex Active files
-
-Many of the commands works on the current set of @dfn{selected} files.
-
-@itemize @bullet
-@item
-If there are any files that are marked they constitute the set of
-selected files.@refill
-@item
-Otherwise, if the cursor points to a file, that file is the selected
-file.@refill
-@item
-Otherwise, if the cursor points to a directory, all the files in that
-directory that appears in the buffer are the selected files.
-@end itemize
-
-This scheme might seem a little complicated, but once one get used to
-it, it is quite powerful.
-
-@xref{Marking files} tells how you mark and unmark files.
-
-@node Commands, Customization, Buffer contents, Top
-@comment node-name, next, previous, up
-@chapter Commands
-
-@iftex
-This chapter describes all the commands that you can use in pcl-cvs.
-@end iftex
-@ifinfo
-The nodes in this menu contains explanations about all the commands that
-you can use in pcl-cvs. They are grouped together by type.
-@end ifinfo
-
-@menu
-* Updating the directory:: Commands to update the local directory
-* Movement commands:: How to move up and down in the buffer
-* Marking files:: How to mark files that other commands
- will later operate on.
-* Committing changes:: Checking in your modifications to the
- CVS repository.
-* Editing files:: Loading files into Emacs.
-* Getting info about files:: Display the log and status of files.
-* Adding and removing files:: Adding and removing files
-* Undoing changes:: Undoing changes
-* Removing handled entries:: Uninteresting lines can easily be removed.
-* Ignoring files:: Telling CVS to ignore generated files.
-* Viewing differences:: Commands to @samp{diff} different versions.
-* Emerge::
-* Reverting your buffers:: Reverting your buffers
-* Miscellaneous commands:: Miscellaneous commands
-@end menu
-
-@node Updating the directory, Movement commands, Commands, Commands
-@comment node-name, next, previous, up
-@section Updating the directory
-@findex cvs-update
-@findex cvs-mode-update-no-prompt
-@findex cvs-delete-lock
-@cindex Getting the *cvs* buffer
-@kindex g - Rerun @samp{cvs update}
-
-
-@table @kbd
-
-@item M-x cvs-update
-Run a @samp{cvs update} command. You will be asked for the directory in
-which the @samp{cvs update} will be run. The output will be parsed by
-pcl-cvs, and the result printed in the @samp{*cvs*} buffer (see
-@pxref{Buffer contents} for a description of the contents).@refill
-
-By default, @samp{cvs-update} will descend recursively into
-subdirectories. You can avoid that behavior by giving a prefix
-argument to it (e.g., by typing @kbd{C-u M-x cvs-update RET}).@refill
-
-All other commands in pcl-cvs requires that you have a @samp{*cvs*}
-buffer. This is the command that you use to get one.@refill
-
-CVS uses lock files in the repository to ensure the integrity of the
-data files in the repository. They might be left behind i.e. if a
-workstation crashes in the middle of a CVS operation. CVS outputs a
-message when it is waiting for a lock file to go away. Pcl-cvs will
-show the same message in the *cvs* buffer, together with instructions
-for deleting the lock files. You should normally not have to delete
-them manually --- just wait a little while and the problem should fix
-itself. But if the lock files doesn't disappear you can delete them
-with @kbd{M-x cvs-delete-lock RET}.@refill
-
-@item g
-This will run @samp{cvs update} again. It will always use the same
-buffer that was used with the previous @samp{cvs update}. Give a prefix
-argument to avoid descending into subdirectories. This runs the command
-@samp{cvs-mode-update-no-prompt}.@refill
-@end table
-@node Movement commands, Marking files, Updating the directory, Commands
-@comment node-name, next, previous, up
-@section Movement Commands
-@cindex Movement Commands
-@findex cookie-next-cookie
-@findex cookie-previous-cookie
-@kindex SPC - Move down one file
-@kindex C-n - Move down one file
-@kindex n - Move down one file
-@kindex C-p - Move up one file
-@kindex p - Move up on file
-
-You can use most normal Emacs commands to move forward and backward in
-the buffer. Some keys are rebound to functions that take advantage of
-the fact that the buffer is a pcl-cvs buffer:
-
-
-@table @kbd
-@item SPC
-@itemx C-n
-@itemx n
-These keys move the cursor one file forward, towards the end of the
-buffer (@code{cookie-next-cookie}).
-
-@item C-p
-@itemx p
-These keys move one file backward, towards the beginning of the buffer
-(@code{cookie-previous-cookie}).
-@end table
-
-@node Marking files, Committing changes, Movement commands, Commands
-@comment node-name, next, previous, up
-@section Marking files
-@cindex Selecting files (commands to mark files)
-@cindex Marking files
-@kindex m - marking a file
-@kindex M - marking all files
-@kindex u - unmark a file
-@kindex ESC DEL - unmark all files
-@kindex DEL - unmark previous file
-@findex cvs-mode-mark
-@findex cvs-mode-unmark
-@findex cvs-mode-mark-all-files
-@findex cvs-mode-unmark-all-files
-@findex cvs-mode-unmark-up
-
-Pcl-cvs works on a set of @dfn{selected files} (@pxref{Selected files}).
-You can mark and unmark files with these commands:
-
-@table @kbd
-@item m
-This marks the file that the cursor is positioned on. If the cursor is
-positioned on a directory all files in that directory will be marked.
-(@code{cvs-mode-mark}).
-
-@item u
-Unmark the file that the cursor is positioned on. If the cursor is on a
-directory, all files in that directory will be unmarked.
-(@code{cvs-mode-unmark}).@refill
-
-@item M
-Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}).
-
-@item @key{ESC} @key{DEL}
-Unmark @emph{all} files (@code{cvs-mode-unmark-all-files}).
-
-@item @key{DEL}
-Unmark the file on the previous line, and move point to that line
-(@code{cvs-mode-unmark-up}).
-@end table
-
-@node Committing changes, Editing files, Marking files, Commands
-@comment node-name, next, previous, up
-@section Committing changes
-@cindex Committing changes
-@cindex Ci
-@findex cvs-mode-commit
-@kindex c - commit files
-@vindex cvs-erase-input-buffer (variable)
-@vindex cvs-auto-revert-after-commit (variable)
-@cindex Commit buffer
-@cindex Edit buffer
-@cindex Erasing commit message
-@cindex Reverting buffers after commit
-
-@table @kbd
-@item c
-All files that have a "need to be checked in"-marker (@pxref{Buffer
-contents}) can be checked in with the @kbd{c} command. It checks in all
-selected files (@pxref{Selected files}) (except those who lack the
-"ci"-marker - they are ignored). Pressing @kbd{c} causes
-@code{cvs-mode-commit} to be run.@refill
-
-When you press @kbd{c} you will get a buffer called
-@samp{*cvs-commit-message*}. Enter the log message for the file(s) in
-it. When you are ready you should press @kbd{C-c C-c} to actually
-commit the files (using @code{cvs-edit-done}).
-
-Normally the @samp{*cvs-commit-message*} buffer will retain the log
-message from the previous commit, but if the variable
-@code{cvs-erase-input-buffer} is set to a non-@code{nil} value the
-buffer will be erased. Point and mark will always be located around the
-entire buffer so that you can easily erase it with @kbd{C-w}
-(@samp{kill-region}).@refill
-
-If you are editing the files in your emacs an automatic
-@samp{revert-buffer} will be performed. (If the file contains
-@samp{$@asis{Id}$} keywords @samp{cvs commit} will write a new file with
-the new values substituted. The auto-revert makes sure that you get
-them into your buffer). The revert will not occur if you have modified
-your buffer, or if @samp{cvs-auto-revert-after-commit} is set to
-@samp{nil}.@refill
-@end table
-
-@node Editing files, Getting info about files, Committing changes, Commands
-@comment node-name, next, previous, up
-@section Editing files
-
-@cindex Editing files
-@cindex Finding files
-@cindex Loading files
-@cindex Dired
-@cindex Invoking dired
-@findex cvs-mode-find-file
-@findex cvs-mode-find-file-other-window
-@findex cvs-mode-add-change-log-entry-other-window
-@kindex f - find file or directory
-@kindex o - find file in other window
-@kindex A - add ChangeLog entry
-
-There are currently three commands that can be used to find a file (that
-is, load it into a buffer and start editing it there). These commands
-work on the line that the cursor is situated at. They ignore any marked
-files.
-
-@table @kbd
-@item f
-Find the file that the cursor points to. Run @samp{dired}
-@ifinfo
-(@pxref{Dired,,,Emacs})
-@end ifinfo
-if the cursor points to a directory (@code{cvs-mode-find-file}).@refill
-
-@item o
-Like @kbd{f}, but use another window
-(@code{cvs-mode-find-file-other-window}).@refill
-
-@item A
-Invoke @samp{add-change-log-entry-other-window} to edit a
-@samp{ChangeLog} file. The @samp{ChangeLog} will be found in the
-directory of the file the cursor points to.
-(@code{cvs-mode-add-change-log-entry-other-window}).@refill
-@end table
-
-@node Getting info about files, Adding and removing files, Editing files, Commands
-@comment node-name, next, previous, up
-@section Getting info about files
-@cindex Status (cvs command)
-@cindex Log (RCS/cvs command)
-@cindex Getting status
-@kindex l - run @samp{cvs log}
-@kindex s - run @samp{cvs status}
-@findex cvs-mode-log
-@findex cvs-mode-status
-
-Both of the following commands can be customized.
-@xref{Customization}.@refill
-
-@table @kbd
-@item l
-Run @samp{cvs log} on all selected files, and show the result in a
-temporary buffer (@code{cvs-mode-log}).
-
-@item s
-Run @samp{cvs status} on all selected files, and show the result in a
-temporary buffer (@code{cvs-mode-status}).
-@end table
-
-@node Adding and removing files, Undoing changes, Getting info about files, Commands
-@comment node-name, next, previous, up
-@section Adding and removing files
-@cindex Adding files
-@cindex Removing files
-@cindex Resurrecting files
-@cindex Deleting files
-@cindex Putting files under CVS control
-@kindex a - add a file
-@kindex r - remove a file
-@findex cvs-mode-add
-@findex cvs-mode-remove-file
-
-The following commands are available to make it easy to add and remove
-files from the CVS repository.
-
-@table @kbd
-@item a
-Add all selected files. This command can be used on @samp{Unknown}
-files (see @pxref{File status}). The status of the file will change to
-@samp{Added}, and you will have to use @kbd{c} (@samp{cvs-mode-commit}, see
-@pxref{Committing changes}) to really add the file to the
-repository.@refill
-
-This command can also be used on @samp{Removed} files (before you commit
-them) to resurrect them.
-
-Selected files that are neither @samp{Unknown} nor @samp{Removed} will
-be ignored by this command.
-
-The command that is run is @code{cvs-mode-add}.
-
-@item r
-This command removes the selected files (after prompting for
-confirmation). The files are @samp{rm}ed from your directory and
-(unless the status was @samp{Unknown}; @pxref{File status}) they will
-also be @samp{cvs remove}d. If the files were @samp{Unknown} they will
-disappear from the buffer. Otherwise their status will change to
-@samp{Removed}, and you must use @kbd{c} (@samp{cvs-mode-commit},
-@pxref{Committing changes}) to commit the removal.@refill
-
-The command that is run is @code{cvs-mode-remove-file}.
-@end table
-
-@node Undoing changes, Removing handled entries, Adding and removing files, Commands
-@comment node-name, next, previous, up
-@section Undoing changes
-@cindex Undo changes
-@cindex Flush changes
-@kindex U - undo changes
-@findex cvs-mode-undo-local-changes
-
-@table @kbd
-@item U
-If you have modified a file, and for some reason decide that you don't
-want to keep the changes, you can undo them with this command. It works
-by removing your working copy of the file and then getting the latest
-version from the repository (@code{cvs-mode-undo-local-changes}.
-@end table
-
-@node Removing handled entries, Ignoring files, Undoing changes, Commands
-@comment node-name, next, previous, up
-@section Removing handled entries
-@cindex Expunging uninteresting entries
-@cindex Uninteresting entries, getting rid of them
-@cindex Getting rid of uninteresting lines
-@cindex Removing uninteresting (processed) lines
-@cindex Handled lines, removing them
-@kindex x - remove processed entries
-@kindex C-k - remove selected entries
-@findex cvs-mode-remove-handled
-@findex cvs-mode-acknowledge
-@findex cvs-mode-ignore
-
-@table @kbd
-@item x
-This command allows you to remove all entries that you have processed.
-More specifically, the lines for @samp{Updated} files (@pxref{File
-status} and files that have been checked in (@pxref{Committing changes})
-are removed from the buffer. If a directory becomes empty the heading
-for that directory is also removed. This makes it easier to get an
-overview of what needs to be done.
-
-The command is called @code{cvs-mode-remove-handled}. If
-@samp{cvs-auto-remove-handled} is set to non-@code{nil} this will
-automatically be performed after every commit.@refill
-
-@item C-k
-This command can be used for lines that @samp{cvs-mode-remove-handled} would
-not delete, but that you want to delete (@code{cvs-mode-acknowledge}).
-@end table
-
-@node Ignoring files, Viewing differences, Removing handled entries, Commands
-@comment node-name, next, previous, up
-@section Ignoring files
-
-@table @kbd
-@item i
-Arrange so that CVS will ignore the selected files. The file names are
-added to the @file{.cvsignore} file in the corresponding directory. If
-the @file{.cvsignore} doesn't exist it will be created.
-
-The @file{.cvsignore} file should normally be added to the repository,
-but you could ignore it also if you like it better that way.
-
-This runs @code{cvs-mode-ignore}.
-@end table
-
-@node Viewing differences, Emerge, Ignoring files, Commands
-@comment node-name, next, previous, up
-@section Viewing differences
-@cindex Diff
-@cindex Conflicts, how to resolve them
-@cindex Viewing differences
-@kindex d - run @samp{cvs diff}
-@kindex b - diff backup file
-@findex cvs-mode-diff-cvs
-@findex cvs-mode-diff-backup
-@vindex cvs-diff-ignore-marks (variable)
-
-@table @kbd
-@item d
-Display a @samp{cvs diff} between the selected files and the RCS version
-that they are based on. @xref{Customization} describes how you can send
-flags to @samp{cvs diff}. If @var{cvs-diff-ignore-marks} is set to a
-non-@code{nil} value or if a prefix argument is given (but not both) any
-marked files will not be considered to be selected.
-(@code{cvs-mode-diff-cvs}).@refill
-
-@item b
-If CVS finds a conflict while merging two versions of a file (during a
-@samp{cvs update}, @pxref{Updating the directory}) it will save the
-original file in a file called @file{.#@var{FILE}.@var{VERSION}} where
-@var{FILE} is the name of the file, and @var{VERSION} is the RCS version
-number that your file was based on.@refill
-
-With the @kbd{b} command you can run a @samp{diff} on the files
-@file{.#@var{FILE}.@var{VERSION}} and @file{@var{FILE}}. You can get a
-context- or Unidiff by setting @samp{cvs-diff-flags} -
-@pxref{Customization}. This command only works on files that have
-status @samp{Conflict} or @samp{Merged}.@refill
-
-If @var{cvs-diff-ignore-marks} is set to a non-@code{nil} value or if a
-prefix argument is given (but not both) any marked files will not be
-considered to be selected. (@code{cvs-mode-diff-backup}).@refill
-@end table
-
-@node Emerge, Reverting your buffers, Viewing differences, Commands
-@comment node-name, next, previous, up
-@section Running emerge
-@cindex Emerge
-@cindex Invoking emerge
-@cindex Conflicts, resolving
-@cindex Resolving conflicts
-@kindex e - invoke @samp{emerge}
-@findex cvs-mode-emerge
-
-@table @kbd
-@item e
-Invoke @samp{emerge} on one file. This command works slightly different
-depending on the file status.
-
-@table @asis
-@item @samp{Modified}
-Run @samp{emerge-files} with your working file as file A, and the latest
-revision in the repository as file B.
-
-@item @samp{Merged}
-@itemx @samp{Conflict}
-Run @samp{emerge-files-with-ancestor} with your working file (as it was
-prior to your invocation of @samp{cvs-update}) as file A, the latest
-revision in the repository as file B, and the revision that you based
-your local modifications on as ancestor.
-@end table
-
-@strong{Note:} CVS has already performed a merge. The resulting file is
-not used in any way if you use this command. If you use the @kbd{q}
-command inside @samp{emerge} (to successfully terminate the merge) the
-file that CVS created will be overwritten.
-@end table
-
-@node Reverting your buffers, Miscellaneous commands, Emerge, Commands
-@comment node-name, next, previous, up
-@section Reverting your buffers
-@findex cvs-mode-revert-updated-buffers
-@kindex R - revert buffers
-@cindex Syncing buffers
-@cindex Reverting buffers
-
-@table @kbd
-@item R
-If you are editing (or just viewing) a file in a buffer, and that file
-is changed by CVS during a @samp{cvs-update}, all you have to do is type
-@kbd{R} in the *cvs* buffer to read in the new versions of the
-files.@refill
-
-All files that are @samp{Updated}, @samp{Merged} or in @samp{Conflict}
-are reverted from the disk. Any other files are ignored. Only files
-that you were already editing are read.@refill
-
-An error is signalled if you have modified the buffer since it was last
-changed. (@code{cvs-mode-revert-updated-buffers}).@refill
-@end table
-
-@node Miscellaneous commands, , Reverting your buffers, Commands
-@comment node-name, next, previous, up
-@section Miscellaneous commands
-@findex cvs-byte-compile-files
-@cindex Recompiling elisp files
-@cindex Byte compilation
-@cindex Getting rid of lock files
-@cindex Lock files
-@kindex q - bury the *cvs* buffer
-@findex bury-buffer
-
-@table @kbd
-@item M-x cvs-byte-compile-files
-Byte compile all selected files that end in .el.
-
-@item M-x cvs-delete-lock
-This command can be used in any buffer, and deletes the lock files that
-the *cvs* buffer informs you about. You should normally never have to
-use this command since CVS tries very carefully to always remove the
-lock files itself.
-
-You can only use this command when a message in the *cvs* buffer tells
-you so. You should wait a while before using this command in case
-someone else is running a cvs command.
-
-@item q
-Bury the *cvs* buffer. (@code{bury-buffer}).
-
-@end table
-
-@node Customization, Future enhancements, Commands, Top
-@comment node-name, next, previous, up
-@chapter Customization
-@vindex cvs-erase-input-buffer (variable)
-@vindex cvs-inhibit-copyright-message (variable)
-@vindex cvs-diff-flags (variable)
-@vindex cvs-diff-ignore-marks (variable)
-@vindex cvs-log-flags (variable)
-@vindex cvs-status-flags (variable)
-@vindex cvs-auto-remove-handled (variable)
-@vindex cvs-update-prog-output-skip-regexp (variable)
-@vindex cvs-cvsroot (variable)
-@vindex TMPDIR (environment variable)
-@vindex cvs-auto-revert-after-commit (variable)
-@vindex cvs-commit-buffer-require-final-newline (variable)
-@vindex cvs-sort-ignore-file (variable)
-@cindex Inhibiting the Copyright message.
-@cindex Copyright message, getting rid of it
-@cindex Getting rid of the Copyright message.
-@cindex Customization
-@cindex Variables, list of all
-@cindex Erasing the input buffer
-@cindex Context diff, how to get
-@cindex Unidiff, how to get
-@cindex Automatically remove handled files
-@cindex -u option in modules file
-@cindex Modules file (-u option)
-@cindex Update program (-u option in modules file)
-@cindex Reverting buffers after commit
-@cindex Require final newline
-@cindex Automatically inserting newline
-@cindex Commit message, inserting newline
-@cindex Sorting the .cvsignore file
-@cindex .cvsignore file, sorting
-@cindex Automatically sorting .cvsignore
-
-If you have an idea about any customization that would be handy but
-isn't present in this list, please tell me! @xref{Bugs} for info on how
-to reach me.@refill
-
-@table @samp
-@item cvs-erase-input-buffer
-If set to anything else than @code{nil} the edit buffer will be erased
-before you write the log message (@pxref{Committing changes}).
-
-@item cvs-inhibit-copyright-message
-The copyright message that is displayed on startup can be annoying after
-a while. Set this variable to @samp{t} if you want to get rid of it.
-(But don't set this to @samp{t} in the system defaults file - new users
-should see this message at least once).
-
-@item cvs-diff-flags
-A list of strings to pass as arguments to the @samp{cvs diff} and
-@samp{diff} programs. This is used by @samp{cvs-mode-diff-cvs} and
-@samp{cvs-mode-diff-backup} (key @kbd{b}, @pxref{Viewing differences}). If
-you prefer the Unidiff format you could add this line to your
-@file{.emacs} file:@refill
-
-@example
-(setq cvs-diff-flags '("-u"))
-@end example
-
-@item cvs-diff-ignore-marks
-If this variable is non-@code{nil} or if a prefix argument is given (but
-not both) to @samp{cvs-mode-diff-cvs} or @samp{cvs-mode-diff-backup}
-marked files are not considered selected.
-
-@item cvs-log-flags
-List of strings to send to @samp{cvs log}. Used by @samp{cvs-mode-log}
-(key @kbd{l}, @pxref{Getting info about files}).
-
-@item cvs-status-flags
-List of strings to send to @samp{cvs status}. Used by @samp{cvs-mode-status}
-(key @kbd{s}, @pxref{Getting info about files}).
-
-@item cvs-auto-remove-handled
-If this variable is set to any non-@code{nil} value
-@samp{cvs-mode-remove-handled} will be called every time you check in
-files, after the check-in is ready. @xref{Removing handled
-entries}.@refill
-
-@item cvs-auto-revert-after-commit
-If this variable is set to any non-@samp{nil} value any buffers you have
-that visit a file that is committed will be automatically reverted.
-This variable is default @samp{t}. @xref{Committing changes}.@refill
-
-@item cvs-update-prog-output-skip-regexp
-The @samp{-u} flag in the @file{modules} file can be used to run a command
-whenever a @samp{cvs update} is performed (see cvs(5)). This regexp
-is used to search for the last line in that output. It is normally set
-to @samp{"$"}. That setting is only correct if the command outputs
-nothing. Note that pcl-cvs will get very confused if the command
-outputs @emph{anything} to @samp{stderr}.
-
-@item cvs-cvsroot
-This variable can be set to override @samp{CVSROOT}. It should be a
-string. If it is set then everytime a cvs command is run it will be
-called as @samp{cvs -d @var{cvs-cvsroot}@dots{}} This can be useful if
-your site has several repositories.
-
-@item TMPDIR
-Pcl-cvs uses this @emph{environment variable} to decide where to put the
-temporary files it needs. It defaults to @file{/tmp} if it is not set.
-
-@item cvs-commit-buffer-require-final-newline
-When you enter a log message in the @samp{*cvs-commit-message*} buffer
-pcl-cvs will normally automatically insert a trailing newline, unless
-there already is one. This behavior can be controlled via
-@samp{cvs-commit-buffer-require-final-newline}. If it is @samp{t} (the
-default behavior), a newline will always be appended. If it is
-@samp{nil}, newlines will never be appended. Any other value causes
-pcl-cvs to ask the user whenever there is no trailing newline in the
-commit message buffer.
-
-@item cvs-sort-ignore-file
-If this variable is set to any non-@samp{nil} value the
-@file{.cvsignore} will always be sorted whenever you use
-@samp{cvs-mode-ignore} to add a file to it. This option is on by
-default.
-
-@end table
-@node Future enhancements, Bugs, Customization, Top
-@comment node-name, next, previous, up
-@chapter Future enhancements
-@cindex Enhancements
-
-Pcl-cvs is still under development and needs a number of enhancements to
-be called complete. Below is my current wish-list for future releases
-of pcl-cvs. Please, let me know which of these features you want most.
-They are listed below in approximately the order that I currently think
-I will implement them in.
-
-@itemize @bullet
-@item
-Rewritten parser code. There are many situations where pcl-cvs will
-fail to recognize the output from CVS. The situation could be greatly
-increased.
-
-@item
-@samp{cvs-status}. This will run @samp{cvs status} in a directory and
-produce a buffer that looks pretty much like the current *cvs* buffer.
-That buffer will include information for all version-controlled files.
-(There will be a simple keystroke to remove all "uninteresting" files,
-that is, files that are "Up-to-date"). In this new buffer you will be
-able to update a file, commit a file, et c. The big win with this is
-that you will be able to watch the differences between your current
-working file and the head revision in the repository before you update
-the file, and you can then choose to update it or let it wait for a
-while longer.
-
-@item
-Log mode. When this mode is finished you will be able to move around
-(using @kbd{n} and @kbd{p}) between the revisions of a file, mark two of
-them, and run a diff between them. You will be able to hide branches
-(similar to the way you can hide sub-paragraphs in outline-mode) and do
-merges between revisions. Other ideas about this are welcome.
-
-@item
-The current model for marks in the *cvs* buffer seems to be confusing.
-I am considering to use the VM model instead, where marks are normally
-inactive. To activate the mark, you issue a command like
-@samp{cvs-mode-next-command-uses-marks}. I might implement a flag so
-that you can use either version. Feedback on this before I start coding
-it is very welcome.
-
-@item
-It should be possible to run commands such as @samp{cvs log}, @samp{cvs
-status} and @samp{cvs commit} directly from a buffer containing a file,
-instead of having to @samp{cvs-update}. If the directory contains many
-files the @samp{cvs-update} can take quite some time, especially on a
-slow machine. I planed to put these kind of commands on the prefix
-@kbd{C-c C-v}, but that turned out to be used by for instance c++-mode.
-If you have any suggestions for a better prefix key, please let me know.
-
-@item
-Increased robustness. For instance, you can not currently press
-@kbd{C-g} when you are entering the description of a file that you are
-adding without confusing pcl-cvs.
-
-@item
-Support for multiple active *cvs* buffers.
-
-@item
-Dired support. I have an experimental @file{dired-cvs.el} that works
-together with CVS 1.2. Unfortunately I wrote it on top of a
-non-standard @file{dired.el}, so it must be rewritten.@refill
-
-@item
-An ability to send user-supplied options to all the cvs commands.
-
-@item
-Pcl-cvs is not at all clever about what it should do when @samp{cvs
-update} runs a program (due to the @samp{-u} option in the
-@file{modules} file --- see @samp{cvs(5)}). The current release uses a
-regexp to search for the end. At the very least that regexp should be
-configured for different modules. Tell me if you have any idea about
-what is the right thing to do. In a perfect world the program should
-also be allowed to print to @samp{stderr} without causing pcl-cvs to
-crash.
-@end itemize
-
-
-If you miss something in this wish-list, let me know! I don't promise
-that I will write it, but I will at least try to coordinate the efforts
-of making a good Emacs front end to CVS. See @xref{Bugs} for
-information about how to reach me.@refill
-
-So far, I have written most of pcl-cvs in my all-to-rare spare time. If
-you want pcl-cvs to be developed faster you can write a contract with
-Signum Support to do the extension. You can reach Signum Support by
-email to @samp{info@@signum.se} or via mail to Signum Support AB, Box
-2044, S-580 02 Linkoping, Sweden. Phone: +46 (0) 13 - 21 46 00. Fax: +46
-(0) 13 - 21 47 00.
-
-@node Bugs, Function and Variable Index, Future enhancements, Top
-@comment node-name, next, previous, up
-@chapter Bugs (known and unknown)
-@cindex Reporting bugs and ideas
-@cindex Bugs, how to report them
-@cindex Author, how to reach
-@cindex Email to the author
-@cindex Known bugs
-@cindex Bugs, known
-@cindex FAQ
-@cindex Problems, list of common
-
-If you find a bug or misfeature, don't hesitate to tell me! Send email
-to @samp{ceder@@lysator.liu.se}.
-
-If you have ideas for improvements, or if you have written some
-extensions to this package, I would like to hear from you. I hope that
-you find this package useful!
-
-Below is a partial list of currently known problems with pcl-cvs version
-1.05.
-
-@table @asis
-@item Commit causes Emacs to hang
-Emacs waits for the @samp{cvs commit} command to finish before you can
-do anything. If you start a background job from the loginfo file you
-must take care that it closes @samp{stdout} and @samp{stderr} if you do
-not want to wait for it. (You do that with @samp{background-command &>-
-2&>- &} if you are starting @samp{background-command} from a
-@samp{/bin/sh} shell script).
-
-Your emacs will also hang if there was a lock file in the repository.
-In this case you can type @kbd{C-g} to get control over your emacs
-again.
-
-@item Name clash in Emacs 19
-This is really a bug in Elib or the Emacs 19 distribution. Both Elib and
-Emacs 19.6 through at least 19.10 contains a file named
-@file{cookie.el}. One of the files will have to be renamed, and we are
-currently negotiating about which of the files to rename.
-
-@item Commands while cvs-update is running
-It is possible to type commands in the *cvs* buffer while the update is
-running, but error messages is all that you will get. The error
-messages should be better.
-
-@item Unexpected output from CVS
-Unexpected output from CVS confuses pcl-cvs. It will currently create a
-bug report that you can mail to me. It should do something more
-civilized.
-@end table
-
-@node Function and Variable Index, Concept Index, Bugs, Top
-@comment node-name, next, previous, up
-@unnumbered Function and Variable Index
-
-@printindex fn
-
-@node Concept Index, Key Index, Function and Variable Index, Top
-@comment node-name, next, previous, up
-@unnumbered Concept Index
-
-@printindex cp
-
-@node Key Index, , Concept Index, Top
-@comment node-name, next, previous, up
-@unnumbered Key Index
-
-@printindex ky
-
-@summarycontents
-@contents
-@bye
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex b/gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex
deleted file mode 100644
index de11a7ffca0..00000000000
--- a/gnu/usr.bin/cvs/contrib/pcl-cvs/texinfo.tex
+++ /dev/null
@@ -1,4381 +0,0 @@
-%% TeX macros to handle texinfo files
-
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
-
-%This texinfo.tex file is free software; you can redistribute it and/or
-%modify it under the terms of the GNU General Public License as
-%published by the Free Software Foundation; either version 2, or (at
-%your option) any later version.
-
-%This texinfo.tex file is distributed in the hope that it will be
-%useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-%of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%General Public License for more details.
-
-%You should have received a copy of the GNU General Public License
-%along with this texinfo.tex file; see the file COPYING. If not, write
-%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
-%USA.
-
-
-%In other words, you are welcome to use, share and improve this program.
-%You are forbidden to forbid anyone else to use, share and improve
-%what you give them. Help stamp out software-hoarding!
-
-% This automatically updates the version number based on RCS.
-\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$fixed-revision: 2.137 $
-\message{Loading texinfo package [Version \texinfoversion]:}
-
-% Print the version number if in a .fmt file.
-\everyjob{\message{[Texinfo version \texinfoversion]}\message{}}
-
-% Save some parts of plain tex whose names we will redefine.
-
-\let\ptextilde=\~
-\let\ptexlbrace=\{
-\let\ptexrbrace=\}
-\let\ptexdots=\dots
-\let\ptexdot=\.
-\let\ptexstar=\*
-\let\ptexend=\end
-\let\ptexbullet=\bullet
-\let\ptexb=\b
-\let\ptexc=\c
-\let\ptexi=\i
-\let\ptext=\t
-\let\ptexl=\l
-\let\ptexL=\L
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- \gdef\tie{\leavevmode\penalty\@M\ }
-}
-\let\~ = \tie % And make it available as @~.
-
-\message{Basics,}
-\chardef\other=12
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Set up fixed words for English.
-\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi%
-\def\putwordInfo{Info}%
-\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi%
-\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi%
-\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi%
-\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi%
-\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi%
-\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi%
-\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi%
-\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi%
-\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\fi%
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{eshell}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen \bindingoffset \bindingoffset=0pt
-\newdimen \normaloffset \normaloffset=\hoffset
-\newdimen\pagewidth \newdimen\pageheight
-\pagewidth=\hsize \pageheight=\vsize
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{\tracingcommands2 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-
-%---------------------Begin change-----------------------
-%
-%%%% For @cropmarks command.
-% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\cornerlong \newdimen\cornerthick
-\newdimen \topandbottommargin
-\newdimen \outerhsize \newdimen \outervsize
-\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks
-\outerhsize=7in
-%\outervsize=9.5in
-% Alternative @smallbook page size is 9.25in
-\outervsize=9.25in
-\topandbottommargin=.75in
-%
-%---------------------End change-----------------------
-
-% \onepageout takes a vbox as an argument. Note that \pagecontents
-% does insertions itself, but you have to call it yourself.
-\chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}}
-\def\onepageout#1{\hoffset=\normaloffset
-\ifodd\pageno \advance\hoffset by \bindingoffset
-\else \advance\hoffset by -\bindingoffset\fi
-{\escapechar=`\\\relax % makes sure backslash is used in output files.
-\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%
-{\let\hsize=\pagewidth \makefootline}}}%
-\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
-
-%%%% For @cropmarks command %%%%
-
-% Here is a modification of the main output routine for Near East Publications
-% This provides right-angle cropmarks at all four corners.
-% The contents of the page are centerlined into the cropmarks,
-% and any desired binding offset is added as an \hskip on either
-% site of the centerlined box. (P. A. MacKay, 12 November, 1986)
-%
-\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
-{\escapechar=`\\\relax % makes sure backslash is used in output files.
- \shipout
- \vbox to \outervsize{\hsize=\outerhsize
- \vbox{\line{\ewtop\hfill\ewtop}}
- \nointerlineskip
- \line{\vbox{\moveleft\cornerthick\nstop}
- \hfill
- \vbox{\moveright\cornerthick\nstop}}
- \vskip \topandbottommargin
- \centerline{\ifodd\pageno\hskip\bindingoffset\fi
- \vbox{
- {\let\hsize=\pagewidth \makeheadline}
- \pagebody{#1}
- {\let\hsize=\pagewidth \makefootline}}
- \ifodd\pageno\else\hskip\bindingoffset\fi}
- \vskip \topandbottommargin plus1fill minus1fill
- \boxmaxdepth\cornerthick
- \line{\vbox{\moveleft\cornerthick\nsbot}
- \hfill
- \vbox{\moveright\cornerthick\nsbot}}
- \nointerlineskip
- \vbox{\line{\ewbot\hfill\ewbot}}
- }}
- \advancepageno
- \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
-%
-% Do @cropmarks to get crop marks
-\def\cropmarks{\let\onepageout=\croppageout }
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
- \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-%
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1. The argument is the rest of
-% the input line (except we remove a trailing comment). #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg#1{%
- \let\next = #1%
- \begingroup
- \obeylines
- \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse. Otherwise, we're done.
-\def\parseargx{%
- % \obeyedspace is defined far below, after the definition of \sepspaces.
- \ifx\obeyedspace\temp
- \expandafter\parseargdiscardspace
- \else
- \expandafter\parseargline
- \fi
-}
-
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-{\obeylines %
- \gdef\parseargline#1^^M{%
- \endgroup % End of the group started in \parsearg.
- %
- % First remove any @c comment, then any @comment.
- % Result of each macro is put in \toks0.
- \argremovec #1\c\relax %
- \expandafter\argremovecomment \the\toks0 \comment\relax %
- %
- % Call the caller's macro, saved as \next in \parsearg.
- \expandafter\next\expandafter{\the\toks0}%
- }%
-}
-
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us. The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
-% @end itemize @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'. Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands. (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.) But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
- \begingroup
- \ignoreactivespaces
- \edef\temp{#1}%
- \global\toks0 = \expandafter{\temp}%
- \endgroup
-}
-
-% Change the active space to expand to nothing.
-%
-\begingroup
- \obeyspaces
- \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment. Type Return to continue.}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @begin foo is the same as @foo, for now.
-\newhelp\EMsimple{Type <Return> to continue.}
-
-\outer\def\begin{\parsearg\beginxxx}
-
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
-
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
- \removeactivespaces{#1}%
- \edef\endthing{\the\toks0}%
- %
- \expandafter\ifx\csname E\endthing\endcsname\relax
- \expandafter\ifx\csname \endthing\endcsname\relax
- % There's no \foo, i.e., no ``environment'' foo.
- \errhelp = \EMsimple
- \errmessage{Undefined command `@end \endthing'}%
- \else
- \unmatchedenderror\endthing
- \fi
- \else
- % Everything's ok; the right environment has been started.
- \csname E\endthing\endcsname
- \fi
-}
-
-% There is an environment #1, but it hasn't been started. Give an error.
-%
-\def\unmatchedenderror#1{%
- \errhelp = \EMsimple
- \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
- \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-
-% Single-spacing is done by various environments (specifically, in
-% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = 12.5pt
-\def\singlespace{%
- % Why was this kern here? It messes up equalizing space above and below
- % environments. --karl, 6may93
- %{\advance \baselineskip by -\singlespaceskip
- %\kern \baselineskip}%
- \setleading \singlespaceskip
-}
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt \char '100}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-
-\def\mylbrace {{\tt \char '173}}
-\def\myrbrace {{\tt \char '175}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @enddots{} is an end-of-sentence ellipsis.
-\gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp}$\spacefactor=3000}
-
-% @! is an end-of-sentence bang.
-\gdef\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\gdef\?{?\spacefactor=3000 }
-
-% @w prevents a word break. Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line. According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0). If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-\def\group{\begingroup
- \ifnum\catcode13=\active \else
- \errhelp = \groupinvalidhelp
- \errmessage{@group invalid in context where filling is enabled}%
- \fi
- %
- % The \vtop we start below produces a box with normal height and large
- % depth; thus, TeX puts \baselineskip glue before it, and (when the
- % next line of text is done) \lineskip glue after it. (See p.82 of
- % the TeXbook.) Thus, space below is not quite equal to space
- % above. But it's pretty close.
- \def\Egroup{%
- \egroup % End the \vtop.
- \endgroup % End the \group.
- }%
- %
- \vtop\bgroup
- % We have to put a strut on the last line in case the @group is in
- % the midst of an example, rather than completely enclosing it.
- % Otherwise, the interline space between the last line of the group
- % and the first line afterwards is too small. But we can't put the
- % strut in \Egroup, since there it would be on a line by itself.
- % Hence this just inserts a strut at the beginning of each line.
- \everypar = {\strut}%
- %
- % Since we have a strut on every line, we don't need any of TeX's
- % normal interline spacing.
- \offinterlineskip
- %
- % OK, but now we have to do something about blank
- % lines in the input in @example-like environments, which normally
- % just turn into \lisppar, which will insert no space now that we've
- % turned off the interline space. Simplest is to make them be an
- % empty paragraph.
- \ifx\par\lisppar
- \edef\par{\leavevmode \par}%
- %
- % Reset ^^M's definition to new definition of \par.
- \obeylines
- \fi
- %
- % Do @comment since we are called inside an environment such as
- % @example, where each end-of-line in the input causes an
- % end-of-line in the output. We don't want the end-of-line after
- % the `@group' to put extra space in the output. Since @group
- % should appear on a line by itself (according to the Texinfo
- % manual), we don't worry about eating any user text.
- \comment
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil \mil=0.001in
-
-\def\need{\parsearg\needx}
-
-% Old definition--didn't work.
-%\def\needx #1{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\penalty 10000
-%\prevdepth=-1000pt
-%}}
-
-\def\needx#1{%
- % Go into vertical mode, so we don't make a big box in the middle of a
- % paragraph.
- \par
- %
- % Don't add any leading before our big empty box, but allow a page
- % break, since the best break might be right here.
- \allowbreak
- \nointerlineskip
- \vtop to #1\mil{\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
-}
-
-% @br forces paragraph break
-
-\let\br = \par
-
-% @dots{} output some dots
-
-\def\dots{$\ldots$}
-
-% @page forces the start of a new page
-
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-
-% This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
-\leftline{\hskip\leftskip{\rm#1}}}}
-
-%\hbox{{\rm#1}}\hfil\break}}
-
-% @include file insert text of that file as input.
-
-\def\include{\parsearg\includezzz}
-%Use \input\thisfile to avoid blank after \input, which may be an active
-%char (in which case the blank would become the \input argument).
-%The grouping keeps the value of \thisfile correct even when @include
-%is nested.
-\def\includezzz #1{\begingroup
-\def\thisfile{#1}\input\thisfile
-\endgroup}
-
-\def\thisfile{}
-
-% @center line outputs that line, centered
-
-\def\center{\parsearg\centerzzz}
-\def\centerzzz #1{{\advance\hsize by -\leftskip
-\advance\hsize by -\rightskip
-\centerline{#1}}}
-
-% @sp n outputs n lines of vertical space
-
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\par \vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore is another way to write a comment
-
-\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other%
-\parsearg \commentxxx}
-
-\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 }
-
-\let\c=\comment
-
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-\let\chapter=\relax
-\let\unnumbered=\relax
-\let\top=\relax
-\let\unnumberedsec=\relax
-\let\unnumberedsection=\relax
-\let\unnumberedsubsec=\relax
-\let\unnumberedsubsection=\relax
-\let\unnumberedsubsubsec=\relax
-\let\unnumberedsubsubsection=\relax
-\let\section=\relax
-\let\subsec=\relax
-\let\subsubsec=\relax
-\let\subsection=\relax
-\let\subsubsection=\relax
-\let\appendix=\relax
-\let\appendixsec=\relax
-\let\appendixsection=\relax
-\let\appendixsubsec=\relax
-\let\appendixsubsection=\relax
-\let\appendixsubsubsec=\relax
-\let\appendixsubsubsection=\relax
-\let\contents=\relax
-\let\smallbook=\relax
-\let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-\def\ignoremorecommands{%
- \let\defcv = \relax
- \let\deffn = \relax
- \let\deffnx = \relax
- \let\defindex = \relax
- \let\defivar = \relax
- \let\defmac = \relax
- \let\defmethod = \relax
- \let\defop = \relax
- \let\defopt = \relax
- \let\defspec = \relax
- \let\deftp = \relax
- \let\deftypefn = \relax
- \let\deftypefun = \relax
- \let\deftypevar = \relax
- \let\deftypevr = \relax
- \let\defun = \relax
- \let\defvar = \relax
- \let\defvr = \relax
- \let\ref = \relax
- \let\xref = \relax
- \let\printindex = \relax
- \let\pxref = \relax
- \let\settitle = \relax
- \let\include = \relax
- \let\lowersections = \relax
- \let\down = \relax
- \let\raisesections = \relax
- \let\up = \relax
- \let\set = \relax
- \let\clear = \relax
- \let\item = \relax
- \let\message = \relax
-}
-
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Also ignore @ifinfo, @ifhtml, @html, @menu, and @direntry text.
-%
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\html{\doignore{html}}
-\def\menu{\doignore{menu}}
-\def\direntry{\doignore{direntry}}
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define a command to swallow text until we reach `@end #1'.
- \long\def\doignoretext##1\end #1{\enddoignore}%
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \catcode32 = 10
- %
- % And now expand that command.
- \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
- \ifwarnedobs\relax\else
- % We need to warn folks that they may have trouble with TeX 3.0.
- % This uses \immediate\write16 rather than \message to get newlines.
- \immediate\write16{}
- \immediate\write16{***WARNING*** for users of Unix TeX 3.0!}
- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
- \immediate\write16{If you are running another version of TeX, relax.}
- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
- \immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{If you are stuck with version 3.0, run the}
- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
- \immediate\write16{ to use a workaround.}
- \immediate\write16{}
- \warnedobstrue
- \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
- \obstexwarn
- % We must actually expand the ignored text to look for the @end
- % command, so that nested ignore constructs work. Thus, we put the
- % text into a \vbox and then do nothing with the result. To minimize
- % the change of memory overflow, we follow the approach outlined on
- % page 401 of the TeXbook: make the current font be a dummy font.
- %
- \setbox0 = \vbox\bgroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define `@end #1' to end the box, which will in turn undefine the
- % @end command again.
- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
- %
- % We are going to be parsing Texinfo commands. Most cause no
- % trouble when they are used incorrectly, but some commands do
- % complicated argument parsing or otherwise get confused, so we
- % undefine them.
- %
- % We can't do anything about stray @-signs, unfortunately;
- % they'll produce `undefined control sequence' errors.
- \ignoremorecommands
- %
- % Set the current font to be \nullfont, a TeX primitive, and define
- % all the font commands to also use \nullfont. We don't use
- % dummy.tfm, as suggested in the TeXbook, because not all sites
- % might have that installed. Therefore, math mode will still
- % produce output, but that should be an extremely small amount of
- % stuff compared to the main input.
- %
- \nullfont
- \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont
- \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont
- \let\tensf = \nullfont
- % Similarly for index fonts (mostly for their use in
- % smallexample)
- \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont
- \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont
- \let\indsf = \nullfont
- %
- % Don't complain when characters are missing from the fonts.
- \tracinglostchars = 0
- %
- % Don't bother to do space factor calculations.
- \frenchspacing
- %
- % Don't report underfull hboxes.
- \hbadness = 10000
- %
- % Do minimal line-breaking.
- \pretolerance = 10000
- %
- % Do not execute instructions in @tex
- \def\tex{\doignore{tex}}
-}
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it.
-%
-\def\set{\parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- \def\temp{#2}%
- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
- \fi
-}
-\def\setzzz#1#2 \endsetzzz{\expandafter\xdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-%
-\def\value#1{\expandafter
- \ifx\csname SET#1\endcsname\relax
- {\{No value for ``#1''\}}
- \else \csname SET#1\endcsname \fi}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-\def\ifset{\parsearg\ifsetxxx}
-\def\ifsetxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifsetfail
- \else
- \expandafter\ifsetsucceed
- \fi
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\ifclearxxx}
-\def\ifclearxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifclearsucceed
- \else
- \expandafter\ifclearfail
- \fi
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex always succeeds; we read the text following, through @end
-% iftex). But `@end iftex' should be valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\defineunmatchedend{iftex}
-
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
-% effect (they'd get reverted at the end of the group). So we must
-% define \Eiftex to redefine itself to be its previous value. (We can't
-% just define it to fail again with an ``unmatched end'' error, since
-% the @ifset might be nested.)
-%
-\def\conditionalsucceed#1{%
- \edef\temp{%
- % Remember the current value of \E#1.
- \let\nece{prevE#1} = \nece{E#1}%
- %
- % At the `@end #1', redefine \E#1 to be its previous value.
- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
- }%
- \temp
-}
-
-% We need to expand lots of \csname's, but we don't want to expand the
-% control sequences after we've constructed them.
-%
-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
-
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math means output in math mode.
-% We don't use $'s directly in the definition of \math because control
-% sequences like \math are expanded when the toc file is written. Then,
-% we read the toc file back, the $'s will be normal characters (as they
-% should be, according to the definition of Texinfo). So we must use a
-% control sequence to switch into and out of math mode.
-%
-% This isn't quite enough for @math to work properly in indices, but it
-% seems unlikely it will ever be needed there.
-%
-\let\implicitmath = $
-\def\math#1{\implicitmath #1\implicitmath}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
-
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\relax
-
-\def\donoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\setref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\def\unnumbnoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\def\appendixnoderef{\ifx\lastnode\relax\else
-\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
-\global\let\lastnode=\relax}
-
-\let\refill=\relax
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
- \readauxfile
- \opencontents
- \openindices
- \fixbackslash % Turn off hack to swallow `\input texinfo'.
- \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
- \comment % Ignore the actual filename.
-}
-
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
- node \samp{\ignorespaces#1{}}}
-
-\message{fonts,}
-
-% Font-change commands.
-
-% Texinfo supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-%% Try out Computer Modern fonts at \magstephalf
-\let\mainmagstep=\magstephalf
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-\def\setfont#1#2{\font#1=\fontprefix#2}
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
-\def\fontprefix{cm}
-\fi
-
-\ifx\bigger\relax
-\let\mainmagstep=\magstep1
-\setfont\textrm{r12}
-\setfont\texttt{tt12}
-\else
-\setfont\textrm{r10 scaled \mainmagstep}
-\setfont\texttt{tt10 scaled \mainmagstep}
-\fi
-% Instead of cmb10, you many want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10.
-\setfont\textbf{b10 scaled \mainmagstep}
-\setfont\textit{ti10 scaled \mainmagstep}
-\setfont\textsl{sl10 scaled \mainmagstep}
-\setfont\textsf{ss10 scaled \mainmagstep}
-\setfont\textsc{csc10 scaled \mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun, etc.
-\setfont\defbf{bx10 scaled \magstep1} %was 1314
-\setfont\deftt{tt10 scaled \magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-
-% Fonts for indices and small examples.
-% We actually use the slanted font rather than the italic,
-% because texinfo normally uses the slanted fonts for that.
-% Do not make many font distinctions in general in the index, since they
-% aren't very useful.
-\setfont\ninett{tt9}
-\setfont\indrm{r9}
-\setfont\indit{sl9}
-\let\indsl=\indit
-\let\indtt=\ninett
-\let\indsf=\indrm
-\let\indbf=\indrm
-\let\indsc=\indrm
-\font\indi=cmmi9
-\font\indsy=cmsy9
-
-% Fonts for headings
-\setfont\chaprm{bx12 scaled \magstep2}
-\setfont\chapit{ti12 scaled \magstep2}
-\setfont\chapsl{sl12 scaled \magstep2}
-\setfont\chaptt{tt12 scaled \magstep2}
-\setfont\chapsf{ss12 scaled \magstep2}
-\let\chapbf=\chaprm
-\setfont\chapsc{csc10 scaled\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-\setfont\secrm{bx12 scaled \magstep1}
-\setfont\secit{ti12 scaled \magstep1}
-\setfont\secsl{sl12 scaled \magstep1}
-\setfont\sectt{tt12 scaled \magstep1}
-\setfont\secsf{ss12 scaled \magstep1}
-\setfont\secbf{bx12 scaled \magstep1}
-\setfont\secsc{csc10 scaled\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% \setfont\ssecrm{bx10 scaled \magstep1} % This size an font looked bad.
-% \setfont\ssecit{cmti10 scaled \magstep1} % The letters were too crowded.
-% \setfont\ssecsl{sl10 scaled \magstep1}
-% \setfont\ssectt{tt10 scaled \magstep1}
-% \setfont\ssecsf{ss10 scaled \magstep1}
-
-%\setfont\ssecrm{b10 scaled 1315} % Note the use of cmb rather than cmbx.
-%\setfont\ssecit{ti10 scaled 1315} % Also, the size is a little larger than
-%\setfont\ssecsl{sl10 scaled 1315} % being scaled magstep1.
-%\setfont\ssectt{tt10 scaled 1315}
-%\setfont\ssecsf{ss10 scaled 1315}
-
-%\let\ssecbf=\ssecrm
-
-\setfont\ssecrm{bx12 scaled \magstephalf}
-\setfont\ssecit{ti12 scaled \magstephalf}
-\setfont\ssecsl{sl12 scaled \magstephalf}
-\setfont\ssectt{tt12 scaled \magstephalf}
-\setfont\ssecsf{ss12 scaled \magstephalf}
-\setfont\ssecbf{bx12 scaled \magstephalf}
-\setfont\ssecsc{csc10 scaled \magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled \magstep1
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% Fonts for title page:
-\setfont\titlerm{bx12 scaled \magstep3}
-\let\authorrm = \secrm
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families. Since
-% texinfo doesn't allow for producing subscripts and superscripts, we
-% don't bother to reset \scriptfont and \scriptscriptfont (which would
-% also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
- \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
- \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
- \textfont\ttfam = \tentt \textfont\sffam = \tensf
-}
-
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE. We do this so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current. Plain TeX does, for example,
-% \def\bf{\fam=\bffam \tenbf} By redefining \tenbf, we obviate the need
-% to redefine \bf itself.
-\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
- \resetmathfonts}
-\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
- \resetmathfonts}
-\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
- \resetmathfonts}
-\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
- \resetmathfonts}
-\def\indexfonts{%
- \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
- \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
- \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy
- \resetmathfonts}
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm{r12}
-\setfont\shortcontbf{bx12}
-\setfont\shortcontsl{sl12}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
-\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartitalic
-\let\dfn=\smartitalic
-\let\emph=\smartitalic
-\let\cite=\smartitalic
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph. Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-\def\t#1{%
- {\tt \nohyphenation \rawbackslash \frenchspacing #1}%
- \null
-}
-\let\ttfont = \t
-%\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null}
-\def\samp #1{`\tclose{#1}'\null}
-\def\key #1{{\tt \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-\let\file=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\def\tclose#1{%
- {%
- % Change normal interword space to be same as for the current font.
- \spaceskip = \fontdimen2\font
- %
- % Switch to typewriter.
- \tt
- %
- % But `\ ' produces the large typewriter interword space.
- \def\ {{\spaceskip = 0pt{} }}%
- %
- % Turn off hyphenation.
- \nohyphenation
- %
- \rawbackslash
- \frenchspacing
- #1%
- }%
- \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overful hboxes
-% in the Emacs manual, the Library manual, etc.
-
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate an a dash.
-% -- rms.
-{
-\catcode`\-=\active
-\catcode`\_=\active
-\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex}
-% The following is used by \doprintindex to insure that long function names
-% wrap around. It is necessary for - and _ to be active before the index is
-% read from the file, as \entry parses the arguments long before \code is
-% ever called. -- mycroft
-\global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}
-}
-\def\realdash{-}
-\def\realunder{_}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{\normalunderscore\discretionary{}{}{}}
-\def\codex #1{\tclose{#1}\endgroup}
-
-%\let\exp=\tclose %Was temporary
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else\tclose{\look}\fi
-\else\tclose{\look}\fi}
-
-% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of
-% @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-\def\l#1{{\li #1}\null} %
-
-\def\r#1{{\rm #1}} % roman font
-% Use of \lowercase was suggested.
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page. Must do @settitle before @titlepage.
-\def\titlefont#1{{\titlerm #1}}
-
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
-
-\def\titlepage{\begingroup \parindent=0pt \textfonts
- \let\subtitlerm=\tenrm
-% I deinstalled the following change because \cmr12 is undefined.
-% This change was not in the ChangeLog anyway. --rms.
-% \let\subtitlerm=\cmr12
- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
- %
- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
- %
- % Leave some space at the very top of the page.
- \vglue\titlepagetopglue
- %
- % Now you can print the title using @title.
- \def\title{\parsearg\titlezzz}%
- \def\titlezzz##1{\leftline{\titlefont{##1}}
- % print a rule at the page bottom also.
- \finishedtitlepagefalse
- \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
- % No rule at page bottom unless we print one at the top with @title.
- \finishedtitlepagetrue
- %
- % Now you can put text using @subtitle.
- \def\subtitle{\parsearg\subtitlezzz}%
- \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
- %
- % @author should come last, but may come many times.
- \def\author{\parsearg\authorzzz}%
- \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
- {\authorfont \leftline{##1}}}%
- %
- % Most title ``pages'' are actually two pages long, with space
- % at the top of the second. We don't want the ragged left on the second.
- \let\oldpage = \page
- \def\page{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- \oldpage
- \let\page = \oldpage
- \hbox{}}%
-% \def\page{\oldpage \hbox{}}
-}
-
-\def\Etitlepage{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- % It is important to do the page break before ending the group,
- % because the headline and footline are only empty inside the group.
- % If we use the new definition of \page, we always get a blank page
- % after the title page, which we certainly don't want.
- \oldpage
- \endgroup
- \HEADINGSon
-}
-
-\def\finishtitlepage{%
- \vskip4pt \hrule height 2pt width \hsize
- \vskip\titlepagebottomglue
- \finishedtitlepagetrue
-}
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks \evenheadline % Token sequence for heading line of even pages
-\newtoks \oddheadline % Token sequence for heading line of odd pages
-\newtoks \evenfootline % Token sequence for footing line of even pages
-\newtoks \oddfootline % Token sequence for footing line of odd pages
-
-% Now make Tex use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
- \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
- \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what @headings on does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
-
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish}
-\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish}
-\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
-\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-%
-}% unbind the catcode of @.
-
-% @headings double turns headings on for double-sided printing.
-% @headings single turns headings on for single-sided printing.
-% @headings off turns them off.
-% @headings on same as @headings double, retained for compatibility.
-% @headings after turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\HEADINGSoff{
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{
-%\pagealignmacro
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{
-%\pagealignmacro
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-}
-
-% Subroutines used in generating headings
-% Produces Day Month Year style of output.
-\def\today{\number\day\space
-\ifcase\month\or
-January\or February\or March\or April\or May\or June\or
-July\or August\or September\or October\or November\or December\fi
-\space\number\year}
-
-% Use this if you want the Month Day, Year style of output.
-%\def\today{\ifcase\month\or
-%January\or February\or March\or April\or May\or June\or
-%July\or August\or September\or October\or November\or December\fi
-%\space\number\day, \number\year}
-
-% @settitle line... specifies the title of the document, for headings
-% It generates no output of its own
-
-\def\thistitle{No Title}
-\def\settitle{\parsearg\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
-
-\message{tables,}
-
-% @tabs -- simple alignment
-
-% These don't work. For one thing, \+ is defined as outer.
-% So these macros cannot even be defined.
-
-%\def\tabs{\parsearg\tabszzz}
-%\def\tabszzz #1{\settabs\+#1\cr}
-%\def\tabline{\parsearg\tablinezzz}
-%\def\tablinezzz #1{\+#1\cr}
-%\def\&{&}
-
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
- \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
- \itemzzz {#1}}
-
-\def\itemzzz #1{\begingroup %
- \advance\hsize by -\rightskip
- \advance\hsize by -\tableindent
- \setbox0=\hbox{\itemfont{#1}}%
- \itemindex{#1}%
- \nobreak % This prevents a break before @itemx.
- %
- % Be sure we are not still in the middle of a paragraph.
- %{\parskip = 0in
- %\par
- %}%
- %
- % If the item text does not fit in the space we have, put it on a line
- % by itself, and do not allow a page break either before or after that
- % line. We do not start a paragraph here because then if the next
- % command is, e.g., @kindex, the whatsit would get put into the
- % horizontal list on a line by itself, resulting in extra blank space.
- \ifdim \wd0>\itemmax
- %
- % Make this a paragraph so we get the \parskip glue and wrapping,
- % but leave it ragged-right.
- \begingroup
- \advance\leftskip by-\tableindent
- \advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
- \leavevmode\unhbox0\par
- \endgroup
- %
- % We're going to be starting a paragraph, but we don't want the
- % \parskip glue -- logically it's part of the @item we just started.
- \nobreak \vskip-\parskip
- %
- % Stop a page break at the \parskip glue coming up. Unfortunately
- % we can't prevent a possible page break at the following
- % \baselineskip glue.
- \nobreak
- \endgroup
- \itemxneedsnegativevskipfalse
- \else
- % The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line. Since that
- % text will be indented by \tableindent, we make the item text be in
- % a zero-width box.
- \noindent
- \rlap{\hskip -\tableindent\box0}\ignorespaces%
- \endgroup%
- \itemxneedsnegativevskiptrue%
- \fi
-}
-
-\def\item{\errmessage{@item while not in a table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-%% Contains a kludge to get @end[description] to work
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1 \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1 \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1 \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Neccessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
-}
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
- \begingroup % ended by the @end itemsize
- \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
-
-% Set sfcode to normal for the chars that usually have another value.
-% These are `.?!:;,'
-\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
- \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list. No
-% argument is the same as `1'.
-%
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
- \begingroup % ended by the @end enumerate
- %
- % If we were given no argument, pretend we were given `1'.
- \def\thearg{#1}%
- \ifx\thearg\empty \def\thearg{1}\fi
- %
- % Detect if the argument is a single token. If so, it might be a
- % letter. Otherwise, the only valid thing it can be is a number.
- % (We will always have one token, because of the test we just made.
- % This is a good thing, since \splitoff doesn't work given nothing at
- % all -- the first parameter is undelimited.)
- \expandafter\splitoff\thearg\endmark
- \ifx\rest\empty
- % Only one token in the argument. It could still be anything.
- % A ``lowercase letter'' is one whose \lccode is nonzero.
- % An ``uppercase letter'' is one whose \lccode is both nonzero, and
- % not equal to itself.
- % Otherwise, we assume it's a number.
- %
- % We need the \relax at the end of the \ifnum lines to stop TeX from
- % continuing to look for a <number>.
- %
- \ifnum\lccode\expandafter`\thearg=0\relax
- \numericenumerate % a number (we hope)
- \else
- % It's a letter.
- \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
- \lowercaseenumerate % lowercase letter
- \else
- \uppercaseenumerate % uppercase letter
- \fi
- \fi
- \else
- % Multiple tokens in the argument. We hope it's a number.
- \numericenumerate
- \fi
-}
-
-% An @enumerate whose labels are integers. The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
- \itemno = \thearg
- \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more lowercase letters in @enumerate; get a bigger
- alphabet}%
- \fi
- \char\lccode\itemno
- }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more uppercase letters in @enumerate; get a bigger
- alphabet}
- \fi
- \char\uccode\itemno
- }%
-}
-
-% Call itemizey, adding a period to the first argument and supplying the
-% common last two arguments. Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
- \advance\itemno by -1
- \itemizey{#1.}\Eenumerate\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{\in hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94
-%
-% @multitable ... @endmultitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble. Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-% @multitable @percentofhsize .2 .3 .5
-% @item ...
-%
-% Numbers following @percentofhsize are the percent of the total
-% current hsize to be used for each column. You may use as many
-% columns as desired.
-
-% Or use a template:
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item ...
-% using the widest term desired in each column.
-
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab, @multicolumn or @endmulticolumn do not need to be on their
-% own lines, but it will not hurt if they are.
-
-% Sample multitable:
-
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item first col stuff @tab second col stuff @tab third col
-% @item
-% first col stuff
-% @tab
-% second col stuff
-% @tab
-% third col
-% @item first col stuff @tab second col stuff
-% @tab Many paragraphs of text may be used in any column.
-%
-% They will wrap at the width determined by the template.
-% @item@tab@tab This will be in third column.
-% @endmultitable
-
-% Default dimensions may be reset by user.
-% @intableparskip will set vertical space between paragraphs in table.
-% @intableparindent will set paragraph indent in table.
-% @spacebetweencols will set horizontal space to be left between columns.
-% @spacebetweenlines will set vertical space to be left between lines.
-
-%%%%
-% Dimensions
-
-\newdimen\intableparskip
-\newdimen\intableparindent
-\newdimen\spacebetweencols
-\newdimen\spacebetweenlines
-\intableparskip=0pt
-\intableparindent=6pt
-\spacebetweencols=12pt
-\spacebetweenlines=12pt
-
-%%%%
-% Macros used to set up halign preamble:
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\percentofhsize\relax
-\def\xpercentofhsize{\percentofhsize}
-\newif\ifsetpercent
-
-\newcount\colcount
-\def\setuptable#1{\def\firstarg{#1}%
-\ifx\firstarg\xendsetuptable\let\go\relax%
-\else
- \ifx\firstarg\xpercentofhsize\global\setpercenttrue%
- \else
- \ifsetpercent
- \if#1.\else%
- \global\advance\colcount by1 %
- \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
- \fi
- \else
- \global\advance\colcount by1
- \setbox0=\hbox{#1}%
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
- \fi%
- \fi%
- \let\go\setuptable%
-\fi\go}
-%%%%
-% multitable syntax
-\def\tab{&}
-
-%%%%
-% @multitable ... @endmultitable definitions:
-
-\def\multitable#1\item{\bgroup
-\let\item\cr
-\tolerance=9500
-\hbadness=9500
-\parskip=\intableparskip
-\parindent=\intableparindent
-\overfullrule=0pt
-\global\colcount=0\relax%
-\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
- % To parse everything between @multitable and @item :
-\def\one{#1}\expandafter\setuptable\one\endsetuptable
- % Need to reset this to 0 after \setuptable.
-\global\colcount=0\relax%
- %
- % This preamble sets up a generic column definition, which will
- % be used as many times as user calls for columns.
- % \vtop will set a single line and will also let text wrap and
- % continue for many paragraphs if desired.
-\halign\bgroup&\global\advance\colcount by 1\relax%
-\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \spacebetweencols to all columns after
- % the first one.
- % If a template has been used, we will add \spacebetweencols
- % to the width of each template entry.
- % If user has set preamble in terms of percent of \hsize
- % we will use that dimension as the width of the column, and
- % the \leftskip will keep entries from bumping into each other.
- % Table will start at left margin and final column will justify at
- % right margin.
-\ifnum\colcount=1
-\else
- \ifsetpercent
- \else
- % If user has <not> set preamble in terms of percent of \hsize
- % we will advance \hsize by \spacebetweencols
- \advance\hsize by \spacebetweencols
- \fi
- % In either case we will make \leftskip=\spacebetweencols:
-\leftskip=\spacebetweencols
-\fi
-\noindent##}\cr%
- % \everycr will reset column counter, \colcount, at the end of
- % each line. Every column entry will cause \colcount to advance by one.
- % The table preamble
- % looks at the current \colcount to find the correct column width.
-\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines
-\filbreak%% keeps underfull box messages off when table breaks over pages.
-\global\colcount=0\relax}}}
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index. The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-
-\def\newindex #1{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\doindex {#1}}
-}
-
-% @defindex foo == \newindex{foo}
-
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-
-\def\newcodeindex #1{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\docodeindex {#1}}
-}
-
-\def\defcodeindex{\parsearg\newcodeindex}
-
-% @synindex foo bar makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-\def\synindex #1 #2 {%
-\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-\expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\doindex {#2}}%
-}
-
-% @syncodeindex foo bar similar, but put all entries made for index foo
-% inside @code.
-\def\syncodeindex #1 #2 {%
-\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
-\expandafter\let\csname#1indfile\endcsname=\synindexfoo
-\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
-\noexpand\docodeindex {#2}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-% and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-\def\indexdummies{%
-% Take care of the plain tex accent commands.
-\def\"{\realbackslash "}%
-\def\`{\realbackslash `}%
-\def\'{\realbackslash '}%
-\def\^{\realbackslash ^}%
-\def\~{\realbackslash ~}%
-\def\={\realbackslash =}%
-\def\b{\realbackslash b}%
-\def\c{\realbackslash c}%
-\def\d{\realbackslash d}%
-\def\u{\realbackslash u}%
-\def\v{\realbackslash v}%
-\def\H{\realbackslash H}%
-% Take care of the plain tex special European modified letters.
-\def\oe{\realbackslash oe}%
-\def\ae{\realbackslash ae}%
-\def\aa{\realbackslash aa}%
-\def\OE{\realbackslash OE}%
-\def\AE{\realbackslash AE}%
-\def\AA{\realbackslash AA}%
-\def\o{\realbackslash o}%
-\def\O{\realbackslash O}%
-\def\l{\realbackslash l}%
-\def\L{\realbackslash L}%
-\def\ss{\realbackslash ss}%
-% Take care of texinfo commands likely to appear in an index entry.
-\def\_{{\realbackslash _}}%
-\def\w{\realbackslash w }%
-\def\bf{\realbackslash bf }%
-\def\rm{\realbackslash rm }%
-\def\sl{\realbackslash sl }%
-\def\sf{\realbackslash sf}%
-\def\tt{\realbackslash tt}%
-\def\gtr{\realbackslash gtr}%
-\def\less{\realbackslash less}%
-\def\hat{\realbackslash hat}%
-\def\char{\realbackslash char}%
-\def\TeX{\realbackslash TeX}%
-\def\dots{\realbackslash dots }%
-\def\copyright{\realbackslash copyright }%
-\def\tclose##1{\realbackslash tclose {##1}}%
-\def\code##1{\realbackslash code {##1}}%
-\def\samp##1{\realbackslash samp {##1}}%
-\def\t##1{\realbackslash r {##1}}%
-\def\r##1{\realbackslash r {##1}}%
-\def\i##1{\realbackslash i {##1}}%
-\def\b##1{\realbackslash b {##1}}%
-\def\cite##1{\realbackslash cite {##1}}%
-\def\key##1{\realbackslash key {##1}}%
-\def\file##1{\realbackslash file {##1}}%
-\def\var##1{\realbackslash var {##1}}%
-\def\kbd##1{\realbackslash kbd {##1}}%
-\def\dfn##1{\realbackslash dfn {##1}}%
-\def\emph##1{\realbackslash emph {##1}}%
-}
-
-% \indexnofonts no-ops all font-change commands.
-% This is used when outputting the strings to sort the index by.
-\def\indexdummyfont#1{#1}
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-
-\def\indexnofonts{%
-% Just ignore accents.
-\let\"=\indexdummyfont
-\let\`=\indexdummyfont
-\let\'=\indexdummyfont
-\let\^=\indexdummyfont
-\let\~=\indexdummyfont
-\let\==\indexdummyfont
-\let\b=\indexdummyfont
-\let\c=\indexdummyfont
-\let\d=\indexdummyfont
-\let\u=\indexdummyfont
-\let\v=\indexdummyfont
-\let\H=\indexdummyfont
-% Take care of the plain tex special European modified letters.
-\def\oe{oe}%
-\def\ae{ae}%
-\def\aa{aa}%
-\def\OE{OE}%
-\def\AE{AE}%
-\def\AA{AA}%
-\def\o{o}%
-\def\O{O}%
-\def\l{l}%
-\def\L{L}%
-\def\ss{ss}%
-\let\w=\indexdummyfont
-\let\t=\indexdummyfont
-\let\r=\indexdummyfont
-\let\i=\indexdummyfont
-\let\b=\indexdummyfont
-\let\emph=\indexdummyfont
-\let\strong=\indexdummyfont
-\let\cite=\indexdummyfont
-\let\sc=\indexdummyfont
-%Don't no-op \tt, since it isn't a user-level command
-% and is used in the definitions of the active chars like <, >, |...
-%\let\tt=\indexdummyfont
-\let\tclose=\indexdummyfont
-\let\code=\indexdummyfont
-\let\file=\indexdummyfont
-\let\samp=\indexdummyfont
-\let\kbd=\indexdummyfont
-\let\key=\indexdummyfont
-\let\var=\indexdummyfont
-\let\TeX=\indexdummytex
-\let\dots=\indexdummydots
-}
-
-% To define \realbackslash, we must make \ not be an escape.
-% We must first make another character (@) an escape
-% so we do not become unable to do a definition.
-
-{\catcode`\@=0 \catcode`\\=\other
-@gdef@realbackslash{\}}
-
-\let\indexbackslash=0 %overridden during \printindex.
-
-\let\SETmarginindex=\relax %initialize!
-% workhorse for all \fooindexes
-% #1 is name of index, #2 is stuff to put there
-\def\doind #1#2{%
-% Put the index entry in the margin if desired.
-\ifx\SETmarginindex\relax\else%
-\insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
-\fi%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0% Expand all macros now EXCEPT \folio
-\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-% so it will be output as is; and it will print as backslash in the indx.
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2}%
-}%
-% Now produce the complete index entry. We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}}}%
-\temp }%
-}\penalty\count10}}
-
-\def\dosubind #1#2#3{%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0%
-\def\rawbackslashxx{\indexbackslash}%
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2 #3}%
-}%
-% Now produce the complete index entry. We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}{#3}}}%
-\temp }%
-}\penalty\count10}}
-
-% The index entry written in the file actually looks like
-% \entry {sortstring}{page}{topic}
-% or
-% \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-% \initial {c}
-% before the first topic whose initial is c
-% \entry {topic}{pagelist}
-% for a topic that is used without subtopics
-% \primary {topic}
-% for the beginning of a topic that is used with subtopics
-% \secondary {subtopic}{pagelist}
-% for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% This is what you call to cause a particular index to get printed.
-% Write
-% @unnumbered Function Index
-% @printindex fn
-
-\def\printindex{\parsearg\doprintindex}
-
-\def\doprintindex#1{%
- \tex
- \dobreak \chapheadingskip {10000}
- \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
- \catcode`\$=\other
- \catcode`\~=\other
- \indexbreaks
- %
- % The following don't help, since the chars were translated
- % when the raw index was written, and their fonts were discarded
- % due to \indexnofonts.
- %\catcode`\"=\active
- %\catcode`\^=\active
- %\catcode`\_=\active
- %\catcode`\|=\active
- %\catcode`\<=\active
- %\catcode`\>=\active
- % %
- \def\indexbackslash{\rawbackslashxx}
- \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
- \begindoublecolumns
- %
- % See if the index file exists and is nonempty.
- \openin 1 \jobname.#1s
- \ifeof 1
- % \enddoublecolumns gets confused if there is no text in the index,
- % and it loses the chapter title and the aux file entries for the
- % index. The easiest way to prevent this problem is to make sure
- % there is some text.
- (Index is nonexistent)
- \else
- %
- % If the index file exists but is empty, then \openin leaves \ifeof
- % false. We have to make TeX try to read something from the file, so
- % it can discover if there is anything in it.
- \read 1 to \temp
- \ifeof 1
- (Index is empty)
- \else
- \input \jobname.#1s
- \fi
- \fi
- \closein 1
- \enddoublecolumns
- \Etex
-}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-% Same as \bigskipamount except no shrink.
-% \balancecolumns gets confused if there is any shrink.
-\newskip\initialskipamount \initialskipamount 12pt plus4pt
-
-\def\initial #1{%
-{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-\ifdim\lastskip<\initialskipamount
-\removelastskip \penalty-200 \vskip \initialskipamount\fi
-\line{\secbf#1\hfill}\kern 2pt\penalty10000}}
-
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin. It is used for index and table of contents
-% entries. The paragraph is indented by \leftskip.
-%
-\def\entry #1#2{\begingroup
- %
- % Start a new paragraph if necessary, so our assignments below can't
- % affect previous text.
- \par
- %
- % Do not fill out the last line with white space.
- \parfillskip = 0in
- %
- % No extra space above this paragraph.
- \parskip = 0in
- %
- % Do not prefer a separate line ending with a hyphen to fewer lines.
- \finalhyphendemerits = 0
- %
- % \hangindent is only relevant when the entry text and page number
- % don't both fit on one line. In that case, bob suggests starting the
- % dots pretty far over on the line. Unfortunately, a large
- % indentation looks wrong when the entry text itself is broken across
- % lines. So we use a small indentation and put up with long leaders.
- %
- % \hangafter is reset to 1 (which is the value we want) at the start
- % of each paragraph, so we need not do anything with that.
- \hangindent=2em
- %
- % When the entry text needs to be broken, just fill out the first line
- % with blank space.
- \rightskip = 0pt plus1fil
- %
- % Start a ``paragraph'' for the index entry so the line breaking
- % parameters we've set above will have an effect.
- \noindent
- %
- % Insert the text of the index entry. TeX will do line-breaking on it.
- #1%
- % The following is kluged to not output a line of dots in the index if
- % there are no page numbers. The next person who breaks this will be
- % cursed by a Unix daemon.
- \def\tempa{{\rm }}%
- \def\tempb{#2}%
- \edef\tempc{\tempa}%
- \edef\tempd{\tempb}%
- \ifx\tempc\tempd\ \else%
- %
- % If we must, put the page number on a line of its own, and fill out
- % this line with blank space. (The \hfil is overwhelmed with the
- % fill leaders glue in \indexdotfill if the page number does fit.)
- \hfil\penalty50
- \null\nobreak\indexdotfill % Have leaders before the page number.
- %
- % The `\ ' here is removed by the implicit \unskip that TeX does as
- % part of (the primitive) \par. Without it, a spurious underfull
- % \hbox ensues.
- \ #2% The page number ends the paragraph.
- \fi%
- \par
-\endgroup}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-
-\def\secondary #1#2{
-{\parfillskip=0in \parskip=0in
-\hangindent =1in \hangafter=1
-\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
-}}
-
-%% Define two-column mode, which is used in indexes.
-%% Adapted from the TeXbook, page 416.
-\catcode `\@=11
-
-\newbox\partialpage
-
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup
- % Grab any single-column material above us.
- \output = {\global\setbox\partialpage
- =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}%
- \eject
- %
- % Now switch to the double-column output routine.
- \output={\doublecolumnout}%
- %
- % Change the page size parameters. We could do this once outside this
- % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
- % format, but then we repeat the same computation. Repeating a couple
- % of assignments once per index is clearly meaningless for the
- % execution time, so we may as well do it once.
- %
- % First we halve the line length, less a little for the gutter between
- % the columns. We compute the gutter based on the line length, so it
- % changes automatically with the paper format. The magic constant
- % below is chosen so that the gutter has the same value (well, +- <
- % 1pt) as it did when we hard-coded it.
- %
- % We put the result in a separate register, \doublecolumhsize, so we
- % can restore it in \pagesofar, after \hsize itself has (potentially)
- % been clobbered.
- %
- \doublecolumnhsize = \hsize
- \advance\doublecolumnhsize by -.04154\hsize
- \divide\doublecolumnhsize by 2
- \hsize = \doublecolumnhsize
- %
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
- \vsize = 2\vsize
- \doublecolumnpagegoal
-}
-
-\def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage}
-
-\def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth
- \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage
- \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1}
- \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3}
- \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
- \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi
-}
-\def\doublecolumnpagegoal{%
- \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@
-}
-\def\pagesofar{\unvbox\partialpage %
- \hsize=\doublecolumnhsize % have to restore this since output routine
- \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
-\def\doublecolumnout{%
- \setbox5=\copy255
- {\vbadness=10000 \doublecolumnsplit}
- \ifvbox255
- \setbox0=\vtop to\dimen@{\unvbox0}
- \setbox2=\vtop to\dimen@{\unvbox2}
- \onepageout\pagesofar \unvbox255 \penalty\outputpenalty
- \else
- \setbox0=\vbox{\unvbox5}
- \ifvbox0
- \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
- \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth
- {\vbadness=10000
- \loop \global\setbox5=\copy0
- \setbox1=\vsplit5 to\dimen@
- \setbox3=\vsplit5 to\dimen@
- \ifvbox5 \global\advance\dimen@ by1pt \repeat
- \setbox0=\vbox to\dimen@{\unvbox1}
- \setbox2=\vbox to\dimen@{\unvbox3}
- \global\setbox\partialpage=\vbox{\pagesofar}
- \doublecolumnpagegoal
- }
- \fi
- \fi
-}
-
-\catcode `\@=\other
-\message{sectioning,}
-% Define chapters, sections, etc.
-
-\newcount \chapno
-\newcount \secno \secno=0
-\newcount \subsecno \subsecno=0
-\newcount \subsubsecno \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount \appendixno \appendixno = `\@
-\def\appendixletter{\char\the\appendixno}
-
-\newwrite \contentsfile
-% This is called from \setfilename.
-\def\opencontents{\openout \contentsfile = \jobname.toc}
-
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it. @section does likewise
-
-\def\thischapter{} \def\thissection{}
-\def\seccheck#1{\if \pageno<0 %
-\errmessage{@#1 not allowed after generating table of contents}\fi
-%
-}
-
-\def\chapternofonts{%
-\let\rawbackslash=\relax%
-\let\frenchspacing=\relax%
-\def\result{\realbackslash result}
-\def\equiv{\realbackslash equiv}
-\def\expansion{\realbackslash expansion}
-\def\print{\realbackslash print}
-\def\TeX{\realbackslash TeX}
-\def\dots{\realbackslash dots}
-\def\copyright{\realbackslash copyright}
-\def\tt{\realbackslash tt}
-\def\bf{\realbackslash bf }
-\def\w{\realbackslash w}
-\def\less{\realbackslash less}
-\def\gtr{\realbackslash gtr}
-\def\hat{\realbackslash hat}
-\def\char{\realbackslash char}
-\def\tclose##1{\realbackslash tclose {##1}}
-\def\code##1{\realbackslash code {##1}}
-\def\samp##1{\realbackslash samp {##1}}
-\def\r##1{\realbackslash r {##1}}
-\def\b##1{\realbackslash b {##1}}
-\def\key##1{\realbackslash key {##1}}
-\def\file##1{\realbackslash file {##1}}
-\def\kbd##1{\realbackslash kbd {##1}}
-% These are redefined because @smartitalic wouldn't work inside xdef.
-\def\i##1{\realbackslash i {##1}}
-\def\cite##1{\realbackslash cite {##1}}
-\def\var##1{\realbackslash var {##1}}
-\def\emph##1{\realbackslash emph {##1}}
-\def\dfn##1{\realbackslash dfn {##1}}
-}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \chapterzzz{#2}
-\or
- \seczzz{#2}
-\or
- \numberedsubseczzz{#2}
-\or
- \numberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \chapterzzz{#2}
- \else
- \numberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \appendixzzz{#2}
-\or
- \appendixsectionzzz{#2}
-\or
- \appendixsubseczzz{#2}
-\or
- \appendixsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \appendixzzz{#2}
- \else
- \appendixsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \unnumberedzzz{#2}
-\or
- \unnumberedseczzz{#2}
-\or
- \unnumberedsubseczzz{#2}
-\or
- \unnumberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \unnumberedzzz{#2}
- \else
- \unnumberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{\seccheck{chapter}%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}%
-\chapmacro {#1}{\the\chapno}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-% We don't substitute the actual chapter name into \thischapter
-% because we don't want its macros evaluated now.
-\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
-{\chapternofonts%
-\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-}}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{\seccheck{appendix}%
-\secno=0 \subsecno=0 \subsubsecno=0
-\global\advance \appendixno by 1 \message{Appendix \appendixletter}%
-\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
-\gdef\thissection{#1}%
-\gdef\thischaptername{#1}%
-\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
-{\chapternofonts%
-\edef\temp{{\realbackslash chapentry
- {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\global\let\section = \appendixsec
-\global\let\subsection = \appendixsubsec
-\global\let\subsubsection = \appendixsubsubsec
-}}
-
-\outer\def\top{\parsearg\unnumberedyyy}
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{\seccheck{unnumbered}%
-\secno=0 \subsecno=0 \subsubsecno=0
-%
-% This used to be simply \message{#1}, but TeX fully expands the
-% argument to \message. Therefore, if #1 contained @-commands, TeX
-% expanded them. For example, in `@unnumbered The @cite{Book}', TeX
-% expanded @cite (which turns out to cause errors because \cite is meant
-% to be executed, not expanded).
-%
-% Anyway, we don't want the fully-expanded definition of @cite to appear
-% as a result of the \message, we just want `@cite' itself. We use
-% \the<toks register> to achieve this: TeX expands \the<toks> only once,
-% simply yielding the contents of the <toks register>.
-\toks0 = {#1}\message{(\the\toks0)}%
-%
-\unnumbchapmacro {#1}%
-\gdef\thischapter{#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\global\let\section = \unnumberedsec
-\global\let\subsection = \unnumberedsubsec
-\global\let\subsubsection = \unnumberedsubsubsec
-}}
-
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{\seccheck{section}%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash secentry %
-{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appenixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{\seccheck{appendixsection}%
-\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash secentry %
-{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{\seccheck{unnumberedsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{\seccheck{subsection}%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsecentry %
-{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{\seccheck{appendixsubsec}%
-\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsecentry %
-{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{\seccheck{subsubsection}%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsubsecentry %
- {#1}
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}
- {\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\donoderef %
-\penalty 10000 %
-}}
-
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}%
-\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-\subsubsecheading {#1}
- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-{\chapternofonts%
-\edef\temp{{\realbackslash subsubsecentry{#1}%
- {\appendixletter}
- {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\appendixnoderef %
-\penalty 10000 %
-}}
-
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
-\plainsecheading {#1}\gdef\thissection{#1}%
-{\chapternofonts%
-\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
-\escapechar=`\\%
-\write \contentsfile \temp %
-\unnumbnoderef %
-\penalty 10000 %
-}}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% NOTE on use of \vbox for chapter headings, section headings, and
-% such:
-% 1) We use \vbox rather than the earlier \line to permit
-% overlong headings to fold.
-% 2) \hyphenpenalty is set to 10000 because hyphenation in a
-% heading is obnoxious; this forbids it.
-% 3) Likewise, headings look best if no \parindent is used, and
-% if justification is not attempted. Hence \raggedright.
-
-
-\def\majorheading{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
-{\advance\chapheadingskip by 10pt \chapbreak }%
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\heading{\parsearg\secheadingi}
-
-\def\subheading{\parsearg\subsecheadingi}
-
-\def\subsubheading{\parsearg\subsubsecheadingi}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-%%% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain}
-
-\def\chfplain #1#2{%
- \pchapsepmacro
- {%
- \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #2\enspace #1}%
- }%
- \bigskip
- \penalty5000
-}
-
-\def\unnchfplain #1{%
-\pchapsepmacro %
-{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 10000 %
-}
-\CHAPFplain % The default
-
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 10000 %
-}
-
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-
-\def\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen}
-
-% Parameter controlling skip before section headings.
-
-\newskip \subsecheadingskip \subsecheadingskip = 17pt plus 8pt minus 4pt
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-
-\newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-
-% @paragraphindent is defined for the Info formatting commands only.
-\let\paragraphindent=\comment
-
-% Section fonts are the base font at magstep2, which produces
-% a size a bit more than 14 points in the default situation.
-
-\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}
-\def\plainsecheading #1{\secheadingi {#1}}
-\def\secheadingi #1{{\advance \secheadingskip by \parskip %
-\secheadingbreak}%
-{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-
-% Subsection fonts are the base font at magstep1,
-% which produces a size of 12 points.
-
-\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}
-\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
-
-\def\subsubsecfonts{\subsecfonts} % Maybe this should change:
- % Perhaps make sssec fonts scaled
- % magstep half
-\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}
-\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %
-\subsecheadingbreak}%
-{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
-\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}
-
-
-\message{toc printing,}
-
-% Finish up the main text and prepare to read what we've written
-% to \contentsfile.
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\def\startcontents#1{%
- \pagealignmacro
- \immediate\closeout \contentsfile
- \ifnum \pageno>0
- \pageno = -1 % Request roman numbered pages.
- \fi
- % Don't need to put `Contents' or `Short Contents' in the headline.
- % It is abundantly clear what they are.
- \unnumbchapmacro{#1}\def\thischapter{}%
- \begingroup % Set up to handle contents files properly.
- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
- \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
- \raggedbottom % Worry more about breakpoints than the bottom.
- \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-}
-
-
-% Normal (long) toc.
-\outer\def\contents{%
- \startcontents{\putwordTableofContents}%
- \input \jobname.toc
- \endgroup
- \vfill \eject
-}
-
-% And just the chapters.
-\outer\def\summarycontents{%
- \startcontents{\putwordShortContents}%
- %
- \let\chapentry = \shortchapentry
- \let\unnumbchapentry = \shortunnumberedentry
- % We want a true roman here for the page numbers.
- \secfonts
- \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
- \rm
- \advance\baselineskip by 1pt % Open it up a little.
- \def\secentry ##1##2##3##4{}
- \def\unnumbsecentry ##1##2{}
- \def\subsecentry ##1##2##3##4##5{}
- \def\unnumbsubsecentry ##1##2{}
- \def\subsubsecentry ##1##2##3##4##5##6{}
- \def\unnumbsubsubsecentry ##1##2{}
- \input \jobname.toc
- \endgroup
- \vfill \eject
-}
-\let\shortcontents = \summarycontents
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Chapter-level things, for both the long and short contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
-
-% See comments in \dochapentry re vbox and related settings
-\def\shortchapentry#1#2#3{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}%
-}
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
-\setbox0 = \hbox{\shortcontrm \putwordAppendix }
-\newdimen\shortappendixwidth \shortappendixwidth = \wd0
-
-\def\shortchaplabel#1{%
- % We typeset #1 in a box of constant width, regardless of the text of
- % #1, so the chapter titles will come out aligned.
- \setbox0 = \hbox{#1}%
- \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
- %
- % This space should be plenty, since a single number is .5em, and the
- % widest letter (M) is 1em, at least in the Computer Modern fonts.
- % (This space doesn't include the extra space that gets added after
- % the label; that gets put in in \shortchapentry above.)
- \advance\dimen0 by 1.1em
- \hbox to \dimen0{#1\hfil}%
-}
-
-\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}}
-
-% Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
-
-% Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
-
-% And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
- \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
-
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we would want to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
- \penalty-300 \vskip\baselineskip
- \begingroup
- \chapentryfonts
- \tocentry{#1}{\dopageno{#2}}%
- \endgroup
- \nobreak\vskip .25\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
- \secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
- \subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
- \subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno{#2}}%
-\endgroup}
-
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here. (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-%
-\def\tocentry#1#2{\begingroup
- \hyphenpenalty = 10000
- \entry{#1}{#2}%
-\endgroup}
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
-
-
-\message{environments,}
-
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-% Furthermore, these definitions must come after we define our fonts.
-\newbox\dblarrowbox \newbox\longdblarrowbox
-\newbox\pushcharbox \newbox\bullbox
-\newbox\equivbox \newbox\errorbox
-
-\let\ptexequiv = \equiv
-
-%{\tentt
-%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
-%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
-%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
-%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
-% Adapted from the manmac format (p.420 of TeXbook)
-%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
-% depth .1ex\hfil}
-%}
-
-\def\point{$\star$}
-
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% Adapted from the TeXbook's \boxit.
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-
-\global\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-
-% The @error{} command.
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex escapes into raw Tex temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
-
-\def\tex{\begingroup
-\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
-\catcode `\%=14
-\catcode 43=12
-\catcode`\"=12
-\catcode`\==12
-\catcode`\|=12
-\catcode`\<=12
-\catcode`\>=12
-\escapechar=`\\
-%
-\let\~=\ptextilde
-\let\{=\ptexlbrace
-\let\}=\ptexrbrace
-\let\.=\ptexdot
-\let\*=\ptexstar
-\let\dots=\ptexdots
-\def\@{@}%
-\let\bullet=\ptexbullet
-\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl
-\let\L=\ptexL
-%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @endlisp.
-% @lisp does a \begingroup so it can rebind things,
-% including the definition of @endlisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments. \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% Make each space character in the input produce a normal interword
-% space in the output. Don't allow a line break at this space, as this
-% is used only in environments like @example, where each line of input
-% should produce a line of output anyway.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is. This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical. We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip
-%
-\def\aboveenvbreak{{\advance\envskipamount by \parskip
-\endgraf \ifdim\lastskip<\envskipamount
-\removelastskip \penalty-50 \vskip\envskipamount \fi}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
-\let\nonarrowing=\relax
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \cartouche: draw rectangle w/rounded corners around argument
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
- \ctl\leaders\hrule height\circthick\hfil\ctr
- \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
- \cbl\leaders\hrule height\circthick\hfil\cbr
- \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\long\def\cartouche{%
-\begingroup
- \lskip=\leftskip \rskip=\rightskip
- \leftskip=0pt\rightskip=0pt %we want these *outside*.
- \cartinner=\hsize \advance\cartinner by-\lskip
- \advance\cartinner by-\rskip
- \cartouter=\hsize
- \advance\cartouter by 18pt % allow for 3pt kerns on either
-% side, and for 6pt waste from
-% each corner char
- \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
- % Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing=\comment
- \vbox\bgroup
- \baselineskip=0pt\parskip=0pt\lineskip=0pt
- \carttop
- \hbox\bgroup
- \hskip\lskip
- \vrule\kern3pt
- \vbox\bgroup
- \hsize=\cartinner
- \kern3pt
- \begingroup
- \baselineskip=\normbskip
- \lineskip=\normlskip
- \parskip=\normpskip
- \vskip -\parskip
-\def\Ecartouche{%
- \endgroup
- \kern3pt
- \egroup
- \kern3pt\vrule
- \hskip\rskip
- \egroup
- \cartbot
- \egroup
-\endgroup
-}}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
- \aboveenvbreak
- \inENV % This group ends at the end of the body
- \hfuzz = 12pt % Don't be fussy
- \sepspaces % Make spaces be word-separators rather than space tokens.
- \singlespace
- \let\par = \lisppar % don't ignore blank lines
- \obeylines % each line of input is a line of output
- \parskip = 0pt
- \parindent = 0pt
- \emergencystretch = 0pt % don't try to avoid overfull boxes
- % @cartouche defines \nonarrowing to inhibit narrowing
- % at next level down.
- \ifx\nonarrowing\relax
- \advance \leftskip by \lispnarrowing
- \exdentamount=\lispnarrowing
- \let\exdent=\nofillexdent
- \let\nonarrowing=\relax
- \fi
-}
-
-% To ending an @example-like environment, we first end the paragraph
-% (via \afterenvbreak's vertical glue), and then the group. That way we
-% keep the zero \parskip that the environments set -- \parskip glue
-% will be inserted at the beginning of the next paragraph in the
-% document, after the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}%
-
-% This macro is
-\def\lisp{\begingroup
- \nonfillstart
- \let\Elisp = \nonfillfinish
- \tt
- \rawbackslash % have \ input char produce \ char from current font
- \gobble
-}
-
-% Define the \E... control sequence only if we are inside the
-% environment, so the error checking in \end will work.
-%
-% We must call \lisp last in the definition, since it reads the
-% return following the @example (or whatever) command.
-%
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp}
-\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp}
-
-% @smallexample and @smalllisp. This is not used unless the @smallbook
-% command is given. Originally contributed by Pavel@xerox.
-%
-\def\smalllispx{\begingroup
- \nonfillstart
- \let\Esmalllisp = \nonfillfinish
- \let\Esmallexample = \nonfillfinish
- %
- % Smaller interline space and fonts for small examples.
- \setleading{10pt}%
- \indexfonts \tt
- \rawbackslash % make \ output the \ character from the current font (tt)
- \gobble
-}
-
-% This is @display; same as @lisp except use roman font.
-%
-\def\display{\begingroup
- \nonfillstart
- \let\Edisplay = \nonfillfinish
- \gobble
-}
-
-% This is @format; same as @display except don't narrow margins.
-%
-\def\format{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eformat = \nonfillfinish
- \gobble
-}
-
-% @flushleft (same as @format) and @flushright.
-%
-\def\flushleft{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eflushleft = \nonfillfinish
- \gobble
-}
-\def\flushright{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eflushright = \nonfillfinish
- \advance\leftskip by 0pt plus 1fill
- \gobble}
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
- \begingroup\inENV %This group ends at the end of the @quotation body
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \singlespace
- \parindent=0pt
- % We have retained a nonzero parskip for the environment, since we're
- % doing normal filling. So to avoid extra space below the environment...
- \def\Equotation{\parskip = 0pt \nonfillfinish}%
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
- \ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
- \advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \let\nonarrowing = \relax
- \fi
-}
-
-\message{defuns,}
-% Define formatter for defuns
-% First, allow user to change definition object font (\df) internally
-\def\setdeffont #1 {\csname DEF#1\endcsname}
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deftypemargin \deftypemargin=12pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-\newcount\parencount
-% define \functionparens, which makes ( and ) and & do special things.
-% \functionparens affects the group it is contained in.
-\def\activeparens{%
-\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
-\catcode`\[=\active \catcode`\]=\active}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% Be sure that we always have a definition for `(', etc. For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %
-\global\advance\parencount by 1 }
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
-% also in that case restore the outer-level definition of (.
-\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
-\global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text. This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&}
-\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}}
-
-% First, defname, which formats the header line itself.
-% #1 should be the function name.
-% #2 should be the type of definition, such as "Function".
-
-\def\defname #1#2{%
-% Get the values of \leftskip and \rightskip as they were
-% outside the @def...
-\dimen2=\leftskip
-\advance\dimen2 by -\defbodyindent
-\dimen3=\rightskip
-\advance\dimen3 by -\defbodyindent
-\noindent %
-\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
-\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
-\parshape 2 0in \dimen0 \defargsindent \dimen1 %
-% Now output arg 2 ("Function" or some such)
-% ending at \deftypemargin from the right margin,
-% but stuck inside a box of width 0 so it does not interfere with linebreaking
-{% Adjust \hsize to exclude the ambient margins,
-% so that \rightline will obey them.
-\advance \hsize by -\dimen2 \advance \hsize by -\dimen3
-\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}%
-% Make all lines underfull and no complaints:
-\tolerance=10000 \hbadness=10000
-\advance\leftskip by -\defbodyindent
-\exdentamount=\defbodyindent
-{\df #1}\enskip % Generate function name
-}
-
-% Actually process the body of a definition
-% #1 should be the terminating control sequence, such as \Edefun.
-% #2 should be the "another name" control sequence, such as \defunx.
-% #3 should be the control sequence that actually processes the header,
-% such as \defunheader.
-
-\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active % 61 is `='
-\obeylines\activeparens\spacesplit#3}
-
-\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-
-\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
-
-\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active %
-\obeylines\spacesplit#3}
-
-% This is used for \def{tp,vr}parsebody. It could probably be used for
-% some of the others, too, with some judicious conditionals.
-%
-\def\parsebodycommon#1#2#3{%
- \begingroup\inENV %
- \medbreak %
- % Define the end token that this defining construct specifies
- % so that it will exit this group.
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines
-}
-
-\def\defvrparsebody#1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{#3{#4}}%
-}
-
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument. Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name. That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any). That's what this does, putting the result in \tptemp.
-%
-\def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}%
-
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-%
-\def\parsetpheaderline#1#2#3{%
- \removeemptybraces#2\relax
- #1{\tptemp}{#3}%
-}%
-
-\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\spacesplit{#3{#5}}}
-
-% Split up #2 at the first space token.
-% call #1 with two arguments:
-% the first is all of #2 before the space token,
-% the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
-
-{\obeylines
-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
-\ifx\relax #3%
-#1{#2}{}\else #1{#2}{#3#4}\fi}}
-
-% So much for the things common to all kinds of definitions.
-
-% Define @defun.
-
-% First, define the processing that is wanted for arguments of \defun
-% Use this to expand the args and terminate the paragraph they make up
-
-\def\defunargs #1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-\hyphenchar\tensl=0
-#1%
-\hyphenchar\tensl=45
-\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi%
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-\functionparens
-\tclose{#1}% avoid \code because of side effects on active chars
-\interlinepenalty=10000
-\advance\rightskip by 0pt plus 1fil
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
-
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
-
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Function}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-
-% #1 is the data type. #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
-\deftypefunargs {#3}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
-
-% \defheaderxcond#1\relax$$$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
-
-% #1 is the classification. #2 is the data type. #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-% at least some C++ text from working
-\defname {\defheaderxcond#2\relax$$$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Macro}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% @defspec == @deffn Special Form
-
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Special Form}%
-\defunargs {#2}\endgroup %
-\catcode 61=\other % Turn off change made in \defparsebody
-}
-
-% This definition is run if you use @defunx
-% anywhere other than immediately after a @defun or @defunx.
-
-\def\deffnx #1 {\errmessage{@deffnx in invalid context}}
-\def\defunx #1 {\errmessage{@defunx in invalid context}}
-\def\defmacx #1 {\errmessage{@defmacx in invalid context}}
-\def\defspecx #1 {\errmessage{@defspecx in invalid context}}
-\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}}
-
-% @defmethod, and so on
-
-% @defop {Funny Method} foo-class frobnicate argument
-
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
-
-\def\defopheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index
-\begingroup\defname {#2}{\defoptype{} on #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @defmethod == @defop Method
-
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-
-\def\defmethodheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% entry in function index
-\begingroup\defname {#2}{Method on #1}%
-\defunargs {#3}\endgroup %
-}
-
-% @defcv {Class Option} foo-class foo-flag
-
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-
-\def\defcvarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype{} of #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% @defivar == @defcv {Instance Variable}
-
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-
-\def\defivarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{Instance Variable of #1}%
-\defvarargs {#3}\endgroup %
-}
-
-% These definitions are run if you use @defmethodx, etc.,
-% anywhere other than immediately after a @defmethod, etc.
-
-\def\defopx #1 {\errmessage{@defopx in invalid context}}
-\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}}
-\def\defcvx #1 {\errmessage{@defcvx in invalid context}}
-\def\defivarx #1 {\errmessage{@defivarx in invalid context}}
-
-% Now @defvar
-
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000}
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{Variable}%
-\defvarargs {#2}\endgroup %
-}
-
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{User Option}%
-\defvarargs {#2}\endgroup %
-}
-
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type. #2 is the name.
-\def\deftypevarheader #1#2{%
-\doind {vr}{\code{#2}}% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000
-\endgroup}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}%
-\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
-\interlinepenalty=10000
-\endgraf\penalty 10000\vskip -\parskip\penalty 10000
-\endgroup}
-
-% This definition is run if you use @defvarx
-% anywhere other than immediately after a @defvar or @defvarx.
-
-\def\defvrx #1 {\errmessage{@defvrx in invalid context}}
-\def\defvarx #1 {\errmessage{@defvarx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% This definition is run if you use @deftpx, etc
-% anywhere other than immediately after a @deftp, etc.
-
-\def\deftpx #1 {\errmessage{@deftpx in invalid context}}
-
-\message{cross reference,}
-% Define cross-reference macros
-\newwrite \auxfile
-
-\newif\ifhavexrefs % True if xref values are known.
-\newif\ifwarnedxrefs % True if we warned once that they aren't known.
-
-% \setref{foo} defines a cross-reference point named foo.
-
-\def\setref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Ysectionnumberandtype}}
-
-\def\unnumbsetref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Ynothing}}
-
-\def\appendixsetref#1{%
-\dosetq{#1-title}{Ytitle}%
-\dosetq{#1-pg}{Ypagenumber}%
-\dosetq{#1-snt}{Yappendixletterandtype}}
-
-% \xref, \pxref, and \ref generate cross-references to specified points.
-% For \xrefX, #1 is the node name, #2 the name of the Info
-% cross-reference, #3 the printed node name, #4 the name of the Info
-% file, #5 the name of the printed manual. All but the node name can be
-% omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
- \def\printedmanual{\ignorespaces #5}%
- \def\printednodename{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual}%
- \setbox0=\hbox{\printednodename}%
- \ifdim \wd0 = 0pt
- % No printed node name was explicitly given.
- \ifx\SETxref-automatic-section-title\relax %
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1>0pt%
- % It is in another manual, so we don't have it.
- \def\printednodename{\ignorespaces #1}%
- \else
- \ifhavexrefs
- % We know the real title if we have the xref values.
- \def\printednodename{\refx{#1-title}}%
- \else
- % Otherwise just copy the Info node name.
- \def\printednodename{\ignorespaces #1}%
- \fi%
- \fi
- \def\printednodename{#1-title}%
- \else
- % Use the node name inside the square brackets.
- \def\printednodename{\ignorespaces #1}%
- \fi
- \fi
- %
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifdim \wd1 > 0pt
- \putwordsection{} ``\printednodename'' in \cite{\printedmanual}%
- \else
- % _ (for example) has to be the character _ for the purposes of the
- % control sequence corresponding to the node, but it has to expand
- % into the usual \leavevmode...\vrule stuff for purposes of
- % printing. So we \turnoffactive for the \refx-snt, back on for the
- % printing, back off for the \refx-pg.
- {\turnoffactive \refx{#1-snt}{}}%
- \space [\printednodename],\space
- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi
-\endgroup}
-
-% \dosetq is the interface for calls from other macros
-
-% Use \turnoffactive so that punctuation chars such as underscore
-% work in node names.
-\def\dosetq #1#2{{\let\folio=0 \turnoffactive \auxhat%
-\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}%
-\next}}
-
-% \internalsetq {foo}{page} expands into
-% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
-% When the aux file is read, ' is the escape character
-
-\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq
-
-\def\Ypagenumber{\folio}
-
-\def\Ytitle{\thissection}
-
-\def\Ynothing{}
-
-\def\Ysectionnumberandtype{%
-\ifnum\secno=0 \putwordChapter\xreftie\the\chapno %
-\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\def\Yappendixletterandtype{%
-\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}%
-\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno %
-\else \ifnum \subsubsecno=0 %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
-\else %
-\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
-\fi \fi \fi }
-
-\gdef\xreftie{'tie}
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
- \let\linenumber = \empty % Non-3.0.
-\else
- \def\linenumber{\the\inputlineno:\space}
-\fi
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-
-\def\refx#1#2{%
- \expandafter\ifx\csname X#1\endcsname\relax
- % If not defined, say something at least.
- $\langle$un\-de\-fined$\rangle$%
- \ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
- \else
- \ifwarnedxrefs\else
- \global\warnedxrefstrue
- \message{Cross reference values unknown; you must run TeX again.}%
- \fi
- \fi
- \else
- % It's defined, so just use it.
- \csname X#1\endcsname
- \fi
- #2% Output the suffix in any case.
-}
-
-% Read the last existing aux file, if any. No error if none exists.
-
-% This is the macro invoked by entries in the aux file.
-\def\xrdef #1#2{
-{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}}
-
-\def\readauxfile{%
-\begingroup
-\catcode `\^^@=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\^^C=\other
-\catcode `\^^D=\other
-\catcode `\^^E=\other
-\catcode `\^^F=\other
-\catcode `\^^G=\other
-\catcode `\^^H=\other
-\catcode `\ =\other
-\catcode `\^^L=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode `\=\other
-\catcode 26=\other
-\catcode `\^^[=\other
-\catcode `\^^\=\other
-\catcode `\^^]=\other
-\catcode `\^^^=\other
-\catcode `\^^_=\other
-\catcode `\@=\other
-\catcode `\^=\other
-\catcode `\~=\other
-\catcode `\[=\other
-\catcode `\]=\other
-\catcode`\"=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode `\$=\other
-\catcode `\#=\other
-\catcode `\&=\other
-% `\+ does not work, so use 43.
-\catcode 43=\other
-% Make the characters 128-255 be printing characters
-{%
- \count 1=128
- \def\loop{%
- \catcode\count 1=\other
- \advance\count 1 by 1
- \ifnum \count 1<256 \loop \fi
- }%
-}%
-% the aux file uses ' as the escape.
-% Turn off \ as an escape so we do not lose on
-% entries which were dumped with control sequences in their names.
-% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
-% Reference to such entries still does not work the way one would wish,
-% but at least they do not bomb out when the aux file is read in.
-\catcode `\{=1 \catcode `\}=2
-\catcode `\%=\other
-\catcode `\'=0
-\catcode`\^=7 % to make ^^e4 etc usable in xref tags
-\catcode `\\=\other
-\openin 1 \jobname.aux
-\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue
-\global\warnedobstrue
-\fi
-% Open the new aux file. Tex will close it automatically at exit.
-\openout \auxfile=\jobname.aux
-\endgroup}
-
-
-% Footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed.
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for info output only..
-\let\footnotestyle=\comment
-
-\let\ptexfootnote=\footnote
-
-{\catcode `\@=11
-%
-% Auto-number footnotes. Otherwise like plain.
-\gdef\footnote{%
- \global\advance\footnoteno by \@ne
- \edef\thisfootno{$^{\the\footnoteno}$}%
- %
- % In case the footnote comes at the end of a sentence, preserve the
- % extra spacing after we do the footnote number.
- \let\@sf\empty
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
- %
- % Remove inadvertent blank space before typesetting the footnote number.
- \unskip
- \thisfootno\@sf
- \footnotezzz
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter. Our footnotes don't need to be so general.
-%
-\long\gdef\footnotezzz#1{\insert\footins{%
- % We want to typeset this text as a normal paragraph, even if the
- % footnote reference occurs in (for example) a display environment.
- % So reset some parameters.
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip
- \rightskip\z@skip
- \spaceskip\z@skip
- \xspaceskip\z@skip
- \parindent\defaultparindent
- %
- % Hang the footnote text off the number.
- \hang
- \textindent{\thisfootno}%
- %
- % Don't crash into the line above the footnote text. Since this
- % expands into a box, it must come within the paragraph, lest it
- % provide a place where TeX can split the footnote.
- \footstrut
- #1\strut}%
-}
-
-}%end \catcode `\@=11
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly. There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-\def\setleading#1{%
- \normalbaselineskip = #1\relax
- \normallineskip = \lineskipfactor\normalbaselineskip
- \normalbaselines
- \setbox\strutbox =\hbox{%
- \vrule width0pt height\strutheightpercent\baselineskip
- depth \strutdepthpercent \baselineskip
- }%
-}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt}
-
-
-% End of control word definitions.
-
-\message{and turning on texinfo input format.}
-
-\def\openindices{%
- \newindex{cp}%
- \newcodeindex{fn}%
- \newcodeindex{vr}%
- \newcodeindex{tp}%
- \newcodeindex{ky}%
- \newcodeindex{pg}%
-}
-
-% Set some numeric style parameters, for 8.5 x 11 format.
-
-%\hsize = 6.5in
-\newdimen\defaultparindent \defaultparindent = 15pt
-\parindent = \defaultparindent
-\parskip 18pt plus 1pt
-\setleading{15pt}
-\advance\topskip by 1.2cm
-
-% Prevent underfull vbox error messages.
-\vbadness=10000
-
-% Following George Bush, just get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything. We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize. This makes it come to about 9pt for the 8.5x11 format.
-%
-\ifx\emergencystretch\thisisundefined
- % Allow us to assign to \emergencystretch anyway.
- \def\emergencystretch{\dimen0}%
-\else
- \emergencystretch = \hsize
- \divide\emergencystretch by 45
-\fi
-
-% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25)
-\def\smallbook{
-
-% These values for secheadingskip and subsecheadingskip are
-% experiments. RJC 7 Aug 1992
-\global\secheadingskip = 17pt plus 6pt minus 3pt
-\global\subsecheadingskip = 14pt plus 6pt minus 3pt
-
-\global\lispnarrowing = 0.3in
-\setleading{12pt}
-\advance\topskip by -1cm
-\global\parskip 3pt plus 1pt
-\global\hsize = 5in
-\global\vsize=7.5in
-\global\tolerance=700
-\global\hfuzz=1pt
-\global\contentsrightmargin=0pt
-\global\deftypemargin=0pt
-\global\defbodyindent=.5cm
-
-\global\pagewidth=\hsize
-\global\pageheight=\vsize
-
-\global\let\smalllisp=\smalllispx
-\global\let\smallexample=\smalllispx
-\global\def\Esmallexample{\Esmalllisp}
-}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{
-\global\tolerance=700
-\global\hfuzz=1pt
-\setleading{12pt}
-\global\parskip 15pt plus 1pt
-
-\global\vsize= 53\baselineskip
-\advance\vsize by \topskip
-%\global\hsize= 5.85in % A4 wide 10pt
-\global\hsize= 6.5in
-\global\outerhsize=\hsize
-\global\advance\outerhsize by 0.5in
-\global\outervsize=\vsize
-\global\advance\outervsize by 0.6in
-
-\global\pagewidth=\hsize
-\global\pageheight=\vsize
-}
-
-% Allow control of the text dimensions. Parameters in order: textheight;
-% textwidth; \voffset; \hoffset (!); binding offset. All require a dimension;
-% header is additional; added length extends the bottom of the page.
-
-\def\changepagesizes#1#2#3#4#5{
- \global\vsize= #1
- \advance\vsize by \topskip
- \global\voffset= #3
- \global\hsize= #2
- \global\outerhsize=\hsize
- \global\advance\outerhsize by 0.5in
- \global\outervsize=\vsize
- \global\advance\outervsize by 0.6in
- \global\pagewidth=\hsize
- \global\pageheight=\vsize
- \global\normaloffset= #4
- \global\bindingoffset= #5}
-
-% This layout is compatible with Latex on A4 paper.
-
-\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}}
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise. Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt \char '042}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt \char '176}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def\auxhat{\def^{'hat}}
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% Subroutine for the previous macro.
-\def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}}
-
-% \lvvmode is equivalent in function to \leavevmode.
-% Using \leavevmode runs into trouble when written out to
-% an index file due to the expansion of \leavevmode into ``\unhbox
-% \voidb@x'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our
-% magic tricks with @.
-\def\lvvmode{\vbox to 0pt{}}
-
-\catcode`\|=\active
-\def|{{\tt \char '174}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-%\catcode 27=\active
-%\def^^[{$\diamondsuit$}
-
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`\@=0
-
-% \rawbackslashxx output one backslash character in current font
-\global\chardef\rawbackslashxx=`\\
-%{\catcode`\\=\other
-%@gdef@rawbackslashxx{\}}
-
-% \rawbackslash redefines \ as input to do \rawbackslashxx.
-{\catcode`\\=\active
-@gdef@rawbackslash{@let\=@rawbackslashxx }}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-% Say @foo, not \foo, in error messages.
-\escapechar=`\@
-
-% \catcode 17=0 % Define control-q
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{@let"=@normaldoublequote
-@let\=@realbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus}
-
-@def@normalturnoffactive{@let"=@normaldoublequote
-@let\=@normalbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus}
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-%
-@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi}
-
-%% These look ok in all fonts, so just make them not special. The @rm below
-%% makes sure that the current font starts out as the newly loaded cmr10
-@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other
-
-@textfonts
-@rm
-
-@c Local variables:
-@c page-delimiter: "^\\\\message"
-@c End:
diff --git a/gnu/usr.bin/cvs/cvsinit.sh b/gnu/usr.bin/cvs/cvsinit.sh
deleted file mode 100644
index cda042d8fa8..00000000000
--- a/gnu/usr.bin/cvs/cvsinit.sh
+++ /dev/null
@@ -1,161 +0,0 @@
-#! /bin/sh
-:
-#
-# Copyright (c) 1992, Brian Berliner
-#
-# You may distribute under the terms of the GNU General Public License as
-# specified in the README file that comes with the CVS 1.4 kit.
-#
-# $CVSid: @(#)cvsinit.sh 1.1 94/10/22 $
-#
-# This script should be run once to help you setup your site for CVS.
-
-# this line is edited by Makefile when creating cvsinit.inst
-CVSLIB="xLIBDIRx"
-
-CVS_VERSION="xVERSIONx"
-
-# All purpose usage message, also suffices for --help and --version.
-if test $# -gt 0; then
- echo "cvsinit version $CVS_VERSION"
- echo "usage: $0"
- echo "(set CVSROOT to the repository that you want to initialize)"
- exit 0
-fi
-
-# Make sure that the CVSROOT variable is set
-if [ "x$CVSROOT" = x ]; then
- echo "The CVSROOT environment variable is not set."
- echo ""
- echo "You should choose a location for your source repository"
- echo "that can be shared by many developers. It also helps to"
- echo "place the source repository on a file system that has"
- echo "plenty of free space."
- echo ""
- echo "Please enter the full path for your CVSROOT source repository:"
- read CVSROOT
- remind_cvsroot=yes
-else
- remind_cvsroot=no
-fi
-
-# Now, create the $CVSROOT if it is not already there
-if [ ! -d $CVSROOT ]; then
- echo "Creating $CVSROOT..."
- path=
- for comp in `echo $CVSROOT | sed -e 's,/, ,g'`; do
- path=$path/$comp
- if [ ! -d $path ]; then
- mkdir $path
- fi
- done
-else
- true
-fi
-
-# Next, check for $CVSROOT/CVSROOT
-if [ ! -d $CVSROOT/CVSROOT ]; then
- if [ -d $CVSROOT/CVSROOT.adm ]; then
- echo "You have the old $CVSROOT/CVSROOT.adm directory."
- echo "I will rename it to $CVSROOT/CVSROOT for you..."
- mv $CVSROOT/CVSROOT.adm $CVSROOT/CVSROOT
- else
- echo "Creating the $CVSROOT/CVSROOT directory..."
- mkdir $CVSROOT/CVSROOT
- fi
-else
- true
-fi
-if [ ! -d $CVSROOT/CVSROOT ]; then
- echo "Unable to create $CVSROOT/CVSROOT."
- echo "I give up."
- exit 1
-fi
-
-# Create the special *info files within $CVSROOT/CVSROOT
-
-for info in modules loginfo commitinfo rcsinfo editinfo rcstemplate \
- checkoutlist; do
- if [ -f $CVSROOT/CVSROOT/${info},v ]; then
- if [ ! -f $CVSROOT/CVSROOT/$info ]; then
- echo "Checking out $CVSROOT/CVSROOT/$info"
- echo " from $CVSROOT/CVSROOT/${info},v..."
- (cd $CVSROOT/CVSROOT; co -q $info)
- fi
- else
- if [ -f $CVSROOT/CVSROOT/$info ]; then
- echo "Checking in $CVSROOT/CVSROOT/${info},v"
- echo " from $CVSROOT/CVSROOT/$info..."
- else
- echo "Creating a simple $CVSROOT/CVSROOT/$info file..."
- case $info in
- modules)
- sed -n -e '/END_REQUIRED_CONTENT/q' \
- -e p $CVSLIB/examples/modules > $CVSROOT/CVSROOT/modules
- ;;
- loginfo)
- # try to find perl; use fancy log script if we can
- for perlpath in `echo $PATH | sed -e 's/:/ /g'` x; do
- if [ -f $perlpath/perl ]; then
- echo "#!$perlpath/perl" > $CVSROOT/CVSROOT/log
- cat $CVSLIB/contrib/log >> $CVSROOT/CVSROOT/log
- chmod 755 $CVSROOT/CVSROOT/log
- cp $CVSLIB/examples/loginfo $CVSROOT/CVSROOT/loginfo
- break
- fi
- done
- if [ $perlpath = x ]; then
- # we did not find perl, so make a simple loginfo file
- grep '^#' $CVSLIB/examples/loginfo \
- > $CVSROOT/CVSROOT/loginfo
- cat >> $CVSROOT/CVSROOT/loginfo <<"END_HERE_DOC"
-DEFAULT (echo ""; echo $USER; date; cat) >> $CVSROOT/CVSROOT/commitlog
-END_HERE_DOC
- fi
- ;;
- rcstemplate)
- cp $CVSLIB/examples/$info $CVSROOT/CVSROOT/$info
- ;;
- *)
- sed -e 's/^\([^#]\)/#\1/' $CVSLIB/examples/$info \
- > $CVSROOT/CVSROOT/$info
- ;;
- esac
- fi
- (cd $CVSROOT/CVSROOT; ci -q -u -t/dev/null -m"initial checkin of $info" $info)
- fi
-done
-
-# check to see if there are any references to the old CVSROOT.adm directory
-if grep CVSROOT.adm $CVSROOT/CVSROOT/modules >/dev/null 2>&1; then
- echo "Warning: your $CVSROOT/CVSROOT/modules file still"
- echo " contains references to the old CVSROOT.adm directory"
- echo " You should really change these to the new CVSROOT directory"
- echo ""
-fi
-
-# These files are generated from the contrib files.
-# FIXME: Is it really wise to overwrite local changes like this?
-# Shouldn't anything which is really supposed to be upgraded with new
-# versions of CVS be in the CVS binary, not the repository?
-# Shouldn't we at *least* version control the file so they can get
-# back their editted version after we clobber it?
-for contrib in commit_prep log_accum cln_hist; do
- echo "Copying the new version of '${contrib}'"
- echo " to $CVSROOT/CVSROOT for you..."
- cp $CVSLIB/contrib/$contrib $CVSROOT/CVSROOT/$contrib
-done
-
-# XXX - also add a stub for the cvsignore file
-
-# Turn on history logging by default
-if [ ! -f $CVSROOT/CVSROOT/history ]; then
- echo "Enabling CVS history logging..."
- touch $CVSROOT/CVSROOT/history
-fi
-
-# finish up by running mkmodules
-echo "All done! Running 'mkmodules' as my final step..."
-mkmodules $CVSROOT/CVSROOT
-
-exit 0
diff --git a/gnu/usr.bin/cvs/examples/.cvsignore b/gnu/usr.bin/cvs/examples/.cvsignore
deleted file mode 100644
index f3c7a7c5da6..00000000000
--- a/gnu/usr.bin/cvs/examples/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile
diff --git a/gnu/usr.bin/cvs/examples/ChangeLog b/gnu/usr.bin/cvs/examples/ChangeLog
deleted file mode 100644
index f4225c663fa..00000000000
--- a/gnu/usr.bin/cvs/examples/ChangeLog
+++ /dev/null
@@ -1,40 +0,0 @@
-Mon Jul 24 17:08:25 1995 Vince DeMarco <vdemarco@bou.shl.com>
-
- * Updated comb program to work when the user runs update/commit
- etc from the top directory of a source tree.
-
-Fri Jul 21 10:35:10 1995 Vince DeMarco <vdemarco@bou.shl.com>
-
- * Makefile.in (DISTFILES, EXAMPLE_FILES): Add cvswrappers uncom comb.
- * cvswrappers uncom comb: New files.
-
-Sun Jul 9 21:21:35 1995 Karl Fogel <kfogel@floss.cyclic.com>
-
- Greg Woods' change:
-
- * checkoutlist, rcstemplate: new files.
-
-Sun Jul 9 19:03:00 1995 Greg A. Woods <woods@most.weird.com>
-
- * modules: fix this up so cvsinit can use it for new
- repositories
-
- * loginfo: fix comments to note current perl requirement
- for log and log_accum
-
- * Makefile.in: add new template example files
- (from previous local changes)
-
- * rcsinfo, loginfo, commitinfo: corrections to comments
- - corrections to sample control lines (from previous local changes)
-
-Sat May 27 08:46:00 1995 Jim Meyering (meyering@comco.com)
-
- * Makefile.in (Makefile): Regenerate only Makefile in current
- directory when Makefile.in is out of date. Depend on ../config.status.
-
-Fri Apr 28 22:48:03 1995 Jim Blandy <jimb@totoro.bio.indiana.edu>
-
- * Makefile.in (DISTFILES): Updated.
- (dist-dir): Renamed from dist, changed to work with DISTDIR value
- passed from parent.
diff --git a/gnu/usr.bin/cvs/examples/Makefile.in b/gnu/usr.bin/cvs/examples/Makefile.in
deleted file mode 100644
index 2c285ebf7a3..00000000000
--- a/gnu/usr.bin/cvs/examples/Makefile.in
+++ /dev/null
@@ -1,94 +0,0 @@
-# Makefile for GNU CVS example files.
-# Do not use this makefile directly, but only from `../Makefile'.
-# Copyright (C) 1986, 1988-1990 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# $CVSid: @(#)Makefile.in 1.4 94/10/22 $
-
-SHELL = /bin/sh
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-# Where to install the executables.
-bindir = $(exec_prefix)/bin
-
-# Where to put the system-wide .cvsrc file
-libdir = $(prefix)/lib
-
-# Where to put the manual pages.
-mandir = $(prefix)/man
-
-# Use cp if you don't have install.
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-
-EXAMPLE_FILES = commitinfo editinfo loginfo modules rcsinfo taginfo \
- rcstemplate checkoutlist cvswrappers uncom comb
-
-DISTFILES = \
- .cvsignore Makefile.in ChangeLog \
- commitinfo editinfo loginfo modules rcsinfo taginfo \
- rcstemplate checkoutlist cvswrappers uncom comb
-
-all: Makefile
-.PHONY: all
-
-install: all $(libdir)/cvs/examples
- for f in $(EXAMPLE_FILES) ; do\
- $(INSTALL_DATA) $(srcdir)/$$f $(libdir)/cvs/examples/$$f; \
- done
-.PHONY: install
-
-$(libdir)/cvs/examples:
- $(srcdir)/../mkinstalldirs $(libdir)/cvs/examples
-
-tags:
-.PHONY: tags
-
-TAGS:
-.PHONY: TAGS
-
-ls:
- @echo $(DISTFILES)
-.PHONY: ls
-
-clean:
- /bin/rm -f *.o core
-.PHONY: clean
-
-distclean: clean
- rm -f Makefile
-.PHONY: distclean
-
-realclean: distclean
-.PHONY: realclean
-
-dist-dir:
- mkdir ${DISTDIR}
- for i in ${DISTFILES}; do \
- ln $(srcdir)/$${i} ${DISTDIR}; \
- done
-.PHONY: dist-dir
-
-subdir = examples
-Makefile: ../config.status Makefile.in
- cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
diff --git a/gnu/usr.bin/cvs/examples/checkoutlist b/gnu/usr.bin/cvs/examples/checkoutlist
deleted file mode 100644
index 1a54d5b03b6..00000000000
--- a/gnu/usr.bin/cvs/examples/checkoutlist
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-#ident "@(#)cvs/examples:$Name: $:$Id: checkoutlist,v 1.1 1995/12/19 09:21:43 deraadt Exp $
-#
-# The "checkoutlist" file is used to support additional version controlled
-# administrative files in $CVSROOT/CVSROOT, such as template files.
-#
-# The first entry on a line is a filename which will be checked out from
-# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
-# The remainder of the line is an error message to use if the file cannot
-# be checked out.
-#
-# File format:
-#
-# [<whitespace>]<filename><whitespace><error message><end-of-line>
-#
-# comment lines begin with '#'
-#
-rcstemplate
diff --git a/gnu/usr.bin/cvs/examples/commitinfo b/gnu/usr.bin/cvs/examples/commitinfo
deleted file mode 100644
index a6a552fb6db..00000000000
--- a/gnu/usr.bin/cvs/examples/commitinfo
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# $Id: commitinfo,v 1.1 1995/12/19 09:21:42 deraadt Exp $
-#
-# The "commitinfo" file is used to control pre-commit checks.
-# The filter on the right is invoked with the repository and a list
-# of files to check. A non-zero exit of the filter program will
-# cause the commit to be aborted.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being committed to, relative
-# to the $CVSROOT. For the first match that is found, then the remainder
-# of the line is the name of the filter to run.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
-#
-# NOTE: contrib/commit_prep usage:
-# -r - record directories affected by commit for use with contrib/log_accum
-# -c - check for things like "$Id" near head of file, no "$Log", etc.
-#
-^apc $CVSROOT/CVSROOT/commit_prep -r -c
-^misc $CVSROOT/CVSROOT/commit_prep -r
-CVSROOT $CVSROOT/CVSROOT/commit_prep -r -c
-DEFAULT $CVSROOT/CVSROOT/commit_prep
diff --git a/gnu/usr.bin/cvs/examples/cvswrappers b/gnu/usr.bin/cvs/examples/cvswrappers
deleted file mode 100644
index 494dbd56442..00000000000
--- a/gnu/usr.bin/cvs/examples/cvswrappers
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# This file describes wrappers and other binary files to CVS
-# Wrappers are the concept where directories of files are to be treated
-# as a single file. The intended use is to wrap up a wrapper into a single tar
-# such that the tar archive can be treated as a single binary file
-# in CVS.
-# To solve the problem effectively, it was also necessary to be able to
-# prevent rcsmerge from merging these files.
-# ------------------
-# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
-#
-# wildcard [option value][option value]...
-#
-# where option is one of
-# -f from cvs filter value: path to filter
-# -t to cvs filter value: path to filter
-# -m update methodology value: MERGE or COPY
-#
-# and value is a single-quote delimited value.
-#
-#
-
-*.nib -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.rtfd -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.draw -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.Mesa -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.diagram2 -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.taskmaster -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.concur -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.nb -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.wub -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.pub -f '/Local/testRep/CVSROOT/uncom %s' -t
-Local/testRep/CVSROOT/comb %s %s' -m 'COPY'
-*.tiff -m 'COPY'
diff --git a/gnu/usr.bin/cvs/examples/editinfo b/gnu/usr.bin/cvs/examples/editinfo
deleted file mode 100644
index c3898297c5e..00000000000
--- a/gnu/usr.bin/cvs/examples/editinfo
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# $Id: editinfo,v 1.1 1995/12/19 09:21:42 deraadt Exp $
-#
-# The "editinfo" file is used to allow verification of logging
-# information. It works best when a template (as specified in the
-# rcsinfo file) is provided for the logging procedure. Given a
-# template with locations for, a bug-id number, a list of people who
-# reviewed the code before it can be checked in, and an external
-# process to catalog the differences that were code reviewed, the
-# following test can be applied to the code:
-#
-# Making sure that the entered bug-id number is correct.
-# Validating that the code that was reviewed is indeed the code being
-# checked in (using the bug-id number or a seperate review
-# number to identify this particular code set.).
-#
-# If any of the above test failed, then the commit would be aborted.
-#
-# Actions such as mailing a copy of the report to each reviewer are
-# better handled by an entry in the loginfo file.
-#
-# Although these test could be handled by an interactive script being
-# called via an entry in commitinfo, The information reported in
-# such a script can't be easily merged into the report.
-#
-# One thing that should be noted is the the ALL keyword is not
-# supported. There can be only one entry that matches a given
-# repository.
-#
-DEFAULT $CVSROOT/CVSROOT/edit "%s"
diff --git a/gnu/usr.bin/cvs/examples/loginfo b/gnu/usr.bin/cvs/examples/loginfo
deleted file mode 100644
index f1def1a8a28..00000000000
--- a/gnu/usr.bin/cvs/examples/loginfo
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# $CVSid: @(#)loginfo 1.5 92/03/31 $
-#
-# The "loginfo" file is used to control where "cvs commit" log information
-# is sent. The first entry on a line is a regular expression which is tested
-# against the directory that the change is being made to, relative to the
-# $CVSROOT. For the first match that is found, then the remainder of the
-# line is a filter program that should expect log information on its standard
-# input.
-#
-# If the repository name does not match any of the regular expressions in the
-# first field of this file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
-#
-# The filter program may use one and only one "%s" modifier (ala printf). If
-# such a "%s" is specified in the filter program, a brief title is included
-# (as one argument, enclosed in single quotes) showing the relative directory
-# name and listing the modified file names.
-#
-# NOTE: contrib/log usage: (currently requires perl)
-# -d - turn debugging on....
-# -m mailto - send mail to "mailto" (multiple -m's permitted)
-# -f logfile - required arg: save messages to logfile
-# %s - may follow other options at the end of the line
-#
-# NOTE: contrib/log_accum usage: (currently requires perl)
-# (must have 'commit_prep -r' in commitinfo)
-# -d - turn debugging on....
-# -M modulename - use this as the module name (necessary for sub-dirs)
-# -m mailto - send mail to "mailto" (multiple -m's permitted) [optional]
-# -f logfile - save messages to logfile [optional]
-# %s - must follow other options at the end of the line
-#
-DEFAULT $CVSROOT/CVSROOT/log -f $CVSROOT/CVSROOT/commitlog %s
diff --git a/gnu/usr.bin/cvs/examples/modules b/gnu/usr.bin/cvs/examples/modules
deleted file mode 100644
index aea294362f2..00000000000
--- a/gnu/usr.bin/cvs/examples/modules
+++ /dev/null
@@ -1,576 +0,0 @@
-#
-# The CVS Modules File
-#
-# $CVSid: @(#)modules 1.5 92/03/31 $
-#
-# Three different line formats are valid:
-# key -a aliases...
-# key [options] directory
-# key [options] directory files...
-#
-# Where "options" are composed of:
-# -i prog Run "prog" on "cvs commit" from top-level of module.
-# -o prog Run "prog" on "cvs checkout" of module.
-# -t prog Run "prog" on "cvs rtag" of module.
-# -u prog Run "prog" on "cvs update" of module.
-# -d dir Place module in directory "dir" instead of module name.
-# -l Top-level directory only -- do not recurse.
-#
-# And "directory" is a path to a directory relative to $CVSROOT.
-#
-# The "-a" option specifies an alias. An alias is interpreted as if
-# everything on the right of the "-a" had been typed on the command line.
-#
-# You can encode a module within a module by using the special '&'
-# character to interpose another module into the current module. This
-# can be useful for creating a module that consists of many directories
-# spread out over the entire source repository.
-#
-
-# Convenient aliases
-world -a .
-
-# CVSROOT support
-CVSROOT -i /usr/local/bin/mkmodules CVSROOT
-modules -i /usr/local/bin/mkmodules CVSROOT modules
-loginfo -i /usr/local/bin/mkmodules CVSROOT loginfo
-commitinfo -i /usr/local/bin/mkmodules CVSROOT commitinfo
-rcsinfo -i /usr/local/bin/mkmodules CVSROOT rcsinfo
-
-# Add more modules here
-#
-# END_REQUIRED_CONTENT (this comment for cvsinit)
-#
-# The remainder was for the Prisma OS sources
-#
-
-# another convenient alias
-kernel -a sys lang/adb sparcsim
-
-# The "sys" entry exists only to make symbolic links after checkout
-sys -o sys/tools/make_links sys
-
-# Sub-directories of "bin"
-awk bin/awk
-csh bin/csh
-diff bin/diff
-make bin/make
-sed bin/sed
-sh bin/sh
-
-# Programs that live in "bin"
-cat bin Makefile cat.c
-chgrp bin Makefile chgrp.c
-chmod bin Makefile chmod.c
-cmp bin Makefile cmp.c
-cp bin Makefile cp.c
-date bin Makefile date.c
-dd bin Makefile dd.c
-df bin Makefile df.c
-domainname bin Makefile domainname.c
-du bin Makefile du.c
-echo bin Makefile echo.c
-ed bin Makefile ed.c
-env bin Makefile env.c
-expr bin Makefile expr.c
-grep bin Makefile grep.c
-hostid bin Makefile hostid.c
-hostname bin Makefile hostname.c
-kill bin Makefile kill.c
-ldd bin Makefile ldd.c
-line bin Makefile line.c
-ln bin Makefile ln.c
-login bin Makefile login.c
-ls bin Makefile ls.c
-mail bin Makefile mail.c
-mkdir bin Makefile mkdir.c
-mt bin Makefile mt.c
-mv bin Makefile mv.c
-newgrp bin Makefile newgrp.c
-nice bin Makefile nice.c
-od bin Makefile od.c
-pagesize bin Makefile pagesize.c
-passwd bin Makefile passwd.c
-pr bin Makefile pr.c
-ps bin Makefile ps.c
-pwd bin Makefile pwd.c
-rm bin Makefile rm.c
-rmail bin Makefile rmail.c
-rmdir bin Makefile rmdir.c
-stty bin Makefile stty.c
-su bin Makefile su.c
-sync bin Makefile sync.c
-tar bin Makefile tar.c
-tee bin Makefile tee.c
-test bin Makefile test.c
-time bin Makefile time.c
-wall bin Makefile wall.c
-who bin Makefile who.c
-write bin Makefile write.c
-
-# Sub-directories of "etc"
-dump etc/dump
-files etc/files
-fsck etc/fsck
-getty etc/getty
-in.routed etc/in.routed
-restore etc/restore
-rpc.lockd etc/rpc.lockd
-rpc.statd etc/rpc.statd
-
-# Programs that live in "etc"
-arp etc Makefile arp.c
-biod etc Makefile biod.c
-chown etc Makefile chown.c
-clri etc Makefile clri.c
-dkinfo etc Makefile dkinfo.c
-dmesg etc Makefile dmesg.c
-fsirand etc Makefile fsirand.c
-halt etc Makefile halt.c
-ifconfig etc Makefile ifconfig.c
-in.rlogind etc Makefile in.rlogind.c
-in.rshd etc Makefile in.rshd.c
-inetd etc Makefile inetd.c
-init etc Makefile init.c
-mkfs etc Makefile mkfs.c
-mknod etc Makefile mknod.c
-mount etc Makefile mount.c
-newfs etc Makefile newfs.c
-nfsd etc Makefile nfsd.c
-portmap etc Makefile portmap.c
-pstat etc Makefile pstat.c
-reboot etc Makefile reboot.c
-renice etc Makefile renice.c
-rmt etc Makefile rmt.c
-shutdown etc Makefile shutdown.c
-syslogd etc Makefile syslogd.c
-umount etc Makefile umount.c
-update etc Makefile update.c
-vipw etc Makefile vipw.c
-ypbind etc Makefile ypbind.c
-
-# Sub-directories of "games"
-adventure games/adventure
-backgammon games/backgammon
-battlestar games/battlestar
-boggle games/boggle
-chess games/chess
-ching games/ching
-cribbage games/cribbage
-fortune games/fortune
-hack games/hack
-hangman games/hangman
-hunt games/hunt
-life games/life
-mille games/mille
-monop games/monop
-quiz games/quiz
-robots games/robots
-sail games/sail
-snake games/snake
-trek games/trek
-
-# Programs that live in "games"
-arithmetic games Makefile arithmetic.c
-banner games Makefile banner.c
-bcd games Makefile bcd.c
-bj games Makefile bj.c
-btlgammon games Makefile btlgammon.c
-canfield games Makefile canfield.c
-cfscores games Makefile cfscores.c
-craps games Makefile craps.c
-factor games Makefile factor.c
-fish games Makefile fish.c
-moo games Makefile moo.c
-number games Makefile number.c
-primes games Makefile primes.c
-rain games Makefile rain.c
-random games Makefile random.c
-worm games Makefile worm.c
-worms games Makefile worms.c
-wump games Makefile wump.c
-
-# Sub-directories of "lang"
-adb lang/adb
-as lang/as
-boot lang/boot
-c2 lang/c2
-cgrdr lang/cgrdr
-compile lang/compile
-cpp lang/cpp
-dbx lang/dbx
-f77 lang/f77
-inline lang/inline
-iropt lang/iropt
-ld lang/ld
-lint lang/lint
-m4 lang/m4
-pascal lang/pascal
-pcc lang/pcc
-ratfor lang/ratfor
-rtld lang/rtld
-tcov lang/tcov
-vroot lang/vroot
-
-# Programs that live in "lang"
-ar lang Makefile ar.c
-nm lang Makefile nm.c
-ranlib lang Makefile ranlib.c
-size lang Makefile size.c
-strip lang Makefile strip.c
-symorder lang Makefile symorder.c
-
-# Sub-directories of "lib"
-csu lib/csu
-libc lib/libc
-
-# Programs that live in "lib"
-# NONE
-
-# Sub-directories of "lib/libc"
-libc_compat lib/libc/compat
-libc_crt lib/libc/crt
-libc_des lib/libc/des
-libc_gen lib/libc/gen
-libc_net lib/libc/net
-libc_inet lib/libc/inet
-libc_rpc lib/libc/rpc
-libc_stdio lib/libc/stdio
-libc_sun lib/libc/sun
-libc_sys lib/libc/sys
-libc_yp lib/libc/yp
-
-# Programs that live in "lib/libc"
-# NONE
-
-#Sub-directories of "local"
-notes local/notes
-
-# Sub-directories of "man"
-man1 man/man1
-man2 man/man2
-man3 man/man3
-man4 man/man4
-man5 man/man5
-man6 man/man6
-man7 man/man7
-man8 man/man8
-manl man/manl
-
-# Programs that live in "man"
-# NONE
-
-# Sub-directories of "old"
-old_compact old/compact
-old_eyacc old/eyacc
-old_filemerge old/filemerge
-old_make old/make
-
-# Programs that live in "old"
-old_analyze old Makefile analyze.c
-old_prmail old Makefile prmail.c
-old_pti old Makefile pti.c
-old_syslog old Makefile syslog.c
-
-# Sub-directories of "ucb"
-Mail ucb/Mail
-compress ucb/compress
-error ucb/error
-ex ucb/ex
-ftp ucb/ftp
-gprof ucb/gprof
-indent ucb/indent
-lpr ucb/lpr
-more ucb/more
-msgs ucb/msgs
-netstat ucb/netstat
-rdist ucb/rdist
-talk ucb/talk
-tftp ucb/tftp
-tset ucb/tset
-vgrind ucb/vgrind
-
-# Programs that live in "ucb"
-biff ucb Makefile biff.c
-checknr ucb Makefile checknr.c
-clear ucb Makefile clear.c
-colcrt ucb Makefile colcrt.c
-colrm ucb Makefile colrm.c
-ctags ucb Makefile ctags.c
-expand ucb Makefile expand.c
-finger ucb Makefile finger.c
-fold ucb Makefile fold.c
-from ucb Makefile from.c
-fsplit ucb Makefile fsplit.c
-gcore ucb Makefile gcore.c
-groups ucb Makefile groups.c
-head ucb Makefile head.c
-last ucb Makefile last.c
-lastcomm ucb Makefile lastcomm.c
-leave ucb Makefile leave.c
-logger ucb Makefile logger.c
-man_prog ucb Makefile man.c
-mkstr ucb Makefile mkstr.c
-printenv ucb Makefile printenv.c
-quota ucb Makefile quota.c
-rcp ucb Makefile rcp.c
-rdate ucb Makefile rdate.c
-rlogin ucb Makefile rlogin.c
-rsh ucb Makefile rsh.c
-rup ucb Makefile rup.c
-ruptime ucb Makefile ruptime.c
-rusers ucb Makefile rusers.c
-rwho ucb Makefile rwho.c
-sccs ucb Makefile sccs.c
-script ucb Makefile script.c
-soelim ucb Makefile soelim.c
-strings ucb Makefile strings.c
-tail ucb Makefile tail.c
-tcopy ucb Makefile tcopy.c
-telnet ucb Makefile telnet.c
-ul ucb Makefile ul.c
-unexpand ucb Makefile unexpand.c
-unifdef ucb Makefile unifdef.c
-users ucb Makefile users.c
-vmstat ucb Makefile vmstat.c
-w ucb Makefile w.c
-wc ucb Makefile wc.c
-what ucb Makefile what.c
-whatis ucb Makefile whatis.c
-whereis ucb Makefile whereis.c
-whoami ucb Makefile whoami.c
-whois ucb Makefile whois.c
-xstr ucb Makefile xstr.c
-yes ucb Makefile yes.c
-
-# Sub-directories of "usr.bin"
-calendar usr.bin/calendar
-cflow usr.bin/cflow
-ctrace usr.bin/ctrace
-cxref usr.bin/cxref
-dc usr.bin/dc
-des usr.bin/des
-diff3 usr.bin/diff3
-sun_eqn usr.bin/eqn
-file usr.bin/file
-find usr.bin/find
-graph usr.bin/graph
-lex usr.bin/lex
-sun_neqn usr.bin/neqn
-sun_nroff usr.bin/nroff
-sun_plot usr.bin/plot
-prof usr.bin/prof
-refer usr.bin/refer
-rpcgen usr.bin/rpcgen
-spell usr.bin/spell
-sun_tbl usr.bin/tbl
-tip usr.bin/tip
-trace usr.bin/trace
-sun_troff usr.bin/troff
-uucp usr.bin/uucp
-xsend usr.bin/xsend
-yacc usr.bin/yacc
-
-# Programs that live in "usr.bin"
-basename usr.bin Makefile basename.c
-bc usr.bin Makefile bc.c
-cal usr.bin Makefile cal.c
-cb usr.bin Makefile cb.c
-checkeq usr.bin Makefile checkeq.c
-chkey usr.bin Makefile chkey.c
-click usr.bin Makefile click.c
-col usr.bin Makefile col.c
-comm usr.bin Makefile comm.c
-cpio usr.bin Makefile cpio.c
-crypt usr.bin Makefile crypt.c
-csplit usr.bin Makefile csplit.c
-cut usr.bin Makefile cut.c
-deroff usr.bin Makefile deroff.c
-egrep usr.bin Makefile egrep.c
-fgrep usr.bin Makefile fgrep.c
-getopt usr.bin Makefile getopt.c
-id usr.bin Makefile id.c
-installcmd usr.bin Makefile installcmd.c
-iostat usr.bin Makefile iostat.c
-ipcrm usr.bin Makefile ipcrm.c
-ipcs usr.bin Makefile ipcs.c
-join usr.bin Makefile join.c
-keylogin usr.bin Makefile keylogin.c
-logname usr.bin Makefile logname.c
-look usr.bin Makefile look.c
-mesg usr.bin Makefile mesg.c
-nl usr.bin Makefile nl.c
-pack usr.bin Makefile pack.c
-paste usr.bin Makefile paste.c
-ptx usr.bin Makefile ptx.c
-rev usr.bin Makefile rev.c
-screenblank usr.bin Makefile screenblank.c
-sdiff usr.bin Makefile sdiff.c
-sleep usr.bin Makefile sleep.c
-sort usr.bin Makefile sort.c
-spline usr.bin Makefile spline.c
-split usr.bin Makefile split.c
-sum usr.bin Makefile sum.c
-touch usr.bin Makefile touch.c
-tr usr.bin Makefile tr.c
-tsort usr.bin Makefile tsort.c
-tty usr.bin Makefile tty.c
-uniq usr.bin Makefile uniq.c
-units usr.bin Makefile units.c
-unpack usr.bin Makefile unpack.c
-xargs usr.bin Makefile xargs.c
-ypcat usr.bin Makefile ypcat.c
-ypmatch usr.bin Makefile ypmatch.c
-yppasswd usr.bin Makefile yppasswd.c
-ypwhich usr.bin Makefile ypwhich.c
-
-# Sub-directories of "usr.etc"
-automount usr.etc/automount
-c2convert usr.etc/c2convert
-config usr.etc/config
-cron usr.etc/cron
-eeprom usr.etc/eeprom
-etherfind usr.etc/etherfind
-format usr.etc/format
-htable usr.etc/htable
-implog usr.etc/implog
-in.ftpd -a usr.etc/in.ftpd ucb/ftp
-in.named usr.etc/in.named
-in.rwhod usr.etc/in.rwhod
-keyserv usr.etc/keyserv
-ndbootd usr.etc/ndbootd
-praudit usr.etc/praudit
-rexd usr.etc/rexd
-rpc.bootparamd usr.etc/rpc.bootparamd
-termcap usr.etc/termcap
-upgrade usr.etc/upgrade
-yp usr.etc/yp
-zic usr.etc/zic
-
-# Programs that live in "usr.etc"
-ac usr.etc Makefile ac.c
-accton usr.etc Makefile accton.c
-audit usr.etc Makefile audit.c
-auditd usr.etc Makefile auditd.c
-catman usr.etc Makefile catman.c
-chroot usr.etc Makefile chroot.c
-dcheck usr.etc Makefile dcheck.c
-devnm usr.etc Makefile devnm.c
-dumpfs usr.etc Makefile dumpfs.c
-edquota usr.etc Makefile edquota.c
-exportfs usr.etc Makefile exportfs.c
-foption usr.etc Makefile foption.c
-gettable usr.etc Makefile gettable.c
-grpck usr.etc Makefile grpck.c
-icheck usr.etc Makefile icheck.c
-in.comsat usr.etc Makefile in.comsat.c
-in.fingerd usr.etc Makefile in.fingerd.c
-in.rexecd usr.etc Makefile in.rexecd.c
-in.telnetd usr.etc Makefile in.telnetd.c
-in.tnamed usr.etc Makefile in.tnamed.c
-kgmon usr.etc Makefile kgmon.c
-link usr.etc Makefile link.c
-mkfile usr.etc Makefile mkfile.c
-mkproto usr.etc Makefile mkproto.c
-mount_lo usr.etc Makefile mount_lo.c
-ncheck usr.etc Makefile ncheck.c
-nfsstat usr.etc Makefile nfsstat.c
-ping usr.etc Makefile ping.c
-pwck usr.etc Makefile pwck.c
-quot usr.etc Makefile quot.c
-quotacheck usr.etc Makefile quotacheck.c
-quotaon usr.etc Makefile quotaon.c
-rarpd usr.etc Makefile rarpd.c
-repquota usr.etc Makefile repquota.c
-route usr.etc Makefile route.c
-rpc.etherd usr.etc Makefile rpc.etherd.c
-rpc.mountd usr.etc Makefile rpc.mountd.c
-rpc.pwdauthd usr.etc Makefile rpc.pwdauthd.c
-rpc.rquotad usr.etc Makefile rpc.rquotad.c
-rpc.rstatd usr.etc Makefile rpc.rstatd.c
-rpc.rusersd usr.etc Makefile rpc.rusersd.c
-rpc.rwalld usr.etc Makefile rpc.rwalld.c
-rpc.sprayd usr.etc Makefile rpc.sprayd.c
-rpc.yppasswdd usr.etc Makefile rpc.yppasswdd.c
-rpc.ypupdated usr.etc Makefile rpc.ypupdated.c
-rpcinfo usr.etc Makefile rpcinfo.c
-rwall usr.etc Makefile rwall.c
-sa usr.etc Makefile sa.c
-savecore usr.etc Makefile savecore.c
-showmount usr.etc Makefile showmount.c
-spray usr.etc Makefile spray.c
-swapon usr.etc Makefile swapon.c
-trpt usr.etc Makefile trpt.c
-tunefs usr.etc Makefile tunefs.c
-unlink usr.etc Makefile unlink.c
-
-# Sub-directories of "usr.lib"
-bb_count usr.lib/bb_count
-fixedwidthfonts usr.lib/fixedwidthfonts
-libcurses usr.lib/libcurses
-libdbm usr.lib/libdbm
-libg usr.lib/libg
-libkvm usr.lib/libkvm
-libln usr.lib/libln
-liblwp usr.lib/liblwp
-libm usr.lib/libm
-libmp usr.lib/libmp
-libpixrect usr.lib/libpixrect
-libplot usr.lib/libplot
-libresolv usr.lib/libresolv
-librpcsvc usr.lib/librpcsvc
-libtermlib usr.lib/libtermlib
-liby usr.lib/liby
-me usr.lib/me
-ms usr.lib/ms
-sendmail usr.lib/sendmail
-sun_tmac usr.lib/tmac
-vfont usr.lib/vfont
-
-# Programs that live in "usr.lib"
-getNAME usr.lib Makefile getNAME
-makekey usr.lib Makefile makekey
-
-# Sub-directories of "5bin"
-5diff3 5bin/diff3
-5m4 5bin/m4
-
-# Sub-directories of "5bin", but use sources from other places
-5cxref -a 5bin/cxref usr.bin/cxref
-5sed -a 5bin/sed bin/sed
-5lint -a 5bin/lint lang/pcc lang/lint
-
-# Programs that live in "5bin"
-5banner 5bin Makefile banner.c
-5cat 5bin Makefile cat.c
-5du 5bin Makefile du.c
-5echo 5bin Makefile echo.c
-5expr 5bin Makefile expr.c
-5ls 5bin Makefile ls.c
-5nohup 5bin Makefile nohup.c
-5od 5bin Makefile od.c
-5pg 5bin Makefile pg.c
-5pr 5bin Makefile pr.c
-5sum 5bin Makefile sum.c
-5tabs 5bin Makefile tabs.c
-5time 5bin Makefile time.c
-5tr 5bin Makefile tr.c
-5uname 5bin Makefile uname.c
-
-# Programs that live in "5bin", but use sources from other places
-5chmod -a 5bin/Makefile bin/chmod.c
-5date -a 5bin/Makefile bin/date.c
-5grep -a 5bin/Makefile bin/grep.c
-5stty -a 5bin/Makefile bin/stty.c
-5col -a 5bin/Makefile usr.bin/col.c
-5sort -a 5bin/Makefile usr.bin/sort.c
-5touch -a 5bin/Makefile usr.bin/touch.c
-
-# Sub-directories of "5lib"
-5compile 5lib/compile
-5libcurses 5lib/libcurses
-5liby 5lib/liby
-5terminfo 5lib/terminfo
-
-# Programs that live in "5lib"
-# NONE
diff --git a/gnu/usr.bin/cvs/examples/notify b/gnu/usr.bin/cvs/examples/notify
deleted file mode 100644
index 2be867e4f2e..00000000000
--- a/gnu/usr.bin/cvs/examples/notify
+++ /dev/null
@@ -1,11 +0,0 @@
-# The "notify" file controls where notifications from watches set by
-# "cvs watch add" or "cvs edit" are sent. The first entry on a line is
-# a regular expression which is tested against the directory that the
-# change is being made to, relative to the $CVSROOT. If it matches,
-# then the remainder of the line is a filter program that should contain
-# one occurrence of %s for the user to notify, and information on its
-# standard input.
-#
-# "ALL" or "DEFAULT" can be used in place of the regular expression.
-#
-ALL mail %s -s "CVS notification"
diff --git a/gnu/usr.bin/cvs/examples/rcsinfo b/gnu/usr.bin/cvs/examples/rcsinfo
deleted file mode 100644
index c8a93aab7c6..00000000000
--- a/gnu/usr.bin/cvs/examples/rcsinfo
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# $Id: rcsinfo,v 1.1 1995/12/19 09:21:43 deraadt Exp $
-#
-# The "rcsinfo" file is used to control templates with which the editor
-# is invoked on commit and import.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being made to, relative to the
-# $CVSROOT. For the first match that is found, then the remainder of the
-# line is the name of the file that contains the template.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
-#
-DEFAULT $CVSROOT/CVSROOT/rcstemplate
diff --git a/gnu/usr.bin/cvs/examples/rcstemplate b/gnu/usr.bin/cvs/examples/rcstemplate
deleted file mode 100644
index c9a2d1eb248..00000000000
--- a/gnu/usr.bin/cvs/examples/rcstemplate
+++ /dev/null
@@ -1,7 +0,0 @@
-CVS:
-CVS: WARNING: You are commiting a change to the main source repository.
-CVS:
-CVS: This change will be immediately available to all other users
-CVS: of this repository! Please be sure your changes have been
-CVS: adequately tested.
-CVS:
diff --git a/gnu/usr.bin/cvs/examples/taginfo b/gnu/usr.bin/cvs/examples/taginfo
deleted file mode 100644
index 92eec69ae49..00000000000
--- a/gnu/usr.bin/cvs/examples/taginfo
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# $Id: taginfo,v 1.1 1995/12/19 09:21:43 deraadt Exp $
-#
-# The "taginfo" file is used to control pre-tag checks.
-# The filter on the right is invoked with the following arguments:
-#
-# $1 -- tagname
-# $2 -- operation "add" for tag and "del" for tag -d
-# $3 -- repository
-# $4-> file revision [file revision ...]
-#
-# A non-zero exit of the filter program will cause the tag to be aborted.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being committed to, relative
-# to the $CVSROOT. For the first match that is found, then the remainder
-# of the line is the name of the filter to run.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
-#
-#DEFAULT $CVSROOT/CVSROOT/tag_logging_program
diff --git a/gnu/usr.bin/cvs/examples/unwrap b/gnu/usr.bin/cvs/examples/unwrap
deleted file mode 100644
index 7925c39c7be..00000000000
--- a/gnu/usr.bin/cvs/examples/unwrap
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /bin/sh
-#
-# unwrap - extract the combined package (created with wrap)
-#
-#ident "@(#)cvs/examples:$Name: $:$Id: unwrap,v 1.1 1996/01/30 00:19:26 tholo Exp $"
-
-# move the file to a new name with an extension
-rm -rf $1.cvswrap
-mv $1 $1.cvswrap
-
-# untar the file
-
-if `gzip -t $1.cvswrap > /dev/null 2>&1`
-then
- gzcat -d $1.cvswrap | gnutar --preserve --sparse -x -f -
-else
- gnutar --preserve --sparse -x -f $1.cvswrap
-fi
-
-# remove the original
-rm -rf $1.cvswrap
diff --git a/gnu/usr.bin/cvs/examples/wrap b/gnu/usr.bin/cvs/examples/wrap
deleted file mode 100644
index 803278dcf65..00000000000
--- a/gnu/usr.bin/cvs/examples/wrap
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /bin/sh
-#
-# wrap - Combine a directory into a single tar package.
-#
-#ident "@(#)cvs/examples:$Name: $:$Id: wrap,v 1.1 1996/01/30 00:19:26 tholo Exp $"
-
-# This script is always called with the current directory set to
-# where the file to be combined exists. but i may get called with a
-# path to where cvs first started executing. (this probably should be
-# fixed in cvs) so strip out all of the directory information. The
-# first sed expression will only work if the path has a leading /
-# if it doesn't the one in the if statement will work.
-DIRNAME=`echo $1 | sed -e "s|/.*/||g"`
-if [ ! -d $DIRNAME ] ; then
- DIRNAME=`echo $1 | sed -e "s|.*/||g"`
-fi
-#
-# Now tar up the directory but we now will only get a relative path
-# even if the user did a cvs commit . at the top.
-#
-gnutar --preserve --sparse -cf - $DIRNAME | gzip --no-name --best -c > $2
diff --git a/gnu/usr.bin/cvs/lib/getdate.c b/gnu/usr.bin/cvs/lib/getdate.c
index b0f9411cabb..20f442f1ceb 100644
--- a/gnu/usr.bin/cvs/lib/getdate.c
+++ b/gnu/usr.bin/cvs/lib/getdate.c
@@ -1,3 +1,26 @@
+
+/* A Bison parser, made from ./getdate.y
+ by Bison version A2.5 (Andrew Consortium)
+ */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define tAGO 258
+#define tDAY 259
+#define tDAYZONE 260
+#define tID 261
+#define tMERIDIAN 262
+#define tMINUTE_UNIT 263
+#define tMONTH 264
+#define tMONTH_UNIT 265
+#define tSEC_UNIT 266
+#define tSNUMBER 267
+#define tUNUMBER 268
+#define tZONE 269
+#define tDST 270
+
+#line 1 "./getdate.y"
+
/*
** Originally written by Steven M. Bellovin <smb@research.att.com> while
** at the University of North Carolina at Chapel Hill. Later tweaked by
@@ -20,12 +43,6 @@
#endif
#endif
-#if STDC_HEADERS
-#include <stdlib.h>
-#else
-char *malloc (), *realloc ();
-#endif
-
/* Since the code of getdate.y is not included in the Emacs executable
itself, there is no need to #define static in this file. Even if
the code were included in the Emacs executable, it probably
@@ -176,33 +193,1140 @@ static time_t yyRelMonth;
static time_t yyRelSeconds;
-typedef union {
+#line 175 "./getdate.y"
+typedef union {
time_t Number;
enum _MERIDIAN Meridian;
} YYSTYPE;
-# define tAGO 257
-# define tDAY 258
-# define tDAYZONE 259
-# define tID 260
-# define tMERIDIAN 261
-# define tMINUTE_UNIT 262
-# define tMONTH 263
-# define tMONTH_UNIT 264
-# define tSEC_UNIT 265
-# define tSNUMBER 266
-# define tUNUMBER 267
-# define tZONE 268
-# define tDST 269
-#define yyclearin yychar = -1
-#define yyerrok yyerrflag = 0
-extern int yychar;
-extern int yyerrflag;
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 52
+#define YYFLAG -32768
+#define YYNTBASE 19
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 270 ? yytranslate[x] : 29)
+
+static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 17, 2, 2, 18, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 16, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 1, 4, 6, 8, 10, 12, 14, 16, 19,
+ 24, 29, 36, 43, 45, 47, 50, 52, 55, 58,
+ 62, 68, 72, 76, 79, 84, 87, 91, 94, 96,
+ 99, 102, 104, 107, 110, 112, 115, 118, 120, 122,
+ 123
+};
+
+static const short yyrhs[] = { -1,
+ 19, 20, 0, 21, 0, 22, 0, 24, 0, 23,
+ 0, 25, 0, 27, 0, 13, 7, 0, 13, 16,
+ 13, 28, 0, 13, 16, 13, 12, 0, 13, 16,
+ 13, 16, 13, 28, 0, 13, 16, 13, 16, 13,
+ 12, 0, 14, 0, 5, 0, 14, 15, 0, 4,
+ 0, 4, 17, 0, 13, 4, 0, 13, 18, 13,
+ 0, 13, 18, 13, 18, 13, 0, 13, 12, 12,
+ 0, 13, 9, 12, 0, 9, 13, 0, 9, 13,
+ 17, 13, 0, 13, 9, 0, 13, 9, 13, 0,
+ 26, 3, 0, 26, 0, 13, 8, 0, 12, 8,
+ 0, 8, 0, 12, 11, 0, 13, 11, 0, 11,
+ 0, 12, 10, 0, 13, 10, 0, 10, 0, 13,
+ 0, 0, 7, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 189, 190, 193, 196, 199, 202, 205, 208, 211, 217,
+ 223, 230, 236, 246, 250, 254, 261, 265, 269, 275,
+ 279, 284, 290, 296, 300, 305, 309, 316, 320, 323,
+ 326, 329, 332, 335, 338, 341, 344, 347, 352, 379,
+ 382
+};
+#endif
+
+
+#if YYDEBUG != 0
+
+static const char * const yytname[] = { "$","error","$undefined.","tAGO","tDAY",
+"tDAYZONE","tID","tMERIDIAN","tMINUTE_UNIT","tMONTH","tMONTH_UNIT","tSEC_UNIT",
+"tSNUMBER","tUNUMBER","tZONE","tDST","':'","','","'/'","spec","item","time",
+"zone","day","date","rel","relunit","number","o_merid", NULL
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 19, 19, 20, 20, 20, 20, 20, 20, 21, 21,
+ 21, 21, 21, 22, 22, 22, 23, 23, 23, 24,
+ 24, 24, 24, 24, 24, 24, 24, 25, 25, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 27, 28,
+ 28
+};
+
+static const short yyr2[] = { 0,
+ 0, 2, 1, 1, 1, 1, 1, 1, 2, 4,
+ 4, 6, 6, 1, 1, 2, 1, 2, 2, 3,
+ 5, 3, 3, 2, 4, 2, 3, 2, 1, 2,
+ 2, 1, 2, 2, 1, 2, 2, 1, 1, 0,
+ 1
+};
+
+static const short yydefact[] = { 1,
+ 0, 17, 15, 32, 0, 38, 35, 0, 39, 14,
+ 2, 3, 4, 6, 5, 7, 29, 8, 18, 24,
+ 31, 36, 33, 19, 9, 30, 26, 37, 34, 0,
+ 0, 0, 16, 28, 0, 23, 27, 22, 40, 20,
+ 25, 41, 11, 0, 10, 0, 40, 21, 13, 12,
+ 0, 0
+};
+
+static const short yydefgoto[] = { 1,
+ 11, 12, 13, 14, 15, 16, 17, 18, 45
+};
+
+static const short yypact[] = {-32768,
+ 0, -1,-32768,-32768, 4,-32768,-32768, 25, 11, -8,
+-32768,-32768,-32768,-32768,-32768,-32768, 21,-32768,-32768, 9,
+-32768,-32768,-32768,-32768,-32768,-32768, -10,-32768,-32768, 16,
+ 19, 24,-32768,-32768, 26,-32768,-32768,-32768, 18, 13,
+-32768,-32768,-32768, 27,-32768, 28, -6,-32768,-32768,-32768,
+ 38,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -5
+};
+
+
+#define YYLAST 42
+
+
+static const short yytable[] = { 51,
+ 42, 36, 37, 2, 3, 49, 33, 4, 5, 6,
+ 7, 8, 9, 10, 24, 19, 20, 25, 26, 27,
+ 28, 29, 30, 34, 42, 35, 31, 38, 32, 43,
+ 46, 39, 21, 44, 22, 23, 40, 52, 41, 47,
+ 48, 50
+};
+
+static const short yycheck[] = { 0,
+ 7, 12, 13, 4, 5, 12, 15, 8, 9, 10,
+ 11, 12, 13, 14, 4, 17, 13, 7, 8, 9,
+ 10, 11, 12, 3, 7, 17, 16, 12, 18, 12,
+ 18, 13, 8, 16, 10, 11, 13, 0, 13, 13,
+ 13, 47
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/share/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 150
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 192 "/usr/share/bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+ YYPARSE_PARAM_DECL
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
#endif
-YYSTYPE yylval, yyval;
-# define YYERRCODE 256
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 3:
+#line 193 "./getdate.y"
+{
+ yyHaveTime++;
+ ;
+ break;}
+case 4:
+#line 196 "./getdate.y"
+{
+ yyHaveZone++;
+ ;
+ break;}
+case 5:
+#line 199 "./getdate.y"
+{
+ yyHaveDate++;
+ ;
+ break;}
+case 6:
+#line 202 "./getdate.y"
+{
+ yyHaveDay++;
+ ;
+ break;}
+case 7:
+#line 205 "./getdate.y"
+{
+ yyHaveRel++;
+ ;
+ break;}
+case 9:
+#line 211 "./getdate.y"
+{
+ yyHour = yyvsp[-1].Number;
+ yyMinutes = 0;
+ yySeconds = 0;
+ yyMeridian = yyvsp[0].Meridian;
+ ;
+ break;}
+case 10:
+#line 217 "./getdate.y"
+{
+ yyHour = yyvsp[-3].Number;
+ yyMinutes = yyvsp[-1].Number;
+ yySeconds = 0;
+ yyMeridian = yyvsp[0].Meridian;
+ ;
+ break;}
+case 11:
+#line 223 "./getdate.y"
+{
+ yyHour = yyvsp[-3].Number;
+ yyMinutes = yyvsp[-1].Number;
+ yyMeridian = MER24;
+ yyDSTmode = DSToff;
+ yyTimezone = - (yyvsp[0].Number % 100 + (yyvsp[0].Number / 100) * 60);
+ ;
+ break;}
+case 12:
+#line 230 "./getdate.y"
+{
+ yyHour = yyvsp[-5].Number;
+ yyMinutes = yyvsp[-3].Number;
+ yySeconds = yyvsp[-1].Number;
+ yyMeridian = yyvsp[0].Meridian;
+ ;
+ break;}
+case 13:
+#line 236 "./getdate.y"
+{
+ yyHour = yyvsp[-5].Number;
+ yyMinutes = yyvsp[-3].Number;
+ yySeconds = yyvsp[-1].Number;
+ yyMeridian = MER24;
+ yyDSTmode = DSToff;
+ yyTimezone = - (yyvsp[0].Number % 100 + (yyvsp[0].Number / 100) * 60);
+ ;
+ break;}
+case 14:
+#line 246 "./getdate.y"
+{
+ yyTimezone = yyvsp[0].Number;
+ yyDSTmode = DSToff;
+ ;
+ break;}
+case 15:
+#line 250 "./getdate.y"
+{
+ yyTimezone = yyvsp[0].Number;
+ yyDSTmode = DSTon;
+ ;
+ break;}
+case 16:
+#line 255 "./getdate.y"
+{
+ yyTimezone = yyvsp[-1].Number;
+ yyDSTmode = DSTon;
+ ;
+ break;}
+case 17:
+#line 261 "./getdate.y"
+{
+ yyDayOrdinal = 1;
+ yyDayNumber = yyvsp[0].Number;
+ ;
+ break;}
+case 18:
+#line 265 "./getdate.y"
+{
+ yyDayOrdinal = 1;
+ yyDayNumber = yyvsp[-1].Number;
+ ;
+ break;}
+case 19:
+#line 269 "./getdate.y"
+{
+ yyDayOrdinal = yyvsp[-1].Number;
+ yyDayNumber = yyvsp[0].Number;
+ ;
+ break;}
+case 20:
+#line 275 "./getdate.y"
+{
+ yyMonth = yyvsp[-2].Number;
+ yyDay = yyvsp[0].Number;
+ ;
+ break;}
+case 21:
+#line 279 "./getdate.y"
+{
+ yyMonth = yyvsp[-4].Number;
+ yyDay = yyvsp[-2].Number;
+ yyYear = yyvsp[0].Number;
+ ;
+ break;}
+case 22:
+#line 284 "./getdate.y"
+{
+ /* ISO 8601 format. yyyy-mm-dd. */
+ yyYear = yyvsp[-2].Number;
+ yyMonth = -yyvsp[-1].Number;
+ yyDay = -yyvsp[0].Number;
+ ;
+ break;}
+case 23:
+#line 290 "./getdate.y"
+{
+ /* e.g. 17-JUN-1992. */
+ yyDay = yyvsp[-2].Number;
+ yyMonth = yyvsp[-1].Number;
+ yyYear = -yyvsp[0].Number;
+ ;
+ break;}
+case 24:
+#line 296 "./getdate.y"
+{
+ yyMonth = yyvsp[-1].Number;
+ yyDay = yyvsp[0].Number;
+ ;
+ break;}
+case 25:
+#line 300 "./getdate.y"
+{
+ yyMonth = yyvsp[-3].Number;
+ yyDay = yyvsp[-2].Number;
+ yyYear = yyvsp[0].Number;
+ ;
+ break;}
+case 26:
+#line 305 "./getdate.y"
+{
+ yyMonth = yyvsp[0].Number;
+ yyDay = yyvsp[-1].Number;
+ ;
+ break;}
+case 27:
+#line 309 "./getdate.y"
+{
+ yyMonth = yyvsp[-1].Number;
+ yyDay = yyvsp[-2].Number;
+ yyYear = yyvsp[0].Number;
+ ;
+ break;}
+case 28:
+#line 316 "./getdate.y"
+{
+ yyRelSeconds = -yyRelSeconds;
+ yyRelMonth = -yyRelMonth;
+ ;
+ break;}
+case 30:
+#line 323 "./getdate.y"
+{
+ yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;
+ ;
+ break;}
+case 31:
+#line 326 "./getdate.y"
+{
+ yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;
+ ;
+ break;}
+case 32:
+#line 329 "./getdate.y"
+{
+ yyRelSeconds += yyvsp[0].Number * 60L;
+ ;
+ break;}
+case 33:
+#line 332 "./getdate.y"
+{
+ yyRelSeconds += yyvsp[-1].Number;
+ ;
+ break;}
+case 34:
+#line 335 "./getdate.y"
+{
+ yyRelSeconds += yyvsp[-1].Number;
+ ;
+ break;}
+case 35:
+#line 338 "./getdate.y"
+{
+ yyRelSeconds++;
+ ;
+ break;}
+case 36:
+#line 341 "./getdate.y"
+{
+ yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
+ ;
+ break;}
+case 37:
+#line 344 "./getdate.y"
+{
+ yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
+ ;
+ break;}
+case 38:
+#line 347 "./getdate.y"
+{
+ yyRelMonth += yyvsp[0].Number;
+ ;
+ break;}
+case 39:
+#line 352 "./getdate.y"
+{
+ if (yyHaveTime && yyHaveDate && !yyHaveRel)
+ yyYear = yyvsp[0].Number;
+ else {
+ if(yyvsp[0].Number>10000) {
+ yyHaveDate++;
+ yyDay= (yyvsp[0].Number)%100;
+ yyMonth= (yyvsp[0].Number/100)%100;
+ yyYear = yyvsp[0].Number/10000;
+ }
+ else {
+ yyHaveTime++;
+ if (yyvsp[0].Number < 100) {
+ yyHour = yyvsp[0].Number;
+ yyMinutes = 0;
+ }
+ else {
+ yyHour = yyvsp[0].Number / 100;
+ yyMinutes = yyvsp[0].Number % 100;
+ }
+ yySeconds = 0;
+ yyMeridian = MER24;
+ }
+ }
+ ;
+ break;}
+case 40:
+#line 379 "./getdate.y"
+{
+ yyval.Meridian = MER24;
+ ;
+ break;}
+case 41:
+#line 382 "./getdate.y"
+{
+ yyval.Meridian = yyvsp[0].Meridian;
+ ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 487 "/usr/share/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 387 "./getdate.y"
/* Month and day table. */
@@ -726,7 +1850,7 @@ get_date(p, now)
yyInput = p;
if (now == NULL) {
now = &ftz;
- (void)time(&nowtime);
+ (void)time (&nowtime);
if (! (tm = gmtime (&nowtime)))
return -1;
@@ -818,800 +1942,3 @@ main(ac, av)
/* NOTREACHED */
}
#endif /* defined(TEST) */
-int yyexca[] ={
--1, 1,
- 0, -1,
- -2, 0,
- };
-# define YYNPROD 42
-# define YYLAST 228
-int yyact[]={
-
- 13, 11, 22, 28, 16, 12, 18, 17, 15, 9,
- 10, 38, 39, 20, 48, 44, 47, 46, 36, 43,
- 50, 32, 35, 34, 33, 29, 37, 31, 41, 45,
- 40, 30, 14, 8, 7, 6, 5, 4, 3, 2,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 21, 0, 0, 19, 25, 24, 27,
- 26, 23, 44, 0, 0, 0, 0, 42 };
-int yypact[]={
-
- -1000, -258, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -45,
- -266, -1000, -242, -13, -230, -241, -1000, -1000, -1000, -1000,
- -245, -1000, -249, -240, -255, -1000, -1000, -1000, -1000, -14,
- -1000, -1000, -1000, -1000, -1000, -39, -18, -1000, -1000, -1000,
- -250, -1000, -1000, -251, -1000, -253, -1000, -246, -1000, -1000,
- -1000 };
-int yypgo[]={
-
- 0, 28, 40, 39, 38, 37, 36, 35, 34, 33,
- 32 };
-int yyr1[]={
-
- 0, 2, 2, 3, 3, 3, 3, 3, 3, 4,
- 4, 4, 4, 4, 5, 5, 5, 7, 7, 7,
- 6, 6, 6, 6, 6, 6, 6, 6, 8, 8,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 9,
- 1, 1 };
-int yyr2[]={
-
- 0, 0, 4, 3, 3, 3, 3, 3, 2, 5,
- 9, 9, 13, 13, 3, 3, 5, 3, 5, 5,
- 7, 11, 7, 7, 5, 9, 5, 7, 5, 2,
- 5, 5, 3, 5, 5, 3, 5, 5, 3, 3,
- 1, 3 };
-int yychk[]={
-
- -1000, -2, -3, -4, -5, -6, -7, -8, -9, 267,
- 268, 259, 263, 258, -10, 266, 262, 265, 264, 261,
- 58, 258, 47, 266, 263, 262, 265, 264, 269, 267,
- 44, 257, 262, 265, 264, 267, 267, 266, 266, 267,
- 44, -1, 266, 58, 261, 47, 267, 267, 267, -1,
- 266 };
-int yydef[]={
-
- 1, -2, 2, 3, 4, 5, 6, 7, 8, 39,
- 14, 15, 0, 17, 29, 0, 32, 35, 38, 9,
- 0, 19, 0, 0, 26, 30, 34, 37, 16, 24,
- 18, 28, 31, 33, 36, 40, 20, 22, 23, 27,
- 0, 10, 11, 0, 41, 0, 25, 40, 21, 12,
- 13 };
-typedef struct { char *t_name; int t_val; } yytoktype;
-#ifndef YYDEBUG
-# define YYDEBUG 0 /* don't allow debugging */
-#endif
-
-#if YYDEBUG
-
-yytoktype yytoks[] =
-{
- "tAGO", 257,
- "tDAY", 258,
- "tDAYZONE", 259,
- "tID", 260,
- "tMERIDIAN", 261,
- "tMINUTE_UNIT", 262,
- "tMONTH", 263,
- "tMONTH_UNIT", 264,
- "tSEC_UNIT", 265,
- "tSNUMBER", 266,
- "tUNUMBER", 267,
- "tZONE", 268,
- "tDST", 269,
- "-unknown-", -1 /* ends search */
-};
-
-char * yyreds[] =
-{
- "-no such reduction-",
- "spec : /* empty */",
- "spec : spec item",
- "item : time",
- "item : zone",
- "item : date",
- "item : day",
- "item : rel",
- "item : number",
- "time : tUNUMBER tMERIDIAN",
- "time : tUNUMBER ':' tUNUMBER o_merid",
- "time : tUNUMBER ':' tUNUMBER tSNUMBER",
- "time : tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid",
- "time : tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER",
- "zone : tZONE",
- "zone : tDAYZONE",
- "zone : tZONE tDST",
- "day : tDAY",
- "day : tDAY ','",
- "day : tUNUMBER tDAY",
- "date : tUNUMBER '/' tUNUMBER",
- "date : tUNUMBER '/' tUNUMBER '/' tUNUMBER",
- "date : tUNUMBER tSNUMBER tSNUMBER",
- "date : tUNUMBER tMONTH tSNUMBER",
- "date : tMONTH tUNUMBER",
- "date : tMONTH tUNUMBER ',' tUNUMBER",
- "date : tUNUMBER tMONTH",
- "date : tUNUMBER tMONTH tUNUMBER",
- "rel : relunit tAGO",
- "rel : relunit",
- "relunit : tUNUMBER tMINUTE_UNIT",
- "relunit : tSNUMBER tMINUTE_UNIT",
- "relunit : tMINUTE_UNIT",
- "relunit : tSNUMBER tSEC_UNIT",
- "relunit : tUNUMBER tSEC_UNIT",
- "relunit : tSEC_UNIT",
- "relunit : tSNUMBER tMONTH_UNIT",
- "relunit : tUNUMBER tMONTH_UNIT",
- "relunit : tMONTH_UNIT",
- "number : tUNUMBER",
- "o_merid : /* empty */",
- "o_merid : tMERIDIAN",
-};
-#endif /* YYDEBUG */
-/* @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10 */
-
-/*
-** Skeleton parser driver for yacc output
-*/
-
-/*
-** yacc user known macros and defines
-*/
-#define YYERROR goto yyerrlab
-#define YYACCEPT { free(yys); free(yyv); return(0); }
-#define YYABORT { free(yys); free(yyv); return(1); }
-#define YYBACKUP( newtoken, newvalue )\
-{\
- if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
- {\
- yyerror( "syntax error - cannot backup" );\
- goto yyerrlab;\
- }\
- yychar = newtoken;\
- yystate = *yyps;\
- yylval = newvalue;\
- goto yynewstate;\
-}
-#define YYRECOVERING() (!!yyerrflag)
-#ifndef YYDEBUG
-# define YYDEBUG 1 /* make debugging available */
-#endif
-
-/*
-** user known globals
-*/
-int yydebug; /* set to 1 to get debugging */
-
-/*
-** driver internal defines
-*/
-#define YYFLAG (-1000)
-
-/*
-** static variables used by the parser
-*/
-static YYSTYPE *yyv; /* value stack */
-static int *yys; /* state stack */
-
-static YYSTYPE *yypv; /* top of value stack */
-static int *yyps; /* top of state stack */
-
-static int yystate; /* current state */
-static int yytmp; /* extra var (lasts between blocks) */
-
-int yynerrs; /* number of errors */
-
-int yyerrflag; /* error recovery flag */
-int yychar; /* current input token number */
-
-
-/*
-** yyparse - return 0 if worked, 1 if syntax error not recovered from
-*/
-int
-yyparse()
-{
- register YYSTYPE *yypvt; /* top of value stack for $vars */
- unsigned yymaxdepth = YYMAXDEPTH;
-
- /*
- ** Initialize externals - yyparse may be called more than once
- */
- yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
- yys = (int*)malloc(yymaxdepth*sizeof(int));
- if (!yyv || !yys)
- {
- yyerror( "out of memory" );
- return(1);
- }
- yypv = &yyv[-1];
- yyps = &yys[-1];
- yystate = 0;
- yytmp = 0;
- yynerrs = 0;
- yyerrflag = 0;
- yychar = -1;
-
- goto yystack;
- {
- register YYSTYPE *yy_pv; /* top of value stack */
- register int *yy_ps; /* top of state stack */
- register int yy_state; /* current state */
- register int yy_n; /* internal state number info */
-
- /*
- ** get globals into registers.
- ** branch to here only if YYBACKUP was called.
- */
- yynewstate:
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
- goto yy_newstate;
-
- /*
- ** get globals into registers.
- ** either we just started, or we just finished a reduction
- */
- yystack:
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
-
- /*
- ** top of for (;;) loop while no reductions done
- */
- yy_stack:
- /*
- ** put a state and value onto the stacks
- */
-#if YYDEBUG
- /*
- ** if debugging, look up token value in list of value vs.
- ** name pairs. 0 and negative (-1) are special values.
- ** Note: linear search is used since time is not a real
- ** consideration while debugging.
- */
- if ( yydebug )
- {
- register int yy_i;
-
- (void)printf( "State %d, token ", yy_state );
- if ( yychar == 0 )
- (void)printf( "end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val == yychar )
- break;
- }
- (void)printf( "%s\n", yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( ++yy_ps >= &yys[ yymaxdepth ] ) /* room on stack? */
- {
- /*
- ** reallocate and recover. Note that pointers
- ** have to be reset, or bad things will happen
- */
- int yyps_index = (yy_ps - yys);
- int yypv_index = (yy_pv - yyv);
- int yypvt_index = (yypvt - yyv);
- yymaxdepth += YYMAXDEPTH;
- yyv = (YYSTYPE*)realloc((char*)yyv,
- yymaxdepth * sizeof(YYSTYPE));
- yys = (int*)realloc((char*)yys,
- yymaxdepth * sizeof(int));
- if (!yyv || !yys)
- {
- yyerror( "yacc stack overflow" );
- return(1);
- }
- yy_ps = yys + yyps_index;
- yy_pv = yyv + yypv_index;
- yypvt = yyv + yypvt_index;
- }
- *yy_ps = yy_state;
- *++yy_pv = yyval;
-
- /*
- ** we have a new state - find out what to do
- */
- yy_newstate:
- if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
- goto yydefault; /* simple state */
-#if YYDEBUG
- /*
- ** if debugging, need to mark whether new token grabbed
- */
- yytmp = yychar < 0;
-#endif
- if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
- yychar = 0; /* reached EOF */
-#if YYDEBUG
- if ( yydebug && yytmp )
- {
- register int yy_i;
-
- (void)printf( "Received token " );
- if ( yychar == 0 )
- (void)printf( "end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val == yychar )
- break;
- }
- (void)printf( "%s\n", yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
- goto yydefault;
- if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
- {
- yychar = -1;
- yyval = yylval;
- yy_state = yy_n;
- if ( yyerrflag > 0 )
- yyerrflag--;
- goto yy_stack;
- }
-
- yydefault:
- if ( ( yy_n = yydef[ yy_state ] ) == -2 )
- {
-#if YYDEBUG
- yytmp = yychar < 0;
-#endif
- if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
- yychar = 0; /* reached EOF */
-#if YYDEBUG
- if ( yydebug && yytmp )
- {
- register int yy_i;
-
- (void)printf( "Received token " );
- if ( yychar == 0 )
- (void)printf( "end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( yy_i = 0;
- yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val
- == yychar )
- {
- break;
- }
- }
- (void)printf( "%s\n", yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- /*
- ** look through exception table
- */
- {
- register int *yyxi = yyexca;
-
- while ( ( *yyxi != -1 ) ||
- ( yyxi[1] != yy_state ) )
- {
- yyxi += 2;
- }
- while ( ( *(yyxi += 2) >= 0 ) &&
- ( *yyxi != yychar ) )
- ;
- if ( ( yy_n = yyxi[1] ) < 0 )
- YYACCEPT;
- }
- }
-
- /*
- ** check for syntax error
- */
- if ( yy_n == 0 ) /* have an error */
- {
- /* no worry about speed here! */
- switch ( yyerrflag )
- {
- case 0: /* new error */
- yyerror( "syntax error" );
- goto skip_init;
- yyerrlab:
- /*
- ** get globals into registers.
- ** we have a user generated syntax type error
- */
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
- yynerrs++;
- skip_init:
- case 1:
- case 2: /* incompletely recovered error */
- /* try again... */
- yyerrflag = 3;
- /*
- ** find state where "error" is a legal
- ** shift action
- */
- while ( yy_ps >= yys )
- {
- yy_n = yypact[ *yy_ps ] + YYERRCODE;
- if ( yy_n >= 0 && yy_n < YYLAST &&
- yychk[yyact[yy_n]] == YYERRCODE) {
- /*
- ** simulate shift of "error"
- */
- yy_state = yyact[ yy_n ];
- goto yy_stack;
- }
- /*
- ** current state has no shift on
- ** "error", pop stack
- */
-#if YYDEBUG
-# define _POP_ "Error recovery pops state %d, uncovers state %d\n"
- if ( yydebug )
- (void)printf( _POP_, *yy_ps,
- yy_ps[-1] );
-# undef _POP_
-#endif
- yy_ps--;
- yy_pv--;
- }
- /*
- ** there is no state on stack with "error" as
- ** a valid shift. give up.
- */
- YYABORT;
- case 3: /* no shift yet; eat a token */
-#if YYDEBUG
- /*
- ** if debugging, look up token in list of
- ** pairs. 0 and negative shouldn't occur,
- ** but since timing doesn't matter when
- ** debugging, it doesn't hurt to leave the
- ** tests here.
- */
- if ( yydebug )
- {
- register int yy_i;
-
- (void)printf( "Error recovery discards " );
- if ( yychar == 0 )
- (void)printf( "token end-of-file\n" );
- else if ( yychar < 0 )
- (void)printf( "token -none-\n" );
- else
- {
- for ( yy_i = 0;
- yytoks[yy_i].t_val >= 0;
- yy_i++ )
- {
- if ( yytoks[yy_i].t_val
- == yychar )
- {
- break;
- }
- }
- (void)printf( "token %s\n",
- yytoks[yy_i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( yychar == 0 ) /* reached EOF. quit */
- YYABORT;
- yychar = -1;
- goto yy_newstate;
- }
- }/* end if ( yy_n == 0 ) */
- /*
- ** reduction by production yy_n
- ** put stack tops, etc. so things right after switch
- */
-#if YYDEBUG
- /*
- ** if debugging, print the string that is the user's
- ** specification of the reduction which is just about
- ** to be done.
- */
- if ( yydebug )
- (void)printf( "Reduce by (%d) \"%s\"\n",
- yy_n, yyreds[ yy_n ] );
-#endif
- yytmp = yy_n; /* value to switch over */
- yypvt = yy_pv; /* $vars top of value stack */
- /*
- ** Look in goto table for next state
- ** Sorry about using yy_state here as temporary
- ** register variable, but why not, if it works...
- ** If yyr2[ yy_n ] doesn't have the low order bit
- ** set, then there is no action to be done for
- ** this reduction. So, no saving & unsaving of
- ** registers done. The only difference between the
- ** code just after the if and the body of the if is
- ** the goto yy_stack in the body. This way the test
- ** can be made before the choice of what to do is needed.
- */
- {
- /* length of production doubled with extra bit */
- register int yy_len = yyr2[ yy_n ];
-
- if ( !( yy_len & 01 ) )
- {
- yy_len >>= 1;
- yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
- yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
- *( yy_ps -= yy_len ) + 1;
- if ( yy_state >= YYLAST ||
- yychk[ yy_state =
- yyact[ yy_state ] ] != -yy_n )
- {
- yy_state = yyact[ yypgo[ yy_n ] ];
- }
- goto yy_stack;
- }
- yy_len >>= 1;
- yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
- yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
- *( yy_ps -= yy_len ) + 1;
- if ( yy_state >= YYLAST ||
- yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
- {
- yy_state = yyact[ yypgo[ yy_n ] ];
- }
- }
- /* save until reenter driver code */
- yystate = yy_state;
- yyps = yy_ps;
- yypv = yy_pv;
- }
- /*
- ** code supplied by user is placed in this switch
- */
- switch( yytmp )
- {
-
-case 3:
-{
- yyHaveTime++;
- } break;
-case 4:
-{
- yyHaveZone++;
- } break;
-case 5:
-{
- yyHaveDate++;
- } break;
-case 6:
-{
- yyHaveDay++;
- } break;
-case 7:
-{
- yyHaveRel++;
- } break;
-case 9:
-{
- yyHour = yypvt[-1].Number;
- yyMinutes = 0;
- yySeconds = 0;
- yyMeridian = yypvt[-0].Meridian;
- } break;
-case 10:
-{
- yyHour = yypvt[-3].Number;
- yyMinutes = yypvt[-1].Number;
- yySeconds = 0;
- yyMeridian = yypvt[-0].Meridian;
- } break;
-case 11:
-{
- yyHour = yypvt[-3].Number;
- yyMinutes = yypvt[-1].Number;
- yyMeridian = MER24;
- yyDSTmode = DSToff;
- yyTimezone = - (yypvt[-0].Number % 100 + (yypvt[-0].Number / 100) * 60);
- } break;
-case 12:
-{
- yyHour = yypvt[-5].Number;
- yyMinutes = yypvt[-3].Number;
- yySeconds = yypvt[-1].Number;
- yyMeridian = yypvt[-0].Meridian;
- } break;
-case 13:
-{
- yyHour = yypvt[-5].Number;
- yyMinutes = yypvt[-3].Number;
- yySeconds = yypvt[-1].Number;
- yyMeridian = MER24;
- yyDSTmode = DSToff;
- yyTimezone = - (yypvt[-0].Number % 100 + (yypvt[-0].Number / 100) * 60);
- } break;
-case 14:
-{
- yyTimezone = yypvt[-0].Number;
- yyDSTmode = DSToff;
- } break;
-case 15:
-{
- yyTimezone = yypvt[-0].Number;
- yyDSTmode = DSTon;
- } break;
-case 16:
-{
- yyTimezone = yypvt[-1].Number;
- yyDSTmode = DSTon;
- } break;
-case 17:
-{
- yyDayOrdinal = 1;
- yyDayNumber = yypvt[-0].Number;
- } break;
-case 18:
-{
- yyDayOrdinal = 1;
- yyDayNumber = yypvt[-1].Number;
- } break;
-case 19:
-{
- yyDayOrdinal = yypvt[-1].Number;
- yyDayNumber = yypvt[-0].Number;
- } break;
-case 20:
-{
- yyMonth = yypvt[-2].Number;
- yyDay = yypvt[-0].Number;
- } break;
-case 21:
-{
- yyMonth = yypvt[-4].Number;
- yyDay = yypvt[-2].Number;
- yyYear = yypvt[-0].Number;
- } break;
-case 22:
-{
- /* ISO 8601 format. yyyy-mm-dd. */
- yyYear = yypvt[-2].Number;
- yyMonth = -yypvt[-1].Number;
- yyDay = -yypvt[-0].Number;
- } break;
-case 23:
-{
- /* e.g. 17-JUN-1992. */
- yyDay = yypvt[-2].Number;
- yyMonth = yypvt[-1].Number;
- yyYear = -yypvt[-0].Number;
- } break;
-case 24:
-{
- yyMonth = yypvt[-1].Number;
- yyDay = yypvt[-0].Number;
- } break;
-case 25:
-{
- yyMonth = yypvt[-3].Number;
- yyDay = yypvt[-2].Number;
- yyYear = yypvt[-0].Number;
- } break;
-case 26:
-{
- yyMonth = yypvt[-0].Number;
- yyDay = yypvt[-1].Number;
- } break;
-case 27:
-{
- yyMonth = yypvt[-1].Number;
- yyDay = yypvt[-2].Number;
- yyYear = yypvt[-0].Number;
- } break;
-case 28:
-{
- yyRelSeconds = -yyRelSeconds;
- yyRelMonth = -yyRelMonth;
- } break;
-case 30:
-{
- yyRelSeconds += yypvt[-1].Number * yypvt[-0].Number * 60L;
- } break;
-case 31:
-{
- yyRelSeconds += yypvt[-1].Number * yypvt[-0].Number * 60L;
- } break;
-case 32:
-{
- yyRelSeconds += yypvt[-0].Number * 60L;
- } break;
-case 33:
-{
- yyRelSeconds += yypvt[-1].Number;
- } break;
-case 34:
-{
- yyRelSeconds += yypvt[-1].Number;
- } break;
-case 35:
-{
- yyRelSeconds++;
- } break;
-case 36:
-{
- yyRelMonth += yypvt[-1].Number * yypvt[-0].Number;
- } break;
-case 37:
-{
- yyRelMonth += yypvt[-1].Number * yypvt[-0].Number;
- } break;
-case 38:
-{
- yyRelMonth += yypvt[-0].Number;
- } break;
-case 39:
-{
- if (yyHaveTime && yyHaveDate && !yyHaveRel)
- yyYear = yypvt[-0].Number;
- else {
- if(yypvt[-0].Number>10000) {
- yyHaveDate++;
- yyDay= (yypvt[-0].Number)%100;
- yyMonth= (yypvt[-0].Number/100)%100;
- yyYear = yypvt[-0].Number/10000;
- }
- else {
- yyHaveTime++;
- if (yypvt[-0].Number < 100) {
- yyHour = yypvt[-0].Number;
- yyMinutes = 0;
- }
- else {
- yyHour = yypvt[-0].Number / 100;
- yyMinutes = yypvt[-0].Number % 100;
- }
- yySeconds = 0;
- yyMeridian = MER24;
- }
- }
- } break;
-case 40:
-{
- yyval.Meridian = MER24;
- } break;
-case 41:
-{
- yyval.Meridian = yypvt[-0].Meridian;
- } break;
- }
- goto yystack; /* reset registers in driver code */
-}
diff --git a/gnu/usr.bin/cvs/man/cvsinit.8 b/gnu/usr.bin/cvs/man/cvsinit.8
deleted file mode 100644
index 0b31dda3a22..00000000000
--- a/gnu/usr.bin/cvs/man/cvsinit.8
+++ /dev/null
@@ -1,142 +0,0 @@
-.de Id
-.ds Rv \\$3
-.ds Dt \\$4
-..
-.Id $Id: cvsinit.8,v 1.1 1995/12/19 09:21:35 deraadt Exp $
-.TH CVSINIT 8 "\*(Dt"
-.\" Full space in nroff; half space in troff
-.de SP
-.if n .sp
-.if t .sp .5
-..
-.\" quoted command
-.de `
-.RB ` "\|\\$1\|" '\\$2
-..
-.\"
-.SH "NAME"
-cvsinit \- Concurrent Versions System repository initialization script
-.SH "SYNOPSIS"
-.TP
-.B cvsinit
-.\"
-.SH "DESCRIPTION"
-.\"
-The
-.B cvsinit
-script initializes a repository in the location specified by the
-.SM CVSROOT
-environment variable.
-.SH "FILES"
-For more detailed information on
-.B cvs
-supporting files, see
-.BR cvs ( 5 ).
-.LP
-Files in source repositories (created by
-.BR cvsinit ):
-.TP
-$CVSROOT/CVSROOT
-Directory of global administrative files for repository.
-.TP
-$CVSROOT/commitinfo,v
-Records programs for filtering
-.` "cvs commit"
-requests.
-.TP
-$CVSROOT/history
-Log file of \fBcvs\fP transactions.
-.TP
-$CVSROOT/modules,v
-Definitions for modules in this repository.
-.TP
-$CVSROOT/loginfo,v
-Records programs for piping
-.` "cvs commit"
-log entries.
-.TP
-$CVSROOT/rcsinfo,v
-Records pathnames to templates used during a
-.` "cvs commit"
-operation.
-.TP
-$CVSROOT/editinfo,v
-Records programs for editing/validating
-.` "cvs commit"
-log entries.
-.TP
-$CVSROOT/log.pl
-Sample logging script for use in
-.IR loginfo .
-.TP
-$CVSROOT/commit_prep.pl
-Sample logging script for use in
-.I commitinfo
-with the
-.I log_accum.pl
-script
-.TP
-$CVSROOT/log_accum.pl
-Sample loggin script for use in
-.I loginfo
-with the
-.I commit_prep.pl
-script
-.\"
-.SH "ENVIRONMENT VARIABLES"
-.TP
-.SM CVSROOT
-Should contain the full pathname to the root of the
-.B cvs
-source repository (where the
-.SM RCS
-files are kept). This information must be available to \fBcvs\fP for
-most commands to execute; if
-.SM CVSROOT
-is not set, or if you wish to override it for one invocation, you can
-supply it on the command line:
-.` "cvs \-d \fIcvsroot cvs_command\fP\|.\|.\|."
-You may not need to set
-.SM CVSROOT
-if your \fBcvs\fP binary has the right path compiled in; use
-.` "cvs \-v"
-to display all compiled-in paths.
-.\"
-.SH "AUTHORS"
-.TP
-Dick Grune
-Original author of the
-.B cvs
-shell script version posted to
-.B comp.sources.unix
-in the volume6 release of December, 1986.
-Credited with much of the
-.B cvs
-conflict resolution algorithms.
-.TP
-Brian Berliner
-Coder and designer of the
-.B cvs
-program itself in April, 1989, based on the original work done by Dick.
-.TP
-Jeff Polk
-Helped Brian with the design of the
-.B cvs
-module and vendor branch support and author of the
-.BR checkin ( 1 )
-shell script (the ancestor of
-.` "cvs import").
-.SH "SEE ALSO"
-.BR ci ( 1 ),
-.BR co ( 1 ),
-.BR cvs ( 5 ),
-.BR diff ( 1 ),
-.BR grep ( 1 ),
-.BR mkmodules ( 1 ),
-.BR patch ( 1 ),
-.BR rcs ( 1 ),
-.BR rcsdiff ( 1 ),
-.BR rcsmerge ( 1 ),
-.BR rlog ( 1 ),
-.BR rm ( 1 ),
-.BR sort ( 1 ).
diff --git a/gnu/usr.bin/cvs/src/commit.c b/gnu/usr.bin/cvs/src/commit.c
index e30a9ac2993..ac81790e934 100644
--- a/gnu/usr.bin/cvs/src/commit.c
+++ b/gnu/usr.bin/cvs/src/commit.c
@@ -23,7 +23,7 @@ static Dtype check_direntproc PROTO((char *dir, char *repos, char *update_dir));
static int check_fileproc PROTO((struct file_info *finfo));
static int check_filesdoneproc PROTO((int err, char *repos, char *update_dir));
static int checkaddfile PROTO((char *file, char *repository, char *tag,
- char *options, List *srcfiles));
+ char *options, RCSNode **rcsnode));
static Dtype commit_direntproc PROTO((char *dir, char *repos, char *update_dir));
static int commit_dirleaveproc PROTO((char *dir, int err, char *update_dir));
static int commit_fileproc PROTO((struct file_info *finfo));
@@ -37,7 +37,7 @@ static int lockrcsfile PROTO((char *file, char *repository, char *rev));
static int precommit_list_proc PROTO((Node * p, void *closure));
static int precommit_proc PROTO((char *repository, char *filter));
static int remove_file PROTO((char *file, char *repository, char *tag,
- char *message, List *entries, List *srcfiles));
+ char *message, List *entries, RCSNode *rcsnode));
static void fix_rcs_modes PROTO((char *rcs, char *user));
static void fixaddfile PROTO((char *file, char *repository));
static void fixbranch PROTO((char *file, char *repository, char *branch));
@@ -109,29 +109,21 @@ find_fileproc (finfo)
enum classify_type status;
Node *node;
struct find_data *args = find_data_static;
- char *fullname;
-
- fullname = xmalloc (strlen (finfo->update_dir) + strlen (finfo->file) + 10);
- fullname[0] = '\0';
- if (finfo->update_dir[0] != '\0')
- {
- strcat (fullname, finfo->update_dir);
- strcat (fullname, "/");
- }
- strcat (fullname, finfo->file);
vers = Version_TS ((char *)NULL, (char *)NULL, (char *)NULL,
(char *)NULL,
- finfo->file, 0, 0, finfo->entries, (List *)NULL);
+ finfo->file, 0, 0, finfo->entries, (RCSNode *)NULL);
if (vers->ts_user == NULL
&& vers->vn_user != NULL
&& vers->vn_user[0] == '-')
status = T_REMOVED;
- else if (vers->ts_user == NULL
- && vers->vn_user == NULL)
+ else if (vers->vn_user == NULL)
{
- error (0, 0, "nothing known about `%s'", fullname);
- free (fullname);
+ if (vers->ts_user == NULL)
+ error (0, 0, "nothing known about `%s'", finfo->fullname);
+ else
+ error (0, 0, "use `cvs add' to create an entry for %s",
+ finfo->fullname);
return 1;
}
else if (vers->ts_user != NULL
@@ -144,23 +136,15 @@ find_fileproc (finfo)
status = T_MODIFIED;
else
{
- /* This covers unmodified files, as well as a variety of other cases
- (e.g. "touch foo", "cvs ci foo"). FIXME: we probably should be
- printing a message and returning 1 for many of those cases (but
- I'm not sure exactly which ones). */
- free (fullname);
+ /* This covers unmodified files, as well as a variety of other
+ cases. FIXME: we probably should be printing a message and
+ returning 1 for many of those cases (but I'm not sure
+ exactly which ones). */
return 0;
}
node = getnode ();
- node->key = xmalloc (strlen (finfo->update_dir) + strlen (finfo->file) + 8);
- node->key[0] = '\0';
- if (finfo->update_dir[0] != '\0')
- {
- strcpy (node->key, finfo->update_dir);
- strcat (node->key, "/");
- }
- strcat (node->key, finfo->file);
+ node->key = xstrdup (finfo->fullname);
node->type = UPDATE;
node->delproc = update_delproc;
@@ -169,8 +153,6 @@ find_fileproc (finfo)
++args->argc;
- free (fullname);
-
return 0;
}
@@ -287,6 +269,7 @@ commit (argc, argv)
if (message)
error (1, 0, "cannot specify both a message and a log file");
+ /* FIXME: Why is this binary? Needs more investigation. */
if ((logfd = open (logfile, O_RDONLY | OPEN_BINARY)) < 0)
error (1, errno, "cannot open log file %s", logfile);
@@ -295,6 +278,8 @@ commit (argc, argv)
message = xmalloc (statbuf.st_size + 1);
+ /* FIXME: Should keep reading until EOF, rather than assuming the
+ first read gets the whole thing. */
if ((n = read (logfd, message, statbuf.st_size + 1)) < 0)
error (1, errno, "cannot read log message from %s", logfile);
@@ -365,7 +350,7 @@ commit (argc, argv)
check on those files. This is different from local CVS and
previous versions of client/server CVS, but it probably is a Good
Thing, or at least Not Such A Bad Thing. */
- send_file_names (find_args.argc, find_args.argv);
+ send_file_names (find_args.argc, find_args.argv, 0);
send_files (find_args.argc, find_args.argv, local, 0);
send_to_server ("ci\012", 0);
@@ -461,7 +446,7 @@ check_fileproc (finfo)
{
status = Classify_File (finfo->file, (char *) NULL, (char *) NULL,
(char *) NULL, 1, aflag, finfo->repository,
- finfo->entries, finfo->srcfiles, &vers, finfo->update_dir, 0);
+ finfo->entries, finfo->rcs, &vers, finfo->update_dir, 0);
if (status == T_UPTODATE || status == T_MODIFIED ||
status == T_ADDED)
{
@@ -470,7 +455,7 @@ check_fileproc (finfo)
freevers_ts (&vers);
xstatus = Classify_File (finfo->file, tag, (char *) NULL,
(char *) NULL, 1, aflag, finfo->repository,
- finfo->entries, finfo->srcfiles, &vers, finfo->update_dir,
+ finfo->entries, finfo->rcs, &vers, finfo->update_dir,
0);
if (xstatus == T_REMOVE_ENTRY)
status = T_MODIFIED;
@@ -496,7 +481,7 @@ check_fileproc (finfo)
}
status = Classify_File (finfo->file, xtag, (char *) NULL,
(char *) NULL, 1, aflag, finfo->repository,
- finfo->entries, finfo->srcfiles, &vers, finfo->update_dir, 0);
+ finfo->entries, finfo->rcs, &vers, finfo->update_dir, 0);
if ((status == T_REMOVE_ENTRY || status == T_CONFLICT)
&& (cp = strrchr (xtag, '.')) != NULL)
{
@@ -505,7 +490,7 @@ check_fileproc (finfo)
freevers_ts (&vers);
status = Classify_File (finfo->file, xtag, (char *) NULL,
(char *) NULL, 1, aflag, finfo->repository,
- finfo->entries, finfo->srcfiles, &vers, finfo->update_dir,
+ finfo->entries, finfo->rcs, &vers, finfo->update_dir,
0);
if (status == T_UPTODATE || status == T_REMOVE_ENTRY)
status = T_MODIFIED;
@@ -518,7 +503,7 @@ check_fileproc (finfo)
}
else
status = Classify_File (finfo->file, tag, (char *) NULL, (char *) NULL,
- 1, 0, finfo->repository, finfo->entries, finfo->srcfiles, &vers,
+ 1, 0, finfo->repository, finfo->entries, finfo->rcs, &vers,
finfo->update_dir, 0);
noexec = save_noexec;
quiet = save_quiet;
@@ -541,11 +526,7 @@ check_fileproc (finfo)
case T_NEEDS_MERGE:
case T_CONFLICT:
case T_REMOVE_ENTRY:
- if (finfo->update_dir[0] == '\0')
- error (0, 0, "Up-to-date check failed for `%s'", finfo->file);
- else
- error (0, 0, "Up-to-date check failed for `%s/%s'",
- finfo->update_dir, finfo->file);
+ error (0, 0, "Up-to-date check failed for `%s'", finfo->fullname);
freevers_ts (&vers);
return (1);
case T_MODIFIED:
@@ -567,30 +548,18 @@ check_fileproc (finfo)
{
if (vers->date)
{
- if (finfo->update_dir[0] == '\0')
- error (0, 0,
- "cannot commit with sticky date for file `%s'",
- finfo->file);
- else
- error
- (0, 0,
- "cannot commit with sticky date for file `%s/%s'",
- finfo->update_dir, finfo->file);
+ error (0, 0,
+ "cannot commit with sticky date for file `%s'",
+ finfo->fullname);
freevers_ts (&vers);
return (1);
}
if (status == T_MODIFIED && vers->tag &&
- !RCS_isbranch (finfo->file, vers->tag, finfo->srcfiles))
+ !RCS_isbranch (finfo->rcs, vers->tag))
{
- if (finfo->update_dir[0] == '\0')
- error (0, 0,
- "sticky tag `%s' for file `%s' is not a branch",
- vers->tag, finfo->file);
- else
- error
- (0, 0,
- "sticky tag `%s' for file `%s/%s' is not a branch",
- vers->tag, finfo->update_dir, finfo->file);
+ error (0, 0,
+ "sticky tag `%s' for file `%s' is not a branch",
+ vers->tag, finfo->fullname);
freevers_ts (&vers);
return (1);
}
@@ -621,14 +590,9 @@ check_fileproc (finfo)
#endif
if (retcode == 0)
{
- if (finfo->update_dir[0] == '\0')
- error (0, 0,
+ error (0, 0,
"file `%s' had a conflict and has not been modified",
- finfo->file);
- else
- error (0, 0,
- "file `%s/%s' had a conflict and has not been modified",
- finfo->update_dir, finfo->file);
+ finfo->fullname);
freevers_ts (&vers);
return (1);
}
@@ -644,25 +608,15 @@ check_fileproc (finfo)
if (retcode == -1)
{
- if (finfo->update_dir[0] == '\0')
- error (1, errno,
- "fork failed while examining conflict in `%s'",
- finfo->file);
- else
- error (1, errno,
- "fork failed while examining conflict in `%s/%s'",
- finfo->update_dir, finfo->file);
+ error (1, errno,
+ "fork failed while examining conflict in `%s'",
+ finfo->fullname);
}
else if (retcode == 0)
{
- if (finfo->update_dir[0] == '\0')
- error (0, 0,
- "file `%s' still contains conflict indicators",
- finfo->file);
- else
- error (0, 0,
- "file `%s/%s' still contains conflict indicators",
- finfo->update_dir, finfo->file);
+ error (0, 0,
+ "file `%s' still contains conflict indicators",
+ finfo->fullname);
freevers_ts (&vers);
return (1);
}
@@ -670,14 +624,9 @@ check_fileproc (finfo)
if (status == T_REMOVED && vers->tag && isdigit (*vers->tag))
{
- if (finfo->update_dir[0] == '\0')
- error (0, 0,
+ error (0, 0,
"cannot remove file `%s' which has a numeric sticky tag of `%s'",
- finfo->file, vers->tag);
- else
- error (0, 0,
- "cannot remove file `%s/%s' which has a numeric sticky tag of `%s'",
- finfo->update_dir, finfo->file, vers->tag);
+ finfo->fullname, vers->tag);
freevers_ts (&vers);
return (1);
}
@@ -690,28 +639,18 @@ check_fileproc (finfo)
sprintf(rcs, "%s/%s%s", finfo->repository, finfo->file, RCSEXT);
if (isreadable (rcs))
{
- if (finfo->update_dir[0] == '\0')
- error (0, 0,
+ error (0, 0,
"cannot add file `%s' when RCS file `%s' already exists",
- finfo->file, rcs);
- else
- error (0, 0,
- "cannot add file `%s/%s' when RCS file `%s' already exists",
- finfo->update_dir, finfo->file, rcs);
+ finfo->fullname, rcs);
freevers_ts (&vers);
return (1);
}
if (vers->tag && isdigit (*vers->tag) &&
numdots (vers->tag) > 1)
{
- if (finfo->update_dir[0] == '\0')
- error (0, 0,
+ error (0, 0,
"cannot add file `%s' with revision `%s'; must be on trunk",
- finfo->file, vers->tag);
- else
- error (0, 0,
- "cannot add file `%s/%s' with revision `%s'; must be on trunk",
- finfo->update_dir, finfo->file, vers->tag);
+ finfo->fullname, vers->tag);
freevers_ts (&vers);
return (1);
}
@@ -763,7 +702,7 @@ check_fileproc (finfo)
if (isdigit (*vers->tag))
ci->rev = xstrdup (vers->tag);
else
- ci->rev = RCS_whatbranch (finfo->file, vers->tag, finfo->srcfiles);
+ ci->rev = RCS_whatbranch (finfo->rcs, vers->tag);
else
ci->rev = (char *) NULL;
ci->tag = xstrdup (vers->tag);
@@ -772,10 +711,7 @@ check_fileproc (finfo)
(void) addnode (cilist, p);
break;
case T_UNKNOWN:
- if (finfo->update_dir[0] == '\0')
- error (0, 0, "nothing known about `%s'", finfo->file);
- else
- error (0, 0, "nothing known about `%s/%s'", finfo->update_dir, finfo->file);
+ error (0, 0, "nothing known about `%s'", finfo->fullname);
freevers_ts (&vers);
return (1);
case T_UPTODATE:
@@ -949,7 +885,7 @@ commit_fileproc (finfo)
else if (ci->status == T_ADDED)
{
if (checkaddfile (finfo->file, finfo->repository, ci->tag, ci->options,
- finfo->srcfiles) != 0)
+ &finfo->rcs) != 0)
{
fixaddfile (finfo->file, finfo->repository);
err = 1;
@@ -962,7 +898,7 @@ commit_fileproc (finfo)
if (ci->tag) {
locate_rcs (finfo->file, finfo->repository, rcs);
- ci->rev = RCS_whatbranch (finfo->file, ci->tag, finfo->srcfiles);
+ ci->rev = RCS_whatbranch (finfo->rcs, ci->tag);
err = Checkin ('A', finfo->file, finfo->update_dir, finfo->repository, rcs, ci->rev,
ci->tag, ci->options, message, finfo->entries);
if (err != 0)
@@ -1019,7 +955,7 @@ commit_fileproc (finfo)
else if (ci->status == T_REMOVED)
{
err = remove_file (finfo->file, finfo->repository, ci->tag, message,
- finfo->entries, finfo->srcfiles);
+ finfo->entries, finfo->rcs);
#ifdef SERVER_SUPPORT
if (server_active) {
server_scratch_entry_only ();
@@ -1246,13 +1182,13 @@ findmaxrev (p, closure)
* link to keep it relative after we move it into the attic.
*/
static int
-remove_file (file, repository, tag, message, entries, srcfiles)
+remove_file (file, repository, tag, message, entries, rcsnode)
char *file;
char *repository;
char *tag;
char *message;
List *entries;
- List *srcfiles;
+ RCSNode *rcsnode;
{
mode_t omask;
int retcode;
@@ -1264,8 +1200,6 @@ remove_file (file, repository, tag, message, entries, srcfiles)
char *corev;
char *rev;
char *prev_rev;
- Node *p;
- RCSNode *rcsfile;
corev = NULL;
rev = NULL;
@@ -1276,7 +1210,7 @@ remove_file (file, repository, tag, message, entries, srcfiles)
locate_rcs (file, repository, rcs);
branch = 0;
- if (tag && !(branch = RCS_isbranch (file, tag, srcfiles)))
+ if (tag && !(branch = RCS_isbranch (rcsnode, tag)))
{
/* a symbolic tag is specified; just remove the tag from the file */
if ((retcode = RCS_deltag (rcs, tag, 1)) != 0)
@@ -1302,26 +1236,24 @@ remove_file (file, repository, tag, message, entries, srcfiles)
{
char *branchname;
- rev = RCS_whatbranch (file, tag, srcfiles);
+ rev = RCS_whatbranch (rcsnode, tag);
if (rev == NULL)
{
error (0, 0, "cannot find branch \"%s\".", tag);
return (1);
}
- p = findnode (srcfiles, file);
- if (p == NULL)
+ if (rcsnode == NULL)
{
error (0, 0, "boy, I'm confused.");
return (1);
}
- rcsfile = (RCSNode *) p->data;
- branchname = RCS_getbranch (rcsfile, rev, 1);
+ branchname = RCS_getbranch (rcsnode, rev, 1);
if (branchname == NULL)
{
/* no revision exists on this branch. use the previous
revision but do not lock. */
- corev = RCS_gettag (rcsfile, tag, 1, 0);
+ corev = RCS_gettag (rcsnode, tag, 1, 0);
prev_rev = xstrdup(rev);
lockflag = 0;
} else
@@ -1335,14 +1267,12 @@ remove_file (file, repository, tag, message, entries, srcfiles)
{
/* Get current head revision of file. */
- p = findnode (srcfiles, file);
- if (p == NULL)
+ if (rcsnode == NULL)
{
error (0, 0, "could not find parsed rcsfile %s", file);
return (1);
}
- rcsfile = (RCSNode *) p->data;
- prev_rev = RCS_head (rcsfile);
+ prev_rev = RCS_head (rcsnode);
}
/* if removing without a tag or a branch, then make sure the default
@@ -1532,12 +1462,12 @@ fixbranch (file, repository, branch)
*/
static int
-checkaddfile (file, repository, tag, options, srcfiles)
+checkaddfile (file, repository, tag, options, rcsnode)
char *file;
char *repository;
char *tag;
char *options;
- List *srcfiles;
+ RCSNode **rcsnode;
{
char rcs[PATH_MAX];
char fname[PATH_MAX];
@@ -1562,7 +1492,6 @@ checkaddfile (file, repository, tag, options, srcfiles)
/* file has existed in the past. Prepare to resurrect. */
char oldfile[PATH_MAX];
char *rev;
- Node *p;
RCSNode *rcsfile;
if (tag == NULL)
@@ -1583,14 +1512,12 @@ checkaddfile (file, repository, tag, options, srcfiles)
}
}
- p = findnode (srcfiles, file);
- if (p == NULL)
+ if ((rcsfile = *rcsnode) == NULL)
{
error (0, 0, "could not find parsed rcsfile %s", file);
return (1);
}
- rcsfile = (RCSNode *) p->data;
rev = RCS_getversion (rcsfile, tag, NULL, 1, 0);
/* and lock it */
if (lock_RCS (file, rcs, rev, repository)) {
@@ -1663,7 +1590,6 @@ checkaddfile (file, repository, tag, options, srcfiles)
{
/* when adding with a tag, we need to stub a branch, if it
doesn't already exist. */
- Node *p;
RCSNode *rcsfile;
rcsfile = RCS_parse (file, repository);
@@ -1673,7 +1599,7 @@ checkaddfile (file, repository, tag, options, srcfiles)
return (1);
}
- if (!RCS_nodeisbranch (tag, rcsfile)) {
+ if (!RCS_nodeisbranch (rcsfile, tag)) {
/* branch does not exist. Stub it. */
char *head;
char *magicrev;
@@ -1707,17 +1633,11 @@ checkaddfile (file, repository, tag, options, srcfiles)
error (0, 0, "cannot lock `%s'.", rcs);
return (1);
}
- }
-
- /* add (replace) this rcs file to our list */
- p = findnode (srcfiles, file);
-
- if (p != NULL)
- freercsnode((RCSNode **) &p->data);
-
- delnode(p);
+ }
- RCS_addnode (file, rcsfile, srcfiles);
+ if (rcsnode)
+ freercsnode(rcsnode);
+ *rcsnode = rcsfile;
}
fileattr_newfile (file);
diff --git a/gnu/usr.bin/cvs/src/cvs.h b/gnu/usr.bin/cvs/src/cvs.h
index d1f091529db..38fb5fb3c66 100644
--- a/gnu/usr.bin/cvs/src/cvs.h
+++ b/gnu/usr.bin/cvs/src/cvs.h
@@ -118,6 +118,23 @@ extern int errno;
* Definitions for the CVS Administrative directory and the files it contains.
* Here as #define's to make changing the names a simple task.
*/
+
+#ifdef USE_VMS_FILENAMES
+#define CVSADM "CVS"
+#define CVSADM_ENT "CVS/Entries."
+#define CVSADM_ENTBAK "CVS/Entries.Backup"
+#define CVSADM_ENTLOG "CVS/Entries.Log"
+#define CVSADM_ENTSTAT "CVS/Entries.Static"
+#define CVSADM_REP "CVS/Repository."
+#define CVSADM_ROOT "CVS/Root."
+#define CVSADM_CIPROG "CVS/Checkin.prog"
+#define CVSADM_UPROG "CVS/Update.prog"
+#define CVSADM_TAG "CVS/Tag."
+#define CVSADM_NOTIFY "CVS/Notify."
+#define CVSADM_NOTIFYTMP "CVS/Notify.tmp"
+#define CVSADM_BASE "CVS/Base"
+#define CVSADM_TEMPLATE "CVS/Template."
+#else /* USE_VMS_FILENAMES */
#define CVSADM "CVS"
#define CVSADM_ENT "CVS/Entries"
#define CVSADM_ENTBAK "CVS/Entries.Backup"
@@ -133,6 +150,9 @@ extern int errno;
/* A directory in which we store base versions of files we currently are
editing with "cvs edit". */
#define CVSADM_BASE "CVS/Base"
+/* File which contains the template for use in log messages. */
+#define CVSADM_TEMPLATE "CVS/Template"
+#endif /* USE_VMS_FILENAMES */
/* This is the special directory which we use to store various extra
per-directory information in the repository. It must be the same as
@@ -167,10 +187,6 @@ extern int errno;
#define CVSNULLREPOS "Emptydir" /* an empty directory */
-/* support for the modules file (CVSROOTADM_MODULES) */
-#define CVSMODULE_OPTS "ad:i:lo:e:s:t:u:"/* options in modules file */
-#define CVSMODULE_SPEC '&' /* special delimiter */
-
/* Other CVS file names */
/* Files go in the attic if the head main branch revision is dead,
@@ -181,7 +197,6 @@ extern int errno;
#define CVSATTIC "Attic"
#define CVSLCK "#cvs.lock"
-#define CVSTFL "#cvs.tfl"
#define CVSRFL "#cvs.rfl"
#define CVSWFL "#cvs.wfl"
#define CVSRFLPAT "#cvs.rfl.*" /* wildcard expr to match read locks */
@@ -195,10 +210,16 @@ extern int errno;
#define CVSLCKAGE (60*60) /* 1-hour old lock files cleaned up */
#define CVSLCKSLEEP 30 /* wait 30 seconds before retrying */
#define CVSBRANCH "1.1.1" /* RCS branch used for vendor srcs */
+
+#ifdef USE_VMS_FILENAMES
+#define BAKPREFIX "_$"
+#define DEVNULL "NLA0:"
+#else /* USE_VMS_FILENAMES */
#define BAKPREFIX ".#" /* when rcsmerge'ing */
#ifndef DEVNULL
#define DEVNULL "/dev/null"
#endif
+#endif /* USE_VMS_FILENAMES */
#define FALSE 0
#define TRUE 1
@@ -398,6 +419,7 @@ extern int logoff; /* Don't write history entry */
extern char hostname[];
/* Externs that are included directly in the CVS sources */
+
int RCS_settag PROTO((const char *, const char *, const char *));
int RCS_deltag PROTO((const char *, const char *, int));
int RCS_setbranch PROTO((const char *, const char *));
@@ -423,7 +445,7 @@ int RCS_checkin PROTO ((char *rcsfile, char *workfile, char *message,
DBM *open_module PROTO((void));
FILE *open_file PROTO((const char *, const char *));
-List *Find_Dirs PROTO((char *repository, int which));
+List *Find_Directories PROTO((char *repository, int which));
void Entries_Close PROTO((List *entries));
List *Entries_Open PROTO((int aflag));
char *Make_Date PROTO((char *rawdate));
@@ -436,7 +458,7 @@ char *gca PROTO((char *rev1, char *rev2));
char *getcaller PROTO((void));
char *time_stamp PROTO((char *file));
char *xmalloc PROTO((size_t bytes));
-char *xrealloc PROTO((char *ptr, size_t bytes));
+void *xrealloc PROTO((void *ptr, size_t bytes));
char *xstrdup PROTO((const char *str));
void strip_trailing_newlines PROTO((char *str));
int No_Difference PROTO((char *file, Vers_TS * vers, List * entries,
@@ -447,7 +469,6 @@ int Reader_Lock PROTO((char *xrepository));
typedef RETSIGTYPE (*SIGCLEANUPPROC) PROTO(());
int SIG_register PROTO((int sig, SIGCLEANUPPROC sigcleanup));
int Writer_Lock PROTO((List * list));
-int ign_name PROTO((char *name));
int isdir PROTO((const char *file));
int isfile PROTO((const char *file));
int islink PROTO((const char *file));
@@ -492,6 +513,7 @@ void fperror PROTO((FILE * fp, int status, int errnum, char *message,...));
void free_names PROTO((int *pargc, char *argv[]));
void freevers_ts PROTO((Vers_TS ** versp));
+extern int ign_name PROTO ((char *name));
void ign_add PROTO((char *ign, int hold));
void ign_add_file PROTO((char *file, int hold));
void ign_setup PROTO((void));
@@ -500,6 +522,7 @@ int ignore_directory PROTO((char *name));
typedef void (*Ignore_proc) PROTO ((char *, char *));
extern void ignore_files PROTO ((List *, char *, Ignore_proc));
extern int ign_inhibit_server;
+extern int ign_case;
#include "update.h"
@@ -507,6 +530,16 @@ void line2argv PROTO((int *pargc, char *argv[], char *line));
void make_directories PROTO((const char *name));
void make_directory PROTO((const char *name));
void rename_file PROTO((const char *from, const char *to));
+/* Expand wildcards in each element of (ARGC,ARGV). This is according to the
+ files which exist in the current directory, and accordingly to OS-specific
+ conventions regarding wildcard syntax. It might be desirable to change the
+ former in the future (e.g. "cvs status *.h" including files which don't exist
+ in the working directory). The result is placed in *PARGC and *PARGV;
+ the *PARGV array itself and all the strings it contains are newly
+ malloc'd. It is OK to call it with PARGC == &ARGC or PARGV == &ARGV. */
+extern void expand_wild PROTO ((int argc, char **argv,
+ int *pargc, char ***pargv));
+
void strip_path PROTO((char *path));
void strip_trailing_slashes PROTO((char *path));
void update_delproc PROTO((Node * p));
@@ -518,7 +551,7 @@ int Checkin PROTO((int type, char *file, char *update_dir,
char *tag, char *options, char *message, List *entries));
Ctype Classify_File PROTO((char *file, char *tag, char *date, char *options,
int force_tag_match, int aflag, char *repository,
- List *entries, List *srcfiles, Vers_TS **versp,
+ List *entries, RCSNode *rcsnode, Vers_TS **versp,
char *update_dir, int pipeout));
List *Find_Names PROTO((char *repository, int which, int aflag,
List ** optentries));
@@ -528,7 +561,7 @@ void Update_Logfile PROTO((char *repository, char *xmessage, char *xrevision,
FILE * xlogfp, List * xchanges));
Vers_TS *Version_TS PROTO((char *repository, char *options, char *tag,
char *date, char *user, int force_tag_match,
- int set_time, List * entries, List * xfiles));
+ int set_time, List * entries, RCSNode * rcs));
void do_editor PROTO((char *dir, char **messagep,
char *repository, List * changes));
@@ -550,6 +583,11 @@ struct file_info
in which the command was issued, this is "". */
char *update_dir;
+ /* update_dir and file put together, with a slash between them as
+ necessary. This is the proper way to refer to the file in user
+ messages. */
+ char *fullname;
+
/* Name of the directory corresponding to the repository which contains
this file. */
char *repository;
@@ -557,9 +595,7 @@ struct file_info
/* The pre-parsed entries for this directory. */
List *entries;
- /* The pre-parsed versions of the RCS files. This is filled in only
- if dosrcs was passed as nonzero to start_recursion. */
- List *srcfiles;
+ RCSNode *rcs;
};
typedef int (*FILEPROC) PROTO((struct file_info *finfo));
@@ -568,6 +604,7 @@ typedef Dtype (*DIRENTPROC) PROTO((char *dir, char *repos, char *update_dir));
typedef int (*DIRLEAVEPROC) PROTO((char *dir, int err, char *update_dir));
extern int mkmodules PROTO ((char *dir));
+extern int init PROTO ((int argc, char **argv));
int do_module PROTO((DBM * db, char *mname, enum mtype m_type, char *msg,
CALLBACKPROC callback_proc, char *where, int shorten,
@@ -585,7 +622,7 @@ int start_recursion PROTO((FILEPROC fileproc, FILESDONEPROC filesdoneproc,
int dosrcs, int wd_is_repos));
void SIG_beginCrSect PROTO((void));
void SIG_endCrSect PROTO((void));
-void read_cvsrc PROTO((int *argc, char ***argv));
+void read_cvsrc PROTO((int *argc, char ***argv, char *cmdname));
char *make_message_rcslegal PROTO((char *message));
@@ -643,6 +680,7 @@ int edit PROTO ((int argc, char **argv));
int unedit PROTO ((int argc, char **argv));
int editors PROTO ((int argc, char **argv));
int watchers PROTO ((int argc, char **argv));
+extern int annotate PROTO ((int argc, char **argv));
#if defined(AUTH_CLIENT_SUPPORT) || defined(AUTH_SERVER_SUPPORT)
char *scramble PROTO ((char *str));
diff --git a/gnu/usr.bin/cvs/src/ignore.c b/gnu/usr.bin/cvs/src/ignore.c
index 5f150a802bc..7d947cb8941 100644
--- a/gnu/usr.bin/cvs/src/ignore.c
+++ b/gnu/usr.bin/cvs/src/ignore.c
@@ -22,7 +22,9 @@ static int ign_size; /* This many slots available (plus
static int ign_hold = -1; /* Index where first "temporary" item
* is held, -1 if none. */
-const char *ign_default = ". .. core RCSLOG tags TAGS RCS SCCS .make.state .nse_depinfo #* .#* cvslog.* ,* CVS CVS.adm .del-* *.a *.o *.obj *.so *.Z *~ *.old *.elc *.ln *.bak *.BAK *.orig *.rej";
+const char *ign_default = ". .. core RCSLOG tags TAGS RCS SCCS .make.state\
+ .nse_depinfo #* .#* cvslog.* ,* CVS CVS.adm .del-* *.a *.olb *.o *.obj\
+ *.so *.Z *~ *.old *.elc *.ln *.bak *.BAK *.orig *.rej *.exe _$* *$";
#define IGN_GROW 16 /* grow the list by 16 elements at a
* time */
@@ -228,6 +230,10 @@ ign_add (ign, hold)
}
}
+/* Set to 1 if ignore file patterns should be matched in a case-insensitive
+ fashion. */
+int ign_case;
+
/* Return 1 if the given filename should be ignored by update or import. */
int
ign_name (name)
@@ -238,12 +244,44 @@ ign_name (name)
if (cpp == NULL)
return (0);
- while (*cpp)
- if (fnmatch (*cpp++, name, 0) == 0)
- return (1);
- return (0);
+ if (ign_case)
+ {
+ /* We do a case-insensitive match by calling fnmatch on copies of
+ the pattern and the name which have been converted to
+ lowercase. */
+ char *name_lower;
+ char *pat_lower;
+ char *p;
+
+ name_lower = xstrdup (name);
+ for (p = name_lower; *p != '\0'; ++p)
+ *p = tolower (*p);
+ while (*cpp)
+ {
+ pat_lower = xstrdup (*cpp++);
+ for (p = pat_lower; *p != '\0'; ++p)
+ *p = tolower (*p);
+ if (fnmatch (pat_lower, name_lower, 0) == 0)
+ goto matched;
+ free (pat_lower);
+ }
+ free (name_lower);
+ return 0;
+ matched:
+ free (name_lower);
+ free (pat_lower);
+ return 1;
+ }
+ else
+ {
+ while (*cpp)
+ if (fnmatch (*cpp++, name, 0) == 0)
+ return 1;
+ return 0;
+ }
}
-
+
+/* FIXME: This list of dirs to ignore stuff seems not to be used. */
static char **dir_ign_list = NULL;
static int dir_ign_max = 0;
@@ -287,7 +325,7 @@ int ignore_directory (name)
return 0;
}
-
+
/*
* Process the current directory, looking for files not in ILIST and not on
* the global ignore list for this directory. If we find one, call PROC
diff --git a/gnu/usr.bin/cvs/src/lock.c b/gnu/usr.bin/cvs/src/lock.c
index 89460baf744..5e1d22e2de9 100644
--- a/gnu/usr.bin/cvs/src/lock.c
+++ b/gnu/usr.bin/cvs/src/lock.c
@@ -19,7 +19,7 @@ static void set_lockers_name PROTO((struct stat *statp));
static int set_writelock_proc PROTO((Node * p, void *closure));
static int unlock_proc PROTO((Node * p, void *closure));
static int write_lock PROTO((char *repository));
-static void unlock PROTO((char *repository));
+static void lock_simple_remove PROTO((char *repository));
static void lock_wait PROTO((char *repository));
static int Check_Owner PROTO((char *lockdir));
@@ -42,7 +42,7 @@ Lock_Cleanup ()
/* clean up simple locks (if any) */
if (repository != NULL)
{
- unlock (repository);
+ lock_simple_remove (repository);
repository = (char *) NULL;
}
@@ -62,7 +62,7 @@ unlock_proc (p, closure)
Node *p;
void *closure;
{
- unlock (p->key);
+ lock_simple_remove (p->key);
return (0);
}
@@ -70,7 +70,7 @@ unlock_proc (p, closure)
* Remove the lock files (without complaining if they are not there),
*/
static void
-unlock (repository)
+lock_simple_remove (repository)
char *repository;
{
char tmp[PATH_MAX];
@@ -166,37 +166,15 @@ Reader_Lock (xrepository)
if (readlock[0] == '\0')
(void) sprintf (readlock,
#ifdef HAVE_LONG_FILE_NAMES
- "%s.%s.%d", CVSRFL, hostname,
+ "%s.%s.%ld", CVSRFL, hostname,
#else
- "%s.%d", CVSRFL,
+ "%s.%ld", CVSRFL,
#endif
- getpid ());
+ (long) getpid ());
/* remember what we're locking (for lock_cleanup) */
repository = xrepository;
-#ifdef BOGUS_UNLESS_PROVEN_OTHERWISE
- /* make sure we can write the repository */
- (void) sprintf (tmp,
-#ifdef HAVE_LONG_FILE_NAMES
- "%s/%s.%s.%d", xrepository, CVSTFL, hostname,
-#else
- "%s/%s.%d", xrepository, CVSTFL,
-#endif
- getpid());
- if ((fp = fopen (tmp, "w+")) == NULL || fclose (fp) == EOF)
- {
- error (0, errno, "cannot create read lock in repository `%s'",
- xrepository);
- readlock[0] = '\0';
- if (unlink (tmp) < 0 && ! existence_error (errno))
- error (0, errno, "failed to remove lock %s", tmp);
- return (1);
- }
- if (unlink (tmp) < 0)
- error (0, errno, "failed to remove lock %s", tmp);
-#endif
-
/* get the lock dir for our own */
if (set_lock (xrepository, 1) != L_OK)
{
@@ -307,32 +285,11 @@ write_lock (repository)
if (writelock[0] == '\0')
(void) sprintf (writelock,
#ifdef HAVE_LONG_FILE_NAMES
- "%s.%s.%d", CVSWFL, hostname,
-#else
- "%s.%d", CVSWFL,
-#endif
- getpid());
-
-#ifdef BOGUS_UNLESS_PROVEN_OTHERWISE
- /* make sure we can write the repository */
- (void) sprintf (tmp,
-#ifdef HAVE_LONG_FILE_NAMES
- "%s/%s.%s.%d", repository, CVSTFL, hostname,
+ "%s.%s.%ld", CVSWFL, hostname,
#else
- "%s/%s.%d", repository, CVSTFL,
-#endif
- getpid ());
- if ((fp = fopen (tmp, "w+")) == NULL || fclose (fp) == EOF)
- {
- error (0, errno, "cannot create write lock in repository `%s'",
- repository);
- if (unlink (tmp) < 0 && ! existence_error (errno))
- error (0, errno, "failed to remove lock %s", tmp);
- return (L_ERROR);
- }
- if (unlink (tmp) < 0)
- error (0, errno, "failed to remove lock %s", tmp);
+ "%s.%ld", CVSWFL,
#endif
+ (long) getpid());
/* make sure the lock dir is ours (not necessarily unique to us!) */
status = set_lock (repository, 0);
diff --git a/gnu/usr.bin/cvs/src/main.c b/gnu/usr.bin/cvs/src/main.c
index 2b232585210..dafe689f85d 100644
--- a/gnu/usr.bin/cvs/src/main.c
+++ b/gnu/usr.bin/cvs/src/main.c
@@ -35,6 +35,12 @@
#include "cvs.h"
+#ifdef HAVE_WINSOCK_H
+#include <winsock.h>
+#else
+extern int gethostname ();
+#endif
+
#if HAVE_KERBEROS
#include <sys/socket.h>
#include <netinet/in.h>
@@ -50,7 +56,7 @@ char *program_path;
* Initialize comamnd_name to "cvs" so that the first call to
* read_cvsrc tries to find global cvs options.
*/
-char *command_name = "cvs";
+char *command_name = "";
/*
* Since some systems don't define this...
@@ -127,6 +133,7 @@ const struct cmd
CMD_ENTRY("add", "ad", "new", add, client_add),
CMD_ENTRY("admin", "adm", "rcs", admin, client_admin),
+ CMD_ENTRY("annotate", NULL, NULL, annotate, client_annotate),
CMD_ENTRY("checkout", "co", "get", checkout, client_checkout),
CMD_ENTRY("commit", "ci", "com", commit, client_commit),
CMD_ENTRY("diff", "di", "dif", diff, client_diff),
@@ -135,6 +142,7 @@ const struct cmd
CMD_ENTRY("export", "exp", "ex", checkout, client_export),
CMD_ENTRY("history", "hi", "his", history, client_history),
CMD_ENTRY("import", "im", "imp", import, client_import),
+ CMD_ENTRY("init", NULL, NULL, init, client_init),
CMD_ENTRY("log", "lo", "rlog", cvslog, client_log),
#ifdef AUTH_CLIENT_SUPPORT
CMD_ENTRY("login", "logon", "lgn", login, login),
@@ -194,6 +202,7 @@ static const char *const cmd_usage[] =
"CVS commands are:\n",
" add Adds a new file/directory to the repository\n",
" admin Administration front end for rcs\n",
+ " annotate Show revision where each line was modified\n",
" checkout Checkout sources for editing\n",
" commit Checks files into the repository\n",
" diff Runs diffs between revisions\n",
@@ -244,7 +253,7 @@ main_cleanup (sig)
break;
}
- error (1, 0, "received %s signal", name);
+ error (EXIT_FAILURE, 0, "received %s signal", name);
}
static void
@@ -362,7 +371,7 @@ main (argc, argv)
* Scan cvsrc file for global options.
*/
if (use_cvsrc)
- read_cvsrc(&argc, &argv);
+ read_cvsrc (&argc, &argv, "cvs");
optind = 1;
opterr = 1;
@@ -486,7 +495,7 @@ main (argc, argv)
{
printf ("E Fatal error, aborting.\n\
error %s getpeername or getsockname failed\n", strerror (errno));
- exit (1);
+ exit (EXIT_FAILURE);
}
status = krb_recvauth (KOPT_DO_MUTUAL, STDIN_FILENO, &ticket, "rcmd",
@@ -496,7 +505,7 @@ error %s getpeername or getsockname failed\n", strerror (errno));
{
printf ("E Fatal error, aborting.\n\
error 0 kerberos: %s\n", krb_get_err_text(status));
- exit (1);
+ exit (EXIT_FAILURE);
}
/* Get the local name. */
@@ -505,7 +514,7 @@ error 0 kerberos: %s\n", krb_get_err_text(status));
{
printf ("E Fatal error, aborting.\n\
error 0 kerberos: can't get local name: %s\n", krb_get_err_text(status));
- exit (1);
+ exit (EXIT_FAILURE);
}
pw = getpwnam (user);
@@ -513,7 +522,7 @@ error 0 kerberos: can't get local name: %s\n", krb_get_err_text(status));
{
printf ("E Fatal error, aborting.\n\
error 0 %s: no such user\n", user);
- exit (1);
+ exit (EXIT_FAILURE);
}
initgroups (pw->pw_name, pw->pw_gid);
@@ -643,16 +652,22 @@ error 0 %s: no such user\n", user);
if (!isaccessible (path, R_OK | X_OK))
{
save_errno = errno;
+ /* If this is "cvs init", the root need not exist yet. */
+ if (strcmp (command_name, "init") != 0
#ifdef CLIENT_SUPPORT
- if (strchr (CVSroot, ':') == NULL)
- {
+ /* If we are a remote client, the root need not exist
+ on the client machine (FIXME: we should also skip
+ the check for CVSROOTADM_HISTORY being writable;
+ it shouldn't matter if there is a read-only file
+ which happens to have the same name on the client
+ machine). */
+ && strchr (CVSroot, ':') == NULL)
#endif
+ {
error (0, 0,
"Sorry, you don't have sufficient access to %s", CVSroot);
error (1, save_errno, "%s", path);
-#ifdef CLIENT_SUPPORT
}
-#endif
}
(void) strcat (path, "/");
(void) strcat (path, CVSROOTADM_HISTORY);
@@ -766,7 +781,7 @@ error 0 %s: no such user\n", user);
#endif
if (use_cvsrc)
- read_cvsrc(&argc, &argv);
+ read_cvsrc (&argc, &argv, command_name);
#ifdef CLIENT_SUPPORT
/* If cvsroot contains a colon, try to do it via the protocol. */
@@ -782,14 +797,10 @@ error 0 %s: no such user\n", user);
#endif /* No CLIENT_SUPPORT */
}
- /*
- * If the command's error count is modulo 256, we need to change it
- * so that we don't overflow the 8-bits we get to report exit status
- */
- if (err && (err % 256) == 0)
- err = 1;
Lock_Cleanup ();
- return (err);
+ if (err)
+ return (EXIT_FAILURE);
+ return 0;
}
char *
@@ -824,5 +835,5 @@ usage (cpp)
(void) fprintf (stderr, *cpp++, program_name, command_name);
for (; *cpp; cpp++)
(void) fprintf (stderr, *cpp);
- exit (1);
+ exit (EXIT_FAILURE);
}
diff --git a/gnu/usr.bin/cvs/src/patch.c b/gnu/usr.bin/cvs/src/patch.c
index 2878a1f2f7c..97977344e48 100644
--- a/gnu/usr.bin/cvs/src/patch.c
+++ b/gnu/usr.bin/cvs/src/patch.c
@@ -336,9 +336,8 @@ patch_fileproc (finfo)
{
struct utimbuf t;
char *vers_tag, *vers_head;
- char rcsspace[PATH_MAX];
- char *rcs = rcsspace;
- Node *p;
+ char rcsspace[1][PATH_MAX];
+ char *rcs = rcsspace[0];
RCSNode *rcsfile;
FILE *fp1, *fp2, *fp3;
int ret = 0;
@@ -348,14 +347,12 @@ patch_fileproc (finfo)
char *line1, *line2;
size_t line1_chars_allocated;
size_t line2_chars_allocated;
- char *cp1, *cp2, *commap;
+ char *cp1, *cp2;
FILE *fp;
/* find the parsed rcs file */
- p = findnode (finfo->srcfiles, finfo->file);
- if (p == NULL)
+ if ((rcsfile = finfo->rcs) == NULL)
return (1);
- rcsfile = (RCSNode *) p->data;
if ((rcsfile->flags & VALID) && (rcsfile->flags & INATTIC))
isattic = 1;
@@ -393,12 +390,12 @@ patch_fileproc (finfo)
if (patch_short)
{
- (void) printf ("File ");
+ (void) printf ("File %s ", finfo->fullname);
if (vers_tag == NULL)
- (void) printf ("%s is new; current revision %s\n", rcs, vers_head);
+ (void) printf ("is new; current revision %s\n", vers_head);
else if (vers_head == NULL)
{
- (void) printf ("%s is removed; not included in ", rcs);
+ (void) printf ("is removed; not included in ");
if (rev2 != NULL)
(void) printf ("release tag %s", rev2);
else if (date2 != NULL)
@@ -408,8 +405,8 @@ patch_fileproc (finfo)
(void) printf ("\n");
}
else
- (void) printf ("%s changed from revision %s to %s\n",
- rcs, vers_tag, vers_head);
+ (void) printf ("changed from revision %s to %s\n",
+ vers_tag, vers_head);
return (0);
}
if ((fp1 = fopen (tmpnam (tmpfile1), "w+")) != NULL)
@@ -486,10 +483,7 @@ patch_fileproc (finfo)
/* Output an "Index:" line for patch to use */
(void) fflush (stdout);
- if (finfo->update_dir[0])
- (void) printf ("Index: %s/%s\n", finfo->update_dir, finfo->file);
- else
- (void) printf ("Index: %s\n", finfo->file);
+ (void) printf ("Index: %s\n", finfo->fullname);
(void) fflush (stdout);
fp = open_file (tmpfile3, "r");
@@ -534,20 +528,20 @@ patch_fileproc (finfo)
(void) strcpy (strippath, REPOS_STRIP);
if (strncmp (rcs, strippath, strlen (strippath)) == 0)
rcs += strlen (strippath);
- commap = strrchr (rcs, ',');
- *commap = '\0';
if (vers_tag != NULL)
{
- (void) sprintf (file1, "%s%s%s:%s", finfo->update_dir,
- finfo->update_dir[0] ? "/" : "", rcs, vers_tag);
+ (void) sprintf (file1, "%s:%s", finfo->fullname, vers_tag);
}
else
{
(void) strcpy (file1, DEVNULL);
}
- (void) sprintf (file2, "%s%s%s:%s", finfo->update_dir,
- finfo->update_dir[0] ? "/" : "", rcs,
+ (void) sprintf (file2, "%s:%s", finfo->fullname,
vers_head ? vers_head : "removed");
+
+ /* Note that this prints "diff" not DIFF. The format of a diff
+ does not depend on the name of the program which happens to
+ have produced it. */
if (unidiff)
{
(void) printf ("diff -u %s %s\n", file1, file2);
@@ -559,16 +553,14 @@ patch_fileproc (finfo)
(void) printf ("*** %s%s--- ", file1, cp1);
}
- if (finfo->update_dir[0] != '\0')
- (void) printf ("%s/", finfo->update_dir);
- (void) printf ("%s%s", rcs, cp2);
+ (void) printf ("%s%s", finfo->fullname, cp2);
/* spew the rest of the diff out */
while (getline (&line1, &line1_chars_allocated, fp) >= 0)
(void) fputs (line1, stdout);
(void) fclose (fp);
break;
default:
- error (0, 0, "diff failed for %s", rcs);
+ error (0, 0, "diff failed for %s", finfo->fullname);
}
out:
if (line1)
diff --git a/gnu/usr.bin/cvs/src/server.c b/gnu/usr.bin/cvs/src/server.c
index 1577e1571d5..0fc7ce00546 100644
--- a/gnu/usr.bin/cvs/src/server.c
+++ b/gnu/usr.bin/cvs/src/server.c
@@ -27,8 +27,10 @@
#ifdef AUTH_SERVER_SUPPORT
/* For initgroups(). */
+#if HAVE_INITGROUPS
#include <grp.h>
-#endif
+#endif /* HAVE_INITGROUPS */
+#endif /* AUTH_SERVER_SUPPORT */
/* Functions which the server calls. */
@@ -270,7 +272,7 @@ serve_valid_responses (arg)
{
printf ("E response `%s' not supported by client\nerror \n",
rs->name);
- exit (1);
+ exit (EXIT_FAILURE);
}
else if (rs->status == rs_optional)
rs->status = rs_not_supported;
@@ -676,7 +678,8 @@ receive_file (size, file, gzipped)
if (gzip_pid)
{
if (waitpid (gzip_pid, &gzip_status, 0) != gzip_pid)
- error (1, errno, "waiting for gunzip process %d", gzip_pid);
+ error (1, errno, "waiting for gunzip process %ld",
+ (long) gzip_pid);
else if (gzip_status != 0)
error (1, 0, "gunzip exited %d", gzip_status);
}
@@ -2185,6 +2188,15 @@ serve_questionable (arg)
buf_output (&buf_to_net, "\n", 1);
}
}
+
+static void serve_case PROTO ((char *));
+
+static void
+serve_case (arg)
+ char *arg;
+{
+ ign_case = 1;
+}
static struct buffer protocol;
@@ -2226,7 +2238,7 @@ error ENOMEM Virtual memory exhausted.\n";
/* If this gives an error, not much we could do. syslog() it? */
write (STDOUT_FILENO, msg, sizeof (msg) - 1);
server_cleanup (0);
- exit (1);
+ exit (EXIT_FAILURE);
}
static void
@@ -3207,6 +3219,32 @@ serve_noop (arg)
{
do_cvs_command (noop);
}
+
+static void serve_init PROTO ((char *));
+
+static void
+serve_init (arg)
+ char *arg;
+{
+ CVSroot = malloc (strlen (arg) + 1);
+ if (CVSroot == NULL)
+ {
+ pending_error = ENOMEM;
+ return;
+ }
+ strcpy (CVSroot, arg);
+
+ do_cvs_command (init);
+}
+
+static void serve_annotate PROTO ((char *));
+
+static void
+serve_annotate (arg)
+ char *arg;
+{
+ do_cvs_command (annotate);
+}
static void
serve_co (arg)
@@ -3382,6 +3420,10 @@ server_updated (file, update_dir, repository, updated, file_info, checksum)
size = 0;
if (sb.st_size > 0)
{
+ /* Throughout this section we use binary mode to read the
+ file we are sending. The client handles any line ending
+ translation if necessary. */
+
if (gzip_level
/*
* For really tiny files, the gzip process startup
@@ -3394,11 +3436,11 @@ server_updated (file, update_dir, repository, updated, file_info, checksum)
int status, fd, gzip_status;
pid_t gzip_pid;
- fd = open (file, O_RDONLY, 0);
+ fd = open (file, O_RDONLY | OPEN_BINARY, 0);
if (fd < 0)
error (1, errno, "reading %s", short_pathname);
fd = filter_through_gzip (fd, 1, gzip_level, &gzip_pid);
- f = fdopen (fd, "r");
+ f = fdopen (fd, "rb");
status = buf_read_file_to_eof (f, &list, &last);
size = buf_chain_length (list);
if (status == -2)
@@ -3409,7 +3451,8 @@ server_updated (file, update_dir, repository, updated, file_info, checksum)
if (fclose (f) == EOF)
error (1, errno, "reading %s", short_pathname);
if (waitpid (gzip_pid, &gzip_status, 0) == -1)
- error (1, errno, "waiting for gzip process %d", gzip_pid);
+ error (1, errno, "waiting for gzip process %ld",
+ (long) gzip_pid);
else if (gzip_status != 0)
error (1, 0, "gzip exited %d", gzip_status);
/* Prepending length with "z" is flag for using gzip here. */
@@ -3420,7 +3463,7 @@ server_updated (file, update_dir, repository, updated, file_info, checksum)
long status;
size = sb.st_size;
- f = fopen (file, "r");
+ f = fopen (file, "rb");
if (f == NULL)
error (1, errno, "reading %s", short_pathname);
status = buf_read_file (f, sb.st_size, &list, &last);
@@ -3561,7 +3604,76 @@ server_set_sticky (update_dir, repository, tag, date)
}
buf_send_counted (&protocol);
}
+
+struct template_proc_data
+{
+ char *update_dir;
+ char *repository;
+};
+
+/* Here as a static until we get around to fixing Parse_Info to pass along
+ a void * for it. */
+static struct template_proc_data *tpd;
+
+static int
+template_proc (repository, template)
+ char *repository;
+ char *template;
+{
+ FILE *fp;
+ char buf[1024];
+ size_t n;
+ struct stat sb;
+ struct template_proc_data *data = tpd;
+
+ if (!supported_response ("Template"))
+ /* Might want to warn the user that the rcsinfo feature won't work. */
+ return 0;
+ buf_output0 (&protocol, "Template ");
+ output_dir (data->update_dir, data->repository);
+ buf_output0 (&protocol, "\n");
+
+ fp = fopen (template, "rb");
+ if (fp == NULL)
+ {
+ error (0, errno, "Couldn't open rcsinfo template file %s", template);
+ return 1;
+ }
+ if (fstat (fileno (fp), &sb) < 0)
+ {
+ error (0, errno, "cannot stat rcsinfo template file %s", template);
+ return 1;
+ }
+ sprintf (buf, "%ld\n", (long) sb.st_size);
+ buf_output0 (&protocol, buf);
+ while (!feof (fp))
+ {
+ n = fread (buf, 1, sizeof buf, fp);
+ buf_output (&protocol, buf, n);
+ if (ferror (fp))
+ {
+ error (0, errno, "cannot read rcsinfo template file %s", template);
+ (void) fclose (fp);
+ return 1;
+ }
+ }
+ if (fclose (fp) < 0)
+ error (0, errno, "cannot close rcsinfo template file %s", template);
+ return 0;
+}
+void
+server_template (update_dir, repository)
+ char *update_dir;
+ char *repository;
+{
+ struct template_proc_data data;
+ data.update_dir = update_dir;
+ data.repository = repository;
+ tpd = &data;
+ (void) Parse_Info (CVSROOTADM_RCSINFO, repository, template_proc, 1);
+}
+
static void
serve_gzip_contents (arg)
char *arg;
@@ -3786,6 +3898,7 @@ struct request requests[] =
REQ_LINE("Unchanged", serve_unchanged, rq_optional),
REQ_LINE("Notify", serve_notify, rq_optional),
REQ_LINE("Questionable", serve_questionable, rq_optional),
+ REQ_LINE("Case", serve_case, rq_optional),
REQ_LINE("Argument", serve_argument, rq_essential),
REQ_LINE("Argumentx", serve_argumentx, rq_essential),
REQ_LINE("Global_option", serve_global_option, rq_optional),
@@ -3815,6 +3928,8 @@ struct request requests[] =
REQ_LINE("watch-remove", serve_watch_remove, rq_optional),
REQ_LINE("watchers", serve_watchers, rq_optional),
REQ_LINE("editors", serve_editors, rq_optional),
+ REQ_LINE("init", serve_init, rq_optional),
+ REQ_LINE("annotate", serve_annotate, rq_optional),
REQ_LINE("noop", serve_noop, rq_optional),
REQ_LINE(NULL, NULL, rq_optional)
@@ -4010,7 +4125,7 @@ server (argc, argv)
{
printf ("E Fatal server error, aborting.\n\
error ENOMEM Virtual memory exhausted.\n");
- exit (1);
+ exit (EXIT_FAILURE);
}
putenv (env);
}
@@ -4034,7 +4149,7 @@ error ENOMEM Virtual memory exhausted.\n");
*/
printf ("E Fatal server error, aborting.\n\
error ENOMEM Virtual memory exhausted.\n");
- exit (1);
+ exit (EXIT_FAILURE);
}
strcpy (server_temp_dir, temp_dir);
@@ -4051,7 +4166,7 @@ error ENOMEM Virtual memory exhausted.\n");
strcat (server_temp_dir, "/cvs-serv");
p = server_temp_dir + strlen (server_temp_dir);
- sprintf (p, "%d", getpid ());
+ sprintf (p, "%ld", (long) getpid ());
}
(void) SIG_register (SIGHUP, server_cleanup);
@@ -4074,7 +4189,7 @@ error ENOMEM Virtual memory exhausted.\n");
*/
printf ("E Fatal server error, aborting.\n\
error ENOMEM Virtual memory exhausted.\n");
- exit (1);
+ exit (EXIT_FAILURE);
}
argument_count = 1;
@@ -4243,50 +4358,51 @@ check_repository_password (username, password, repository, host_user_ptr)
/* Return a hosting username if password matches, else NULL. */
char *
check_password (username, password, repository)
- char *username, *password, *repository;
+ char *username, *password, *repository;
{
- int rc;
- char *host_user;
+ int rc;
+ char *host_user;
- /* First we see if this user has a password in the CVS-specific
- password file. If so, that's enough to authenticate with. If
- not, we'll check /etc/passwd. */
+ /* First we see if this user has a password in the CVS-specific
+ password file. If so, that's enough to authenticate with. If
+ not, we'll check /etc/passwd. */
- rc = check_repository_password (username, password, repository, &host_user);
+ rc = check_repository_password (username, password, repository,
+ &host_user);
- if (rc == 1)
- return host_user;
- else if (rc == 2)
- return 0;
- else if (rc == 0)
+ if (rc == 1)
+ return host_user;
+ else if (rc == 2)
+ return 0;
+ else if (rc == 0)
{
- /* No cvs password found, so try /etc/passwd. */
+ /* No cvs password found, so try /etc/passwd. */
- struct passwd *pw;
- char *found_passwd;
+ struct passwd *pw;
+ char *found_passwd;
- pw = getpwnam (username);
- if (pw == NULL)
+ pw = getpwnam (username);
+ if (pw == NULL)
{
- printf ("E Fatal error, aborting.\n"
- "error 0 %s: no such user\n", username);
- exit (1);
- }
- found_passwd = pw->pw_passwd;
-
- if (found_passwd && *found_passwd)
- return (! strcmp (found_passwd, crypt (password, found_passwd))) ?
- username : NULL;
- else if (password && *password)
- return username;
- else
- return NULL;
+ printf ("E Fatal error, aborting.\n\
+error 0 %s: no such user\n", username);
+ exit (EXIT_FAILURE);
+ }
+ found_passwd = pw->pw_passwd;
+
+ if (found_passwd && *found_passwd)
+ return ((! strcmp (found_passwd, crypt (password, found_passwd)))
+ ? username : NULL);
+ else if (password && *password)
+ return username;
+ else
+ return NULL;
}
- else
+ else
{
- /* Something strange happened. We don't know what it was, but
- we certainly won't grant authorization. */
- return NULL;
+ /* Something strange happened. We don't know what it was, but
+ we certainly won't grant authorization. */
+ return NULL;
}
}
@@ -4395,7 +4511,7 @@ authenticate_connection ()
fflush (stdout);
memset (descrambled_password, 0, strlen (descrambled_password));
free (descrambled_password);
- exit (1);
+ exit (EXIT_FAILURE);
}
/* Don't go any farther if we're just responding to "cvs login". */
@@ -4411,7 +4527,10 @@ authenticate_connection ()
username);
}
+#if HAVE_INITGROUPS
initgroups (pw->pw_name, pw->pw_gid);
+#endif /* HAVE_INITGROUPS */
+
setgid (pw->pw_gid);
setuid (pw->pw_uid);
/* Inhibit access by randoms. Don't want people randomly
diff --git a/gnu/usr.bin/cvs/src/update.c b/gnu/usr.bin/cvs/src/update.c
index 84d406ccb70..eddfe5a9971 100644
--- a/gnu/usr.bin/cvs/src/update.c
+++ b/gnu/usr.bin/cvs/src/update.c
@@ -42,10 +42,10 @@
#include "edit.h"
static int checkout_file PROTO((char *file, char *repository, List *entries,
- List *srcfiles, Vers_TS *vers_ts, char *update_dir));
+ RCSNode *rcsnode, Vers_TS *vers_ts, char *update_dir));
#ifdef SERVER_SUPPORT
static int patch_file PROTO((char *file, char *repository, List *entries,
- List *srcfiles, Vers_TS *vers_ts, char *update_dir,
+ RCSNode*rcsnode, Vers_TS *vers_ts, char *update_dir,
int *docheckout, struct stat *file_info,
unsigned char *checksum));
#endif
@@ -61,10 +61,10 @@ static int update_filesdone_proc PROTO((int err, char *repository,
char *update_dir));
static int write_letter PROTO((char *file, int letter, char *update_dir));
#ifdef SERVER_SUPPORT
-static void join_file PROTO((char *file, List *srcfiles, Vers_TS *vers_ts,
+static void join_file PROTO((char *file, RCSNode *rcsnode, Vers_TS *vers_ts,
char *update_dir, List *entries, char *repository));
#else
-static void join_file PROTO((char *file, List *srcfiles, Vers_TS *vers_ts,
+static void join_file PROTO((char *file, RCSNode *rcsnode, Vers_TS *vers_ts,
char *update_dir, List *entries));
#endif
@@ -257,7 +257,7 @@ update (argc, argv)
if (failed_patches == NULL)
{
- send_file_names (argc, argv);
+ send_file_names (argc, argv, SEND_EXPAND_WILD);
send_files (argc, argv, local, aflag);
}
else
@@ -275,7 +275,7 @@ update (argc, argv)
for (i = 0; i < failed_patches_count; i++)
(void) unlink_file (failed_patches[i]);
- send_file_names (failed_patches_count, failed_patches);
+ send_file_names (failed_patches_count, failed_patches, 0);
send_files (failed_patches_count, failed_patches, local,
aflag);
}
@@ -439,7 +439,7 @@ update_fileproc (finfo)
Vers_TS *vers;
status = Classify_File (finfo->file, tag, date, options, force_tag_match,
- aflag, finfo->repository, finfo->entries, finfo->srcfiles, &vers,
+ aflag, finfo->repository, finfo->entries, finfo->rcs, &vers,
finfo->update_dir, pipeout);
if (pipeout)
{
@@ -469,7 +469,7 @@ update_fileproc (finfo)
#ifdef SERVER_SUPPORT
case T_PATCH: /* needs patch */
#endif
- retval = checkout_file (finfo->file, finfo->repository, finfo->entries, finfo->srcfiles,
+ retval = checkout_file (finfo->file, finfo->repository, finfo->entries, finfo->rcs,
vers, finfo->update_dir);
break;
@@ -505,7 +505,7 @@ update_fileproc (finfo)
/* Should we be warning the user that we are
* overwriting the user's copy of the file? */
retval = checkout_file (finfo->file, finfo->repository, finfo->entries,
- finfo->srcfiles, vers, finfo->update_dir);
+ finfo->rcs, vers, finfo->update_dir);
else
retval = merge_file (finfo->file, finfo->repository, finfo->entries,
vers, finfo->update_dir);
@@ -549,14 +549,9 @@ update_fileproc (finfo)
RUN_TTY,RUN_NORMAL);
if (retcode == -1)
{
- if (finfo->update_dir[0] == '\0')
- error (1, errno,
+ error (1, errno,
"fork failed while examining conflict in `%s'",
- finfo->file);
- else
- error (1, errno,
- "fork failed while examining conflict in `%s/%s'",
- finfo->update_dir, finfo->file);
+ finfo->fullname);
}
}
if (!retcode)
@@ -583,7 +578,7 @@ update_fileproc (finfo)
struct stat file_info;
unsigned char checksum[16];
- retval = patch_file (finfo->file, finfo->repository, finfo->entries, finfo->srcfiles,
+ retval = patch_file (finfo->file, finfo->repository, finfo->entries, finfo->rcs,
vers, finfo->update_dir, &docheckout,
&file_info, checksum);
if (! docheckout)
@@ -602,7 +597,7 @@ update_fileproc (finfo)
/* Fall through. */
#endif
case T_CHECKOUT: /* needs checkout */
- retval = checkout_file (finfo->file, finfo->repository, finfo->entries, finfo->srcfiles,
+ retval = checkout_file (finfo->file, finfo->repository, finfo->entries, finfo->rcs,
vers, finfo->update_dir);
#ifdef SERVER_SUPPORT
if (server_active && retval == 0)
@@ -637,9 +632,9 @@ update_fileproc (finfo)
/* only try to join if things have gone well thus far */
if (retval == 0 && join_rev1)
#ifdef SERVER_SUPPORT
- join_file (finfo->file, finfo->srcfiles, vers, finfo->update_dir, finfo->entries, finfo->repository);
+ join_file (finfo->file, finfo->rcs, vers, finfo->update_dir, finfo->entries, finfo->repository);
#else
- join_file (finfo->file, finfo->srcfiles, vers, finfo->update_dir, finfo->entries);
+ join_file (finfo->file, finfo->rcs, vers, finfo->update_dir, finfo->entries);
#endif
/* if this directory has an ignore list, add this file to it */
@@ -746,7 +741,8 @@ update_dirent_proc (dir, repository, update_dir)
Create_Admin (dir, update_dir, repository, tag, date);
}
}
- else
+ /* Do we need to check noexec here? */
+ else if (!pipeout)
{
char *cvsadmdir;
@@ -910,11 +906,11 @@ scratch_file (file, repository, entries, update_dir)
* check out a file - essentially returns the result of the fork on "co".
*/
static int
-checkout_file (file, repository, entries, srcfiles, vers_ts, update_dir)
+checkout_file (file, repository, entries, rcsnode, vers_ts, update_dir)
char *file;
char *repository;
List *entries;
- List *srcfiles;
+ RCSNode *rcsnode;
Vers_TS *vers_ts;
char *update_dir;
{
@@ -1043,23 +1039,9 @@ checkout_file (file, repository, entries, srcfiles, vers_ts, update_dir)
wrap_fromcvs_process_file (file);
xvers_ts = Version_TS (repository, options, tag, date, file,
- force_tag_match, set_time, entries, srcfiles);
+ force_tag_match, set_time, entries, rcsnode);
if (strcmp (xvers_ts->options, "-V4") == 0)
xvers_ts->options[0] = '\0';
- /* If no keyword expansion was specified on command line,
- use whatever was in the file. This is how we tell the client
- whether a file is binary. */
- if (xvers_ts->options[0] == '\0')
- {
- if (vers_ts->srcfile->expand != NULL)
- {
- free (xvers_ts->options);
- xvers_ts->options =
- xmalloc (strlen (vers_ts->srcfile->expand) + 3);
- strcpy (xvers_ts->options, "-k");
- strcat (xvers_ts->options, vers_ts->srcfile->expand);
- }
- }
(void) time (&last_register_time);
@@ -1142,12 +1124,12 @@ checkout_file (file, repository, entries, srcfiles, vers_ts, update_dir)
* itself.
*/
static int
-patch_file (file, repository, entries, srcfiles, vers_ts, update_dir,
+patch_file (file, repository, entries, rcsnode, vers_ts, update_dir,
docheckout, file_info, checksum)
char *file;
char *repository;
List *entries;
- List *srcfiles;
+ RCSNode *rcsnode;
Vers_TS *vers_ts;
char *update_dir;
int *docheckout;
@@ -1328,7 +1310,7 @@ patch_file (file, repository, entries, srcfiles, vers_ts, update_dir,
/* This stuff is just copied blindly from checkout_file. I
don't really know what it does. */
xvers_ts = Version_TS (repository, options, tag, date, file,
- force_tag_match, 0, entries, srcfiles);
+ force_tag_match, 0, entries, rcsnode);
if (strcmp (xvers_ts->options, "-V4") == 0)
xvers_ts->options[0] = '\0';
@@ -1516,13 +1498,13 @@ merge_file (file, repository, entries, vers, update_dir)
*/
static void
#ifdef SERVER_SUPPORT
-join_file (file, srcfiles, vers, update_dir, entries, repository)
+join_file (file, rcsnode, vers, update_dir, entries, repository)
char *repository;
#else
-join_file (file, srcfiles, vers, update_dir, entries)
+join_file (file, rcsnode, vers, update_dir, entries)
#endif
char *file;
- List *srcfiles;
+ RCSNode *rcsnode;
Vers_TS *vers;
char *update_dir;
List *entries;
@@ -1746,7 +1728,7 @@ join_file (file, srcfiles, vers, update_dir, entries)
return;
}
- baserev = RCS_whatbranch (file, join_rev1, srcfiles);
+ baserev = RCS_whatbranch (file, join_rev1, rcsnode);
if (baserev)
{
char *cp;
diff --git a/gnu/usr.bin/cvs/windows-NT/alloca.h b/gnu/usr.bin/cvs/windows-NT/alloca.h
deleted file mode 100644
index 590b250fc73..00000000000
--- a/gnu/usr.bin/cvs/windows-NT/alloca.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* alloca.h --- Windows NT version of alloca.h
- Jim Blandy <jimb@cyclic.com> --- July 1995 */
-
-/* Here's the situation.
-
- CVS uses alloca. Not in many places, but that number is likely to grow
- since the GNU coding standards give alloca official blessing, and
- supposedly autoconf takes care of the portability problems.
-
- Windows NT has alloca, but calls it _alloca and declares it to return
- void *.
-
- The autoconf manual provides a big wad of CPP cruft to place in files
- that want to use alloca; it currently appears in lib/system.h,
- lib/regex.c, and in src/cvs.h. This boilerplate wad says that if you
- HAVE_ALLOCA but don't HAVE_ALLOCA_H, you should declare alloca as an
- extern function returning char *.
-
- This may be fine for most systems, but it makes Visual C++ barf,
- because the return types conflict. So the workaround is to
- actually have an alloca.h file that declares things appropriately.
- The boilerplate alloca wad says that if you HAVE_ALLOCA_H, let it
- declare everything for you. Which suits us fine. */
-
-#define alloca _alloca
-extern void *alloca ();