Start generating ChangeLog automatically from Git commit messages.
authorBen Pfaff <blp@gnu.org>
Fri, 1 Aug 2008 03:47:49 +0000 (20:47 -0700)
committerBen Pfaff <blp@gnu.org>
Tue, 19 Aug 2008 04:37:53 +0000 (21:37 -0700)
Thus, at the same time we rename the existing ChangeLog files to
OChangeLog and add them to EXTRA_DIST to make sure that they get
distributed.

90 files changed:
.gitignore
ChangeLog [deleted file]
Makefile.am
OChangeLog [new file with mode: 0644]
Smake
config/ChangeLog [deleted file]
config/OChangeLog [new file with mode: 0644]
config/automake.mk
doc/ChangeLog [deleted file]
doc/OChangeLog [new file with mode: 0644]
doc/automake.mk
examples/ChangeLog [deleted file]
examples/OChangeLog [new file with mode: 0644]
examples/automake.mk
glade/ChangeLog [deleted file]
glade/OChangeLog [new file with mode: 0644]
glade/automake.mk
lib/ChangeLog [deleted file]
lib/OChangeLog [new file with mode: 0644]
lib/automake.mk
lib/gtksheet/ChangeLog [deleted file]
lib/gtksheet/OChangeLog [new file with mode: 0644]
lib/gtksheet/automake.mk
lib/linreg/ChangeLog [deleted file]
lib/linreg/OChangeLog [new file with mode: 0644]
lib/linreg/automake.mk
src/ChangeLog [deleted file]
src/OChangeLog [new file with mode: 0644]
src/automake.mk
src/data/ChangeLog [deleted file]
src/data/OChangeLog [new file with mode: 0644]
src/data/automake.mk
src/language/ChangeLog [deleted file]
src/language/OChangeLog [new file with mode: 0644]
src/language/automake.mk
src/language/control/ChangeLog [deleted file]
src/language/control/OChangeLog [new file with mode: 0644]
src/language/control/automake.mk
src/language/data-io/ChangeLog [deleted file]
src/language/data-io/OChangeLog [new file with mode: 0644]
src/language/data-io/automake.mk
src/language/dictionary/ChangeLog [deleted file]
src/language/dictionary/OChangeLog [new file with mode: 0644]
src/language/dictionary/automake.mk
src/language/expressions/ChangeLog [deleted file]
src/language/expressions/OChangeLog [new file with mode: 0644]
src/language/expressions/automake.mk
src/language/lexer/ChangeLog [deleted file]
src/language/lexer/OChangeLog [new file with mode: 0644]
src/language/lexer/automake.mk
src/language/stats/ChangeLog [deleted file]
src/language/stats/OChangeLog [new file with mode: 0644]
src/language/stats/automake.mk
src/language/tests/ChangeLog [deleted file]
src/language/tests/OChangeLog [new file with mode: 0644]
src/language/tests/automake.mk
src/language/utilities/ChangeLog [deleted file]
src/language/utilities/OChangeLog [new file with mode: 0644]
src/language/utilities/automake.mk
src/language/xforms/ChangeLog [deleted file]
src/language/xforms/OChangeLog [new file with mode: 0644]
src/language/xforms/automake.mk
src/libpspp/ChangeLog [deleted file]
src/libpspp/OChangeLog [new file with mode: 0644]
src/libpspp/automake.mk
src/math/ChangeLog [deleted file]
src/math/OChangeLog [new file with mode: 0644]
src/math/automake.mk
src/math/time-series/ChangeLog [deleted file]
src/math/ts/ChangeLog [deleted file]
src/math/ts/OChangeLog [new file with mode: 0644]
src/math/ts/automake.mk
src/output/ChangeLog [deleted file]
src/output/OChangeLog [new file with mode: 0644]
src/output/automake.mk
src/output/charts/ChangeLog [deleted file]
src/output/charts/OChangeLog [new file with mode: 0644]
src/output/charts/automake.mk
src/ui/ChangeLog [deleted file]
src/ui/OChangeLog [new file with mode: 0644]
src/ui/automake.mk
src/ui/gui/ChangeLog [deleted file]
src/ui/gui/OChangeLog [new file with mode: 0644]
src/ui/gui/automake.mk
src/ui/terminal/ChangeLog [deleted file]
src/ui/terminal/OChangeLog [new file with mode: 0644]
src/ui/terminal/automake.mk
tests/ChangeLog [deleted file]
tests/OChangeLog [new file with mode: 0644]
tests/automake.mk

index d5b588430c5a44886ed3c9ba553ee6b405fbb40f..c29aff49c289ab840d09237d12b2b4002885adf8 100644 (file)
@@ -1,4 +1,5 @@
 ABOUT-NLS
+ChangeLog
 Makefile
 Makefile.in
 aclocal.m4
@@ -30,3 +31,4 @@ pref.h
 reloc-ldflags
 stamp-h1
 texinfo.tex
+gitlog-to-changelog
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644 (file)
index bcf78ac..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,2406 +0,0 @@
-2008-06-13  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Fix typo in AC_PREREQ command name.  Thanks to
-       Stepan Kasal <kasal@ucw.cz> for reporting the problem.
-
-2008-06-04  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Update version number to 0.6.0 in preparation for
-       release.
-
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       * Smake (GNULIB_MODULES): Don't depend on memmem module, because
-       PSPP does not use memmem any longer.  Use
-       unilbrk/ulc-width-linebreaks module instead of the linebreak
-       module, because the latter was split up into multiple modules and
-       that's the one we actually need.
-
-2008-05-09  John Darrington <john@darrington.wattle.id.au>
-
-       * INSTALL: For obscure reasons gettext 0.17 requires that 
-       the string 'GNU pspp' occurs in some file in the root 
-       directory. Otherwise make distcheck fails with a very non-intuitive 
-       error message.  So for want of somewhere better I added it 
-       in INSTALL.
-
-       But since this string now appears in this ChangeLog file, it
-       could be taken out of INSTALL ...
-
-2008-04-19  John Darrington <john@darrington.wattle.id.au>
-
-       * configure.ac : Improve checking of ncurses availability.
-
-2008-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Properly report required version of libglade.
-       Thanks to unknown-1 <pspp@sjpaes.nl> for reporting this bug.
-
-2008-04-15  John Darrington <john@darrington.wattle.id.au>
-
-       * configure.ac : Replace AC_CHECK_LIB with AC_SEARCH_LIBS as
-       recommended by latest autoconf manual.
-
-2008-02-19  John Darrington <john@darrington.wattle.id.au>
-
-       * configure.ac INSTALL: We now depend on GTK+ 2.12
-
-2007-12-11  John Darrington <john@darrington.wattle.id.au>
-
-       * t-test-independent-samples-dialog.c: Quoted the group values, when
-       the group variable is a string variable.
-
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       * Smake (GNULIB_MODULES): Add ftello module.
-
-2007-11-05  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: No need for check for off_t or for the size of
-       float or long double any longer, as we don't use the results
-       anymore.  Also, no need to put #include <locale.h> into config.h
-       any longer, as this was only needed for --with-included-gettext,
-       which we have not supported for some time.
-
-2007-11-03  Ben Pfaff  <blp@gnu.org>
-
-       Allow output files to overwrite input files (bug #21280).
-
-       * Smake (GNULIB_MODULES): Add fatal-signal, tempname modules.
-
-2007-11-02  Ben Pfaff  <blp@gnu.org>
-
-       * Smake (GNULIB_MODULES): Add isfinite, round modules.
-
-2007-10-12  Ben Pfaff  <blp@gnu.org>
-
-       Use trunc module from gnulib instead of our home-grown solution.
-       Patch #6224.
-
-       * Smake: Add trunc to module list.
-
-       * configure.ac: Don't need to check for trunc function any longer.
-
-2007-10-12  Ben Pfaff  <blp@gnu.org>
-
-       Use fseeko module from gnulib instead of our home-grown solution.
-       Patch #6228.
-
-       * acinclude.m4: Delete PSPP_OFF_T macro.
-
-       * configure.ac: Don't call AC_FUNC_FSEEKO or PSPP_OFF_T.
-
-2007-10-12  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add fprintf-posix, printf-posix, printf-safe,
-       snprintf-posix, sprintf-posix, vasprintf-posxi, vfprintf-posix,
-       vprintf-posix, vsnprintf-posix, and vsprintf-posix modules, which
-       allow us to use C99 format specifiers (e.g. 'z') in *printf.
-       Also, changed many formerly casted arguments in *printf calls to
-       use one of these format specifiers and drop the cast.
-2007-10-11  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Drop alloca, alloca-opt modules as we don't use them
-       anymore.
-
-2007-10-10  Ben Pfaff  <blp@gnu.org>
-
-       * acinclude.m4: Improve formatting.
-
-       * configure.ac: Ditto.  Don't check for headers whose presence is
-       never tested.  Don't use AC_C_CONST (we can assume that "const" is
-       implemented these days).  Don't pass default sizes to
-       AC_CHECK_SIZEOF, since modern Autoconf doesn't need them.  Don't
-       define FPREP_IEEE754, since it was not tested for.  Don't use
-       AC_FUNC_VPRINTF, since we never tested for it.
-
-2007-10-06 John Darrington <john@darrington.wattle.id.au>
-
-       * configure.ac INSTALL: Change libglade version requirement.
-       Thanks to Paul Brown for reporting this issue.
-
-2007-09-30  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Print a message indicating success at the end of
-       the run.
-
-       * INSTALL: Improve instructions.
-
-2007-09-22  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21128.  Reviewed by John Darrington.
-
-       * acinclude.m4 (PSPP_LC_PAPER): New macro.
-
-       * configure.ac: Use PSPP_LC_PAPER.
-
-2007-08-05  Ben Pfaff  <blp@gnu.org>
-
-       Bug #16189.  Reviewed by Jason Stover.
-       * acinclude.m4: If -lplot doesn't work by itself, also test with
-       typical X11 libraries.
-
-2007-07-27  Ben Pfaff  <blp@gnu.org>
-
-       Bug #19069.
-       * INSTALL: Improve installation instructions.
-       * README: Move prerequisites to INSTALL.
-       Reviewed by Jason Stover.
-
-       * configure.ac: Make PKG_CHECK_MODULES tests more user-friendly,
-       by having them give their errors at the end of the configuration
-       process instead of stopping it in the middle.  Patch #6116.
-       Reviewed by Jason Stover.
-
-2007-06-14  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Use xmalloca instead of xallocsa due to module renaming.
-       Update all uses.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add xallocsa to modules.
-
-2007-04-22  Ben Pfaff  <blp@gnu.org>
-
-       Implement model checker for testing purposes.
-       
-       Patch #5873.
-       
-       * Smake (GNULIB_MODULES): Add crypto/md4, fwriteerror,
-       gettimeofday.
-
-2007-04-03  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Increment version to 0.4.3 due to snapshot posted
-       to alpha.gnu.org.
-       Suggested by John Darrington.
-
-2007-04-03  Ben Pfaff  <blp@gnu.org>
-
-       Use Gnulib's fpieee module instead of specifying -mieee by hand.
-
-       * Smake: Use fpieee module from Gnulib.
-
-       * configure.ac: Don't enable -mieee.
-
-2007-03-19  Ben Pfaff  <blp@gnu.org>
-
-       Work toward modernizing the build system by updating our Automake
-       and Autoconf dependencies and requiring libintl to be available
-       externally (if desired) instead of including a copy in the
-       distribution.
-
-       * Makefile.am (AUTOMAKE_OPTIONS): Require Automake 1.10 (or
-       later), which works better with systems that have a non-empty
-       $(EXEEXT).
-       (SUBDIRS): Drop intl.
-       (DISTCLEANFILES): Drop intl/plural.c.
-
-       * Throughout Makefile.am and the automake.mk files: Change
-       mkinstalldirs to $(MKDIR_P), to support the corresponding Automake
-       change.
-
-       * Smake (GNULIB_MODULES): Use gettext-h instead of gettext module.
-       (all): Don't create intl directory.
-       (gettextize): Don't use --intl flag.
-
-       * configure.ac: Require Autoconf 2.60 or later.  Use external
-       gettext.  Drop intl/Makefile from config files.
-
-2007-02-25  Ben Pfaff  <blp@gnu.org>
-
-       Thanks to Jason Stover for verifying that this patch helps under
-       NetBSD.
-
-       * acinclude.m4: Rename PSPP_ENABLE_WARNING to PSPP_ENABLE_OPTION,
-       because it's useful for more than warnings.
-
-       * configure.ac: Add PSPP_ENABLE_OPTION(-mieee) to improve IEEE
-       floating-point conformance on Alpha and SH architectures.  Also,
-       check for fpsetmask function (available on BSDs).
-
-Mon Feb 19 10:52:21 2007  Ben Pfaff  <blp@gnu.org>
-
-       * Smake (GNULIB_MODULES): Add dirname module, remove canonicalize
-       module.  Corresponds to changes in src/data/file-name.c.
-
-Sat Feb 17 09:22:32 2007  Ben Pfaff  <blp@gnu.org>
-
-       * Smake (GNULIB_MODULES): Add tmpfile module, which fixes the use
-       of the tmpfile function under Windows.
-
-Fri Feb 16 10:50:38 2007  Ben Pfaff  <blp@gnu.org>
-
-       Better support cross-compiling by using CC_FOR_BUILD and
-       EXEEXT_FOR_BUILD for q2c.
-       
-       * Makefile.am: Add CC_FOR_BUILD, EXEEXT_FOR_BUILD variables.  Use
-       in .q.c rule.
-
-       * acinclude.m4: Add PSPP_CC_FOR_BUILD macro.
-
-       * configure.ac: Call PSPP_CC_FOR_BUILD.
-
-Mon Feb 12 16:39:18 2007  Ben Pfaff  <blp@gnu.org>
-
-       * README: Note that iconv is required.
-
-       * configure.ac: Enforce iconv requirement.
-
-Thu Feb  8 14:56:18 2007  Ben Pfaff  <blp@gnu.org>
-
-       Reduce platform dependence.
-
-       * Makefile.am: Don't add -Dunix or -D__MSDOS__ to compiler command
-       line.  Add $(top_builddir)/intl to include path to fix building
-       with the included libintl.
-
-       * Smake (GNULIB_MODULES): Add `canonicalize', `sys_stat',
-       `mkstemp' modules.  Remove `stat-macros' module, which is no
-       longer what we want, because what we want is provided by sys_stat
-       now, and remove its inclusions.  Remove `strstr' module, which is
-       no longer in gnulib.  Remove `readlink', `xreadlink', because we
-       no longer use either function.
-
-       * configure.ac: Move gl_EARLY before AC_PROG_CC, where the gnulib
-       manual says it should be.  Check for presence of execl, fork,
-       and popen.  Drop check for unix versus msdos as host OS.
-
-Sat Nov  4 15:59:31 2006  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Check for the "round" function added in C99.
-
-Tue Oct 31 19:55:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake (GNULIB_MODULES): Add `mempcpy' module.
-
-Tue Oct 31 19:29:05 2006  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Drop tests for strchr, strrchr because now we
-       assume a C89 compliant library.  (Gnulib makes this assumption so
-       we might as well too.)
-
-Sun Oct 29 14:08:53 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake (GNULIB_MODULES): Remove `restrict' from modules, because
-       recent gnulib doesn't have such a module.
-
-Mon Jul 17 18:23:38 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add --doc-base=gl/doc to gnulib-tool invocation, which is
-       required by recent gnulib.
-
-Sun Jul 16 19:51:45 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add xsize to GNULIB_MODULES.
-
-Wed Jul 12 13:41:18 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add check_PROGRAMS and define to empty.
-
-Sat Jul  1 15:32:31 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add noinst_PROGRAMS and define to empty.
-
-Tue May  9 20:46:06 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add stdarg to GNULIB_MODULES.
-
-Sun May  7 09:27:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * po/en_GB.po : Removed.  Now that messages talking about coloUrs have 
-       been removed, it does nothing.
-
-Tue May  2 10:43:30 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * Bumped the minor version number from 0.4.1 to 0.4.2 to reflect 
-        changes to system file format.
-
-Mon Apr 24 14:12:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add exit to GNULIB_MODULES.
-
-Sun Apr 23 20:34:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add linebreak to GNULIB_MODULES.
-
-Sat Apr 15 21:45:40 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of src/libpspp/debug-print.h and all its uses.  (There
-       were few real users, but many inclusions of its header file.)
-
-Sat Apr 15 19:51:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of our own int32 type in favor of the standard int32_t
-       type.
-       
-       * configure.ac: Don't need to check the sizes of integer types
-       anymore.
-
-Sat Apr 15 19:13:59 2006  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac, acinclude.m4: Complain about missing prerequisites
-       in a group at the end of configuration, not piecemeal.  This
-       should make building PSPP less frustrating.  Thanks to John
-       Darrington for the suggestion.
-
-Sat Apr 15 18:17:15 2006  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Move code into acinclude.m4 to make the configure
-       script more readable.
-
-       * acinclude.m4: New functions from configure.ac.
-
-Mon Apr  3 11:01:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: (GNULIB_MODULES) Add strsep.
-
-Thu Mar 30 15:50:05 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Enable -Wdeclaration-after-statement warning if
-       available.
-
-       * acinclude.m4: Add macro for checking whether a warning is
-       supported.
-
-Mon Mar 20 16:32:11 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Require "unistd" gnulib module.  Removed tests for
-       HAVE_UNISTD_H from source code.
-
-Sat Mar  4 13:20:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Get rid of pref.h.orig.
-
-       * pref.h.orig: Removed.  Moved SHORT_NAME_LEN, LONG_NAME_LEN to
-       src/data/variable.h.  Removed GLOBAL_DEBUGGING entirely, changing
-       all references to DEBUGGING.  Moved P_tmpdir to
-       src/data/make-file.c.  Moved NO_CHARTS to
-       src/output/charts/automake.mk.
-
-Sat Mar  4 12:58:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: Move GCC attribute declarations to
-       new file src/libpspp/compiler.h.
-
-Sat Mar  4 12:27:06 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Require "intprops" gnulib module.
-
-       * acinclude.m4: Remove BLP_INT_DIGITS.  Now we use the intprops.h
-       header file instead.
-
-       * configure.ac: Don't call BLP_INT_DIGITS.
-
-Sat Mar  4 11:53:36 2006  Ben Pfaff  <blp@gnu.org>
-
-       * acinclude.m4: Remove BLP_RANDOM.  Its results were unused.
-       Remove BLP_IS_SPRINTF_GOOD.  We now assume that the system's
-       sprintf() returns the correct value.
-
-       * configure.ac: Don't call those macros.
-
-John Darrington:
-
-       * Deleted Make.build (inserted its contents into Makefile.am).
-       
-       * Moved the version number to 0.4.1
-
-       * Moved lib/linreg/linreg.[ch] and lib/linreg/coefficient.[ch] to
-         src/math/linreg.
-
-       * Moved the psppire gui into src/ui/gui and the gtk_sheet widget 
-          into lib/gtksheet.
-
-       * Replaced recursive automake system with non-recursive one.
-
-       * Moved files into subdirectories. See src/ChangeLog for details.
-
-Sat Feb 11 21:57:31 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: (GNULIB_MODULES) Add memcasecmp.
-
-       * configure.ac: Remove existing checks for readline, replacing
-       them by a call to PSPP_READLINE.
-
-       * acinclude.m4: Add PSPP_READLINE macro based on gnulib test for
-       readline.  However, we only accept a readline installation if (1)
-       the header files are in the normal readline/ directory and (2) the
-       history library is also available.  If both criteria are met, we
-       declare HAVE_READLINE.  This reduces the #ifdefs to actually use
-       readline to something manageable.
-
-       * pref.h.orig: Move DIR_SEPARATOR, PATH_DELIMITER definitions to
-       src/filename.h.
-
-Wed Jan 25 21:48:20 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: (po/POTFILE.in) Exclude dotfiles.
-
-Sat Nov 27 20:29:19 2005 Jason Stover <jason@sakla.net>
-
-       * Binary encoding for categorical variables.
-       * Routines for design matrices.
-       
-Thu Oct 20 18:19:58 2005  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Improve error messages.  Thanks to Jaap-Andre de
-       Hoop <j.dehoop@data-assist.nl>.
-
-Wed Oct 12 20:33:07 2005 Jason Stover <jstover@sdf.lonestar.org>
-
-       * regression.q: Initial version of the REGRESSION procedure.
-       
-Sun Sep 25 16:11:09 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Handles `examples' as a subdirectory instead of a
-       dist-hook.  The dist-hook copied examples/CVS into the
-       distribution.  Thanks to James R. Van Zandt <jrvz@comcast.net> for
-       reporting the problem.
-
-Mon Sep 19 10:24:10 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Add `check' target for convenience.  Add
-       --tests-base=tests to gnulib-tool invocation to compensate for
-       bug.
-
-Sat Sep 17 15:57:32 2005 Jason Stover <jason@sakla.net>
-
-       Added lib/linreg for procedures that use ordinary least squares.
-       
-Sat Sep 17 11:01:44 2005  Ben Pfaff  <blp@gnu.org>
-
-       Adapt to newer versions of gnulib.
-
-       * Smake: Put gnulib options directly on its command line, instead
-       of embedding them in configure.ac.
-
-       * configure.ac: Remove gnulib option commands.
-
-Fri Aug  3 07:22:28 2005  Ben Pfaff  <blp@gnu.org>
-
-       * PSPP 0.4.0 released.
-
-Sun Jul 31 10:49:47 2005  Ben Pfaff  <blp@gnu.org>
-
-       Adopt use of gnulib for portability.
-
-       * Makefile.am: Add gl to SUBDIRS.  Add gl/m4 to aclocal include
-       path.  Get rid of pkgdocdir data.  Move noinst_DATA to EXTRA_DIST.
-
-       * README.CVS: Add instructions for fetching gnulib.
-
-       * Smake: Rewrite to run gnulib-tool.  Avoid use of gettextize in
-       normal case (it was unmaintainable).  Just use autoreconf
-       --install to do most of the work.  Rewrite rule for POTFILES.in
-       for non-GNU make compatibility.
-
-       * configure.ac: Add gnulib commands.  Specify gettext version
-       0.14.5 to placate autopoint.  Check that off_t is an integer type,
-       because Solaris can sometimes declare it as a struct.  Drop
-       explicit checks for gnulib-supported functionality.  Fix typo in
-       msdos check.
-
-       * pref.h.orig: Define __attribute__ to avoid wart in gnulib.
-       Don't #include <libintl> and define gettext, _, N_, because gnulib
-       wants to do the same thing.
-
-Sun Jul 24 20:31:13 2005  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Don't detect libgmp anymore, because we eliminated
-       the dependency.
-
-       * NEWS: Update.
-
-Mon Jul  4 17:59:54 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add pspp-mode.el to EXTRA_DIST.
-
-Wed May  4 08:49:13 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * README.CVS Smake: Added a CONFIGUREFLAGS variable.
-       * INSTALL: Mentioned build dependencies.
-
-Mon May  2 22:37:39 2005  Ben Pfaff  <blp@gnu.org>
-
-       * INSTALL: Mention dependencies.  Thanks to Jaap-Andre de Hoop
-       <j.dehoop@data-assist.nl> for the suggestion.
-
-       * NEWS, README: Update.
-
-Sun May  1 15:00:09 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * pspp-mode.el: Now supports syntax highlighting, indentation and
-       generally works a lot better.
-
-Thu Apr 28 10:24:47 WST 2005 John Darrington <john@darrington.wattle.id.au> 
-
-       * Changed all copyright notices to contain the FSF's new address.
-
-Thu Apr 14 2005 John Darrington
-
-       * AUTHORS:  Added note about the long variable names extension.
-
-       * pref.h.orig: Added definitions for variable names lengths.
-
-Thu Mar  3 22:06:19 WST 2005 John Darrington <john@darrington.wattle.id.au> 
-
-       * configure.ac: Added AC_PROG_RANLIB --- needed by autoconf 1.9
-
-Mon Feb 28 23:16:58 2005  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Check for perl.  Check for bool.  Substitute
-       makefiles in src/expressions.  Don't substitute makefile in
-       deleted directory lib/julcal.
-
-       * pref.h.orig: (macro MALLOC_LIKE) New macro.
-       (macro flt64) Moved to src/sfmP.h.
-       (macro FLT64_MAX) Moved to src/sfmP.h.
-
-Mon Feb 21 15:04:55 WST 2005 John Darrington <john@darrington.wattle.id.au> 
-
-       * configure.ac: Added a --without-valgrind option to cope with
-       building on machines with a broken valgrind installation
-
-Fri Jan  7 08:01:02 WST 2005 John Darrington <john@darrington.wattle.id.au> 
-
-       * configure.ac pref.h.orig: Compilation with libplot is now optional
-       by sacrificing the chart features.
-
-Sun Nov 28 19:24:02 2004  Ben Pfaff  <blp@gnu.org>
-
-       * Smake: Change -a to -pR in cp invocations for SUSv3 compliance.
-
-Mon May 31 17:21:25 2004  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Check for large file support.  Get rid of
-       posix_fadvise check--for some reason glibc 2.3.2 segfaults when I
-       call it and I just couldn't figure out what was going on.
-
-Sun May 30 18:19:03 2004  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Check for valgrind/valgrind.h.
-
-Mon Mar 29 15:22:48 2004  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * configure.ac: Check for posix_fadvise.
-
-Tue Mar 23 14:21:12 WAST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * Removed dcdflib and replaced with a dependency upon the
-        GNU Scientific library instead.
-
-Sat Mar 20 13:55:36 2004  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-Wed Feb 11 23:54:15 2004  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: Don't meddle with __WIN32__, __MSDOS, __DJGPP__,
-       __CYGWIN32__, __unix__, or unix anymore, and deal with some of the
-       consequences.  Declare ATTRIBUTE instead of meddling withe
-       __attribute__.  Declare UNUSED instead of unused.  Add macros
-       NO_RETURN, PRINTF_FORMAT, SCANF_FORMAT.  Reformat gettext, N_, _
-       macros.  Move alloca()-related stuff to src/alloc.h and simplify.
-       Get rid of PAGED_STACK entirely.  Remove mkdir macro definition.
-       Get rid of obsolete "procedure-specific options".
-
-2004-01-23  gettextize  <bug-gnu-gettext@gnu.org>
-
-       * Makefile.am (SUBDIRS): Remove intl.
-       * configure.ac (AC_CONFIG_FILES): Remove intl/Makefile.
-
-Tue Dec 30 22:23:40 WST 2003 John Darrington <john@darrington.wattle.id.au> 
-       
-       * Fixed floating point rounding bug in percentiles calculation
-
-Sat Dec 27 16:16:49 2003  Ben Pfaff  <blp@gnu.org>
-
-       * configure.ac: Add -Wmissing-prototypes flag to gcc.
-
-       * TODO: Updated.
-
-Wed Dec 17 12:19:40 WAST 2003 John Darrington <john@darrington.wattle.id.au>
-
-       * Added an --enable-debug flag to configure
-
-2003-12-13  gettextize  <bug-gnu-gettext@gnu.org>
-
-       * Makefile.am (EXTRA_DIST): Add mkinstalldirs.
-       * configure.ac (AC_CONFIG_FILES): Add intl/Makefile.
-
-
-Thu Dec 11 19:35:32 WST 2003 John Darrington <john@darrington.wattle.id.au>
-
-       * Removed autogenerated files from the CVS archive
-
-        * removed the included getopt.c as it failed to build under some
-        systems.
-
-Thu Dec 11 00:12:19 2003  Ben Pfaff  <blp@gnu.org>
-
-       * Update build system to Autoconf 2.58, Automake 1.7, gettext
-       0.12.1.
-
-2003-12-08  gettextize  <bug-gnu-gettext@gnu.org>
-
-       * Makefile.am (SUBDIRS): Add m4.
-       (ACLOCAL_AMFLAGS): New variable.
-       (EXTRA_DIST): Add config.rpath.
-       * configure.in (AC_CONFIG_FILES): Add po/Makefile.in,
-
-Sun Jan  2 21:24:32 2000  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Require Automake 1.4 or later.  It's been out for
-       almost a year now, so why haven't you installed it? :-)
-
-       * TODO: Updated.
-
-       * configure.in: Updated version number.  Check for libgmp.  Check
-       of fenv.h.  Check for feholdexpect().
-
-       * pref.h.orig: Don't include debug-print.h by default.  Don't
-       disable __attribute ((unused))__ for gcc 2.7.2.  Remove LOAD_2,
-       STORE_2.  Comment fixes.
-
-       * Updated copyright notices in all files.
-
-Fri Mar 12 12:38:55 1999  Ben Pfaff  <blp@gnu.org>
-
-       * Forked 0.3.0.
-
-Tue Mar  9 12:46:31 1999  Ben Pfaff  <blp@gnu.org>
-
-       * Released 0.2.3.
-       
-       * TODO: Updated.
-
-Tue Jan  5 15:18:07 1999  Ben Pfaff  <blp@gnu.org>
-
-       * Released 0.2.2.
-
-       * TODO: Update from Zvi Grauer <z.grauer@sims.csuohio.edu>.
-
-Thu Nov 19 12:34:55 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Released 0.2.1.
-
-Sun Aug  9 11:11:32 1998  Ben Pfaff  <blp@gnu.org>
-
-       * LANGUAGE: Updated.
-
-Sat Aug  8 00:19:08 1998  Ben Pfaff  <blp@gnu.org>
-
-       * LANGUAGE: Updated.
-
-       * examples/: New directory.
-
-       * Made patchlevel 95.
-
-Tue Aug  4 23:47:31 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Bump version to 0.1.22 (0.2.0 release candidate).
-
-       * configure.in: Remove --enable-Werror, new option
-       --enable-debugging.  New gcc option -Wpointer-arith.
-
-       * pref.h.orig: Don't enable debugging by default (now a configure
-       option).  Use __inline__ instead of inline with gcc (partial -ansi
-       -pedantic support).
-       (macro local_strdup) Removed.
-
-       * Made patchlevel 94.
-       
-Wed Jul 29 22:03:11 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Bump version to 0.1.21 (0.2.0 release candidate).
-
-       * debian/: Removed.
-
-       * Makefile.am: Don't copy debian/ into distribution.
-       
-       * pref.h.orig: Only enable `unused' attribute if gcc 2.8.0 or
-       later is used.
-
-Sun Jul  5 14:20:04 1998  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Bump version to 0.1.20 (0.2.0 release candidate).
-
-       * Made patchlevel 93.
-
-Sun Jul  5 00:13:58 1998  Ben Pfaff  <blp@gnu.org>
-
-       * README: Updated.
-
-       * TODO: Updated.
-
-       * configure.in: Remove -Wno-unused from default gcc flags.
-
-       * pref.h.orig: Add new #define, `unused', which under gcc expands
-       to an explanation to the compiler that a function argument is
-       unused, and expands to the null string under other compilers.
-
-Mon Jun  1 14:33:02 1998  Ben Pfaff  <blp@gnu.org>
-
-       * LANGUAGE: Updated.
-
-       * configure.in: Bump version to 0.1.19.
-
-       * Made patchlevel 92.
-
-Sun May 31 00:55:13 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-               
-       * configure.in: Generate Makefiles for lib/gmp/{,mpn,mpf}/.
-
-       * Made patchlevel 91.
-
-Fri May 29 21:43:09 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * LANGUAGE: Updated.
-
-       * unconfigure: Remove TeX cruft from doc/.
-       
-       * Made patchlevel 90.
-
-Mon May 25 12:41:54 1998  Ben Pfaff  <blp@gnu.org>
-
-       * BUGS: Updated.
-
-       * LANGUAGE: Updated.
-
-       * TODO: Updated.
-
-       * configure.in: Bumped version number up to 0.1.18.
-
-       * Made patchlevel 89.
-
-Sun May 24 22:39:55 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 88.
-
-Sat May 23 23:21:43 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * configure.in: Remove gamma from replaceable functions.
-
-       * Made patchlevel 87.
-
-Fri May 22 00:02:33 1998  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Add gamma to list of functions with replacements.
-
-       * Made patchlevel 86.   
-
-Wed May 20 00:00:12 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 85.
-
-Sat May 16 19:38:49 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 84.
-
-Tue May 12 16:13:48 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * unconfigure: Don't delete Makefile.in under intl/.
-       
-       * Made patchlevel 83.
-
-Thu May  7 23:16:26 1998  Ben Pfaff  <blp@gnu.org>
-
-       * unconfigure: Add some more files to reap.
-
-       * Made patchlevel 82.
-
-Tue May  5 13:17:59 1998  Ben Pfaff  <blp@gnu.org>
-
-       * acconfig.h: Add HAVE_GOOD_RANDOM definition.
-
-       * acinclude.m4: New macro BLP_RANDOM.
-
-       * configure.in: Use new BLP_RANDOM macro.
-
-       * unconfigure: New file.
-       
-       * Made patchlevel 81.
-       
-Fri Apr 24 12:42:14 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Remove bad comment.
-
-       * AUTHORS: Removed Brad Appleton.
-       
-       * TODO: Updated.
-
-       * configure.in: Remove `satisfy automake' bit.  Don't generate
-       avllib Makefile, since we don't use avllib anymore.
-
-       * pref.h.orig: Define PSPP.
-
-       * Made patchlevel 80.
-
-Wed Apr 15 12:59:39 1998  Ben Pfaff  <blp@gnu.org>
-
-       * AUTHORS, BUGS, LANGUAGE, README, THANKS: No longer generated
-       from HTML.  This caused a lot of deletions from the Makefile.am.
-
-       * TODO: Updated.
-       
-       * Made patchlevel 79.
-       
-Tue Apr 14 00:48:00 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * configure.in: Check for unistd.h.  Fix AC_LN_S (should have been
-       AC_PROG_LN_S).
-
-       * Made patchlevel 78.  Must have missed 77 in there somewhere :-)
-       
-Mon Mar  9 15:40:40 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 76.
-
-       * configure.in: Bumped version up to 0.1.16.
-
-1998-03-05  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Bumped version up to 0.1.15.
-
-1998-02-23  Ben Pfaff  <blp@gnu.org>
-
-       * acinclude.m4: Add BLP_INT_DIGITS and BLP_IS_SPRINTF_GOOD macros.
-
-       * configure.in: Those macros came from here.  Better modularity
-       this way.  Bump version up to 0.1.14.
-
-       * pref.h.orig: (macros CONFIG_PATH, INCLUDE_PATH, GROFF_FONT_PATH)
-       Removed.
-       
-       * Made patchlevel 75.
-
-1998-02-23  Ben Pfaff  <blp@gnu.org>
-
-       * acconfig.h: Hard-code PACKAGE and GNU_PACKAGE as "PSPP" and "GNU
-       PSPP" respectively.
-
-       * configure.in: Call the package pspp instead of PSPP.  Don't
-       define PACKAGE and GNU_PACKAGE symbols.  Add replacement function
-       for strtok_r.
-
-       * TODO: Updated.
-       
-       * Made patchlevel 74.
-
-1998-02-16  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Remove a few now-useless targets.
-
-       * TODO: Updated.
-
-       * configure.in: Bump version up to 0.1.13.
-
-       * reconfigure: Don't assume . is in PATH.
-
-       * Made patchlevel 73.
-
-Fri Feb 13 15:35:03 1998  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Bump version up to 0.1.12.
-
-       * TODO: Updated.
-
-       * pref.h.orig: Make __unix equivalent to unix and __unix__; don't
-       require any of these to be defined to 1, just defined.  Invert
-       sense of some tests from testing for unix to testing for not being
-       msdog.
-
-       * Made patchlevel 72.
-
-Thu Feb  5 00:22:58 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 71.
-
-       * configure.in: Bump version up to 0.1.11.
-
-Tue Feb  3 16:12:34 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 70.
-
-       * configure.in: Bump version up to 0.1.10.
-
-Fri Jan 23 00:17:18 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 69.
-
-Thu Jan 22 00:35:52 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 68.
-
-Sun Jan 18 00:30:18 1998  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Add ieeefp.h to list of headers to check for.
-
-       * Made patchlevel 67.
-
-Tue Jan 13 23:44:16 1998  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Add sys/wait.h to list of headers to check for.
-
-       * Made patchlevel 66.
-       
-Sun Jan 11 21:30:09 1998  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Bump version up to 0.1.9.
-       
-       * pref.h.orig (STORE_2): Fix parentheses.  From Alexandre
-       Oliva <oliva@dcc.unicamp.br>.
-
-       * Made patchlevel 65.
-       
-Sat Jan 10 23:59:06 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 64.
-
-Sat Jan 10 02:10:15 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * pref.h.orig: Comment fixes.
-       (macro second_lowest_flt64) New.
-
-       * Made patchlevel 63.
-
-Thu Jan  8 22:27:03 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-       
-       * Made patchlevel 62.
-
-Mon Jan  5 11:18:37 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 61.
-
-Sun Jan  4 18:10:29 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * pref.h.orig: (local_strdup) [HAVE_ALLOCA && PAGED_STACK &&
-       __GNUC__] Rewritten for space and time efficiency and to evaluate
-       its argument only once.
-
-       * Made patchlevel 60.
-
-Sat Jan  3 16:51:20 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 59.
-
-Fri Jan  2 01:38:37 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * config.sub: Got tired of `i686-unknown-linux: Unknown system',
-       so I made 686 equivalent to 586.
-
-       * pref.h.orig: (macros ASCII_*, HTML_*, PS_*) Removed.
-
-       * Made patchlevel 58.
-
-Thu Jan  1 11:50:47 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 57.
-
-Fri Dec 26 15:43:17 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 56.
-
-Wed Dec 24 22:34:55 1997  Ben Pfaff  <blp@gnu.org>
-
-       * reconfigure: regularized option syntax.
-
-       * configure.in: Bumped version to 0.1.8.  Changed name from pspp
-       to PSPP.  Added lib/dcdflib/Makefile to list of output files.
-
-       * Made patchlevel 55.
-
-Sun Dec 21 15:58:52 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * acconfig.h: Reformat.
-
-       * configure.in: Bumped version to 0.1.7.
-
-       * Made patchlevel 54.
-
-Fri Dec  5 23:38:12 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Replaced prep.ai.mit.edu with ftp.gnu.org and .gnu.ai.mit.edu
-       with .gnu.org, everywhere.
-
-Fri Dec  5 23:02:40 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Replaced remaining instances of Fiasco with PSPP.
-
-       * Made patchlevel 53.
-
-Fri Dec  5 22:51:18 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Every instance of the name Fiasco, throughout every file,
-       replaced in-place with PSPP, with the exceptions of a few files
-       that had `fiasco' in their names; these were renamed.
-
-       * Made patchlevel 52.
-       
-Fri Dec  5 21:50:52 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: (macros NO_HTML, HTML_DEFAULT_OUTPUT_FILE) New
-       macros.
-
-       * TODO: Updated.
-
-       * Made patchlevel 51.
-
-Tue Dec  2 14:35:12 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * configure.in: Bumped version to 0.1.6.
-
-       * Made patchlevel 50.   
-
-Sat Nov 22 01:20:32 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 49.
-
-Fri Nov 21 00:11:41 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 48.
-
-Sun Nov 16 01:31:38 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 47.
-
-Fri Nov 14 00:17:48 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 46.
-
-       * configure.in: Bumped version to 0.1.5.
-
-Tue Oct 28 16:07:17 1997  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Bumped version to 0.1.4.
-
-       * TODO: Updated.
-
-       * Made patchlevel 45.
-
-Wed Oct  8 15:55:50 1997  Ben Pfaff  <blp@gnu.org>
-
-       * intl: Upgraded from sources to gettext-0.10.32.
-
-       * configure.in: Bumped version to 0.1.3.
-
-       * Made patchlevel 44.
-       
-Tue Oct  7 20:21:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (dist-hook) Use $(top_srcdir).
-
-       * pref.h.orig: (MAX_WORKSPACE) Enlarge to 4 MB (from 1 MB).
-
-       * Made patchlevel 43.
-       
-Sun Oct  5 15:52:37 1997  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Bumped version to 0.1.2.
-       (strerror) Replace instead of check.  From Alexandre Oliva
-       <oliva@dcc.unicamp.br>.
-
-       * pref.h.orig: Include `debug-print' instead of
-       `src/debug-print.h'.
-
-       * Made patchlevel 42.
-
-Sat Oct  4 16:19:44 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: Comment fixes.
-       (local_strdup) [HAVE_ALLOCA && PAGED_STACK &&
-       __GNUC__] Use local_alloc() instead of alloca(), as local_alloc()
-       isn't simply an alias for alloca().
-
-       * configure.in: Bumped version to 0.1.1.
-
-       * Made patchlevel 41.
-
-Sat Oct  4 02:13:00 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 40.
-
-Sun Sep 21 00:07:09 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 39.
-
-Thu Sep 18 21:42:27 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: (CONFIG_PATH) [unix] Add /usr/local/etc/fiasco,
-       /usr/etc/fiasco to search path.
-
-       * Made patchlevel 38.
-               
-Wed Aug 20 14:20:06 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (noinst_DATA) Removed ANNOUNCE, HELP-WANTED.
-       (EXTRA_DIST) Removed ANNOUNCE, FAQ, HELP-WANTED, mk-web-dist.
-       (MAINTAINERCLEANFILES) Removed ANNOUNCE, FAQ, HELP-WANTED.
-
-       * Made patchlevel 37.
-
-Wed Aug 20 12:48:25 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (doc/ANNOUNCE.html, ANNOUNCE, FAQ, doc/FAQ.html,
-       HELP-WANTED) Removed.
-       (docfiles) Removed ANNOUNCE, FAQ, HELP-WANTED.
-
-       * mk-web-dist: Removed.
-
-       * Made patchlevel 36.
-
-Mon Aug 18 18:06:12 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * pref.h.orig: (macro DEFAULT_COMPAT) Removed.
-
-       * Made patchlevel 35.
-
-Sun Aug 17 22:48:36 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 34.
-
-Sat Aug 16 10:48:29 1997  Ben Pfaff  <blp@gnu.org>
-
-       * In many files, in this directory and others, messages were
-       rephrased to eliminate or reduce usage of certain deprecated terms
-       at suggestion of rms.
-       
-       * Makefile.am: (EXTRA_DIST) Removed unix2dos.pl.
-       (MAINTAINERCLEANFILES) Removed doc/ANNOUNCE.html, doc/README.html.
-       (docfiles-recursive) Removed.
-
-       * TODO: Updated.
-
-       * mk-web-dist: Doesn't produce any distributions at all, just a
-       webpage.  Doesn't configure the distribution.  Changed list of
-       files installed.
-
-       * pref.h.orig: s/VER_PCP40/VER_PC/; s/VER_WIN61/VER_WND/;
-       s/VER_X40/VER_X/; All references changed.
-
-       * Made patchlevel 33.
-
-Thu Aug 14 22:02:08 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Comment fixes.  Uses $(VERSION) instead of contents
-       of VERSION file.
-       (EXTRA_DIST) Remove fiasco.ide, mk-bc5-dist.
-       (docfiles-recursive) Works if doc/Makefile doesn't exist.
-       (DIST_BC5_ROOT) Renamed DISTBC5_DISTROOT.
-       (DISTBC5_BC5ROOT) New var.
-       (dist-bc5) Passes $(DISTBC5_BC5ROOT).
-
-       * TODO: Update.
-
-       * acinclude.m4: Remove blp_VERSION_CHEAT kluge.
-
-       * configure.in: Don't use blp_VERSION_CHEAT kluge.
-
-       * mk-web-dist, reconfigure: Extract version number from
-       configure.in.
-
-       * pref.h.orig: (CONFIG_PATH, INCLUDE_PATH, GROFF_FONT_PATH)
-       [__MSDOS__] Fixed bad use of backslashes.
-
-       * reconfigure: Pass $VERSION to Makefile.
-
-       * Made patchlevel 32.
-
-Thu Aug 14 11:49:35 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST, docfiles) Add ONEWS.
-       (docfiles) Depends on docfiles-recursive.
-       (docfiles-recursive) New target, call make for `docfiles' target
-       in doc directory.
-       (dist-bc5) Adds `foo' second arg to mk-bc5-dist.
-       (.PHONY) Add docfiles.
-
-       * mk-bc5-dist: Checks that it is passed a second arg of `foo'.
-
-       * reconfigure: Changed == operators to = as arguments to `test'.
-       No longer uses bash -v switch.
-
-       * mk-distribution: Renamed mk-web-dist, all references changed.
-       Now takes several options, added help.  No longer uses -uv
-       options.
-
-       * Made patchlevel 31.
-
-Tue Aug  5 13:56:39 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (MAINTAINERCLEANFILES) Add HELP-WANTED.
-       (EXTRA_DIST) Add ONEWS.
-
-       * Made patchlevel 30.
-
-Sun Aug  3 11:30:17 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (noinst_data, docfiles) Added HELP-WANTED.
-       (EXTRA_DIST) Added configure, mk-bc5-dist, unix2dos.pl,
-       HELP-WANTED.
-       (HELP-WANTED) Generated from doc/HELP-WANTED.html.
-       (dist-bc5) New target.
-
-       * TODO: Updated.
-
-       * mk-distribution: Fixed bugs, added HELP-WANTED.
-
-       * reconfigure: When invoking Makefile.am, pass
-       top_srcdir=. explicitly.
-
-       * unix2dos.pl: New file.
-
-       * Made patchlevel 29.
-
-Thu Jul 17 21:49:13 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 28.
-
-Thu Jul 17 01:43:25 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Remove inactive .html suffix rule.
-       New rules to generate doc/ANNOUNCE.html and doc/README.html from
-       corresponding .in files.
-       (EXTRA_DIST) Add VERSION, fiasco.ide, mk-distribution.
-       (MAINTAINERCLEANFILES) Add doc/ANNOUNCE.html, doc/README.html.
-
-       * acinclude.m4: (blp_VERSION_CHEAT) New macro.
-
-       * configure.in: Forces _GNU_SOURCES not only to be defined, but to
-       a value of 1.  Substitutes VERSION from the new file VERSION.
-       Removed DEBIAN reference.  Checks for sys/mman.h header.
-
-       * pref.h.orig: (macro gettext) Don't put parentheses in the
-       expansion.
-       (macro N_) Same.
-
-       * reconfigure: Sets -ev in shell.  Doesn't try to pass
-       --include-deps to configure (it's an automake flag!).  Moved `make
-       docfiles'.
-
-       * sysdeps/borlandc4.0/README, sysdeps/borlandc4.0/_read.c,
-       sysdeps/borlandc4.0/_write.c, sysdeps/borlandc4.0: Removed.
-
-       * VERSION: New file.
-
-       * fiasco.ide: New file.
-
-       * mk-distribution: New file.
-
-       * Made patchlevel 27.
-       
-Fri Jul 11 23:00:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updates.
-
-       * Made patchlevel 26.
-
-Fri Jul 11 14:08:21 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: __CYGWIN32__ is a form of __unix__.
-
-       * reconfigure: Add -k for make maintainer-clean.
-
-       * Made patchlevel 25.
-
-Thu Jul 10 22:13:07 1997  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Add "-D_GNU_SOURCE" to CPPFLAGS to force GNU
-       glibc extensions to be detected.
-
-       * Made patchlevel 24.
-
-Sun Jul  6 19:13:07 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: Include "src/debug-print.h" instead of
-       "debug-print.h".
-       (macros local_alloc, local_free) More robust under Checker: put
-       their allocations in namespace different from malloc()/free().
-
-       * Made patchlevel 23.
-
-Sat Jul  5 23:42:14 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updates.
-
-       * Made patchlevel 22.
-
-Fri Jul  4 13:20:47 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Removed orphaned-rules.
-       (docfiles) Removed ChangeLog, COPYING.
-       (html, maintainer-clean-hook, install-data-hook) Removed.
-
-       * reconfigure: Added --help option.  Calls configure again even if
-       --no-include-deps.
-
-       * Made patchlevel 21.
-
-Wed Jun 25 22:47:17 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Require Automake 1.2.
-       (dist-hook) Don't copy config dir.
-       (EXTRA_DIST, MAINTAINERCLEANFILES) Add FAQ.
-       (docfiles) Made a variable as well as a target; added ChangeLog,
-       COPYING, FAQ, INSTALL, TODO.
-       (html, maintainer-clean-hook, install-data-hook, debian,
-       debian-clean, debian-clean-full) New targets.
-
-       * orphaned-rules: Removed.
-
-       * configure.in: Bumped up to version 0.1.0.
-
-       * reconfigure: New options --enable-nls, --no-include-deps.
-       Comment fixes.
-
-       * Made patchlevel 20.
-
-Sun Jun 22 22:10:27 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 19.
-
-Sun Jun 15 16:44:14 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: Comment fixes.  Includes debug-print.h.
-       (DEMAND_PAGE, ALWAYS_PAGE, NEVER_PAGE) Removed.
-
-       * Made patchlevel 18.
-
-Sun Jun  8 01:25:40 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 17.
-
-Fri Jun  6 22:41:08 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updates.
-
-       * pref.h.orig: Reformatted macros.
-       [!ENABLE_NLS] Defines gettext() as a trivial substitution to allow
-       gcc to give warnings on printf().
-
-       * Made patchlevel 16.
-       
-Thu Jun  5 23:01:49 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 15.
-
-Tue Jun  3 23:24:08 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: AUTOMAKE_OPTIONS changed from `foreign 1.1l' to
-       `gnits 1.1p'.  SUBDIRS reordered.  New target `docfiles'.
-
-       * TODO: Updates.
-
-       * configure.in: Removed AM_MAINTAINER_MODE.  Added
-       --enable-Werror, which is implied by --with-checker.
-
-       * reconfigure: Moved `aclocal' from beginning to just before
-       cleaning `autoheader'.  Removed --enable-maintainer-mode.  Added
-       --disable-nls.  Added `make docfiles' to placate autoheader.
-       Added `aclocal' before first real `autoheader'.  Uses `make
-       mostlyclean' instead of `make depend'.
-
-       * Made patchlevel 14.
-
-Mon Jun  2 14:21:54 1997  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Removed comment that screwed things up.
-
-       * reconfigure: Added `aclocal' at beginning.
-
-       * Made patchlevel 13.
-
-Sun Jun  1 23:25:39 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add intl, po to SUBDIRS.  Add aclocal.m4,
-       config.h.in to MAINTAINERCLEANFILES.
-
-       * acconfig.h: Add HAVE_LC_MESSAGES, ENABLE_NLS, HAVE_CATGETS,
-       HAVE_GETTEXT, HAVE_STPCPY.
-
-       * configure.in: Reordered to placate autoheader.  Added
-       AC_ISC_POSIX, AM_PROG_CC_STDC.  Added internationalization:
-       ALL_LINGUAS="", AM_GNU_GETTEXT, AC_LINK_FILES(...).  Added
-       po/Makefile.in, intl/Makefile to generated files list.  Generates
-       po/Makefile from po/Makefile.in.  Comment fix.
-
-       * pref.h.orig: Uncommented i18n support.
-
-       * acinclude.m4: New file.
-
-       * ABOUT-NLS: New file.
-
-       * intl/: New directory, taken from gettext-0.10.27.
-
-       * missing: New file, taken from automake-1.1p.
-
-       * po/: New directory.
-
-       * Made patchlevel 12.
-
-Sun Jun  1 17:28:27 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 11.
-
-Sun Jun  1 11:58:43 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: Removed DEFAULT_VER_PCP40, DEFAULT_VER_WIN61,
-       DEFAULT_VER_X40.  Added a macro DEFAULT_COMPAT that takes one of
-       the VER_* enums as a value.
-       (HISTORY_FILE) Changed the definition to "~/.fiasco_history".
-
-       * Made patchlevel 10.
-
-Fri May 30 19:40:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * pref.h.orig: [__MSDOS__] Reordered INCLUDE_PATH.
-
-       * Made patchlevel 9.
-
-Sun May 25 22:32:57 1997  Ben Pfaff  <blp@gnu.org>
-
-       * acconfig.h: For support of glibc 2, define _GNU_SOURCE.
-
-       * Made patchlevel 8.
-
-Mon May  5 21:58:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 7. 
-
-Fri May  2 22:27:36 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 6.
-
-Thu May  1 15:34:01 1997  Ben Pfaff  <blp@gnu.org>
-
-       * All files: Changed copyright from `Ben Pfaff' to `Free Software
-       Foundation, Inc'.
-
-       * Made patchlevel 5.
-
-Thu May  1 15:00:51 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 4.
-
-Sat Apr 26 11:34:05 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ChangeLog: Split into one ChangeLog per directory.
-
-       * Made patchlevel 3.
-
-Wed Apr 23 21:33:48 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Update.
-
-       * Made patchlevel 2.
-
-Fri Apr 18 16:48:41 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Removed `include', `util' from SUBDIRS; added
-       `config'.  Includes `config' directory in distributions.  Added
-       `private-install', `private-uninstall' targets.
-
-       * configure.in: AC_INIT tests for src/q2c.c now.  Removed
-       redundant AC_PROG_MAKE_SET call.  Removed include/Makefile,
-       util/Makefile from generated files list; added config/Makefile.
-
-       * include/approx.h, include/arena.h, include/common.h,
-       include/dfm.h, include/do-ifP.h, include/error.h, include/expr.h,
-       include/exprP.h, include/file-handle.h, include/filename.h,
-       include/font.h, include/getline.h, include/getopt.h,
-       include/hash.h, include/heap.h, include/log.h, include/misc.h,
-       include/output.h, include/settings.h, include/sfm.h,
-       include/sfmP.h, include/som.h, include/somP.h, include/stat.h,
-       include/stats.h, include/str.h, include/tokens.h, include/var.h,
-       include/version.h, include/vfmP.h: Moved into src/ directory.
-
-       * include/Makefile.am, include/: Removed.
-
-       * util/Makefile.am: Removed.
-
-       * util/q2c.c: Moved to src/.
-
-       * util/reconfigure: Moved to source root.
-
-       * util/: Removed.
-
-       * Made patchlevel 1.
-
-Fri Apr 18 15:42:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Maintainer-cleans generated documentation and
-       Makefile.in.
-
-       * include/Makefile.am, util/Makefile.am: Maintainer-cleans
-       Makefile.in.
-
-       * include/somP.h: (static struct var som) Removed passed_t member.
-
-       * TODO: Updated.
-
-       * configure.in: Fixed source directory for copying pref.h; always
-       updates pref.h or at least touch'es it.
-
-       * pref.h.orig: Made a rather pejorative comment a lot milder so it
-       wouldn't be misinterpreted.
-
-       * Made interim release x3.
-       
-Thu Mar 27 01:11:29 1997  Ben Pfaff  <blp@gnu.org>
-
-       * All directories now contain new `Makefile.am's, in some cases
-       produced from bits and pieces of the single monolithic old one.
-       
-       * PATCHLEVEL: Removed.
-
-       * acconfig.h: Added GNU_PACKAGE, PACKAGE, PROTOTYPES, VERSION;
-       removed inclusion of conf.h.
-
-       * confh.in: Removed.
-       * confh.tmp.in: Removed.
-       
-       * configure.in: Deepened.  Updated for use with Automake 1.1l.
-       Removed PATCHLEVEL hacks.  Fixed lots of functions in
-       AC_CHECK_FUNCS, AC_REPLACE_FUNCS, and similar.  Only passes
-       `-Werror' to gcc in maintainer mode.  Doesn't output conf.h.
-       Touches pref.h even if it wasn't changed.  
-
-       * aclocal.m4: New file.
-
-       * config.h.in: Renamed from configh.in.
-
-       * pref.h.orig: Renamed from prefh.orig.
-
-       * Made interim release x2.
-       
-Thu Mar 27 01:07:02 1997  Ben Pfaff  <blp@gnu.org>
-
-    Changed the distribution from flat to deep.  New configuration:
-
-       ANNOUNCE        Makefile.in     config.h.in     mkinstalldirs
-       AUTHORS         NEWS            config.sub      orphaned-rules
-       BUGS            README          configure       pref.h
-       COPYING         THANKS          configure.in    pref.h.orig
-       ChangeLog       TODO            debian          src
-       ChangeLog~      acconfig.h      doc             stamp-h.in
-       INSTALL         aclocal.m4      include         sysdeps
-       LANGUAGE        config          install-sh      tests
-       Makefile.am     config.guess    lib             util
-
-       config:
-       devices      environment  papersize    ps-fontmap   ps-prologue
-
-       debian:
-       changelog  control    postinst   rules
-       conffiles  copyright  postrm
-
-       doc:
-       ANNOUNCE.html  Makefile.in    fiasco.info-2  stamp-vti
-       AUTHORS.html   README.html    fiasco.info-3  texinfo.tex
-       BUGS.html      THANKS.html    fiasco.info-4  version.texi
-       LANGUAGE.html  fiasco.info    fiasco.texi
-       Makefile.am    fiasco.info-1  mdate-sh
-
-       include:
-       approx.h       file-handle.h  misc.h         stats.h
-       arena.h        filename.h     output.h       str.h
-       common.h       font.h         settings.h     tokens.h
-       dfm.h          getline.h      sfm.h          var.h
-       do-ifP.h       getopt.h       sfmP.h         version.h
-       error.h        hash.h         som.h          vfmP.h
-       expr.h         heap.h         somP.h
-       exprP.h        log.h          stat.h
-
-       lib:
-       Makefile.am  Makefile.in  avllib       julcal       misc
-
-       lib/avllib:
-       AVLLIB.COPYING  Makefile.in     avl.h
-       Makefile.am     avl.c
-
-       lib/julcal:
-       Makefile.am  Makefile.in  julcal.c     julcal.h
-
-       lib/misc:
-       Makefile.am    getopt1.c      memset.c       strstr.c
-       Makefile.in    memchr.c       qsort.c        strtol.c
-       alloca.c       memcmp.c       stpcpy.c       strtoul.c
-       getdelim.c     memcpy.c       strcasecmp.c
-       getline.c      memmem.c       strncasecmp.c
-       getopt.c       memmove.c      strpbrk.c
-
-       src:
-       Makefile.am     error.c         lexer.c         sfm-write.c
-       Makefile.in     expr-evl.c      list.c          show.c
-       arena.c         expr-opt.c      list.q          som-frnt.c
-       ascii.c         expr-prs.c      log.c           som-high.c
-       autorecode.c    file-handle.c   loop.c          som-low.c
-       cases.c         file-handle.q   main.c          sort.c
-       cmdline.c       file-type.c     mis-val.c       split-file.c
-       command.c       filename.c      misc.c          stats.c
-       common.c        formats.c       modify-vars.c   str.c
-       compute.c       freq.c          numeric.c       sysfile-info.c
-       count.c         frequencies.c   output.c        temporary.c
-       crosstabs.c     frequencies.g   postscript.c    title.c
-       crosstabs.q     frequencies.q   print.c         val-labs.c
-       data-in.c       get.c           recode.c        var-labs.c
-       data-list.c     getline.c       rename-vars.c   vars-atr.c
-       data-out.c      glob.c          repeat.c        vars-prs.c
-       descript.c      groff-font.c    sample.c        vector.c
-       descript.q      hash.c          sel-if.c        version.c
-       dfm.c           heap.c          set.c           vfm.c
-       display.c       include.c       set.q           weight.c
-       do-if.c         inpt-pgm.c      sfm-read.c
-
-       sysdeps:
-       BorlndC4.0  DJGPP2.0    Windows
-
-       sysdeps/BorlndC4.0:
-       Makefile     _write.c     conf.h
-       _read.c      compile.bat  config.h
-
-       sysdeps/DJGPP2.0:
-       Makefile     compile.bat  conf.h       config.h
-
-       sysdeps/Windows:
-       con32s.c
-
-       tests:
-       Makefile.am         expression.stat     reread.data
-       Makefile.in         fall92.data         reread.stat
-       autorecode.stat     fall92.stat         sample.stat
-       begin-data.stat     file-label.stat     show-check-msg
-       bignum.data         file-type.stat      sort.data
-       bignum.stat         filter.stat         sort.stat
-       bug.stat            gengarbage.c        split-file.stat
-       compute.stat        input-program.stat  sysfile-info.stat
-       count.stat          list.data           temporary.stat
-       data-formats.stat   list.stat           time-date.stat
-       data-list.data      loop.stat           vector.stat
-       data-list.stat      modify-vars.stat    weighting.data
-       descript.stat       print.stat          weighting.stat
-       do-if.stat          process-if.stat
-       do-repeat.stat      recode.stat
-
-       util:
-       Makefile.am  Makefile.in  q2c.c        reconfigure
-
-    Old configuration:
-
-       ANNOUNCE.html   count.c         hash.h          sample.c
-       AUTHORS.html    crosstabs.q     heap.c          sel-if.c
-       AVLLIB.COPYING  data-in.c       heap.h          set.q
-       BUGS.html       data-list.c     include.c       settings.h
-       COPYING         data-out.c      inpt-pgm.c      sfm-read.c
-       ChangeLog       debian          install-sh      sfm-write.c
-       INSTALL         descript.q      julcal.c        sfm.h
-       LANGUAGE.html   devices         julcal.h        sfmP.h
-       Makefile.am     dfm.c           lexer.c         show.c
-       NEWS            dfm.h           list.q          som-frnt.c
-       PATCHLEVEL      display.c       log.c           som-high.c
-       README.html     do-if.c         log.h           som-low.c
-       THANKS.html     do-ifP.h        loop.c          som.h
-       TODO            environment     main.c          somP.h
-       _read.c         error.c         makeb40.bat     sort.c
-       _write.c        error.h         makedj2.bat     split-file.c
-       acconfig.h      expr-evl.c      makefile.b40    stamp-h.in
-       alloca.c        expr-opt.c      makefile.dj2    stats.c
-       approx.h        expr-prs.c      mdate-sh        stats.h
-       arena.c         expr.h          memcmp.c        stpcpy.c
-       arena.h         exprP.h         mis-val.c       str.c
-       ascii.c         fiasco.texi     misc.c          str.h
-       autorecode.c    file-handle.h   misc.h          sysfile-info.c
-       avl.c           file-handle.q   mkinstalldirs   temporary.c
-       avl.h           file-type.c     modify-vars.c   test
-       cases.c         filename.c      numeric.c       texinfo.tex
-       cmdline.c       filename.h      output.c        title.c
-       command.c       font.h          output.h        tokens.h
-       common.c        formats.c       papersize       val-labs.c
-       common.h        freq.c          postscript.c    var-labs.c
-       compute.c       frequencies.g   prefh.orig      var.h
-       con32s.c        frequencies.q   print.c         vars-atr.c
-       confh.b40       get.c           ps-fontmap      vars-prs.c
-       confh.dj2       getline.c       ps-prologue     vector.c
-       confh.in        getline.h       q2c.c           version.c
-       confh.tmp.in    getopt.c        qsort.c         version.h
-       config.guess    getopt.h        recode.c        vfm.c
-       config.sub      getopt1.c       reconfigure     vfmP.h
-       configh.b40     glob.c          reject          weight.c
-       configh.dj2     groff-font.c    rename-vars.c
-       configure.in    hash.c          repeat.c
-
-       debian:
-       changelog  control    postinst   rules
-       conffiles  copyright  postrm
-
-       test:
-       autorecode.stat     fall92.data         recode.stat
-       begin-data.stat     fall92.stat         reread.data
-       bignum.data         file-label.stat     reread.stat
-       bignum.stat         file-type.stat      sample.stat
-       bug.stat            filter.stat         sort.stat
-       compute.stat        gengarbage.c        split-file.stat
-       count.stat          gengarbage.pl       sysfile-info.stat
-       data-formats.stat   input-program.stat  temporary.stat
-       data-list.data      list.data           time-date.stat
-       data-list.stat      list.stat           vector.stat
-       descript.stat       loop.stat           weighting.data
-       do-if.stat          modify-vars.stat    weighting.stat
-       do-repeat.stat      print.stat
-       expression.stat     process-if.stat
-
-Mon Mar 24 21:47:31 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: @ALLOCA@ is on list of source files instead of
-       alloca.c.  Added $(srcdir)/ to version.c reference.  Changed to
-       pkgdatadir (/usr/share) for pkgsysconfdir, from pkglibdir
-       (/usr/lib).  Removed some of extra distfiles.  Added bogus `check'
-       target.
-
-       * Made transition release x1.
-
-Sun Mar  2 20:51:28 1997  Ben Pfaff  <blp@gnu.org>
-
-       No longer uses debmake:
-       
-       * Makefile.am: Installs documentation according to Debian policy
-       manual.  New targets `private-uninstall', `install-data-hook' to
-       help implement this.  `debian' target also revised.
-       
-       * configure.in: Sets up for Debian installation depending on
-       DEBIAN environment variable.  Also, improved & fixed (hopefully)
-       the scheme for detecting patchlevel.
-       
-       * Made patchlevel 193.
-
-Wed Feb 19 21:30:31 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 192.
-
-Sun Feb 16 20:57:20 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 191.
-       
-Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Removed `descript.g' from sources.
-
-       * Made patchlevel 190.
-       
-Fri Feb 14 23:32:58 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-       
-       * configure.in: Fixed test for max number of digits in an `int' to
-       use char[] rather than int[].
-
-       * Made patchlevel 189.
-       
-Tue Feb  4 15:15:50 1997  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Fixed some problems with `--with-checker' flag and
-       with detection of available libraries; no longer any lines longer
-       than 79 characters.
-
-       * Made patchlevel 188.
-       
-Wed Jan 22 21:54:00 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add sysfile-info.c to sources.
-
-       * TODO: Moved some notes to different files where they are more
-       appropriate.
-
-       * prefh.orig: (macros STORE_2 and LOAD_2) Always load/store as
-       little-endian.
-
-       * Made patchlevel 187.
-
-Sun Jan 19 14:22:11 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added rename-vars.c to sources.  Added to distclean
-       files.
-
-       * TODO: Updates.
-
-       * Made patchlevel 186.
-
-Thu Jan 16 13:08:57 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Most files have updated copyright notices for 1997.
-
-       * Makefile.am: Added modify-vars.c to source files.  Also changed
-       `lynx' to $(HTML_FORMATTER), etc.  Changed messages.
-
-       * TODO: Updates.
-
-       * Made patchlevel 185.
-
-Sat Jan 11 15:44:15 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: By default, now installs config files in pkglibdir,
-       generally /usr/local/lib/fiasco.
-
-       * TODO: Updated.
-
-       * prefh.orig: Added `/etc/fiasco' to config paths.  Removed
-       $ARCH/$VER dirs from include paths. 
-
-       * Made patchlevel 184.
-
-Fri Jan 10 20:22:08 1997  Ben Pfaff  <blp@gnu.org>
-
-       * debian/changelog, debian/control, debian/copyright, debian/dirs,
-       debian/info, debian/menu, debian/rules: Added Debian GNU/Linux
-       control files.
-       
-       * Makefile.am: Added sfmP.h to source files.  Added several files
-       to the list of distfiles.   dist-hook now copies debian control
-       files.  New targets `debian', `debian-clean', `debian-clean-full'.
-
-       * confh.in: Defines PATCHLEVEL.
-
-       * configure.in: Adds the current patchlevel to the version
-       number.  Versions are now of the form `1.2.3pl456'.  Determines
-       the patchlevel based on directory name and contents of file
-       PATCHLEVEL.
-
-       * reconfigure: Passes automake `--strictness=foreign'.
-
-       * Made patchlevel 183.
-
-Thu Jan  2 19:08:23 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 182.
-
-Wed Jan  1 22:08:10 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-       
-       * Made patchlevel 181.
-       
-Wed Jan  1 17:00:59 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: New target for test/sort.data.
-
-       * Made patchlevel 180.
-       
-Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 179.
-
-Tue Dec 24 20:42:32 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 178.
-
-Sun Dec 22 23:10:39 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added heap.c, heap.h to source files.  Added
-       new html files to distfiles & maintainer-clean files.
-
-       * configure.in: Tests for presence of getpid(), sys/types.h.
-
-       * prefh.orig: #defines mkdir() for MS-DOS compatibility.
-
-       * Made patchlevel 177.
-
-Sat Dec 21 21:51:04 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added README.html, LANGUAGE.html to list of
-       distfiles.  Added README, LANGUAGE to list of maintainer-clean
-       files.  Added .html to suffixes.  Added .html implicit rule that
-       calls `lynx -dump -nolist'.
-
-       * Made patchlevel 176.
-       
-Tue Dec 17 18:57:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 175.
-       
-Sun Dec 15 15:32:16 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added vfmP.c, qsort, sort.c to list of source
-       files.
-
-       * prefh.orig: Subtle changes to MAX_WORKSPACE, ALWAYS_PAGE,
-       NEVER_PAGE, DEMAND_PAGE macro meanings.
-
-       * Made patchlevel 174.
-       
-Sat Dec 14 10:35:30 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 173.
-       
-Fri Dec 13 21:30:53 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added autorecode.c to source files.
-
-       * prefh.orig: Fixed path GROFF_FONT_PATH.
-
-       * Made patchlevel 172.
-       
-Fri Dec  6 23:53:47 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-       
-       * Made patchlevel 171.
-       
-Wed Dec  4 21:34:17 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 170.
-       
-Sun Dec  1 17:19:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 169.
-       
-Thu Nov 28 23:14:07 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added `set.q' to list of source files.
-
-       * Made patchlevel 168.
-
-Thu Nov 28 19:46:10 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 167.
-
-Wed Nov 27 23:18:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added `sfm-write.c' to list of source files.
-
-       * confh.in: New #defines RELEASE_NO, SUB_RELEASE_NO, and
-       SPEC_RELEASE_NO for each part of a version number of form 1.2.3.
-
-       * configure.in: Computes RELEASE_NO, etc., by breaking apart
-       VERSION.
-
-       * prefh.orig: (defn of int32, flt64) Formatting fixes.
-       (FLT64_MAX) New define.
-
-       * Made patchlevel 166.
-       
-Sun Nov 24 14:53:53 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Wow, it's been almost two weeks since the last update, hard to
-       believe.
-
-       * All source files: Updated e-mail address.
-       
-       * prefh.orig: local_alloc() calls xmalloc() under Checker because
-       Checker can keep track of heap blocks much more accurately.
-
-       * Made patchlevel 165.
-       
-Mon Nov 11 15:34:09 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 164.
-       
-Thu Nov  7 20:52:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 163.
-       
-Thu Nov  7 17:29:16 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 162.
-       
-Thu Nov  7 15:48:52 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 161.
-       
-Tue Nov  5 18:34:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 160.
-       
-Mon Nov  4 22:03:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added get.c.
-
-       * TODO: Updated.
-
-       * Made patchlevel 159.
-       
-Sun Nov  3 12:24:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added sfm.h, sfm-read.c to source files.
-
-       * Made patchlevel 158.
-       
-Wed Oct 30 17:13:08 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added dist-zip target to AUTOMAKE_OPTIONS.
-
-       * acconfig.h: Added FPREP_* defines.
-
-       * configure.in: Added checks for the sizes of floating-point
-       types.  Added a test for the internal floating-point
-       representation of the host architecture.
-
-       * prefh.orig: Renamed `ATTRIBUTION' macro as `__attribute__'.  All
-       references changed.  Defines `flt64' 64-bit floating-point for use
-       with system files.
-       [FPREP==FPREP_IEEE754 && __GNUC__ && (ENDIAN==BIG ||
-       ENDIAN==LITTLE] Defines SECOND_LOWEST_VALUE macro.
-       
-       * Made patchlevel 157.
-
-Sat Oct 26 23:06:06 1996  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Checks sizes of short, int, long, long long.
-
-       * prefh.orig: Defines new type int32 for use with system
-       files.
-
-       * Made patchlevel 156.
-       
-Sat Oct 26 20:46:31 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 155.
-
-Sat Oct 26 10:39:25 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 154.
-       
-Thu Oct 24 20:13:42 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added back in these files: recode.c, sample.c,
-       sel-if.c.  Also added files somP.h, hash.c that should've been
-       there anyway.
-
-       * TODO: Updated.
-
-       * configure.in: Checks for strncasecmp in place of strcasecmp.
-
-       * Made patchlevel 153.
-       
-Thu Oct 24 17:47:14 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * Made patchlevel 152.
-       
-Wed Oct 23 21:53:43 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Organized.
-
-       * Made patchlevel 151.
-       
-Tue Oct 22 17:27:04 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Culled old notes.
-
-       * Made patchlevel 150.
-
-Mon Oct 21 20:39:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 149.
-       
-Sun Oct 20 13:45:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added back in `numeric.c', `print.c', `title.c'.
-       Defined ETAGS_ARGS.
-
-       * Made patchlevel 148.
-       
-Sun Oct 20 09:04:15 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 147.
-       
-Fri Oct 18 19:46:49 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 146.
-       
-Sun Sep 29 19:37:03 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 145.
-       
-Sat Sep 28 21:28:07 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added to DISTCLEANFILES. 
-   
-       * Made patchlevel 144.
-       
-Fri Sep 27 20:08:39 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 143.
-       
-Thu Sep 26 22:20:26 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added list.c back into the list of source files.
-
-       * Made patchlevel 142.
-       
-Wed Sep 25 19:36:11 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Updated for new files.
-
-       * Made patchlevel 141.
-               
-Tue Sep 24 18:39:09 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 140.
-
-Sat Sep 21 23:16:31 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 139.
-
-Fri Sep 20 22:52:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 138.
-       
-Thu Sep 12 18:40:33 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 137.
-
-Wed Sep 11 22:01:41 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Added timestamp.
-
-       * prefh.orig: Removed `/usr/local/share/fiasco' and
-       `/usr/share/fiasco' from CONFIG_PATH as per the Linux FSSTND,
-       which specifies that programs should never give an explicit
-       `/usr(/local)/share' path.
-
-       * Made patchlevel 136.
-
-Tue Sep 10 21:39:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added `display.c' back in.
-
-       * TODO: Addition.
-
-       * Made patchlevel 135.
-       
-Mon Sep  9 21:43:13 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added `split-file.c' back into the project.
-
-       * Made patchlevel 134.
-       
-Sat Sep  7 22:35:12 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Updated.
-
-       * prefh.orig: (local_strdup) Moved to misc.h.
-
-       * Made patchlevel 133. 
-       
-Thu Sep  5 22:05:56 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Changed `prologue.ps' references to `ps-prologue'.
-
-       * Made patchlevel 132.
-       
-Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prefh.orig: New i18n defines.
-
-       * This patchlevel doesn't even compile.
-
-       * Made patchlevel 131.
-       
-Sat Aug 31 23:52:38 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: Addition.
-
-       * Made patchlevel 130.
-               
-Thu Aug 29 21:36:41 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 129.
-       
-Sat Aug 24 23:26:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: New target "private-install" to install config files
-       to $HOME/.fiasco.
-
-       * configure.in: Now that I have made a less-bogus Checker
-       distribution, removed `-b i486-linuxaout -V 2.6.3' from
-       AC_ARG_WITH(checker, ...).
-
-       * Made patchlevel 127 somewhere in there.
-       
-       * Made patchlevel 128.
-       
-Sun Aug 11 21:31:22 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Changed DISTCLEANFILES.
-
-       * Does not compile.
-       
-       * Made patchlevel 126.
-       
-Sat Aug 10 23:28:17 1996  Ben Pfaff  <blp@gnu.org>
-
-       * reconfigure: Calls `autoheader' twice: once at the beginning,
-       once after make maintainer-clean.
-
-       * Made patchlevel 125. 
-       
-Thu Aug  8 22:31:11 1996  Ben Pfaff  <blp@gnu.org>
-
-       * reconfigure: `autoheader' now first operation performed.
-
-       * Made patchlevel 124.
-       
-Sat Aug  3 20:50:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added postscript.c to list of source files.
-
-       * configh.in: Removed since autoheader can regenerate it.
-
-       * configure.in: Improved tests for (ncurses or termcap) and
-       (history and/or readline) libraries and associated headers.  Added
-       check for strcasecmp().  Changed default gcc CFLAGS.
-
-       * prefh.orig: Removed `.' from GROFF_FONT_PATH.
-       (local_alloc, local_free) New functions.
-
-       * reconfigure: Added call to autoheader.
-
-       * Made patchlevel 123.
-       
-Sat Jul 27 22:32:38 1996  Ben Pfaff  <blp@gnu.org>
-
-       * There were some problems with the patchfiles so I had to merge
-       what was previously patchlevels 121 and 122; now everything from
-       what was previously 122 is called 121.  Oh well, just don't let it
-       happen often.
-
-       * This patchlevel does not compile.
-
-       * configure: No longer included in patches to save lotsa space
-       when configure.in changes.
-
-       * configure.in: Changed the technique for detecting libraries.
-
-       * prefh.orig: Style changes; handles changed configure.in.
-
-       * Made patchlevel 122 (second edition).
-
-Tue Jul 23 21:48:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 121.
-       
-Wed Jul 17 21:23:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 120.
-
-Tue Jul 16 22:10:04 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 119.
-
-Sun Jul 14 15:45:31 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 118.
-
-Fri Jul 12 22:03:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added list.c to sources.
-       
-       * Made patchlevel 117.
-       
-Sat Jul  6 22:22:25 1996  Ben Pfaff  <blp@gnu.org>
-
-       * configure.in: Removed reference to `malloc.h'.
-       
-       * Made patchlevel 116.
-       
-Fri Jul  5 20:16:19 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 115.
-
-Thu Jul  4 20:20:24 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prefh.orig: Changes to CONFIG_PATH, INCLUDE_PATH,
-       GROFF_FONT_PATH.
-
-       * Makefile.am: pkgdata_DATA file `output' changed to `devices'.
-       
-Thu Jul  4 00:35:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * TODO: doc fix.
-       
-       * Made patchlevel 114.
-       
-Tue Jul  2 22:13:23 1996  Ben Pfaff  <blp@gnu.org>
-
-       * reconfigure: (new file) Runs all the programs necessary to
-       create a Makefile that includes dependencies.
-
-       * Made patchlevel 113.
-       
-Mon Jul  1 22:13:39 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Made patchlevel 112.
-
-Mon Jul  1 13:00:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Most files: Changed references from `stat' (the original, rather
-       dull old name for this project) to `Fiasco' (the creative, rather
-       funny new name for this project).
-       
-       * Made patchlevel 111.
-       
-Sat Jun 29 17:40:47 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prefh.orig: changed default file search paths
-       
-       * Made patchlevel 110.
-
-Fri Jun 28 11:59:48 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Added automake support; removed GNUmakefile and GNUmakefile.in.
-
-----------------------------------------------------------------------
-Local Variables:
-mode: change-log
-version-control: never
-End:
index 806fc2a9768ae596613e1afebcdf2ec951e0bebb..ab32f9967861de2e0b5bc6c7836f185f9dc7f0ce 100644 (file)
@@ -27,7 +27,7 @@ all_q_sources =
 pkgsysconfdir = $(sysconfdir)/@PACKAGE@
 
 
-EXTRA_DIST = ONEWS config.rpath pspp-mode.el
+EXTRA_DIST = OChangeLog ONEWS config.rpath pspp-mode.el
 
 CLEANFILES = 
 ACLOCAL_AMFLAGS = -I m4 -I gl/m4
@@ -35,6 +35,17 @@ noinst_LIBRARIES=
 noinst_PROGRAMS=
 check_PROGRAMS=
 bin_PROGRAMS=
+DIST_HOOKS =
+PHONY =
+
+DIST_HOOKS += generate-changelog
+generate-changelog:
+       if test -d $(top_srcdir)/.git; then                     \
+         $(top_srcdir)/gitlog-to-changelog --since=2008-07-27  \
+           > $(distdir)/cl-t;                                  \
+         rm -f $(distdir)/ChangeLog;                           \
+         mv $(distdir)/cl-t $(distdir)/ChangeLog;              \
+       fi
 
 include $(top_srcdir)/lib/automake.mk
 include $(top_srcdir)/doc/automake.mk
@@ -47,3 +58,7 @@ include $(top_srcdir)/tests/automake.mk
 if WITH_GUI_TOOLS
 include $(top_srcdir)/glade/automake.mk
 endif
+
+PHONY += $(DIST_HOOKS)
+dist-hook: $(DIST_HOOKS)
+.PHONY: $(PHONY)
diff --git a/OChangeLog b/OChangeLog
new file mode 100644 (file)
index 0000000..bcf78ac
--- /dev/null
@@ -0,0 +1,2406 @@
+2008-06-13  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Fix typo in AC_PREREQ command name.  Thanks to
+       Stepan Kasal <kasal@ucw.cz> for reporting the problem.
+
+2008-06-04  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Update version number to 0.6.0 in preparation for
+       release.
+
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       * Smake (GNULIB_MODULES): Don't depend on memmem module, because
+       PSPP does not use memmem any longer.  Use
+       unilbrk/ulc-width-linebreaks module instead of the linebreak
+       module, because the latter was split up into multiple modules and
+       that's the one we actually need.
+
+2008-05-09  John Darrington <john@darrington.wattle.id.au>
+
+       * INSTALL: For obscure reasons gettext 0.17 requires that 
+       the string 'GNU pspp' occurs in some file in the root 
+       directory. Otherwise make distcheck fails with a very non-intuitive 
+       error message.  So for want of somewhere better I added it 
+       in INSTALL.
+
+       But since this string now appears in this ChangeLog file, it
+       could be taken out of INSTALL ...
+
+2008-04-19  John Darrington <john@darrington.wattle.id.au>
+
+       * configure.ac : Improve checking of ncurses availability.
+
+2008-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Properly report required version of libglade.
+       Thanks to unknown-1 <pspp@sjpaes.nl> for reporting this bug.
+
+2008-04-15  John Darrington <john@darrington.wattle.id.au>
+
+       * configure.ac : Replace AC_CHECK_LIB with AC_SEARCH_LIBS as
+       recommended by latest autoconf manual.
+
+2008-02-19  John Darrington <john@darrington.wattle.id.au>
+
+       * configure.ac INSTALL: We now depend on GTK+ 2.12
+
+2007-12-11  John Darrington <john@darrington.wattle.id.au>
+
+       * t-test-independent-samples-dialog.c: Quoted the group values, when
+       the group variable is a string variable.
+
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       * Smake (GNULIB_MODULES): Add ftello module.
+
+2007-11-05  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: No need for check for off_t or for the size of
+       float or long double any longer, as we don't use the results
+       anymore.  Also, no need to put #include <locale.h> into config.h
+       any longer, as this was only needed for --with-included-gettext,
+       which we have not supported for some time.
+
+2007-11-03  Ben Pfaff  <blp@gnu.org>
+
+       Allow output files to overwrite input files (bug #21280).
+
+       * Smake (GNULIB_MODULES): Add fatal-signal, tempname modules.
+
+2007-11-02  Ben Pfaff  <blp@gnu.org>
+
+       * Smake (GNULIB_MODULES): Add isfinite, round modules.
+
+2007-10-12  Ben Pfaff  <blp@gnu.org>
+
+       Use trunc module from gnulib instead of our home-grown solution.
+       Patch #6224.
+
+       * Smake: Add trunc to module list.
+
+       * configure.ac: Don't need to check for trunc function any longer.
+
+2007-10-12  Ben Pfaff  <blp@gnu.org>
+
+       Use fseeko module from gnulib instead of our home-grown solution.
+       Patch #6228.
+
+       * acinclude.m4: Delete PSPP_OFF_T macro.
+
+       * configure.ac: Don't call AC_FUNC_FSEEKO or PSPP_OFF_T.
+
+2007-10-12  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add fprintf-posix, printf-posix, printf-safe,
+       snprintf-posix, sprintf-posix, vasprintf-posxi, vfprintf-posix,
+       vprintf-posix, vsnprintf-posix, and vsprintf-posix modules, which
+       allow us to use C99 format specifiers (e.g. 'z') in *printf.
+       Also, changed many formerly casted arguments in *printf calls to
+       use one of these format specifiers and drop the cast.
+2007-10-11  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Drop alloca, alloca-opt modules as we don't use them
+       anymore.
+
+2007-10-10  Ben Pfaff  <blp@gnu.org>
+
+       * acinclude.m4: Improve formatting.
+
+       * configure.ac: Ditto.  Don't check for headers whose presence is
+       never tested.  Don't use AC_C_CONST (we can assume that "const" is
+       implemented these days).  Don't pass default sizes to
+       AC_CHECK_SIZEOF, since modern Autoconf doesn't need them.  Don't
+       define FPREP_IEEE754, since it was not tested for.  Don't use
+       AC_FUNC_VPRINTF, since we never tested for it.
+
+2007-10-06 John Darrington <john@darrington.wattle.id.au>
+
+       * configure.ac INSTALL: Change libglade version requirement.
+       Thanks to Paul Brown for reporting this issue.
+
+2007-09-30  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Print a message indicating success at the end of
+       the run.
+
+       * INSTALL: Improve instructions.
+
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * acinclude.m4 (PSPP_LC_PAPER): New macro.
+
+       * configure.ac: Use PSPP_LC_PAPER.
+
+2007-08-05  Ben Pfaff  <blp@gnu.org>
+
+       Bug #16189.  Reviewed by Jason Stover.
+       * acinclude.m4: If -lplot doesn't work by itself, also test with
+       typical X11 libraries.
+
+2007-07-27  Ben Pfaff  <blp@gnu.org>
+
+       Bug #19069.
+       * INSTALL: Improve installation instructions.
+       * README: Move prerequisites to INSTALL.
+       Reviewed by Jason Stover.
+
+       * configure.ac: Make PKG_CHECK_MODULES tests more user-friendly,
+       by having them give their errors at the end of the configuration
+       process instead of stopping it in the middle.  Patch #6116.
+       Reviewed by Jason Stover.
+
+2007-06-14  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Use xmalloca instead of xallocsa due to module renaming.
+       Update all uses.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add xallocsa to modules.
+
+2007-04-22  Ben Pfaff  <blp@gnu.org>
+
+       Implement model checker for testing purposes.
+       
+       Patch #5873.
+       
+       * Smake (GNULIB_MODULES): Add crypto/md4, fwriteerror,
+       gettimeofday.
+
+2007-04-03  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Increment version to 0.4.3 due to snapshot posted
+       to alpha.gnu.org.
+       Suggested by John Darrington.
+
+2007-04-03  Ben Pfaff  <blp@gnu.org>
+
+       Use Gnulib's fpieee module instead of specifying -mieee by hand.
+
+       * Smake: Use fpieee module from Gnulib.
+
+       * configure.ac: Don't enable -mieee.
+
+2007-03-19  Ben Pfaff  <blp@gnu.org>
+
+       Work toward modernizing the build system by updating our Automake
+       and Autoconf dependencies and requiring libintl to be available
+       externally (if desired) instead of including a copy in the
+       distribution.
+
+       * Makefile.am (AUTOMAKE_OPTIONS): Require Automake 1.10 (or
+       later), which works better with systems that have a non-empty
+       $(EXEEXT).
+       (SUBDIRS): Drop intl.
+       (DISTCLEANFILES): Drop intl/plural.c.
+
+       * Throughout Makefile.am and the automake.mk files: Change
+       mkinstalldirs to $(MKDIR_P), to support the corresponding Automake
+       change.
+
+       * Smake (GNULIB_MODULES): Use gettext-h instead of gettext module.
+       (all): Don't create intl directory.
+       (gettextize): Don't use --intl flag.
+
+       * configure.ac: Require Autoconf 2.60 or later.  Use external
+       gettext.  Drop intl/Makefile from config files.
+
+2007-02-25  Ben Pfaff  <blp@gnu.org>
+
+       Thanks to Jason Stover for verifying that this patch helps under
+       NetBSD.
+
+       * acinclude.m4: Rename PSPP_ENABLE_WARNING to PSPP_ENABLE_OPTION,
+       because it's useful for more than warnings.
+
+       * configure.ac: Add PSPP_ENABLE_OPTION(-mieee) to improve IEEE
+       floating-point conformance on Alpha and SH architectures.  Also,
+       check for fpsetmask function (available on BSDs).
+
+Mon Feb 19 10:52:21 2007  Ben Pfaff  <blp@gnu.org>
+
+       * Smake (GNULIB_MODULES): Add dirname module, remove canonicalize
+       module.  Corresponds to changes in src/data/file-name.c.
+
+Sat Feb 17 09:22:32 2007  Ben Pfaff  <blp@gnu.org>
+
+       * Smake (GNULIB_MODULES): Add tmpfile module, which fixes the use
+       of the tmpfile function under Windows.
+
+Fri Feb 16 10:50:38 2007  Ben Pfaff  <blp@gnu.org>
+
+       Better support cross-compiling by using CC_FOR_BUILD and
+       EXEEXT_FOR_BUILD for q2c.
+       
+       * Makefile.am: Add CC_FOR_BUILD, EXEEXT_FOR_BUILD variables.  Use
+       in .q.c rule.
+
+       * acinclude.m4: Add PSPP_CC_FOR_BUILD macro.
+
+       * configure.ac: Call PSPP_CC_FOR_BUILD.
+
+Mon Feb 12 16:39:18 2007  Ben Pfaff  <blp@gnu.org>
+
+       * README: Note that iconv is required.
+
+       * configure.ac: Enforce iconv requirement.
+
+Thu Feb  8 14:56:18 2007  Ben Pfaff  <blp@gnu.org>
+
+       Reduce platform dependence.
+
+       * Makefile.am: Don't add -Dunix or -D__MSDOS__ to compiler command
+       line.  Add $(top_builddir)/intl to include path to fix building
+       with the included libintl.
+
+       * Smake (GNULIB_MODULES): Add `canonicalize', `sys_stat',
+       `mkstemp' modules.  Remove `stat-macros' module, which is no
+       longer what we want, because what we want is provided by sys_stat
+       now, and remove its inclusions.  Remove `strstr' module, which is
+       no longer in gnulib.  Remove `readlink', `xreadlink', because we
+       no longer use either function.
+
+       * configure.ac: Move gl_EARLY before AC_PROG_CC, where the gnulib
+       manual says it should be.  Check for presence of execl, fork,
+       and popen.  Drop check for unix versus msdos as host OS.
+
+Sat Nov  4 15:59:31 2006  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Check for the "round" function added in C99.
+
+Tue Oct 31 19:55:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake (GNULIB_MODULES): Add `mempcpy' module.
+
+Tue Oct 31 19:29:05 2006  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Drop tests for strchr, strrchr because now we
+       assume a C89 compliant library.  (Gnulib makes this assumption so
+       we might as well too.)
+
+Sun Oct 29 14:08:53 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake (GNULIB_MODULES): Remove `restrict' from modules, because
+       recent gnulib doesn't have such a module.
+
+Mon Jul 17 18:23:38 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add --doc-base=gl/doc to gnulib-tool invocation, which is
+       required by recent gnulib.
+
+Sun Jul 16 19:51:45 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add xsize to GNULIB_MODULES.
+
+Wed Jul 12 13:41:18 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add check_PROGRAMS and define to empty.
+
+Sat Jul  1 15:32:31 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add noinst_PROGRAMS and define to empty.
+
+Tue May  9 20:46:06 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add stdarg to GNULIB_MODULES.
+
+Sun May  7 09:27:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * po/en_GB.po : Removed.  Now that messages talking about coloUrs have 
+       been removed, it does nothing.
+
+Tue May  2 10:43:30 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * Bumped the minor version number from 0.4.1 to 0.4.2 to reflect 
+        changes to system file format.
+
+Mon Apr 24 14:12:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add exit to GNULIB_MODULES.
+
+Sun Apr 23 20:34:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add linebreak to GNULIB_MODULES.
+
+Sat Apr 15 21:45:40 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of src/libpspp/debug-print.h and all its uses.  (There
+       were few real users, but many inclusions of its header file.)
+
+Sat Apr 15 19:51:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of our own int32 type in favor of the standard int32_t
+       type.
+       
+       * configure.ac: Don't need to check the sizes of integer types
+       anymore.
+
+Sat Apr 15 19:13:59 2006  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac, acinclude.m4: Complain about missing prerequisites
+       in a group at the end of configuration, not piecemeal.  This
+       should make building PSPP less frustrating.  Thanks to John
+       Darrington for the suggestion.
+
+Sat Apr 15 18:17:15 2006  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Move code into acinclude.m4 to make the configure
+       script more readable.
+
+       * acinclude.m4: New functions from configure.ac.
+
+Mon Apr  3 11:01:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: (GNULIB_MODULES) Add strsep.
+
+Thu Mar 30 15:50:05 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Enable -Wdeclaration-after-statement warning if
+       available.
+
+       * acinclude.m4: Add macro for checking whether a warning is
+       supported.
+
+Mon Mar 20 16:32:11 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Require "unistd" gnulib module.  Removed tests for
+       HAVE_UNISTD_H from source code.
+
+Sat Mar  4 13:20:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Get rid of pref.h.orig.
+
+       * pref.h.orig: Removed.  Moved SHORT_NAME_LEN, LONG_NAME_LEN to
+       src/data/variable.h.  Removed GLOBAL_DEBUGGING entirely, changing
+       all references to DEBUGGING.  Moved P_tmpdir to
+       src/data/make-file.c.  Moved NO_CHARTS to
+       src/output/charts/automake.mk.
+
+Sat Mar  4 12:58:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: Move GCC attribute declarations to
+       new file src/libpspp/compiler.h.
+
+Sat Mar  4 12:27:06 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Require "intprops" gnulib module.
+
+       * acinclude.m4: Remove BLP_INT_DIGITS.  Now we use the intprops.h
+       header file instead.
+
+       * configure.ac: Don't call BLP_INT_DIGITS.
+
+Sat Mar  4 11:53:36 2006  Ben Pfaff  <blp@gnu.org>
+
+       * acinclude.m4: Remove BLP_RANDOM.  Its results were unused.
+       Remove BLP_IS_SPRINTF_GOOD.  We now assume that the system's
+       sprintf() returns the correct value.
+
+       * configure.ac: Don't call those macros.
+
+John Darrington:
+
+       * Deleted Make.build (inserted its contents into Makefile.am).
+       
+       * Moved the version number to 0.4.1
+
+       * Moved lib/linreg/linreg.[ch] and lib/linreg/coefficient.[ch] to
+         src/math/linreg.
+
+       * Moved the psppire gui into src/ui/gui and the gtk_sheet widget 
+          into lib/gtksheet.
+
+       * Replaced recursive automake system with non-recursive one.
+
+       * Moved files into subdirectories. See src/ChangeLog for details.
+
+Sat Feb 11 21:57:31 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: (GNULIB_MODULES) Add memcasecmp.
+
+       * configure.ac: Remove existing checks for readline, replacing
+       them by a call to PSPP_READLINE.
+
+       * acinclude.m4: Add PSPP_READLINE macro based on gnulib test for
+       readline.  However, we only accept a readline installation if (1)
+       the header files are in the normal readline/ directory and (2) the
+       history library is also available.  If both criteria are met, we
+       declare HAVE_READLINE.  This reduces the #ifdefs to actually use
+       readline to something manageable.
+
+       * pref.h.orig: Move DIR_SEPARATOR, PATH_DELIMITER definitions to
+       src/filename.h.
+
+Wed Jan 25 21:48:20 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: (po/POTFILE.in) Exclude dotfiles.
+
+Sat Nov 27 20:29:19 2005 Jason Stover <jason@sakla.net>
+
+       * Binary encoding for categorical variables.
+       * Routines for design matrices.
+       
+Thu Oct 20 18:19:58 2005  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Improve error messages.  Thanks to Jaap-Andre de
+       Hoop <j.dehoop@data-assist.nl>.
+
+Wed Oct 12 20:33:07 2005 Jason Stover <jstover@sdf.lonestar.org>
+
+       * regression.q: Initial version of the REGRESSION procedure.
+       
+Sun Sep 25 16:11:09 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Handles `examples' as a subdirectory instead of a
+       dist-hook.  The dist-hook copied examples/CVS into the
+       distribution.  Thanks to James R. Van Zandt <jrvz@comcast.net> for
+       reporting the problem.
+
+Mon Sep 19 10:24:10 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Add `check' target for convenience.  Add
+       --tests-base=tests to gnulib-tool invocation to compensate for
+       bug.
+
+Sat Sep 17 15:57:32 2005 Jason Stover <jason@sakla.net>
+
+       Added lib/linreg for procedures that use ordinary least squares.
+       
+Sat Sep 17 11:01:44 2005  Ben Pfaff  <blp@gnu.org>
+
+       Adapt to newer versions of gnulib.
+
+       * Smake: Put gnulib options directly on its command line, instead
+       of embedding them in configure.ac.
+
+       * configure.ac: Remove gnulib option commands.
+
+Fri Aug  3 07:22:28 2005  Ben Pfaff  <blp@gnu.org>
+
+       * PSPP 0.4.0 released.
+
+Sun Jul 31 10:49:47 2005  Ben Pfaff  <blp@gnu.org>
+
+       Adopt use of gnulib for portability.
+
+       * Makefile.am: Add gl to SUBDIRS.  Add gl/m4 to aclocal include
+       path.  Get rid of pkgdocdir data.  Move noinst_DATA to EXTRA_DIST.
+
+       * README.CVS: Add instructions for fetching gnulib.
+
+       * Smake: Rewrite to run gnulib-tool.  Avoid use of gettextize in
+       normal case (it was unmaintainable).  Just use autoreconf
+       --install to do most of the work.  Rewrite rule for POTFILES.in
+       for non-GNU make compatibility.
+
+       * configure.ac: Add gnulib commands.  Specify gettext version
+       0.14.5 to placate autopoint.  Check that off_t is an integer type,
+       because Solaris can sometimes declare it as a struct.  Drop
+       explicit checks for gnulib-supported functionality.  Fix typo in
+       msdos check.
+
+       * pref.h.orig: Define __attribute__ to avoid wart in gnulib.
+       Don't #include <libintl> and define gettext, _, N_, because gnulib
+       wants to do the same thing.
+
+Sun Jul 24 20:31:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Don't detect libgmp anymore, because we eliminated
+       the dependency.
+
+       * NEWS: Update.
+
+Mon Jul  4 17:59:54 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add pspp-mode.el to EXTRA_DIST.
+
+Wed May  4 08:49:13 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * README.CVS Smake: Added a CONFIGUREFLAGS variable.
+       * INSTALL: Mentioned build dependencies.
+
+Mon May  2 22:37:39 2005  Ben Pfaff  <blp@gnu.org>
+
+       * INSTALL: Mention dependencies.  Thanks to Jaap-Andre de Hoop
+       <j.dehoop@data-assist.nl> for the suggestion.
+
+       * NEWS, README: Update.
+
+Sun May  1 15:00:09 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * pspp-mode.el: Now supports syntax highlighting, indentation and
+       generally works a lot better.
+
+Thu Apr 28 10:24:47 WST 2005 John Darrington <john@darrington.wattle.id.au> 
+
+       * Changed all copyright notices to contain the FSF's new address.
+
+Thu Apr 14 2005 John Darrington
+
+       * AUTHORS:  Added note about the long variable names extension.
+
+       * pref.h.orig: Added definitions for variable names lengths.
+
+Thu Mar  3 22:06:19 WST 2005 John Darrington <john@darrington.wattle.id.au> 
+
+       * configure.ac: Added AC_PROG_RANLIB --- needed by autoconf 1.9
+
+Mon Feb 28 23:16:58 2005  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Check for perl.  Check for bool.  Substitute
+       makefiles in src/expressions.  Don't substitute makefile in
+       deleted directory lib/julcal.
+
+       * pref.h.orig: (macro MALLOC_LIKE) New macro.
+       (macro flt64) Moved to src/sfmP.h.
+       (macro FLT64_MAX) Moved to src/sfmP.h.
+
+Mon Feb 21 15:04:55 WST 2005 John Darrington <john@darrington.wattle.id.au> 
+
+       * configure.ac: Added a --without-valgrind option to cope with
+       building on machines with a broken valgrind installation
+
+Fri Jan  7 08:01:02 WST 2005 John Darrington <john@darrington.wattle.id.au> 
+
+       * configure.ac pref.h.orig: Compilation with libplot is now optional
+       by sacrificing the chart features.
+
+Sun Nov 28 19:24:02 2004  Ben Pfaff  <blp@gnu.org>
+
+       * Smake: Change -a to -pR in cp invocations for SUSv3 compliance.
+
+Mon May 31 17:21:25 2004  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Check for large file support.  Get rid of
+       posix_fadvise check--for some reason glibc 2.3.2 segfaults when I
+       call it and I just couldn't figure out what was going on.
+
+Sun May 30 18:19:03 2004  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Check for valgrind/valgrind.h.
+
+Mon Mar 29 15:22:48 2004  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * configure.ac: Check for posix_fadvise.
+
+Tue Mar 23 14:21:12 WAST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * Removed dcdflib and replaced with a dependency upon the
+        GNU Scientific library instead.
+
+Sat Mar 20 13:55:36 2004  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+Wed Feb 11 23:54:15 2004  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: Don't meddle with __WIN32__, __MSDOS, __DJGPP__,
+       __CYGWIN32__, __unix__, or unix anymore, and deal with some of the
+       consequences.  Declare ATTRIBUTE instead of meddling withe
+       __attribute__.  Declare UNUSED instead of unused.  Add macros
+       NO_RETURN, PRINTF_FORMAT, SCANF_FORMAT.  Reformat gettext, N_, _
+       macros.  Move alloca()-related stuff to src/alloc.h and simplify.
+       Get rid of PAGED_STACK entirely.  Remove mkdir macro definition.
+       Get rid of obsolete "procedure-specific options".
+
+2004-01-23  gettextize  <bug-gnu-gettext@gnu.org>
+
+       * Makefile.am (SUBDIRS): Remove intl.
+       * configure.ac (AC_CONFIG_FILES): Remove intl/Makefile.
+
+Tue Dec 30 22:23:40 WST 2003 John Darrington <john@darrington.wattle.id.au> 
+       
+       * Fixed floating point rounding bug in percentiles calculation
+
+Sat Dec 27 16:16:49 2003  Ben Pfaff  <blp@gnu.org>
+
+       * configure.ac: Add -Wmissing-prototypes flag to gcc.
+
+       * TODO: Updated.
+
+Wed Dec 17 12:19:40 WAST 2003 John Darrington <john@darrington.wattle.id.au>
+
+       * Added an --enable-debug flag to configure
+
+2003-12-13  gettextize  <bug-gnu-gettext@gnu.org>
+
+       * Makefile.am (EXTRA_DIST): Add mkinstalldirs.
+       * configure.ac (AC_CONFIG_FILES): Add intl/Makefile.
+
+
+Thu Dec 11 19:35:32 WST 2003 John Darrington <john@darrington.wattle.id.au>
+
+       * Removed autogenerated files from the CVS archive
+
+        * removed the included getopt.c as it failed to build under some
+        systems.
+
+Thu Dec 11 00:12:19 2003  Ben Pfaff  <blp@gnu.org>
+
+       * Update build system to Autoconf 2.58, Automake 1.7, gettext
+       0.12.1.
+
+2003-12-08  gettextize  <bug-gnu-gettext@gnu.org>
+
+       * Makefile.am (SUBDIRS): Add m4.
+       (ACLOCAL_AMFLAGS): New variable.
+       (EXTRA_DIST): Add config.rpath.
+       * configure.in (AC_CONFIG_FILES): Add po/Makefile.in,
+
+Sun Jan  2 21:24:32 2000  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Require Automake 1.4 or later.  It's been out for
+       almost a year now, so why haven't you installed it? :-)
+
+       * TODO: Updated.
+
+       * configure.in: Updated version number.  Check for libgmp.  Check
+       of fenv.h.  Check for feholdexpect().
+
+       * pref.h.orig: Don't include debug-print.h by default.  Don't
+       disable __attribute ((unused))__ for gcc 2.7.2.  Remove LOAD_2,
+       STORE_2.  Comment fixes.
+
+       * Updated copyright notices in all files.
+
+Fri Mar 12 12:38:55 1999  Ben Pfaff  <blp@gnu.org>
+
+       * Forked 0.3.0.
+
+Tue Mar  9 12:46:31 1999  Ben Pfaff  <blp@gnu.org>
+
+       * Released 0.2.3.
+       
+       * TODO: Updated.
+
+Tue Jan  5 15:18:07 1999  Ben Pfaff  <blp@gnu.org>
+
+       * Released 0.2.2.
+
+       * TODO: Update from Zvi Grauer <z.grauer@sims.csuohio.edu>.
+
+Thu Nov 19 12:34:55 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Released 0.2.1.
+
+Sun Aug  9 11:11:32 1998  Ben Pfaff  <blp@gnu.org>
+
+       * LANGUAGE: Updated.
+
+Sat Aug  8 00:19:08 1998  Ben Pfaff  <blp@gnu.org>
+
+       * LANGUAGE: Updated.
+
+       * examples/: New directory.
+
+       * Made patchlevel 95.
+
+Tue Aug  4 23:47:31 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Bump version to 0.1.22 (0.2.0 release candidate).
+
+       * configure.in: Remove --enable-Werror, new option
+       --enable-debugging.  New gcc option -Wpointer-arith.
+
+       * pref.h.orig: Don't enable debugging by default (now a configure
+       option).  Use __inline__ instead of inline with gcc (partial -ansi
+       -pedantic support).
+       (macro local_strdup) Removed.
+
+       * Made patchlevel 94.
+       
+Wed Jul 29 22:03:11 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Bump version to 0.1.21 (0.2.0 release candidate).
+
+       * debian/: Removed.
+
+       * Makefile.am: Don't copy debian/ into distribution.
+       
+       * pref.h.orig: Only enable `unused' attribute if gcc 2.8.0 or
+       later is used.
+
+Sun Jul  5 14:20:04 1998  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Bump version to 0.1.20 (0.2.0 release candidate).
+
+       * Made patchlevel 93.
+
+Sun Jul  5 00:13:58 1998  Ben Pfaff  <blp@gnu.org>
+
+       * README: Updated.
+
+       * TODO: Updated.
+
+       * configure.in: Remove -Wno-unused from default gcc flags.
+
+       * pref.h.orig: Add new #define, `unused', which under gcc expands
+       to an explanation to the compiler that a function argument is
+       unused, and expands to the null string under other compilers.
+
+Mon Jun  1 14:33:02 1998  Ben Pfaff  <blp@gnu.org>
+
+       * LANGUAGE: Updated.
+
+       * configure.in: Bump version to 0.1.19.
+
+       * Made patchlevel 92.
+
+Sun May 31 00:55:13 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+               
+       * configure.in: Generate Makefiles for lib/gmp/{,mpn,mpf}/.
+
+       * Made patchlevel 91.
+
+Fri May 29 21:43:09 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * LANGUAGE: Updated.
+
+       * unconfigure: Remove TeX cruft from doc/.
+       
+       * Made patchlevel 90.
+
+Mon May 25 12:41:54 1998  Ben Pfaff  <blp@gnu.org>
+
+       * BUGS: Updated.
+
+       * LANGUAGE: Updated.
+
+       * TODO: Updated.
+
+       * configure.in: Bumped version number up to 0.1.18.
+
+       * Made patchlevel 89.
+
+Sun May 24 22:39:55 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 88.
+
+Sat May 23 23:21:43 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * configure.in: Remove gamma from replaceable functions.
+
+       * Made patchlevel 87.
+
+Fri May 22 00:02:33 1998  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Add gamma to list of functions with replacements.
+
+       * Made patchlevel 86.   
+
+Wed May 20 00:00:12 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 85.
+
+Sat May 16 19:38:49 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 84.
+
+Tue May 12 16:13:48 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * unconfigure: Don't delete Makefile.in under intl/.
+       
+       * Made patchlevel 83.
+
+Thu May  7 23:16:26 1998  Ben Pfaff  <blp@gnu.org>
+
+       * unconfigure: Add some more files to reap.
+
+       * Made patchlevel 82.
+
+Tue May  5 13:17:59 1998  Ben Pfaff  <blp@gnu.org>
+
+       * acconfig.h: Add HAVE_GOOD_RANDOM definition.
+
+       * acinclude.m4: New macro BLP_RANDOM.
+
+       * configure.in: Use new BLP_RANDOM macro.
+
+       * unconfigure: New file.
+       
+       * Made patchlevel 81.
+       
+Fri Apr 24 12:42:14 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Remove bad comment.
+
+       * AUTHORS: Removed Brad Appleton.
+       
+       * TODO: Updated.
+
+       * configure.in: Remove `satisfy automake' bit.  Don't generate
+       avllib Makefile, since we don't use avllib anymore.
+
+       * pref.h.orig: Define PSPP.
+
+       * Made patchlevel 80.
+
+Wed Apr 15 12:59:39 1998  Ben Pfaff  <blp@gnu.org>
+
+       * AUTHORS, BUGS, LANGUAGE, README, THANKS: No longer generated
+       from HTML.  This caused a lot of deletions from the Makefile.am.
+
+       * TODO: Updated.
+       
+       * Made patchlevel 79.
+       
+Tue Apr 14 00:48:00 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * configure.in: Check for unistd.h.  Fix AC_LN_S (should have been
+       AC_PROG_LN_S).
+
+       * Made patchlevel 78.  Must have missed 77 in there somewhere :-)
+       
+Mon Mar  9 15:40:40 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 76.
+
+       * configure.in: Bumped version up to 0.1.16.
+
+1998-03-05  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Bumped version up to 0.1.15.
+
+1998-02-23  Ben Pfaff  <blp@gnu.org>
+
+       * acinclude.m4: Add BLP_INT_DIGITS and BLP_IS_SPRINTF_GOOD macros.
+
+       * configure.in: Those macros came from here.  Better modularity
+       this way.  Bump version up to 0.1.14.
+
+       * pref.h.orig: (macros CONFIG_PATH, INCLUDE_PATH, GROFF_FONT_PATH)
+       Removed.
+       
+       * Made patchlevel 75.
+
+1998-02-23  Ben Pfaff  <blp@gnu.org>
+
+       * acconfig.h: Hard-code PACKAGE and GNU_PACKAGE as "PSPP" and "GNU
+       PSPP" respectively.
+
+       * configure.in: Call the package pspp instead of PSPP.  Don't
+       define PACKAGE and GNU_PACKAGE symbols.  Add replacement function
+       for strtok_r.
+
+       * TODO: Updated.
+       
+       * Made patchlevel 74.
+
+1998-02-16  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Remove a few now-useless targets.
+
+       * TODO: Updated.
+
+       * configure.in: Bump version up to 0.1.13.
+
+       * reconfigure: Don't assume . is in PATH.
+
+       * Made patchlevel 73.
+
+Fri Feb 13 15:35:03 1998  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Bump version up to 0.1.12.
+
+       * TODO: Updated.
+
+       * pref.h.orig: Make __unix equivalent to unix and __unix__; don't
+       require any of these to be defined to 1, just defined.  Invert
+       sense of some tests from testing for unix to testing for not being
+       msdog.
+
+       * Made patchlevel 72.
+
+Thu Feb  5 00:22:58 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 71.
+
+       * configure.in: Bump version up to 0.1.11.
+
+Tue Feb  3 16:12:34 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 70.
+
+       * configure.in: Bump version up to 0.1.10.
+
+Fri Jan 23 00:17:18 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 69.
+
+Thu Jan 22 00:35:52 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 68.
+
+Sun Jan 18 00:30:18 1998  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Add ieeefp.h to list of headers to check for.
+
+       * Made patchlevel 67.
+
+Tue Jan 13 23:44:16 1998  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Add sys/wait.h to list of headers to check for.
+
+       * Made patchlevel 66.
+       
+Sun Jan 11 21:30:09 1998  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Bump version up to 0.1.9.
+       
+       * pref.h.orig (STORE_2): Fix parentheses.  From Alexandre
+       Oliva <oliva@dcc.unicamp.br>.
+
+       * Made patchlevel 65.
+       
+Sat Jan 10 23:59:06 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 64.
+
+Sat Jan 10 02:10:15 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * pref.h.orig: Comment fixes.
+       (macro second_lowest_flt64) New.
+
+       * Made patchlevel 63.
+
+Thu Jan  8 22:27:03 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+       
+       * Made patchlevel 62.
+
+Mon Jan  5 11:18:37 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 61.
+
+Sun Jan  4 18:10:29 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * pref.h.orig: (local_strdup) [HAVE_ALLOCA && PAGED_STACK &&
+       __GNUC__] Rewritten for space and time efficiency and to evaluate
+       its argument only once.
+
+       * Made patchlevel 60.
+
+Sat Jan  3 16:51:20 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 59.
+
+Fri Jan  2 01:38:37 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * config.sub: Got tired of `i686-unknown-linux: Unknown system',
+       so I made 686 equivalent to 586.
+
+       * pref.h.orig: (macros ASCII_*, HTML_*, PS_*) Removed.
+
+       * Made patchlevel 58.
+
+Thu Jan  1 11:50:47 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 57.
+
+Fri Dec 26 15:43:17 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 56.
+
+Wed Dec 24 22:34:55 1997  Ben Pfaff  <blp@gnu.org>
+
+       * reconfigure: regularized option syntax.
+
+       * configure.in: Bumped version to 0.1.8.  Changed name from pspp
+       to PSPP.  Added lib/dcdflib/Makefile to list of output files.
+
+       * Made patchlevel 55.
+
+Sun Dec 21 15:58:52 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * acconfig.h: Reformat.
+
+       * configure.in: Bumped version to 0.1.7.
+
+       * Made patchlevel 54.
+
+Fri Dec  5 23:38:12 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Replaced prep.ai.mit.edu with ftp.gnu.org and .gnu.ai.mit.edu
+       with .gnu.org, everywhere.
+
+Fri Dec  5 23:02:40 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Replaced remaining instances of Fiasco with PSPP.
+
+       * Made patchlevel 53.
+
+Fri Dec  5 22:51:18 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Every instance of the name Fiasco, throughout every file,
+       replaced in-place with PSPP, with the exceptions of a few files
+       that had `fiasco' in their names; these were renamed.
+
+       * Made patchlevel 52.
+       
+Fri Dec  5 21:50:52 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: (macros NO_HTML, HTML_DEFAULT_OUTPUT_FILE) New
+       macros.
+
+       * TODO: Updated.
+
+       * Made patchlevel 51.
+
+Tue Dec  2 14:35:12 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * configure.in: Bumped version to 0.1.6.
+
+       * Made patchlevel 50.   
+
+Sat Nov 22 01:20:32 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 49.
+
+Fri Nov 21 00:11:41 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 48.
+
+Sun Nov 16 01:31:38 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 47.
+
+Fri Nov 14 00:17:48 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 46.
+
+       * configure.in: Bumped version to 0.1.5.
+
+Tue Oct 28 16:07:17 1997  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Bumped version to 0.1.4.
+
+       * TODO: Updated.
+
+       * Made patchlevel 45.
+
+Wed Oct  8 15:55:50 1997  Ben Pfaff  <blp@gnu.org>
+
+       * intl: Upgraded from sources to gettext-0.10.32.
+
+       * configure.in: Bumped version to 0.1.3.
+
+       * Made patchlevel 44.
+       
+Tue Oct  7 20:21:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (dist-hook) Use $(top_srcdir).
+
+       * pref.h.orig: (MAX_WORKSPACE) Enlarge to 4 MB (from 1 MB).
+
+       * Made patchlevel 43.
+       
+Sun Oct  5 15:52:37 1997  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Bumped version to 0.1.2.
+       (strerror) Replace instead of check.  From Alexandre Oliva
+       <oliva@dcc.unicamp.br>.
+
+       * pref.h.orig: Include `debug-print' instead of
+       `src/debug-print.h'.
+
+       * Made patchlevel 42.
+
+Sat Oct  4 16:19:44 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: Comment fixes.
+       (local_strdup) [HAVE_ALLOCA && PAGED_STACK &&
+       __GNUC__] Use local_alloc() instead of alloca(), as local_alloc()
+       isn't simply an alias for alloca().
+
+       * configure.in: Bumped version to 0.1.1.
+
+       * Made patchlevel 41.
+
+Sat Oct  4 02:13:00 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 40.
+
+Sun Sep 21 00:07:09 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 39.
+
+Thu Sep 18 21:42:27 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: (CONFIG_PATH) [unix] Add /usr/local/etc/fiasco,
+       /usr/etc/fiasco to search path.
+
+       * Made patchlevel 38.
+               
+Wed Aug 20 14:20:06 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (noinst_DATA) Removed ANNOUNCE, HELP-WANTED.
+       (EXTRA_DIST) Removed ANNOUNCE, FAQ, HELP-WANTED, mk-web-dist.
+       (MAINTAINERCLEANFILES) Removed ANNOUNCE, FAQ, HELP-WANTED.
+
+       * Made patchlevel 37.
+
+Wed Aug 20 12:48:25 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (doc/ANNOUNCE.html, ANNOUNCE, FAQ, doc/FAQ.html,
+       HELP-WANTED) Removed.
+       (docfiles) Removed ANNOUNCE, FAQ, HELP-WANTED.
+
+       * mk-web-dist: Removed.
+
+       * Made patchlevel 36.
+
+Mon Aug 18 18:06:12 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * pref.h.orig: (macro DEFAULT_COMPAT) Removed.
+
+       * Made patchlevel 35.
+
+Sun Aug 17 22:48:36 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 34.
+
+Sat Aug 16 10:48:29 1997  Ben Pfaff  <blp@gnu.org>
+
+       * In many files, in this directory and others, messages were
+       rephrased to eliminate or reduce usage of certain deprecated terms
+       at suggestion of rms.
+       
+       * Makefile.am: (EXTRA_DIST) Removed unix2dos.pl.
+       (MAINTAINERCLEANFILES) Removed doc/ANNOUNCE.html, doc/README.html.
+       (docfiles-recursive) Removed.
+
+       * TODO: Updated.
+
+       * mk-web-dist: Doesn't produce any distributions at all, just a
+       webpage.  Doesn't configure the distribution.  Changed list of
+       files installed.
+
+       * pref.h.orig: s/VER_PCP40/VER_PC/; s/VER_WIN61/VER_WND/;
+       s/VER_X40/VER_X/; All references changed.
+
+       * Made patchlevel 33.
+
+Thu Aug 14 22:02:08 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Comment fixes.  Uses $(VERSION) instead of contents
+       of VERSION file.
+       (EXTRA_DIST) Remove fiasco.ide, mk-bc5-dist.
+       (docfiles-recursive) Works if doc/Makefile doesn't exist.
+       (DIST_BC5_ROOT) Renamed DISTBC5_DISTROOT.
+       (DISTBC5_BC5ROOT) New var.
+       (dist-bc5) Passes $(DISTBC5_BC5ROOT).
+
+       * TODO: Update.
+
+       * acinclude.m4: Remove blp_VERSION_CHEAT kluge.
+
+       * configure.in: Don't use blp_VERSION_CHEAT kluge.
+
+       * mk-web-dist, reconfigure: Extract version number from
+       configure.in.
+
+       * pref.h.orig: (CONFIG_PATH, INCLUDE_PATH, GROFF_FONT_PATH)
+       [__MSDOS__] Fixed bad use of backslashes.
+
+       * reconfigure: Pass $VERSION to Makefile.
+
+       * Made patchlevel 32.
+
+Thu Aug 14 11:49:35 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST, docfiles) Add ONEWS.
+       (docfiles) Depends on docfiles-recursive.
+       (docfiles-recursive) New target, call make for `docfiles' target
+       in doc directory.
+       (dist-bc5) Adds `foo' second arg to mk-bc5-dist.
+       (.PHONY) Add docfiles.
+
+       * mk-bc5-dist: Checks that it is passed a second arg of `foo'.
+
+       * reconfigure: Changed == operators to = as arguments to `test'.
+       No longer uses bash -v switch.
+
+       * mk-distribution: Renamed mk-web-dist, all references changed.
+       Now takes several options, added help.  No longer uses -uv
+       options.
+
+       * Made patchlevel 31.
+
+Tue Aug  5 13:56:39 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (MAINTAINERCLEANFILES) Add HELP-WANTED.
+       (EXTRA_DIST) Add ONEWS.
+
+       * Made patchlevel 30.
+
+Sun Aug  3 11:30:17 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (noinst_data, docfiles) Added HELP-WANTED.
+       (EXTRA_DIST) Added configure, mk-bc5-dist, unix2dos.pl,
+       HELP-WANTED.
+       (HELP-WANTED) Generated from doc/HELP-WANTED.html.
+       (dist-bc5) New target.
+
+       * TODO: Updated.
+
+       * mk-distribution: Fixed bugs, added HELP-WANTED.
+
+       * reconfigure: When invoking Makefile.am, pass
+       top_srcdir=. explicitly.
+
+       * unix2dos.pl: New file.
+
+       * Made patchlevel 29.
+
+Thu Jul 17 21:49:13 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 28.
+
+Thu Jul 17 01:43:25 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Remove inactive .html suffix rule.
+       New rules to generate doc/ANNOUNCE.html and doc/README.html from
+       corresponding .in files.
+       (EXTRA_DIST) Add VERSION, fiasco.ide, mk-distribution.
+       (MAINTAINERCLEANFILES) Add doc/ANNOUNCE.html, doc/README.html.
+
+       * acinclude.m4: (blp_VERSION_CHEAT) New macro.
+
+       * configure.in: Forces _GNU_SOURCES not only to be defined, but to
+       a value of 1.  Substitutes VERSION from the new file VERSION.
+       Removed DEBIAN reference.  Checks for sys/mman.h header.
+
+       * pref.h.orig: (macro gettext) Don't put parentheses in the
+       expansion.
+       (macro N_) Same.
+
+       * reconfigure: Sets -ev in shell.  Doesn't try to pass
+       --include-deps to configure (it's an automake flag!).  Moved `make
+       docfiles'.
+
+       * sysdeps/borlandc4.0/README, sysdeps/borlandc4.0/_read.c,
+       sysdeps/borlandc4.0/_write.c, sysdeps/borlandc4.0: Removed.
+
+       * VERSION: New file.
+
+       * fiasco.ide: New file.
+
+       * mk-distribution: New file.
+
+       * Made patchlevel 27.
+       
+Fri Jul 11 23:00:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updates.
+
+       * Made patchlevel 26.
+
+Fri Jul 11 14:08:21 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: __CYGWIN32__ is a form of __unix__.
+
+       * reconfigure: Add -k for make maintainer-clean.
+
+       * Made patchlevel 25.
+
+Thu Jul 10 22:13:07 1997  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Add "-D_GNU_SOURCE" to CPPFLAGS to force GNU
+       glibc extensions to be detected.
+
+       * Made patchlevel 24.
+
+Sun Jul  6 19:13:07 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: Include "src/debug-print.h" instead of
+       "debug-print.h".
+       (macros local_alloc, local_free) More robust under Checker: put
+       their allocations in namespace different from malloc()/free().
+
+       * Made patchlevel 23.
+
+Sat Jul  5 23:42:14 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updates.
+
+       * Made patchlevel 22.
+
+Fri Jul  4 13:20:47 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Removed orphaned-rules.
+       (docfiles) Removed ChangeLog, COPYING.
+       (html, maintainer-clean-hook, install-data-hook) Removed.
+
+       * reconfigure: Added --help option.  Calls configure again even if
+       --no-include-deps.
+
+       * Made patchlevel 21.
+
+Wed Jun 25 22:47:17 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Require Automake 1.2.
+       (dist-hook) Don't copy config dir.
+       (EXTRA_DIST, MAINTAINERCLEANFILES) Add FAQ.
+       (docfiles) Made a variable as well as a target; added ChangeLog,
+       COPYING, FAQ, INSTALL, TODO.
+       (html, maintainer-clean-hook, install-data-hook, debian,
+       debian-clean, debian-clean-full) New targets.
+
+       * orphaned-rules: Removed.
+
+       * configure.in: Bumped up to version 0.1.0.
+
+       * reconfigure: New options --enable-nls, --no-include-deps.
+       Comment fixes.
+
+       * Made patchlevel 20.
+
+Sun Jun 22 22:10:27 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 19.
+
+Sun Jun 15 16:44:14 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: Comment fixes.  Includes debug-print.h.
+       (DEMAND_PAGE, ALWAYS_PAGE, NEVER_PAGE) Removed.
+
+       * Made patchlevel 18.
+
+Sun Jun  8 01:25:40 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 17.
+
+Fri Jun  6 22:41:08 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updates.
+
+       * pref.h.orig: Reformatted macros.
+       [!ENABLE_NLS] Defines gettext() as a trivial substitution to allow
+       gcc to give warnings on printf().
+
+       * Made patchlevel 16.
+       
+Thu Jun  5 23:01:49 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 15.
+
+Tue Jun  3 23:24:08 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: AUTOMAKE_OPTIONS changed from `foreign 1.1l' to
+       `gnits 1.1p'.  SUBDIRS reordered.  New target `docfiles'.
+
+       * TODO: Updates.
+
+       * configure.in: Removed AM_MAINTAINER_MODE.  Added
+       --enable-Werror, which is implied by --with-checker.
+
+       * reconfigure: Moved `aclocal' from beginning to just before
+       cleaning `autoheader'.  Removed --enable-maintainer-mode.  Added
+       --disable-nls.  Added `make docfiles' to placate autoheader.
+       Added `aclocal' before first real `autoheader'.  Uses `make
+       mostlyclean' instead of `make depend'.
+
+       * Made patchlevel 14.
+
+Mon Jun  2 14:21:54 1997  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Removed comment that screwed things up.
+
+       * reconfigure: Added `aclocal' at beginning.
+
+       * Made patchlevel 13.
+
+Sun Jun  1 23:25:39 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add intl, po to SUBDIRS.  Add aclocal.m4,
+       config.h.in to MAINTAINERCLEANFILES.
+
+       * acconfig.h: Add HAVE_LC_MESSAGES, ENABLE_NLS, HAVE_CATGETS,
+       HAVE_GETTEXT, HAVE_STPCPY.
+
+       * configure.in: Reordered to placate autoheader.  Added
+       AC_ISC_POSIX, AM_PROG_CC_STDC.  Added internationalization:
+       ALL_LINGUAS="", AM_GNU_GETTEXT, AC_LINK_FILES(...).  Added
+       po/Makefile.in, intl/Makefile to generated files list.  Generates
+       po/Makefile from po/Makefile.in.  Comment fix.
+
+       * pref.h.orig: Uncommented i18n support.
+
+       * acinclude.m4: New file.
+
+       * ABOUT-NLS: New file.
+
+       * intl/: New directory, taken from gettext-0.10.27.
+
+       * missing: New file, taken from automake-1.1p.
+
+       * po/: New directory.
+
+       * Made patchlevel 12.
+
+Sun Jun  1 17:28:27 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 11.
+
+Sun Jun  1 11:58:43 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: Removed DEFAULT_VER_PCP40, DEFAULT_VER_WIN61,
+       DEFAULT_VER_X40.  Added a macro DEFAULT_COMPAT that takes one of
+       the VER_* enums as a value.
+       (HISTORY_FILE) Changed the definition to "~/.fiasco_history".
+
+       * Made patchlevel 10.
+
+Fri May 30 19:40:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * pref.h.orig: [__MSDOS__] Reordered INCLUDE_PATH.
+
+       * Made patchlevel 9.
+
+Sun May 25 22:32:57 1997  Ben Pfaff  <blp@gnu.org>
+
+       * acconfig.h: For support of glibc 2, define _GNU_SOURCE.
+
+       * Made patchlevel 8.
+
+Mon May  5 21:58:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 7. 
+
+Fri May  2 22:27:36 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 6.
+
+Thu May  1 15:34:01 1997  Ben Pfaff  <blp@gnu.org>
+
+       * All files: Changed copyright from `Ben Pfaff' to `Free Software
+       Foundation, Inc'.
+
+       * Made patchlevel 5.
+
+Thu May  1 15:00:51 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 4.
+
+Sat Apr 26 11:34:05 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ChangeLog: Split into one ChangeLog per directory.
+
+       * Made patchlevel 3.
+
+Wed Apr 23 21:33:48 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Update.
+
+       * Made patchlevel 2.
+
+Fri Apr 18 16:48:41 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Removed `include', `util' from SUBDIRS; added
+       `config'.  Includes `config' directory in distributions.  Added
+       `private-install', `private-uninstall' targets.
+
+       * configure.in: AC_INIT tests for src/q2c.c now.  Removed
+       redundant AC_PROG_MAKE_SET call.  Removed include/Makefile,
+       util/Makefile from generated files list; added config/Makefile.
+
+       * include/approx.h, include/arena.h, include/common.h,
+       include/dfm.h, include/do-ifP.h, include/error.h, include/expr.h,
+       include/exprP.h, include/file-handle.h, include/filename.h,
+       include/font.h, include/getline.h, include/getopt.h,
+       include/hash.h, include/heap.h, include/log.h, include/misc.h,
+       include/output.h, include/settings.h, include/sfm.h,
+       include/sfmP.h, include/som.h, include/somP.h, include/stat.h,
+       include/stats.h, include/str.h, include/tokens.h, include/var.h,
+       include/version.h, include/vfmP.h: Moved into src/ directory.
+
+       * include/Makefile.am, include/: Removed.
+
+       * util/Makefile.am: Removed.
+
+       * util/q2c.c: Moved to src/.
+
+       * util/reconfigure: Moved to source root.
+
+       * util/: Removed.
+
+       * Made patchlevel 1.
+
+Fri Apr 18 15:42:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Maintainer-cleans generated documentation and
+       Makefile.in.
+
+       * include/Makefile.am, util/Makefile.am: Maintainer-cleans
+       Makefile.in.
+
+       * include/somP.h: (static struct var som) Removed passed_t member.
+
+       * TODO: Updated.
+
+       * configure.in: Fixed source directory for copying pref.h; always
+       updates pref.h or at least touch'es it.
+
+       * pref.h.orig: Made a rather pejorative comment a lot milder so it
+       wouldn't be misinterpreted.
+
+       * Made interim release x3.
+       
+Thu Mar 27 01:11:29 1997  Ben Pfaff  <blp@gnu.org>
+
+       * All directories now contain new `Makefile.am's, in some cases
+       produced from bits and pieces of the single monolithic old one.
+       
+       * PATCHLEVEL: Removed.
+
+       * acconfig.h: Added GNU_PACKAGE, PACKAGE, PROTOTYPES, VERSION;
+       removed inclusion of conf.h.
+
+       * confh.in: Removed.
+       * confh.tmp.in: Removed.
+       
+       * configure.in: Deepened.  Updated for use with Automake 1.1l.
+       Removed PATCHLEVEL hacks.  Fixed lots of functions in
+       AC_CHECK_FUNCS, AC_REPLACE_FUNCS, and similar.  Only passes
+       `-Werror' to gcc in maintainer mode.  Doesn't output conf.h.
+       Touches pref.h even if it wasn't changed.  
+
+       * aclocal.m4: New file.
+
+       * config.h.in: Renamed from configh.in.
+
+       * pref.h.orig: Renamed from prefh.orig.
+
+       * Made interim release x2.
+       
+Thu Mar 27 01:07:02 1997  Ben Pfaff  <blp@gnu.org>
+
+    Changed the distribution from flat to deep.  New configuration:
+
+       ANNOUNCE        Makefile.in     config.h.in     mkinstalldirs
+       AUTHORS         NEWS            config.sub      orphaned-rules
+       BUGS            README          configure       pref.h
+       COPYING         THANKS          configure.in    pref.h.orig
+       ChangeLog       TODO            debian          src
+       ChangeLog~      acconfig.h      doc             stamp-h.in
+       INSTALL         aclocal.m4      include         sysdeps
+       LANGUAGE        config          install-sh      tests
+       Makefile.am     config.guess    lib             util
+
+       config:
+       devices      environment  papersize    ps-fontmap   ps-prologue
+
+       debian:
+       changelog  control    postinst   rules
+       conffiles  copyright  postrm
+
+       doc:
+       ANNOUNCE.html  Makefile.in    fiasco.info-2  stamp-vti
+       AUTHORS.html   README.html    fiasco.info-3  texinfo.tex
+       BUGS.html      THANKS.html    fiasco.info-4  version.texi
+       LANGUAGE.html  fiasco.info    fiasco.texi
+       Makefile.am    fiasco.info-1  mdate-sh
+
+       include:
+       approx.h       file-handle.h  misc.h         stats.h
+       arena.h        filename.h     output.h       str.h
+       common.h       font.h         settings.h     tokens.h
+       dfm.h          getline.h      sfm.h          var.h
+       do-ifP.h       getopt.h       sfmP.h         version.h
+       error.h        hash.h         som.h          vfmP.h
+       expr.h         heap.h         somP.h
+       exprP.h        log.h          stat.h
+
+       lib:
+       Makefile.am  Makefile.in  avllib       julcal       misc
+
+       lib/avllib:
+       AVLLIB.COPYING  Makefile.in     avl.h
+       Makefile.am     avl.c
+
+       lib/julcal:
+       Makefile.am  Makefile.in  julcal.c     julcal.h
+
+       lib/misc:
+       Makefile.am    getopt1.c      memset.c       strstr.c
+       Makefile.in    memchr.c       qsort.c        strtol.c
+       alloca.c       memcmp.c       stpcpy.c       strtoul.c
+       getdelim.c     memcpy.c       strcasecmp.c
+       getline.c      memmem.c       strncasecmp.c
+       getopt.c       memmove.c      strpbrk.c
+
+       src:
+       Makefile.am     error.c         lexer.c         sfm-write.c
+       Makefile.in     expr-evl.c      list.c          show.c
+       arena.c         expr-opt.c      list.q          som-frnt.c
+       ascii.c         expr-prs.c      log.c           som-high.c
+       autorecode.c    file-handle.c   loop.c          som-low.c
+       cases.c         file-handle.q   main.c          sort.c
+       cmdline.c       file-type.c     mis-val.c       split-file.c
+       command.c       filename.c      misc.c          stats.c
+       common.c        formats.c       modify-vars.c   str.c
+       compute.c       freq.c          numeric.c       sysfile-info.c
+       count.c         frequencies.c   output.c        temporary.c
+       crosstabs.c     frequencies.g   postscript.c    title.c
+       crosstabs.q     frequencies.q   print.c         val-labs.c
+       data-in.c       get.c           recode.c        var-labs.c
+       data-list.c     getline.c       rename-vars.c   vars-atr.c
+       data-out.c      glob.c          repeat.c        vars-prs.c
+       descript.c      groff-font.c    sample.c        vector.c
+       descript.q      hash.c          sel-if.c        version.c
+       dfm.c           heap.c          set.c           vfm.c
+       display.c       include.c       set.q           weight.c
+       do-if.c         inpt-pgm.c      sfm-read.c
+
+       sysdeps:
+       BorlndC4.0  DJGPP2.0    Windows
+
+       sysdeps/BorlndC4.0:
+       Makefile     _write.c     conf.h
+       _read.c      compile.bat  config.h
+
+       sysdeps/DJGPP2.0:
+       Makefile     compile.bat  conf.h       config.h
+
+       sysdeps/Windows:
+       con32s.c
+
+       tests:
+       Makefile.am         expression.stat     reread.data
+       Makefile.in         fall92.data         reread.stat
+       autorecode.stat     fall92.stat         sample.stat
+       begin-data.stat     file-label.stat     show-check-msg
+       bignum.data         file-type.stat      sort.data
+       bignum.stat         filter.stat         sort.stat
+       bug.stat            gengarbage.c        split-file.stat
+       compute.stat        input-program.stat  sysfile-info.stat
+       count.stat          list.data           temporary.stat
+       data-formats.stat   list.stat           time-date.stat
+       data-list.data      loop.stat           vector.stat
+       data-list.stat      modify-vars.stat    weighting.data
+       descript.stat       print.stat          weighting.stat
+       do-if.stat          process-if.stat
+       do-repeat.stat      recode.stat
+
+       util:
+       Makefile.am  Makefile.in  q2c.c        reconfigure
+
+    Old configuration:
+
+       ANNOUNCE.html   count.c         hash.h          sample.c
+       AUTHORS.html    crosstabs.q     heap.c          sel-if.c
+       AVLLIB.COPYING  data-in.c       heap.h          set.q
+       BUGS.html       data-list.c     include.c       settings.h
+       COPYING         data-out.c      inpt-pgm.c      sfm-read.c
+       ChangeLog       debian          install-sh      sfm-write.c
+       INSTALL         descript.q      julcal.c        sfm.h
+       LANGUAGE.html   devices         julcal.h        sfmP.h
+       Makefile.am     dfm.c           lexer.c         show.c
+       NEWS            dfm.h           list.q          som-frnt.c
+       PATCHLEVEL      display.c       log.c           som-high.c
+       README.html     do-if.c         log.h           som-low.c
+       THANKS.html     do-ifP.h        loop.c          som.h
+       TODO            environment     main.c          somP.h
+       _read.c         error.c         makeb40.bat     sort.c
+       _write.c        error.h         makedj2.bat     split-file.c
+       acconfig.h      expr-evl.c      makefile.b40    stamp-h.in
+       alloca.c        expr-opt.c      makefile.dj2    stats.c
+       approx.h        expr-prs.c      mdate-sh        stats.h
+       arena.c         expr.h          memcmp.c        stpcpy.c
+       arena.h         exprP.h         mis-val.c       str.c
+       ascii.c         fiasco.texi     misc.c          str.h
+       autorecode.c    file-handle.h   misc.h          sysfile-info.c
+       avl.c           file-handle.q   mkinstalldirs   temporary.c
+       avl.h           file-type.c     modify-vars.c   test
+       cases.c         filename.c      numeric.c       texinfo.tex
+       cmdline.c       filename.h      output.c        title.c
+       command.c       font.h          output.h        tokens.h
+       common.c        formats.c       papersize       val-labs.c
+       common.h        freq.c          postscript.c    var-labs.c
+       compute.c       frequencies.g   prefh.orig      var.h
+       con32s.c        frequencies.q   print.c         vars-atr.c
+       confh.b40       get.c           ps-fontmap      vars-prs.c
+       confh.dj2       getline.c       ps-prologue     vector.c
+       confh.in        getline.h       q2c.c           version.c
+       confh.tmp.in    getopt.c        qsort.c         version.h
+       config.guess    getopt.h        recode.c        vfm.c
+       config.sub      getopt1.c       reconfigure     vfmP.h
+       configh.b40     glob.c          reject          weight.c
+       configh.dj2     groff-font.c    rename-vars.c
+       configure.in    hash.c          repeat.c
+
+       debian:
+       changelog  control    postinst   rules
+       conffiles  copyright  postrm
+
+       test:
+       autorecode.stat     fall92.data         recode.stat
+       begin-data.stat     fall92.stat         reread.data
+       bignum.data         file-label.stat     reread.stat
+       bignum.stat         file-type.stat      sample.stat
+       bug.stat            filter.stat         sort.stat
+       compute.stat        gengarbage.c        split-file.stat
+       count.stat          gengarbage.pl       sysfile-info.stat
+       data-formats.stat   input-program.stat  temporary.stat
+       data-list.data      list.data           time-date.stat
+       data-list.stat      list.stat           vector.stat
+       descript.stat       loop.stat           weighting.data
+       do-if.stat          modify-vars.stat    weighting.stat
+       do-repeat.stat      print.stat
+       expression.stat     process-if.stat
+
+Mon Mar 24 21:47:31 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: @ALLOCA@ is on list of source files instead of
+       alloca.c.  Added $(srcdir)/ to version.c reference.  Changed to
+       pkgdatadir (/usr/share) for pkgsysconfdir, from pkglibdir
+       (/usr/lib).  Removed some of extra distfiles.  Added bogus `check'
+       target.
+
+       * Made transition release x1.
+
+Sun Mar  2 20:51:28 1997  Ben Pfaff  <blp@gnu.org>
+
+       No longer uses debmake:
+       
+       * Makefile.am: Installs documentation according to Debian policy
+       manual.  New targets `private-uninstall', `install-data-hook' to
+       help implement this.  `debian' target also revised.
+       
+       * configure.in: Sets up for Debian installation depending on
+       DEBIAN environment variable.  Also, improved & fixed (hopefully)
+       the scheme for detecting patchlevel.
+       
+       * Made patchlevel 193.
+
+Wed Feb 19 21:30:31 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 192.
+
+Sun Feb 16 20:57:20 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 191.
+       
+Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Removed `descript.g' from sources.
+
+       * Made patchlevel 190.
+       
+Fri Feb 14 23:32:58 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+       
+       * configure.in: Fixed test for max number of digits in an `int' to
+       use char[] rather than int[].
+
+       * Made patchlevel 189.
+       
+Tue Feb  4 15:15:50 1997  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Fixed some problems with `--with-checker' flag and
+       with detection of available libraries; no longer any lines longer
+       than 79 characters.
+
+       * Made patchlevel 188.
+       
+Wed Jan 22 21:54:00 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add sysfile-info.c to sources.
+
+       * TODO: Moved some notes to different files where they are more
+       appropriate.
+
+       * prefh.orig: (macros STORE_2 and LOAD_2) Always load/store as
+       little-endian.
+
+       * Made patchlevel 187.
+
+Sun Jan 19 14:22:11 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added rename-vars.c to sources.  Added to distclean
+       files.
+
+       * TODO: Updates.
+
+       * Made patchlevel 186.
+
+Thu Jan 16 13:08:57 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Most files have updated copyright notices for 1997.
+
+       * Makefile.am: Added modify-vars.c to source files.  Also changed
+       `lynx' to $(HTML_FORMATTER), etc.  Changed messages.
+
+       * TODO: Updates.
+
+       * Made patchlevel 185.
+
+Sat Jan 11 15:44:15 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: By default, now installs config files in pkglibdir,
+       generally /usr/local/lib/fiasco.
+
+       * TODO: Updated.
+
+       * prefh.orig: Added `/etc/fiasco' to config paths.  Removed
+       $ARCH/$VER dirs from include paths. 
+
+       * Made patchlevel 184.
+
+Fri Jan 10 20:22:08 1997  Ben Pfaff  <blp@gnu.org>
+
+       * debian/changelog, debian/control, debian/copyright, debian/dirs,
+       debian/info, debian/menu, debian/rules: Added Debian GNU/Linux
+       control files.
+       
+       * Makefile.am: Added sfmP.h to source files.  Added several files
+       to the list of distfiles.   dist-hook now copies debian control
+       files.  New targets `debian', `debian-clean', `debian-clean-full'.
+
+       * confh.in: Defines PATCHLEVEL.
+
+       * configure.in: Adds the current patchlevel to the version
+       number.  Versions are now of the form `1.2.3pl456'.  Determines
+       the patchlevel based on directory name and contents of file
+       PATCHLEVEL.
+
+       * reconfigure: Passes automake `--strictness=foreign'.
+
+       * Made patchlevel 183.
+
+Thu Jan  2 19:08:23 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 182.
+
+Wed Jan  1 22:08:10 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+       
+       * Made patchlevel 181.
+       
+Wed Jan  1 17:00:59 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: New target for test/sort.data.
+
+       * Made patchlevel 180.
+       
+Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 179.
+
+Tue Dec 24 20:42:32 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 178.
+
+Sun Dec 22 23:10:39 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added heap.c, heap.h to source files.  Added
+       new html files to distfiles & maintainer-clean files.
+
+       * configure.in: Tests for presence of getpid(), sys/types.h.
+
+       * prefh.orig: #defines mkdir() for MS-DOS compatibility.
+
+       * Made patchlevel 177.
+
+Sat Dec 21 21:51:04 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added README.html, LANGUAGE.html to list of
+       distfiles.  Added README, LANGUAGE to list of maintainer-clean
+       files.  Added .html to suffixes.  Added .html implicit rule that
+       calls `lynx -dump -nolist'.
+
+       * Made patchlevel 176.
+       
+Tue Dec 17 18:57:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 175.
+       
+Sun Dec 15 15:32:16 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added vfmP.c, qsort, sort.c to list of source
+       files.
+
+       * prefh.orig: Subtle changes to MAX_WORKSPACE, ALWAYS_PAGE,
+       NEVER_PAGE, DEMAND_PAGE macro meanings.
+
+       * Made patchlevel 174.
+       
+Sat Dec 14 10:35:30 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 173.
+       
+Fri Dec 13 21:30:53 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added autorecode.c to source files.
+
+       * prefh.orig: Fixed path GROFF_FONT_PATH.
+
+       * Made patchlevel 172.
+       
+Fri Dec  6 23:53:47 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+       
+       * Made patchlevel 171.
+       
+Wed Dec  4 21:34:17 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 170.
+       
+Sun Dec  1 17:19:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 169.
+       
+Thu Nov 28 23:14:07 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added `set.q' to list of source files.
+
+       * Made patchlevel 168.
+
+Thu Nov 28 19:46:10 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 167.
+
+Wed Nov 27 23:18:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added `sfm-write.c' to list of source files.
+
+       * confh.in: New #defines RELEASE_NO, SUB_RELEASE_NO, and
+       SPEC_RELEASE_NO for each part of a version number of form 1.2.3.
+
+       * configure.in: Computes RELEASE_NO, etc., by breaking apart
+       VERSION.
+
+       * prefh.orig: (defn of int32, flt64) Formatting fixes.
+       (FLT64_MAX) New define.
+
+       * Made patchlevel 166.
+       
+Sun Nov 24 14:53:53 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Wow, it's been almost two weeks since the last update, hard to
+       believe.
+
+       * All source files: Updated e-mail address.
+       
+       * prefh.orig: local_alloc() calls xmalloc() under Checker because
+       Checker can keep track of heap blocks much more accurately.
+
+       * Made patchlevel 165.
+       
+Mon Nov 11 15:34:09 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 164.
+       
+Thu Nov  7 20:52:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 163.
+       
+Thu Nov  7 17:29:16 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 162.
+       
+Thu Nov  7 15:48:52 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 161.
+       
+Tue Nov  5 18:34:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 160.
+       
+Mon Nov  4 22:03:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added get.c.
+
+       * TODO: Updated.
+
+       * Made patchlevel 159.
+       
+Sun Nov  3 12:24:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added sfm.h, sfm-read.c to source files.
+
+       * Made patchlevel 158.
+       
+Wed Oct 30 17:13:08 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added dist-zip target to AUTOMAKE_OPTIONS.
+
+       * acconfig.h: Added FPREP_* defines.
+
+       * configure.in: Added checks for the sizes of floating-point
+       types.  Added a test for the internal floating-point
+       representation of the host architecture.
+
+       * prefh.orig: Renamed `ATTRIBUTION' macro as `__attribute__'.  All
+       references changed.  Defines `flt64' 64-bit floating-point for use
+       with system files.
+       [FPREP==FPREP_IEEE754 && __GNUC__ && (ENDIAN==BIG ||
+       ENDIAN==LITTLE] Defines SECOND_LOWEST_VALUE macro.
+       
+       * Made patchlevel 157.
+
+Sat Oct 26 23:06:06 1996  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Checks sizes of short, int, long, long long.
+
+       * prefh.orig: Defines new type int32 for use with system
+       files.
+
+       * Made patchlevel 156.
+       
+Sat Oct 26 20:46:31 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 155.
+
+Sat Oct 26 10:39:25 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 154.
+       
+Thu Oct 24 20:13:42 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added back in these files: recode.c, sample.c,
+       sel-if.c.  Also added files somP.h, hash.c that should've been
+       there anyway.
+
+       * TODO: Updated.
+
+       * configure.in: Checks for strncasecmp in place of strcasecmp.
+
+       * Made patchlevel 153.
+       
+Thu Oct 24 17:47:14 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * Made patchlevel 152.
+       
+Wed Oct 23 21:53:43 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Organized.
+
+       * Made patchlevel 151.
+       
+Tue Oct 22 17:27:04 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Culled old notes.
+
+       * Made patchlevel 150.
+
+Mon Oct 21 20:39:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 149.
+       
+Sun Oct 20 13:45:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added back in `numeric.c', `print.c', `title.c'.
+       Defined ETAGS_ARGS.
+
+       * Made patchlevel 148.
+       
+Sun Oct 20 09:04:15 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 147.
+       
+Fri Oct 18 19:46:49 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 146.
+       
+Sun Sep 29 19:37:03 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 145.
+       
+Sat Sep 28 21:28:07 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added to DISTCLEANFILES. 
+   
+       * Made patchlevel 144.
+       
+Fri Sep 27 20:08:39 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 143.
+       
+Thu Sep 26 22:20:26 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added list.c back into the list of source files.
+
+       * Made patchlevel 142.
+       
+Wed Sep 25 19:36:11 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Updated for new files.
+
+       * Made patchlevel 141.
+               
+Tue Sep 24 18:39:09 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 140.
+
+Sat Sep 21 23:16:31 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 139.
+
+Fri Sep 20 22:52:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 138.
+       
+Thu Sep 12 18:40:33 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 137.
+
+Wed Sep 11 22:01:41 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Added timestamp.
+
+       * prefh.orig: Removed `/usr/local/share/fiasco' and
+       `/usr/share/fiasco' from CONFIG_PATH as per the Linux FSSTND,
+       which specifies that programs should never give an explicit
+       `/usr(/local)/share' path.
+
+       * Made patchlevel 136.
+
+Tue Sep 10 21:39:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added `display.c' back in.
+
+       * TODO: Addition.
+
+       * Made patchlevel 135.
+       
+Mon Sep  9 21:43:13 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added `split-file.c' back into the project.
+
+       * Made patchlevel 134.
+       
+Sat Sep  7 22:35:12 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Updated.
+
+       * prefh.orig: (local_strdup) Moved to misc.h.
+
+       * Made patchlevel 133. 
+       
+Thu Sep  5 22:05:56 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Changed `prologue.ps' references to `ps-prologue'.
+
+       * Made patchlevel 132.
+       
+Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prefh.orig: New i18n defines.
+
+       * This patchlevel doesn't even compile.
+
+       * Made patchlevel 131.
+       
+Sat Aug 31 23:52:38 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: Addition.
+
+       * Made patchlevel 130.
+               
+Thu Aug 29 21:36:41 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 129.
+       
+Sat Aug 24 23:26:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: New target "private-install" to install config files
+       to $HOME/.fiasco.
+
+       * configure.in: Now that I have made a less-bogus Checker
+       distribution, removed `-b i486-linuxaout -V 2.6.3' from
+       AC_ARG_WITH(checker, ...).
+
+       * Made patchlevel 127 somewhere in there.
+       
+       * Made patchlevel 128.
+       
+Sun Aug 11 21:31:22 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Changed DISTCLEANFILES.
+
+       * Does not compile.
+       
+       * Made patchlevel 126.
+       
+Sat Aug 10 23:28:17 1996  Ben Pfaff  <blp@gnu.org>
+
+       * reconfigure: Calls `autoheader' twice: once at the beginning,
+       once after make maintainer-clean.
+
+       * Made patchlevel 125. 
+       
+Thu Aug  8 22:31:11 1996  Ben Pfaff  <blp@gnu.org>
+
+       * reconfigure: `autoheader' now first operation performed.
+
+       * Made patchlevel 124.
+       
+Sat Aug  3 20:50:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added postscript.c to list of source files.
+
+       * configh.in: Removed since autoheader can regenerate it.
+
+       * configure.in: Improved tests for (ncurses or termcap) and
+       (history and/or readline) libraries and associated headers.  Added
+       check for strcasecmp().  Changed default gcc CFLAGS.
+
+       * prefh.orig: Removed `.' from GROFF_FONT_PATH.
+       (local_alloc, local_free) New functions.
+
+       * reconfigure: Added call to autoheader.
+
+       * Made patchlevel 123.
+       
+Sat Jul 27 22:32:38 1996  Ben Pfaff  <blp@gnu.org>
+
+       * There were some problems with the patchfiles so I had to merge
+       what was previously patchlevels 121 and 122; now everything from
+       what was previously 122 is called 121.  Oh well, just don't let it
+       happen often.
+
+       * This patchlevel does not compile.
+
+       * configure: No longer included in patches to save lotsa space
+       when configure.in changes.
+
+       * configure.in: Changed the technique for detecting libraries.
+
+       * prefh.orig: Style changes; handles changed configure.in.
+
+       * Made patchlevel 122 (second edition).
+
+Tue Jul 23 21:48:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 121.
+       
+Wed Jul 17 21:23:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 120.
+
+Tue Jul 16 22:10:04 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 119.
+
+Sun Jul 14 15:45:31 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 118.
+
+Fri Jul 12 22:03:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added list.c to sources.
+       
+       * Made patchlevel 117.
+       
+Sat Jul  6 22:22:25 1996  Ben Pfaff  <blp@gnu.org>
+
+       * configure.in: Removed reference to `malloc.h'.
+       
+       * Made patchlevel 116.
+       
+Fri Jul  5 20:16:19 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 115.
+
+Thu Jul  4 20:20:24 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prefh.orig: Changes to CONFIG_PATH, INCLUDE_PATH,
+       GROFF_FONT_PATH.
+
+       * Makefile.am: pkgdata_DATA file `output' changed to `devices'.
+       
+Thu Jul  4 00:35:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * TODO: doc fix.
+       
+       * Made patchlevel 114.
+       
+Tue Jul  2 22:13:23 1996  Ben Pfaff  <blp@gnu.org>
+
+       * reconfigure: (new file) Runs all the programs necessary to
+       create a Makefile that includes dependencies.
+
+       * Made patchlevel 113.
+       
+Mon Jul  1 22:13:39 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Made patchlevel 112.
+
+Mon Jul  1 13:00:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Most files: Changed references from `stat' (the original, rather
+       dull old name for this project) to `Fiasco' (the creative, rather
+       funny new name for this project).
+       
+       * Made patchlevel 111.
+       
+Sat Jun 29 17:40:47 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prefh.orig: changed default file search paths
+       
+       * Made patchlevel 110.
+
+Fri Jun 28 11:59:48 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Added automake support; removed GNUmakefile and GNUmakefile.in.
+
+----------------------------------------------------------------------
+Local Variables:
+mode: change-log
+version-control: never
+End:
diff --git a/Smake b/Smake
index 61c53b88159ef4590b1c6954e448ba9588db0840..11ab6daf2d772ba3f39bcb4b91dcbecfca7e4dc6 100644 (file)
--- a/Smake
+++ b/Smake
@@ -27,6 +27,7 @@ GNULIB_MODULES = \
        getopt \
        gettext-h \
        gettimeofday \
+       gitlog-to-changelog \
        isfinite \
        isinf \
        isnan \
@@ -84,12 +85,13 @@ GNULIB_MODULES = \
        xvasprintf
 
 all: po/POTFILES.in
+       test -e ChangeLog || touch ChangeLog
        test -d m4 || mkdir m4
        echo '*' > m4/.cvsignore
        touch m4/Makefile.am
        $(GNULIB_TOOL) --import --no-changelog --m4-base=gl/m4 \
                --source-base=gl --lib=libgl --tests-base=tests \
-               --doc-base=gl/doc --import $(GNULIB_MODULES)
+               --doc-base=gl/doc --aux-dir=. --import $(GNULIB_MODULES)
        echo '*' > gl/.cvsignore
        echo '*' > gl/m4/.cvsignore
        libtoolize --force --automake
diff --git a/config/ChangeLog b/config/ChangeLog
deleted file mode 100644 (file)
index dbf6c3a..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-2007-09-25  Ben Pfaff  <blp@gnu.org>
-
-       * devices (tty-ascii): Set length and width to "auto", so that
-       they reflect the current size of the terminal window as it
-       changes.
-
-2007-09-22  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21128.  Reviewed by John Darrington.
-
-       * papersize: Removed.
-
-       * automake.mk (dist_pkgsysconf_DATA): Remove papersize.
-
-2007-08-26  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Change raw-ascii from screen to listing device (because
-       that's how it's used).
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Add tty and listing devices that use VT100 (and xterm)
-       line-drawing characters.
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Add an "interactive" category that defaults to
-       tty-ascii.  Make the tty-ascii device more user-friendly.
-
-Tue Apr  4 20:20:49 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Fix bugs in installation targets.
-
-Mon Apr  3 11:01:16 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: (pkgsysconf_DATA) Add AFM files in config/psfonts.
-       Remove config/html-prologue, config/ps-prologue.
-
-       * html-prologue: Removed.
-
-       * ps-prologue: Removed.
-
-       * psfonts/Courier-Bold.afm, psfonts/Courier-BoldOblique.afm,
-       psfonts/Courier-Oblique.afm, psfonts/Courier.afm,
-       psfonts/Helvetica-Bold.afm, psfonts/Helvetica-BoldOblique.afm,
-       psfonts/Helvetica-Oblique.afm, psfonts/Helvetica.afm,
-       psfonts/Times-Bold.afm, psfonts/Times-BoldItalic.afm,
-       psfonts/Times-Italic.afm, psfonts/Times-Roman.afm: New files.
-
-Sat Feb 11 21:58:29 2006  Ben Pfaff  <blp@gnu.org>
-
-       * html-prologue: Don't use ${source-file}, which is no longer
-       supported.
-
-Tue Dec 30 22:37:04 2003  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Add "squeeze=on top-margin=0 bottom-margin=0" to
-       raw-ascii to make test output more readable.
-
-Sun May 24 22:40:13 1998  Ben Pfaff  <blp@gnu.org>
-
-       * ps-prologue: Add %%DocumentMedia: comment.
-
-Wed May 20 00:02:51 1998  Ben Pfaff  <blp@gnu.org>
-
-       * ps-prologue: Comment out misleading Bounding-Box comment for
-       now.  SF arguments rearranged.  BP removed.
-
-Wed Apr 15 13:00:46 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (private-install) Make it work for separate source
-       and build directories.
-
-       * ps-prologue: New TL macro for a thick line.  New thick-width arg
-       to BP.
-
-Sun Jan  4 18:11:11 1998  Ben Pfaff  <blp@gnu.org>
-
-       * ps-prologue: Minor reorganization.  New GB macro to draw a gray
-       box.
-
-Wed Dec 24 22:35:13 1997  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Added devicetype options and documentation for them.
-
-Fri Dec  5 21:51:08 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (pkgsysconf_DATA) Add html-prologue.
-       (EXTRA_DIST) Add html-prologue.
-
-       * devices: Add `html' device.  Add `listing', `screen', and
-       `printer' flags to devices as appropriate.
-
-       * html-prologue: New file.
-
-       * ps-prologue: Comment fixes.
-
-Thu Sep 18 21:31:02 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (pkgsysconfdir) Changed from $(pkgdatadir) to
-       $(sysconfdir)/$(PACKAGE).
-
-Thu Aug 14 22:05:54 1997  Ben Pfaff  <blp@gnu.org>
-
-       * devices: (tty) Define as null instead of not defining.
-
-Sun Aug  3 11:33:28 1997  Ben Pfaff  <blp@gnu.org>
-
-       * devices: tty-ascii has no bold or italic by default.
-
-Wed Jun 25 22:50:19 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) New target.
-
-Mon May  5 21:56:54 1997  Ben Pfaff  <blp@gnu.org>
-
-       * devices, papersize, ps-prologue: Comment fixes.
-
-Fri May  2 22:05:44 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Removed ps-fontmap.
-
-       * ps-fontmap: Removed.
-
-       * ps-prologue: Added comments.  Fixed DSC comments.
-       (BP) Two new arguments; fixed problem with SF argument conflict
-       with SF function.
-
-Thu May  1 14:57:52 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ps-prologue: (BP) New argument, SF or scale factor.
-       
-Fri Apr 18 16:48:41 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: New file.
-       
-       * environment: Comment fix.
-
-Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Added ml520 and ml520-ul printer devices.
-
-Sat Jan 11 15:44:15 1997  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Default listing device is list-ascii, not list-ibmpc.
-
-Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Changed default devices.
-
-Sat Sep  7 22:35:12 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ps-prologue: Added `!encodings' line to cause encodings to be
-       output.
-       (T) Fixed.  Yes, really this time.
-
-Thu Sep  5 22:05:56 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ps-prologue: (T) Now works correctly.
-       (SF) Parameters changed to: size in psus, target font name,
-       encoding, PostScript font name.
-
-Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prologue.ps: Renamed ps-prologue, all references changed.
-       (T) New definition.
-
-       * ps-encodings: New PostScript configuration file (not present in
-       distribution).
-
-Sat Aug 31 23:52:38 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prologue.ps: One minor comment change.
-
-Thu Aug 29 21:36:41 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prologue.ps: Portions other than DSC comments are essentially
-       completely new.
-
-Sat Aug 24 23:26:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * devices: Added PostScript driver.
-
-Sun Aug 11 21:31:22 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prologue.ps: Calls `setlinecap' in setup code.
-
-Sat Aug 10 23:28:17 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prologue.ps: DSC comment changes.  New call to `setlinewidth' in
-       setup code.
-
-Thu Aug  8 22:31:11 1996  Ben Pfaff  <blp@gnu.org>
-
-       * prologue.ps: Changes to scaling & translating code.
-
-Sat Aug  3 20:50:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * environment: New file.  Yet another new time- and memory-hogging
-       redundant config file; why not?
-       
-       * papersize: Comment changes.
-
-       * prologue.ps: Changed vars from $varname$ to ${varname} format.
-       Miscellaneous changes.
-
-       * ps-fontmap: Comment changes.  Fixed ZC family.
-
-Sat Jul 27 22:32:38 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ps-fontmap: New configuration file.  Added to Makefile.am.
-
-----------------------------------------------------------------------
-Local Variables:
-mode: change-log
-version-control: never
-End:
diff --git a/config/OChangeLog b/config/OChangeLog
new file mode 100644 (file)
index 0000000..dbf6c3a
--- /dev/null
@@ -0,0 +1,217 @@
+2007-09-25  Ben Pfaff  <blp@gnu.org>
+
+       * devices (tty-ascii): Set length and width to "auto", so that
+       they reflect the current size of the terminal window as it
+       changes.
+
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * papersize: Removed.
+
+       * automake.mk (dist_pkgsysconf_DATA): Remove papersize.
+
+2007-08-26  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Change raw-ascii from screen to listing device (because
+       that's how it's used).
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Add tty and listing devices that use VT100 (and xterm)
+       line-drawing characters.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Add an "interactive" category that defaults to
+       tty-ascii.  Make the tty-ascii device more user-friendly.
+
+Tue Apr  4 20:20:49 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Fix bugs in installation targets.
+
+Mon Apr  3 11:01:16 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: (pkgsysconf_DATA) Add AFM files in config/psfonts.
+       Remove config/html-prologue, config/ps-prologue.
+
+       * html-prologue: Removed.
+
+       * ps-prologue: Removed.
+
+       * psfonts/Courier-Bold.afm, psfonts/Courier-BoldOblique.afm,
+       psfonts/Courier-Oblique.afm, psfonts/Courier.afm,
+       psfonts/Helvetica-Bold.afm, psfonts/Helvetica-BoldOblique.afm,
+       psfonts/Helvetica-Oblique.afm, psfonts/Helvetica.afm,
+       psfonts/Times-Bold.afm, psfonts/Times-BoldItalic.afm,
+       psfonts/Times-Italic.afm, psfonts/Times-Roman.afm: New files.
+
+Sat Feb 11 21:58:29 2006  Ben Pfaff  <blp@gnu.org>
+
+       * html-prologue: Don't use ${source-file}, which is no longer
+       supported.
+
+Tue Dec 30 22:37:04 2003  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Add "squeeze=on top-margin=0 bottom-margin=0" to
+       raw-ascii to make test output more readable.
+
+Sun May 24 22:40:13 1998  Ben Pfaff  <blp@gnu.org>
+
+       * ps-prologue: Add %%DocumentMedia: comment.
+
+Wed May 20 00:02:51 1998  Ben Pfaff  <blp@gnu.org>
+
+       * ps-prologue: Comment out misleading Bounding-Box comment for
+       now.  SF arguments rearranged.  BP removed.
+
+Wed Apr 15 13:00:46 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (private-install) Make it work for separate source
+       and build directories.
+
+       * ps-prologue: New TL macro for a thick line.  New thick-width arg
+       to BP.
+
+Sun Jan  4 18:11:11 1998  Ben Pfaff  <blp@gnu.org>
+
+       * ps-prologue: Minor reorganization.  New GB macro to draw a gray
+       box.
+
+Wed Dec 24 22:35:13 1997  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Added devicetype options and documentation for them.
+
+Fri Dec  5 21:51:08 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pkgsysconf_DATA) Add html-prologue.
+       (EXTRA_DIST) Add html-prologue.
+
+       * devices: Add `html' device.  Add `listing', `screen', and
+       `printer' flags to devices as appropriate.
+
+       * html-prologue: New file.
+
+       * ps-prologue: Comment fixes.
+
+Thu Sep 18 21:31:02 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pkgsysconfdir) Changed from $(pkgdatadir) to
+       $(sysconfdir)/$(PACKAGE).
+
+Thu Aug 14 22:05:54 1997  Ben Pfaff  <blp@gnu.org>
+
+       * devices: (tty) Define as null instead of not defining.
+
+Sun Aug  3 11:33:28 1997  Ben Pfaff  <blp@gnu.org>
+
+       * devices: tty-ascii has no bold or italic by default.
+
+Wed Jun 25 22:50:19 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) New target.
+
+Mon May  5 21:56:54 1997  Ben Pfaff  <blp@gnu.org>
+
+       * devices, papersize, ps-prologue: Comment fixes.
+
+Fri May  2 22:05:44 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Removed ps-fontmap.
+
+       * ps-fontmap: Removed.
+
+       * ps-prologue: Added comments.  Fixed DSC comments.
+       (BP) Two new arguments; fixed problem with SF argument conflict
+       with SF function.
+
+Thu May  1 14:57:52 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ps-prologue: (BP) New argument, SF or scale factor.
+       
+Fri Apr 18 16:48:41 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: New file.
+       
+       * environment: Comment fix.
+
+Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Added ml520 and ml520-ul printer devices.
+
+Sat Jan 11 15:44:15 1997  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Default listing device is list-ascii, not list-ibmpc.
+
+Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Changed default devices.
+
+Sat Sep  7 22:35:12 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ps-prologue: Added `!encodings' line to cause encodings to be
+       output.
+       (T) Fixed.  Yes, really this time.
+
+Thu Sep  5 22:05:56 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ps-prologue: (T) Now works correctly.
+       (SF) Parameters changed to: size in psus, target font name,
+       encoding, PostScript font name.
+
+Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prologue.ps: Renamed ps-prologue, all references changed.
+       (T) New definition.
+
+       * ps-encodings: New PostScript configuration file (not present in
+       distribution).
+
+Sat Aug 31 23:52:38 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prologue.ps: One minor comment change.
+
+Thu Aug 29 21:36:41 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prologue.ps: Portions other than DSC comments are essentially
+       completely new.
+
+Sat Aug 24 23:26:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * devices: Added PostScript driver.
+
+Sun Aug 11 21:31:22 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prologue.ps: Calls `setlinecap' in setup code.
+
+Sat Aug 10 23:28:17 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prologue.ps: DSC comment changes.  New call to `setlinewidth' in
+       setup code.
+
+Thu Aug  8 22:31:11 1996  Ben Pfaff  <blp@gnu.org>
+
+       * prologue.ps: Changes to scaling & translating code.
+
+Sat Aug  3 20:50:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * environment: New file.  Yet another new time- and memory-hogging
+       redundant config file; why not?
+       
+       * papersize: Comment changes.
+
+       * prologue.ps: Changed vars from $varname$ to ${varname} format.
+       Miscellaneous changes.
+
+       * ps-fontmap: Comment changes.  Fixed ZC family.
+
+Sat Jul 27 22:32:38 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ps-fontmap: New configuration file.  Added to Makefile.am.
+
+----------------------------------------------------------------------
+Local Variables:
+mode: change-log
+version-control: never
+End:
index ba01a397f3809bde328cc03786a8010cf768b37b..88b63ac1b0bc59a9f449c18165a235b4cc186f01 100644 (file)
@@ -18,3 +18,5 @@ dist_psfonts_DATA = \
        config/psfonts/Helvetica.afm \
        config/psfonts/Times-Roman.afm \
        config/psfonts/Courier.afm
+
+EXTRA_DIST += config/OChangeLog
diff --git a/doc/ChangeLog b/doc/ChangeLog
deleted file mode 100644 (file)
index f1270cf..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Make install-data-hook depend on yelp-check if the
-       GUI is configured.
-
-2008-05-08 John Darrington <john@darrington.wattle.id.au>
-
-       * automake.mk: Compress the info files, because later
-       versions of yelp seem to crash otherwise.
-
-2008-03-11  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.texi (REGRESSION): Fixed use of @dots in @math
-       command. Reported by John Darrington.
-
-2008-03-11  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.texi: Made more consistent use of math mode for
-       description of linear regression. Added reference to the mean of
-       the error terms being 0.
-
-2008-03-09  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.texi (REGRESSION): Removed references to subcommand EXPORT.
-
-2008-02-06 John Darrington <john@darrington.wattle.id.au>
-
-       * files.texi: Document the /BSIZE subcommand to the PSQL
-       reader.
-
-2008-02-04 John Darrington <john@darrington.wattle.id.au>
-
-       * files.texi data-io.texi: Document the GET DATA TYPE=PSQL
-       option.  Thanks to Ben Pfaff for reviewing this text.
-
-
-2007-11-10  Ben Pfaff  <blp@gnu.org>
-
-       * not-implemented.texi: Fix @include command so that it works
-       consistently, by using a file name relative to Makefile.am's
-       srcdir instead of relative to doc.
-
-2007-11-10  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6262: New developers guide (currently incomplete).
-
-       * automake.mk: Add definitions for new manual.
-
-       * pspp.texinfo: Now this is the PSPP Users Guide instead of just
-       the PSPP manual.  Remove development chapters.
-
-       * pspp-dev.texinfo: New file.
-
-       * data-file-format.texi: Move to dev/system-file-format.texi.
-
-       * portable-file-format.texi: Move to dev/.
-
-       * q2c.texi: Move to dev/
-
-       * dev/concepts.texi: New file.
-
-       * dev/data.texi: New file.
-
-       * dev/intro.texi: New file.
-
-       * dev/output.texi: New file.
-
-       * dev/syntax.texi: New file.
-
-2007-10-19 John Darrington <john@darrington.wattle.id.au>
-
-       * statistics.texi: Changed /CONTRASTS to /CONTRAST in ONEWAY which
-       is what the command accepts. 
-       
-
-2007-07-28 John Darrington <john@darrington.wattle.id.au>
-
-       * statistics.texi: Made the documentation for T-TEST match 
-       the behaviour.
-
-2007-07-17  Ben Pfaff  <blp@gnu.org>
-
-       * get-commands.pl: Use strict and all warnings.  Simplify
-       parsing.  Add "@c End:" line to output to suppress Emacs warning.
-       From bug #19335.  Reviewed by John Darrington.
-
-2007-06-05  Ben Pfaff  <blp@gnu.org>
-
-       * Removed next, prev, up node names from @node lines, to make
-         structural changes to the manual easier.  (These node names are
-         not needed by makeinfo.)
-
-2007-03-31 John Darrington <john@darrington.wattle.id.au>
-       
-       * transformation.texi: SORT CASES: elaborated on the (D) (A) flags.
-       
-2007-03-01  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Fix "make distcheck" by distributing doc/ni.texi,
-       even though it's generated.  Reviewed by John Darrington.
-       (doc_pspp_TEXINFOS): Add doc/ni.texi.
-       (nodist_doc_pspp_TEXINFOS): Remove.
-       (am__TEXINFO_TEX_DIR) Removed (was just a kluge anyhow).
-       ($(INFO_DEPS)): Removed.
-       ($(HTML_DEPS)): Removed.
-       (CLEANFILES): Removed.
-       
-Wed Dec 20 18:45:31 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * statistics.texi: Added documentation for the NPAR TESTS command.
-
-Thu Nov 30 22:20:10 2006  Ben Pfaff  <blp@gnu.org>
-
-       * statistics.texi: Document charts supported by FREQUENCIES.
-       Fixes bug #18297.  Thanks to Mohammed Babekir Elmalik Abdalmajid
-       for reporting this bug.
-
-Tue Nov 28 17:33:31 WST 2006 <john@darrington.wattle.id.au>
-
-       * get-commands.pl: Fixed generation of ni.texi, which was broken
-       after commands.def was reorganised.
-
-       * not-implemented.texi language.texi regression.texi 
-          statistics.texi: Added some indeces.
-
-       * license.texi: Added information from GPL.
-
-Sat Oct  7 11:02:44 WST 2006 <john@darrington.wattle.id.au>
-
-       * Added documentation for RANK.
-
-Tue May  2 10:43:06 WST 2006 <john@darrington.wattle.id.au>
-
-       * data-file-format.texi: Updated information about the case_size 
-       value.  Added description of Record Type 7, subtype 14.
-
-2006-04-28  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.texi: Added description of the RESID and PRED
-       keywords to the SAVE subcommand.
-
-       * statistics.texi: Added REGRESSION node.
-
-2006-04-21  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.texi: Initial description of the SAVE subcommand.
-
-Sun Apr 16 19:12:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       Consistently write "file name" as two words, in accordance with
-       the GNU standards.
-
-Wed Feb 15 21:53:12 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-file-format.texi: Fix values for "measure" in Auxiliary
-       Variable Parameter Record.  Thanks to Oliver Bock <oliver@g7.org>
-       for reporting this bug.  Fixes bug #15763.
-
-Tue Feb 14 21:34:06 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-file-format.texi: Fix description of "count" in Auxiliary
-       Variable Parameter Record.  Thanks to Oliver Bock <oliver@g7.org>
-       for reporting this bug.  Fixes bug #15756. 
-
-Sun Sep 25 16:10:36 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Make ni.texi a prereq for HTML output.  Thanks to
-       James R. Van Zandt <jrvz@comcast.net> for reporting the problem.
-
-Sun Jul 24 18:47:02 2005  Ben Pfaff  <blp@gnu.org>
-
-       * portable-file-format.texi: Describe author field.
-
-Sat May  7 17:26:39 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * Makefile.am: Made ni.texi a nodist file
-
-Wed May  4 08:30:24 2005  Ben Pfaff  <blp@gnu.org>
-
-       * language.texi: Proofreading from Jason Stover
-       <jstover@sdf.lonestar.org>.
-
-Tue May  3 16:22:29 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * get-commands.pl: New file to generate ni.texi
-
-       * not-implemented.texi Makefile.am: List of not implemented commands 
-       now generated from src/command.def
-
-Sun May  1 23:20:42 2005  Ben Pfaff  <blp@gnu.org>
-
-       * language.texi: Revised lots of text to catch up with changes
-       that have been in for a long time, and for style.
-
-Sun May  1 15:17:42 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * configuration.texi: Removed manpage(x) style references, because 
-       RMS doesn't like them.
-
-Wed Apr 27 07:44:57 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * utilities.texi: Added the ECHO command.
-
-Fri Apr 15 18:35:42 2005  Ben Pfaff  <blp@gnu.org>
-
-       * pspp.texinfo: Change manual license to GNU FDL, pursuant to
-       advice in maintainers' guide.
-
-Thur Apr 14 2005 John Darrington
-
-       * variables.texi: Corrected the entry for VARIABLE LABELS
-
-       * data-file-format.texi: Added documentation about the Long Variable 
-         Names record.
-       
-Thu Mar  3 22:06:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * expressions.texi:  corrected some mismatched parentheses.
-
-Mon Feb 28 23:19:34 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions.texi: Revise.  Describe new functions.
-
-Sat Jan  8 16:46:28 2005  Ben Pfaff  <blp@gnu.org>
-
-       * credits.texi: Removed.
-
-       * bugs.texi: Rewrote.  Moved known bugs to savannah website.
-
-       * not-implemented.texi: AGGREGATE and AUTORECODE are implemented.
-
-Tue Nov 16 13:18:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
-       
-       * statistics.texi Added documentation about the EXAMINE cmd
-
-Tue Nov 16 13:18:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * utilities.texi Added documentation for the PERMISSIONS command.
-
-       * pspp.texinfo Makefile.am  @included version.texi (Autogenerated) to 
-       keep the EDITION, VERSION and UPDATED flags up to date.
-
-Tue Nov  9 09:38:43 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * Made Makefile.am aware of pspp.texi dependencies
-
-Fri Nov  5 17:46:46 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * Added a note to the about SPLIT requiring adjacent cases.
-
-Sat Oct 30 17:32:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * Started this changelog
-
-       * Removed the monolithic pspp.texi file and replaced with  *.texi
-       wrapped by a single pspp.texinfo file
-
-       * Minor corrections to the documentation where I noticed it needed
-       them.
diff --git a/doc/OChangeLog b/doc/OChangeLog
new file mode 100644 (file)
index 0000000..f1270cf
--- /dev/null
@@ -0,0 +1,259 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Make install-data-hook depend on yelp-check if the
+       GUI is configured.
+
+2008-05-08 John Darrington <john@darrington.wattle.id.au>
+
+       * automake.mk: Compress the info files, because later
+       versions of yelp seem to crash otherwise.
+
+2008-03-11  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.texi (REGRESSION): Fixed use of @dots in @math
+       command. Reported by John Darrington.
+
+2008-03-11  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.texi: Made more consistent use of math mode for
+       description of linear regression. Added reference to the mean of
+       the error terms being 0.
+
+2008-03-09  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.texi (REGRESSION): Removed references to subcommand EXPORT.
+
+2008-02-06 John Darrington <john@darrington.wattle.id.au>
+
+       * files.texi: Document the /BSIZE subcommand to the PSQL
+       reader.
+
+2008-02-04 John Darrington <john@darrington.wattle.id.au>
+
+       * files.texi data-io.texi: Document the GET DATA TYPE=PSQL
+       option.  Thanks to Ben Pfaff for reviewing this text.
+
+
+2007-11-10  Ben Pfaff  <blp@gnu.org>
+
+       * not-implemented.texi: Fix @include command so that it works
+       consistently, by using a file name relative to Makefile.am's
+       srcdir instead of relative to doc.
+
+2007-11-10  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6262: New developers guide (currently incomplete).
+
+       * automake.mk: Add definitions for new manual.
+
+       * pspp.texinfo: Now this is the PSPP Users Guide instead of just
+       the PSPP manual.  Remove development chapters.
+
+       * pspp-dev.texinfo: New file.
+
+       * data-file-format.texi: Move to dev/system-file-format.texi.
+
+       * portable-file-format.texi: Move to dev/.
+
+       * q2c.texi: Move to dev/
+
+       * dev/concepts.texi: New file.
+
+       * dev/data.texi: New file.
+
+       * dev/intro.texi: New file.
+
+       * dev/output.texi: New file.
+
+       * dev/syntax.texi: New file.
+
+2007-10-19 John Darrington <john@darrington.wattle.id.au>
+
+       * statistics.texi: Changed /CONTRASTS to /CONTRAST in ONEWAY which
+       is what the command accepts. 
+       
+
+2007-07-28 John Darrington <john@darrington.wattle.id.au>
+
+       * statistics.texi: Made the documentation for T-TEST match 
+       the behaviour.
+
+2007-07-17  Ben Pfaff  <blp@gnu.org>
+
+       * get-commands.pl: Use strict and all warnings.  Simplify
+       parsing.  Add "@c End:" line to output to suppress Emacs warning.
+       From bug #19335.  Reviewed by John Darrington.
+
+2007-06-05  Ben Pfaff  <blp@gnu.org>
+
+       * Removed next, prev, up node names from @node lines, to make
+         structural changes to the manual easier.  (These node names are
+         not needed by makeinfo.)
+
+2007-03-31 John Darrington <john@darrington.wattle.id.au>
+       
+       * transformation.texi: SORT CASES: elaborated on the (D) (A) flags.
+       
+2007-03-01  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Fix "make distcheck" by distributing doc/ni.texi,
+       even though it's generated.  Reviewed by John Darrington.
+       (doc_pspp_TEXINFOS): Add doc/ni.texi.
+       (nodist_doc_pspp_TEXINFOS): Remove.
+       (am__TEXINFO_TEX_DIR) Removed (was just a kluge anyhow).
+       ($(INFO_DEPS)): Removed.
+       ($(HTML_DEPS)): Removed.
+       (CLEANFILES): Removed.
+       
+Wed Dec 20 18:45:31 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * statistics.texi: Added documentation for the NPAR TESTS command.
+
+Thu Nov 30 22:20:10 2006  Ben Pfaff  <blp@gnu.org>
+
+       * statistics.texi: Document charts supported by FREQUENCIES.
+       Fixes bug #18297.  Thanks to Mohammed Babekir Elmalik Abdalmajid
+       for reporting this bug.
+
+Tue Nov 28 17:33:31 WST 2006 <john@darrington.wattle.id.au>
+
+       * get-commands.pl: Fixed generation of ni.texi, which was broken
+       after commands.def was reorganised.
+
+       * not-implemented.texi language.texi regression.texi 
+          statistics.texi: Added some indeces.
+
+       * license.texi: Added information from GPL.
+
+Sat Oct  7 11:02:44 WST 2006 <john@darrington.wattle.id.au>
+
+       * Added documentation for RANK.
+
+Tue May  2 10:43:06 WST 2006 <john@darrington.wattle.id.au>
+
+       * data-file-format.texi: Updated information about the case_size 
+       value.  Added description of Record Type 7, subtype 14.
+
+2006-04-28  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.texi: Added description of the RESID and PRED
+       keywords to the SAVE subcommand.
+
+       * statistics.texi: Added REGRESSION node.
+
+2006-04-21  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.texi: Initial description of the SAVE subcommand.
+
+Sun Apr 16 19:12:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       Consistently write "file name" as two words, in accordance with
+       the GNU standards.
+
+Wed Feb 15 21:53:12 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-file-format.texi: Fix values for "measure" in Auxiliary
+       Variable Parameter Record.  Thanks to Oliver Bock <oliver@g7.org>
+       for reporting this bug.  Fixes bug #15763.
+
+Tue Feb 14 21:34:06 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-file-format.texi: Fix description of "count" in Auxiliary
+       Variable Parameter Record.  Thanks to Oliver Bock <oliver@g7.org>
+       for reporting this bug.  Fixes bug #15756. 
+
+Sun Sep 25 16:10:36 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Make ni.texi a prereq for HTML output.  Thanks to
+       James R. Van Zandt <jrvz@comcast.net> for reporting the problem.
+
+Sun Jul 24 18:47:02 2005  Ben Pfaff  <blp@gnu.org>
+
+       * portable-file-format.texi: Describe author field.
+
+Sat May  7 17:26:39 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * Makefile.am: Made ni.texi a nodist file
+
+Wed May  4 08:30:24 2005  Ben Pfaff  <blp@gnu.org>
+
+       * language.texi: Proofreading from Jason Stover
+       <jstover@sdf.lonestar.org>.
+
+Tue May  3 16:22:29 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * get-commands.pl: New file to generate ni.texi
+
+       * not-implemented.texi Makefile.am: List of not implemented commands 
+       now generated from src/command.def
+
+Sun May  1 23:20:42 2005  Ben Pfaff  <blp@gnu.org>
+
+       * language.texi: Revised lots of text to catch up with changes
+       that have been in for a long time, and for style.
+
+Sun May  1 15:17:42 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * configuration.texi: Removed manpage(x) style references, because 
+       RMS doesn't like them.
+
+Wed Apr 27 07:44:57 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * utilities.texi: Added the ECHO command.
+
+Fri Apr 15 18:35:42 2005  Ben Pfaff  <blp@gnu.org>
+
+       * pspp.texinfo: Change manual license to GNU FDL, pursuant to
+       advice in maintainers' guide.
+
+Thur Apr 14 2005 John Darrington
+
+       * variables.texi: Corrected the entry for VARIABLE LABELS
+
+       * data-file-format.texi: Added documentation about the Long Variable 
+         Names record.
+       
+Thu Mar  3 22:06:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * expressions.texi:  corrected some mismatched parentheses.
+
+Mon Feb 28 23:19:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions.texi: Revise.  Describe new functions.
+
+Sat Jan  8 16:46:28 2005  Ben Pfaff  <blp@gnu.org>
+
+       * credits.texi: Removed.
+
+       * bugs.texi: Rewrote.  Moved known bugs to savannah website.
+
+       * not-implemented.texi: AGGREGATE and AUTORECODE are implemented.
+
+Tue Nov 16 13:18:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
+       
+       * statistics.texi Added documentation about the EXAMINE cmd
+
+Tue Nov 16 13:18:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * utilities.texi Added documentation for the PERMISSIONS command.
+
+       * pspp.texinfo Makefile.am  @included version.texi (Autogenerated) to 
+       keep the EDITION, VERSION and UPDATED flags up to date.
+
+Tue Nov  9 09:38:43 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * Made Makefile.am aware of pspp.texi dependencies
+
+Fri Nov  5 17:46:46 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * Added a note to the about SPLIT requiring adjacent cases.
+
+Sat Oct 30 17:32:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * Started this changelog
+
+       * Removed the monolithic pspp.texi file and replaced with  *.texi
+       wrapped by a single pspp.texinfo file
+
+       * Minor corrections to the documentation where I noticed it needed
+       them.
index 0ebd8fc56dbf8db410895939e1d398a7a5183df2..fa6e8b03df62305ee63049966df28d44aa9f7360 100644 (file)
@@ -60,3 +60,5 @@ install-data-hook:: $(YELP_CHECK)
 uninstall-hook::
        rm -f $(DESTDIR)$(infodir)/pspp.info-[0-9].gz
        rm -f $(DESTDIR)$(infodir)/pspp.info.gz
+
+EXTRA_DIST += doc/OChangeLog
diff --git a/examples/ChangeLog b/examples/ChangeLog
deleted file mode 100644 (file)
index 4fd9e0d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Tue Apr  4 20:19:48 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add missing \ to definition.
-
-Sun Aug  9 11:16:13 1998  Ben Pfaff  <blp@gnu.org>
-
-       * descriptives.stat: Renamed descript.stat.
-
-Sat Aug  8 00:28:24 1998  Ben Pfaff  <blp@gnu.org>
-
-       * New directory.
-
-       * descriptives.stat: New file.
-
-----------------------------------------------------------------------
-Local Variables:
-mode: change-log
-version-control: never
-End:
diff --git a/examples/OChangeLog b/examples/OChangeLog
new file mode 100644 (file)
index 0000000..4fd9e0d
--- /dev/null
@@ -0,0 +1,19 @@
+Tue Apr  4 20:19:48 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add missing \ to definition.
+
+Sun Aug  9 11:16:13 1998  Ben Pfaff  <blp@gnu.org>
+
+       * descriptives.stat: Renamed descript.stat.
+
+Sat Aug  8 00:28:24 1998  Ben Pfaff  <blp@gnu.org>
+
+       * New directory.
+
+       * descriptives.stat: New file.
+
+----------------------------------------------------------------------
+Local Variables:
+mode: change-log
+version-control: never
+End:
index 641e4288205e782db619235fdf3fd5c96e833350..cdbec4bbf35bcf6542c806dc2f1651d8f9695182 100644 (file)
@@ -4,3 +4,5 @@ EXTRA_DIST += \
        examples/descript.stat \
        examples/regress.stat \
        examples/regress_categorical.stat
+
+EXTRA_DIST += examples/OChangeLog
diff --git a/glade/ChangeLog b/glade/ChangeLog
deleted file mode 100644 (file)
index b6ac4bb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-2007-11-21 John Darrington <john@darrington.wattle.id.au>
-
-       * icons/22x22/psppire-acr.png icons/16x16/psppire-acr.png: New files.
-       * automake.mk: Install the new icons.
-
-2007-10-19 John Darrington <john@darrington.wattle.id.au>
-
-       * acr.c (new file)
-       * psppire.xml: Added entry for PsppireAcr widget
-
-2007-09-26  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk (libglade_psppire_la_CFLAGS): Enable VPATH build by
-       using $(top_srcdir) in -I directive.
-
-4/4/2007 John Darrington <john@darrington.wattle.id.au>
-
-  * Seperated psppire-buttonbox into psppire-vbuttonbox and psppire-buttonbox
-
-Sat Mar 31 07:09:33 WST 2007 John Darrington <john@darrington.wattle.id.au>
-       
-  * Added icons directory and its contents.
-
-  * Re-wrote psppire.xml to work with glade 3.2.0, and to know about the
-    keypad widget. 
diff --git a/glade/OChangeLog b/glade/OChangeLog
new file mode 100644 (file)
index 0000000..b6ac4bb
--- /dev/null
@@ -0,0 +1,25 @@
+2007-11-21 John Darrington <john@darrington.wattle.id.au>
+
+       * icons/22x22/psppire-acr.png icons/16x16/psppire-acr.png: New files.
+       * automake.mk: Install the new icons.
+
+2007-10-19 John Darrington <john@darrington.wattle.id.au>
+
+       * acr.c (new file)
+       * psppire.xml: Added entry for PsppireAcr widget
+
+2007-09-26  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk (libglade_psppire_la_CFLAGS): Enable VPATH build by
+       using $(top_srcdir) in -I directive.
+
+4/4/2007 John Darrington <john@darrington.wattle.id.au>
+
+  * Seperated psppire-buttonbox into psppire-vbuttonbox and psppire-buttonbox
+
+Sat Mar 31 07:09:33 WST 2007 John Darrington <john@darrington.wattle.id.au>
+       
+  * Added icons directory and its contents.
+
+  * Re-wrote psppire.xml to work with glade 3.2.0, and to know about the
+    keypad widget. 
index 6021eecd2acc0419649d11703c419db3082d196c..7827516e3b9e3517aa33e44614eb16b958f856d8 100644 (file)
@@ -46,3 +46,5 @@ libglade_psppire_la_CFLAGS = $(GLADE_UI_CFLAGS) $(GLADE_CFLAGS) \
        -I $(top_srcdir)/src/ui/gui -DDEBUGGING
 
 libglade_psppire_la_LIBADD = gl/libgl.la
+
+EXTRA_DIST += glade/OChangeLog
diff --git a/lib/ChangeLog b/lib/ChangeLog
deleted file mode 100644 (file)
index 28c767b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-2008/07/20 John Darrington <john@darrington.wattle.id.au>
-
-       * Removed gsl-extras.  Functionality now
-       available in gsl.
-
-Sun Jul 31 11:29:04 2005  Ben Pfaff  <blp@gnu.org>
-
-       * misc/: Removed in favor of gnulib.
-
-       * Makefile.am: (SUBDIRS) Removed misc.
-
-Wed Mar  9 09:53:50 2005  Ben Pfaff  <blp@gnu.org>
-
-       * gsl-extras/: New directory.
-
-       * Makefile.am: (SUBDIRS) Add gsl-extras.
-
-Mon Feb 28 23:20:05 2005  Ben Pfaff  <blp@gnu.org>
-
-       * julcal/: Removed directory.
-
-       * Makefile.am: (SUBDIRS) Removed julcal.
-       (DIST_SUBDIRS) Removed.
-
-Sun Jan  2 21:31:48 2000  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (SUBDIRS) Only include gmp if libgmp not installed
-       on this system already.
-
-Sun May 31 00:55:51 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (SUBDIRS) Add gmp.
-
-       * gmp/: New subdirectory, containing a subset of GNU libgmp2 just
-       big enough to support mpf_init_set_d(), mpf_get_str(), and
-       mpf_clear().
-
-Fri Apr 24 12:52:07 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (SUBDIRS) Remove avllib.
-
-       * avllib/: Removed.
-
-Wed Dec 24 22:36:50 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (SUBDIRS) Add dcdflib.
-
-       * dcdflib: New subdirectory.
-
-----------------------------------------------------------------------
-Local Variables:
-mode: change-log
-version-control: never
-End:
diff --git a/lib/OChangeLog b/lib/OChangeLog
new file mode 100644 (file)
index 0000000..28c767b
--- /dev/null
@@ -0,0 +1,54 @@
+2008/07/20 John Darrington <john@darrington.wattle.id.au>
+
+       * Removed gsl-extras.  Functionality now
+       available in gsl.
+
+Sun Jul 31 11:29:04 2005  Ben Pfaff  <blp@gnu.org>
+
+       * misc/: Removed in favor of gnulib.
+
+       * Makefile.am: (SUBDIRS) Removed misc.
+
+Wed Mar  9 09:53:50 2005  Ben Pfaff  <blp@gnu.org>
+
+       * gsl-extras/: New directory.
+
+       * Makefile.am: (SUBDIRS) Add gsl-extras.
+
+Mon Feb 28 23:20:05 2005  Ben Pfaff  <blp@gnu.org>
+
+       * julcal/: Removed directory.
+
+       * Makefile.am: (SUBDIRS) Removed julcal.
+       (DIST_SUBDIRS) Removed.
+
+Sun Jan  2 21:31:48 2000  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (SUBDIRS) Only include gmp if libgmp not installed
+       on this system already.
+
+Sun May 31 00:55:51 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (SUBDIRS) Add gmp.
+
+       * gmp/: New subdirectory, containing a subset of GNU libgmp2 just
+       big enough to support mpf_init_set_d(), mpf_get_str(), and
+       mpf_clear().
+
+Fri Apr 24 12:52:07 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (SUBDIRS) Remove avllib.
+
+       * avllib/: Removed.
+
+Wed Dec 24 22:36:50 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (SUBDIRS) Add dcdflib.
+
+       * dcdflib: New subdirectory.
+
+----------------------------------------------------------------------
+Local Variables:
+mode: change-log
+version-control: never
+End:
index 440a8595a03d2dc52c58bf56ce65950375bf85bf..6410988b8ba7304989ad347f387a0f0b2efdb219 100644 (file)
@@ -5,3 +5,5 @@ include $(top_srcdir)/lib/linreg/automake.mk
 if WITHGUI
 include $(top_srcdir)/lib/gtksheet/automake.mk
 endif
+
+EXTRA_DIST += lib/OChangeLog
diff --git a/lib/gtksheet/ChangeLog b/lib/gtksheet/ChangeLog
deleted file mode 100644 (file)
index b5ba1c8..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-2008-05-08  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6506.  Reviewed by John Darrington.
-
-       * gtksheet.c (gtk_sheet_unrealize): Don't call gtk_widget_unparent
-       on sheet->button if it's null.
-
-2008-05-06  Ben Pfaff  <blp@gnu.org>
-
-       * gtksheet.c (gtk_sheet_dispose): Set the sheet's entry_container
-       and button members to NULL after unref'ing them, so that a later
-       call to gtk_sheet_for_all will not try to dereference a dangling
-       pointer.
-
-2008-03-06 John Darrington <john@darrington.wattle.id.au>
-
-       * gsheet-row-iface.c gsheet-row-iface.h: Delete unused, unneccesary
-       gpointer variable from the interface.
-
-       * gtksheet.c: Update to match new gsheet-row-iface
-
-2008-02-27 John Darrington <john@darrington.wattle.id.au>
-       * gtksheet.c gtksheet.h: Corrected some leaks and other problems
-       related to de-allocating the sheet.
-
-2008-02-27 John Darrington <john@darrington.wattle.id.au>
-       * gtksheet.c: (gtk_sheet_expose) Don't queue a redraw on the entry
-       widget.  Fixes bug #21073
-
-2008-02-20 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c gtksheet.h: Removed some unused signals.
-       Made the models properties of the widget.
-
-2008-02-08 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c: Removed the sheet_locked feature, which we never
-       used, and interfered with the editability of the entry widget.
-
-       * gtksheet.c: Add one to the row to which we scroll. Seems like
-       the best way to cope with granularity problems.
-       
-21 Septempber 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c (range_update_callback): Scroll to cell 0,0 if the
-       current position is outside the model's range.
-
-24 July 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c gtksheet.h: Removed the `clip' feature, which IMO 
-       is a croc, and we're unlikely to use.  In its place, added a primary 
-       selection which supports text and html targets.
-
-16 July 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c gtksheet.h: Removed some legacy functions called from 
-       gtk_sheet_finalize which caused unnecessary delays when shutting down.
-
-12 July 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c gtksheet.h: Removed view member and replaced with 
-        function call.  Removed hadjustment_changed and vadjustment_changed 
-        functions which did nothing.  Added some whitespace arount != 
-        operators.
-
-09 July 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c gtksheet.h (gtk_sheet_get_active_cell): Allowed row,
-       column  to be NULL.
-
-07 July 2007 John Darrington <john@darrington.wattle.id.au>
-        
-       * gsheet-column-iface.c gsheet-column-iface.h gsheet-row-iface.c
-       gsheet-row-iface.h gtksheet.c gtksheet.h: Added a "subtitle"
-       feature on row/column titles, which shows tooltip-like popups.  
-
-03 July 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * gtksheet.c gtksheet.h: Removed the autoscroll-on-select feature 
-       that was causing us grief.
-
-28 June 2007 John Darrington <john@darrington.wattle.id.au>
-
-        * gtksheet.c: Removed some features that we dont use, to get better 
-       speed.
-
-Sat Feb 17 17:36:56 2007  Ben Pfaff  <blp@gnu.org>
-
-       * gsheet-column-iface.c gsheet-hetero-column.c gsheet-row-iface.c
-       gsheet-uniform-column.c gsheet-uniform-row.c gsheetmodel.c
-       gtkextra-marshal.c gtkextra.c gtkiconlist.c gtkitementry.c
-       gtksheet.c: Add "#include <config.h>".
-
-Mon Jun 19 18:03:21 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * gsheet-column-iface.c gsheet-column-iface.h
-       gsheet-hetero-column.c gsheet-row-iface.c gsheet-row-iface.h
-       gsheet-uniform-column.c gsheet-uniform-row.c gtksheet.c
-       gtksheet.h:  Fixed some warnings.  Corrected errors updating
-               row/column titles
-       
-Di Mai 30 19:51:19 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * gtksheet.c gtksheet.h: constness. Removed dependence on glib2.10
-
-Sat May 27 16:29:36 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * gtksheet.c: Removed call to gtk_entry_set_text, which caused warnings 
-       and was unnecessary.
-
-Thu May 25 17:58:51 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * gsheet-column-iface.c gsheet-column-iface.h gsheet-hetero-column.c
-    gsheet-row-iface.c gsheet-row-iface.h gsheet-uniform-row.c
-    gtksheet-extra.h gtksheet.c:  Plugged memory leaks.  Rationalised the way
-    that GtkSheetButtons are created.
-
-Sat May 20 21:02:03 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * gsheetmodel.c gsheetmodel.h: Added columns-inserted and columns-deleted 
-    signals.  Added g_sheet_get_{row,column}_count functions.
-
-    * gtksheet.c gtksheet.h: Allowed -1 to be passed to
-    gtk_sheet_set_active_cell to indicate no active cell.
-
-Mon May 15 16:10:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * gtksheet.c: Removed code which rendered the title buttons a second 
-    time.  Cut and Paste error ?
-
-Sat May 13 07:58:32 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-        * gsheetmodel.c gsheetmodel.h gtksheet.c gtksheeet.h: Added
-       free_strings flag to tell the sheet whether to free the string
-       data passed from the model.
-
-Thu May 11 22:20:04 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * gtksheet.c, gtksheet.h: Fixed broken deallocation of sheet->pixmap.
-
-Thu May  4 17:55:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * gtksheet.c: Added callback on inserted rows.
-
-Sat Jan 28 08:48:08 2006 UTC John Darrington <john@darrington.wattle.id.au>
-
-    * Separated the data out of the GtkSheet.  The gtksheet should now be
-    regarded as a way of looking into the data.  The data is represented by a
-    GSheetModel and the rows and columns by  GSheetRow and GSheetColumn.
diff --git a/lib/gtksheet/OChangeLog b/lib/gtksheet/OChangeLog
new file mode 100644 (file)
index 0000000..b5ba1c8
--- /dev/null
@@ -0,0 +1,149 @@
+2008-05-08  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6506.  Reviewed by John Darrington.
+
+       * gtksheet.c (gtk_sheet_unrealize): Don't call gtk_widget_unparent
+       on sheet->button if it's null.
+
+2008-05-06  Ben Pfaff  <blp@gnu.org>
+
+       * gtksheet.c (gtk_sheet_dispose): Set the sheet's entry_container
+       and button members to NULL after unref'ing them, so that a later
+       call to gtk_sheet_for_all will not try to dereference a dangling
+       pointer.
+
+2008-03-06 John Darrington <john@darrington.wattle.id.au>
+
+       * gsheet-row-iface.c gsheet-row-iface.h: Delete unused, unneccesary
+       gpointer variable from the interface.
+
+       * gtksheet.c: Update to match new gsheet-row-iface
+
+2008-02-27 John Darrington <john@darrington.wattle.id.au>
+       * gtksheet.c gtksheet.h: Corrected some leaks and other problems
+       related to de-allocating the sheet.
+
+2008-02-27 John Darrington <john@darrington.wattle.id.au>
+       * gtksheet.c: (gtk_sheet_expose) Don't queue a redraw on the entry
+       widget.  Fixes bug #21073
+
+2008-02-20 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c gtksheet.h: Removed some unused signals.
+       Made the models properties of the widget.
+
+2008-02-08 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c: Removed the sheet_locked feature, which we never
+       used, and interfered with the editability of the entry widget.
+
+       * gtksheet.c: Add one to the row to which we scroll. Seems like
+       the best way to cope with granularity problems.
+       
+21 Septempber 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c (range_update_callback): Scroll to cell 0,0 if the
+       current position is outside the model's range.
+
+24 July 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c gtksheet.h: Removed the `clip' feature, which IMO 
+       is a croc, and we're unlikely to use.  In its place, added a primary 
+       selection which supports text and html targets.
+
+16 July 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c gtksheet.h: Removed some legacy functions called from 
+       gtk_sheet_finalize which caused unnecessary delays when shutting down.
+
+12 July 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c gtksheet.h: Removed view member and replaced with 
+        function call.  Removed hadjustment_changed and vadjustment_changed 
+        functions which did nothing.  Added some whitespace arount != 
+        operators.
+
+09 July 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c gtksheet.h (gtk_sheet_get_active_cell): Allowed row,
+       column  to be NULL.
+
+07 July 2007 John Darrington <john@darrington.wattle.id.au>
+        
+       * gsheet-column-iface.c gsheet-column-iface.h gsheet-row-iface.c
+       gsheet-row-iface.h gtksheet.c gtksheet.h: Added a "subtitle"
+       feature on row/column titles, which shows tooltip-like popups.  
+
+03 July 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * gtksheet.c gtksheet.h: Removed the autoscroll-on-select feature 
+       that was causing us grief.
+
+28 June 2007 John Darrington <john@darrington.wattle.id.au>
+
+        * gtksheet.c: Removed some features that we dont use, to get better 
+       speed.
+
+Sat Feb 17 17:36:56 2007  Ben Pfaff  <blp@gnu.org>
+
+       * gsheet-column-iface.c gsheet-hetero-column.c gsheet-row-iface.c
+       gsheet-uniform-column.c gsheet-uniform-row.c gsheetmodel.c
+       gtkextra-marshal.c gtkextra.c gtkiconlist.c gtkitementry.c
+       gtksheet.c: Add "#include <config.h>".
+
+Mon Jun 19 18:03:21 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * gsheet-column-iface.c gsheet-column-iface.h
+       gsheet-hetero-column.c gsheet-row-iface.c gsheet-row-iface.h
+       gsheet-uniform-column.c gsheet-uniform-row.c gtksheet.c
+       gtksheet.h:  Fixed some warnings.  Corrected errors updating
+               row/column titles
+       
+Di Mai 30 19:51:19 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * gtksheet.c gtksheet.h: constness. Removed dependence on glib2.10
+
+Sat May 27 16:29:36 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * gtksheet.c: Removed call to gtk_entry_set_text, which caused warnings 
+       and was unnecessary.
+
+Thu May 25 17:58:51 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * gsheet-column-iface.c gsheet-column-iface.h gsheet-hetero-column.c
+    gsheet-row-iface.c gsheet-row-iface.h gsheet-uniform-row.c
+    gtksheet-extra.h gtksheet.c:  Plugged memory leaks.  Rationalised the way
+    that GtkSheetButtons are created.
+
+Sat May 20 21:02:03 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * gsheetmodel.c gsheetmodel.h: Added columns-inserted and columns-deleted 
+    signals.  Added g_sheet_get_{row,column}_count functions.
+
+    * gtksheet.c gtksheet.h: Allowed -1 to be passed to
+    gtk_sheet_set_active_cell to indicate no active cell.
+
+Mon May 15 16:10:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * gtksheet.c: Removed code which rendered the title buttons a second 
+    time.  Cut and Paste error ?
+
+Sat May 13 07:58:32 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+        * gsheetmodel.c gsheetmodel.h gtksheet.c gtksheeet.h: Added
+       free_strings flag to tell the sheet whether to free the string
+       data passed from the model.
+
+Thu May 11 22:20:04 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * gtksheet.c, gtksheet.h: Fixed broken deallocation of sheet->pixmap.
+
+Thu May  4 17:55:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * gtksheet.c: Added callback on inserted rows.
+
+Sat Jan 28 08:48:08 2006 UTC John Darrington <john@darrington.wattle.id.au>
+
+    * Separated the data out of the GtkSheet.  The gtksheet should now be
+    regarded as a way of looking into the data.  The data is represented by a
+    GSheetModel and the rows and columns by  GSheetRow and GSheetColumn.
index c98037ab735a07a68976bd871d318148d0ad34b1..babcb2aaaa6604772f2a8c281cfeaa145e09fc64 100644 (file)
@@ -27,3 +27,5 @@ lib_gtksheet_libgtksheet_a_SOURCES = \
        lib/gtksheet/gtkitementry.c \
        lib/gtksheet/gtksheet.c \
        lib/gtksheet/gtksheet.h 
+
+EXTRA_DIST += lib/gtksheet/OChangeLog
diff --git a/lib/linreg/ChangeLog b/lib/linreg/ChangeLog
deleted file mode 100644 (file)
index 48fcf31..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Sun Jan 9 00:57        2006    Jason Stover <jason@sakla.net>
-
-       * pspp_linreg.h: Altered the coefficient structure to include
-       variable/value pairs.
-       
-       * coefficient.c: Added functions to handle the matching between
-       model coefficients and their corresponding variables and values.
-
-       * linreg.c: (pspp_linreg_cache_free) Added pspp_linreg_coeff_free ()
-       to free coefficient structures.
-       
-Sun Oct 23 13:46:56 2005  Ben Pfaff  <blp@gnu.org>
-
-       * linreg.c: (pspp_linreg) Removed unused variable `mse'.
-
-----------------------------------------------------------------------
-Local Variables:
-mode: change-log
-version-control: never
-End:
diff --git a/lib/linreg/OChangeLog b/lib/linreg/OChangeLog
new file mode 100644 (file)
index 0000000..48fcf31
--- /dev/null
@@ -0,0 +1,20 @@
+Sun Jan 9 00:57        2006    Jason Stover <jason@sakla.net>
+
+       * pspp_linreg.h: Altered the coefficient structure to include
+       variable/value pairs.
+       
+       * coefficient.c: Added functions to handle the matching between
+       model coefficients and their corresponding variables and values.
+
+       * linreg.c: (pspp_linreg_cache_free) Added pspp_linreg_coeff_free ()
+       to free coefficient structures.
+       
+Sun Oct 23 13:46:56 2005  Ben Pfaff  <blp@gnu.org>
+
+       * linreg.c: (pspp_linreg) Removed unused variable `mse'.
+
+----------------------------------------------------------------------
+Local Variables:
+mode: change-log
+version-control: never
+End:
index d65df864a762fd15b826427be31529a753b834a6..650646c6ee83a8b739bb4e1695ff24775e106fd5 100644 (file)
@@ -4,3 +4,5 @@ noinst_LIBRARIES += lib/linreg/liblinreg.a
 
 lib_linreg_liblinreg_a_SOURCES = \
        lib/linreg/sweep.c  lib/linreg/sweep.h 
+
+EXTRA_DIST += lib/linreg/OChangeLog
diff --git a/src/ChangeLog b/src/ChangeLog
deleted file mode 100644 (file)
index bba2afa..0000000
+++ /dev/null
@@ -1,14204 +0,0 @@
-2007-11-03 John Darrington <john@darrington.wattle.id.au>
-
-       * gnumeric-reader.c gnumeric-reader.h: New files.
-
-Thu May  4 21:47:48 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, move
-       procedure.c and procedure.h from src to src/data.  Update
-       makefiles and #includes accordingly.
-
-       * automake.mk: Remove special rule for src/procedure.o.
-
-       * procedure.c: Moved to src/data.
-
-       * procedure.h: Moved to src/data.
-
-Wed May  3 22:24:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       many global variables, consolidating procedure execution in
-       procedure.c.  Encapsulate transformations in new "struct
-       trns_chain".  Also, change implementation of N OF CASES, FILTER,
-       and PROCESS IF from special cases to transformations.
-        
-       * procedure.c: (global var vfm_source) Make static.  Changed
-       external references to use in_input_program(), proc_set_source(),
-       or proc_capture_output() instead.
-       (global var vfm_sink) Make static.  Changed external references to
-       use proc_set_sink() instead.
-       (global var default_dict) Move here from data/dictionary.c.
-       (static var permanent_trns_chain) New var.
-       (static var temp_dict) Renamed permanent_dict, updated references.
-       (static var temporary_trns_chain) New var.
-       (static var cur_trns_chain) New var.
-       (static var in_procedure) Removed.
-       (global var t_trns) Removed.
-       (global var n_trns) Removed.
-       (global var m_trns) Removed.
-       (global var f_trns) Removed.
-       (procedure) Even if there's "nothing to do" we need to clear
-       PROCESS IF, N OF CASES, vector state.  (This should be
-       abstracted.)
-       (multipass_callback) New function.
-       (multipass_procedure) New function.
-       (open_active_file) Add N OF CASES, FILTER, PROCESS IF
-       transformations.  Finalize transformations.  No need to call
-       ctl_stack_clear() anymore because finalizers will do that.
-       (write_case) Simplify and rewrite.
-       (execute_transformations) Removed.
-       (filter_case) Removed.
-       (close_active_file) Use proc_cancel_temporary_transformations().
-       No need to clear PROCESS IF, N OF CASES here anymore because
-       helpers do that.
-       (multipass_procedure_with_splits) Keep track of success.
-       (multipass_split_callback) Ditto.
-       (multipass_split_output) Ditto.
-       (discard_variables) No need to call ctl_stack_clear() anymore
-       because finalizers will do that.
-       (proc_capture_transformations) New function.
-       (add_transformation) Rewrite in terms of trns_chain_append().
-       (add_transformation_with_finalizer) New function.
-       (next_transformation) Rewrite in terms of trns_chain_next().
-       (proc_in_temporary_transformations) New function.
-       (proc_start_temporary_transformations) New function.
-       (proc_make_temporary_transformations_permanent) New function.
-       (proc_cancel_temporary_transformations) New function.
-       (cancel_transformations) Rename proc_cancel_all_transformations(),
-       rewrite in terms of trns_chain_destroy().
-       (proc_init) New function.
-       (proc_done) New function.
-       (proc_set_sink) New function.
-       (proc_set_source) New function.
-       (proc_has_source) New function.
-       (proc_capture_output) New function.
-       (add_case_limit_trns) New function.
-       (case_limit_trns_proc) New function.
-       (case_limit_trns_free) New function.
-       (add_filter_trns) New function.
-       (filter_trns_proc) New function.
-       (add_process_if_trns) New function.
-       (process_if_trns_proc) New function.
-       (process_if_trns_free) New function.
-
-Wed Apr 26 20:00:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * procedure.c (create_trns_case): Fix inverted decision on whether
-       numeric values should be initialized to 0 or SYSMIS.
-
-Wed Apr 26 19:48:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, assert
-       that add_transformation() is not called during procedure
-       execution.  Thanks to John Darrington for the suggestion.
-       
-       * procedure.c: (static var in_procedure) New var.
-       (internal_procedure) Get rid of recursive_call local var and
-       logic.
-       (open_active_file) Set in_procedure and make sure it wasn't
-       already set.
-       (close_active_file) Reset in_procedure and make sure it was
-       already set.
-       (add_transformation) Make sure we're not in a procedure.
-
-Wed Apr 26 19:33:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, break
-       procedure.c into multiple files.
-       
-       * procedure.c (vfm_last_invocation): Rename
-       time_of_last_procedure().  Update all references.
-       (struct storage_stream_info) Move to data/storage-stream.c.
-       (storage_sink_open) Ditto.
-       (destroy_storage_stream_info) Ditto.
-       (storage_sink_write) Ditto.
-       (storage_sink_destroy) Ditto.
-       (storage_sink_make_source) Ditto.
-       (var storage_sink_class) Ditto.
-       (storage_source_count) Ditto.
-       (storage_source_read) Ditto.
-       (storage_source_destroy) Ditto.
-       (storage_source_class) Ditto.
-       (storage_source_get_casefile) Ditto.
-       (storage_source_create) Ditto.
-       (null_sink_class) Move to data/case-sink.c.
-       (create_case_source) Move to data/case-source.c.
-       (free_case_source) Ditto.
-       (case_source_is_class) Ditto.
-       (create_case_sink) Move to data/case-sink.c.
-       (free_case_sink) Ditto.
-
-       * procedure.h: (struct case_source) Move to data/case-source.h.
-       (struct case_source_class) Ditto.
-       (struct case_sink) Move to data/case-sink.h.
-       (struct case_sink_class) Ditto.
-
-Thu Apr 27 09:28:25 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * automake.mk: Removed explicit dependencies for message.o, since
-       that module no longer exists.
-
-Wed Apr 26 15:29:45 2006  Ben Pfaff  <blp@gnu.org>
-
-       Start reforming procedure execution.  In this phase, get rid of
-       function prototypes for never-defined functions.
-       
-       * procedure.h: Get rid of function prototypes for never-defined
-       functions.
-
-Wed Apr 26 12:58:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       Improve the way we handle the various parsing "states".  Until now
-       we've hard-coded the state transitions in the command definition
-       file, but that's error-prone and, worse, it's redundant--we can
-       figure out what state we're in anyhow.  We can cleanly handle
-       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
-       
-       * procedure.c (case_source_is_complex): Removed.
-       (discard_variables) No need to set pgm_state anymore.
-
-Tue Apr 25 11:06:49 2006  Ben Pfaff  <blp@gnu.org>
-
-       Finish reforming error message support.  In this phase, move
-       message.c into libpspp.
-       
-       * message.c: Move to libpspp.
-
-Tue Apr 25 10:47:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, drop
-       actual message printing from core code, substituting a callback,
-       and add the callback to each UI.  Also, move verbose_msg() into
-       its own module.
-
-       * message.c: (var err_error_count) Renamed error_count and moved
-       to ui/terminal/msg-ui.c.
-       (var err_warning_count) Renamed warning_count and moved to
-       ui/terminal/msg-ui.c.
-       (err_check_count) Renamed check_msg_count() and moved to
-       ui/terminal/msg-ui.c.
-       (dump_message) Rewrote to take stream instead of function pointer
-       and moved to ui/terminal/msg-ui.c.
-       (msg_emit) Moved its guts to ui/terminal/msg-ui.c as handle_msg()
-       and rewrote to just pass message to callback.
-       
-       (var err_verbosity) Renamed "verbosity" and moved to
-       libpspp/verbose-msg.c.
-       (verbose_msg) Moved to libpspp/verbose-msg.c.
-       
-       (var err_already_flagged) Removed.
-       (puts_stdout) Removed.
-       
-       (var msg_handler) New static variable.
-       (msg_init) New function.
-       (msg_get_command_name) New function.
-       
-Mon Apr 24 17:40:08 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, rename
-       all the message functions and types to start with "msg", except
-       for the ones that will be moving to other modules anyway.
-
-       All references to the identifiers below were updated likewise.
-       
-       * message.c: (err_done) Renamed msg_done().
-       (err_push_file_locator) Renamed msg_push_msg_locator().
-       (err_pop_file_locator) Renamed msg_pop_msg_locator().
-       (err_location) Renamed msg_location().
-       (err_set_command_name) Renamed msg_set_command_name().
-
-Mon Apr 24 14:11:33 2006  Ben Pfaff  <blp@gnu.org>
-
-       * message.c: Use exit.h from gnulib instead of checking for and
-       defining EXIT_SUCCESS and EXIT_FAILURE by hand.
-
-Sun Apr 23 22:00:23 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, get rid
-       of message "titles" and put the message text in `struct error'.
-       Now `struct error' encapsulates a message more properly.
-
-       * message.c: (tmsg) Removed.
-       (msg) Use err_msg() instead of err_vmsg().  Format message
-       ourselves.
-       (err_vmsg) Renamed err_msg().  Changed interface, dropping message
-       and va_list args which are now in the error struct.
-               
-Sun Apr 23 20:35:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.
-
-       * message.c: Use linebreak module from gnulib instead of home-brew
-       line breaking.
-       (puts_stdout) Rewrote.
-       (dump_message) Rewrote.  Changed interface and updated all callers.
-       (compulsory_break) Removed.
-       (char_is_break) Removed.
-       (break_before) Removed.
-       (break_after) Removed.
-       (macro BREAK_LONG_WORD) Removed.
-
-Sun Apr 16 20:41:10 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, we
-       divide the classification of messages along "category" and
-       "severity" axes.
-
-       * message.c: (err_vmsg) Rewrite to deal with categories and
-       severities in a straightforward manner instead of mixing them into
-       classes.
-       [0] (puts_stderr) Removed (dead code).
-       (msg) Changed first argument from `int' to `enum msg_class'.
-       (tmsg) Ditto.
-
-Sun Apr 16 18:53:12 2006  Ben Pfaff  <blp@gnu.org>
-
-       GNU standards require "file name" instead of "filename" in
-       documentation.  It's nice for our code to follow the convention
-       too.
-
-       Basically did search and replace in the whole source tree.  Major
-       changes in function names or struct member names have their own
-       change log entries.
-
-Sun Apr 16 15:58:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, we get
-       rid of VM() and the other msg() support for "verbosity", replacing
-       it by a new function verbose_msg().
-
-       * message.c: (verbose_msg) New function.
-       (err_vmsg) Remove support for verbosity levels.
-
-Sun Apr 16 11:46:51 2006  Ben Pfaff  <blp@gnu.org>
-
-       Start reforming error message support.  In this phase, we get rid
-       of "installation errors" and change all uses of msg() in the
-       output drivers to uses of error() or error_at_line().
-
-       * message.c: (err_vmsg) Get rid of IE, IS support.
-
-Sat Mar 11 14:17:47 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * automake.mk: Changed the pattern specific AM_CPPFLAGS to two target 
-         specific ones. Eventually there will be none at all.
-
-       * automake.mk: Moved the pspp binary to ui/terminal
-
-Sat Mar  4 12:59:08 2006  Ben Pfaff  <blp@gnu.org>
-
-       * In many source files, #include "compiler.h" to get GCC attribute
-       definitions.
-
-Sat Mar  4 12:28:09 2006  Ben Pfaff  <blp@gnu.org>
-
-       * In many source files, replace INT_DIGITS by
-       INT_STRLEN_BOUND(int) and include intprops.h.
-
-John Darrington:
-       
-       * Replaced '_' with '-' in most filenames.
-
-       * Renamed files as follows:
-               vfm.[ch] to procedure.[ch]
-               error.[ch] to message.[ch]
-               getl.[ch] to line-buffer.[ch]
-               mkfile.[ch] to make-file.[ch]
-               pfm-write.h to por-file-writer.h
-               pfm-write.c to por-file-writer.c
-               sfmP.h to sfm-private.h
-               lex-def.c to identifier.c
-               lex-def.h to identifier.h
-               sfm-read.c to sys-file-reader.c
-               sfm-read.h to sys-file-reader.h
-               sfm-write.h to sys-file-writer.h
-               sfm-write.c to sys-file-writer.c
-               chart.[ch] to chart-geometry.[ch]
-               val.h to value.h
-               var.h to variable.h
-               vars-atr.c to variable.c
-               ctl-stack.c to control-stack.c
-               ctl-stack.h to control-stack.h
-               dfm-read.c to data-reader.c
-               dfm-write.c to data-writer.c
-               dfm-write.h to data-writer.h
-               dfm-read.h to data-reader.h
-               apply-dict.c to apply-dictionary.c
-               mis-val.c to missing-values.c
-               sysfile-info.c to sys-file-info.c
-               modify-vars.c to modifiy-variables.c
-               rename-vars.c to rename-variables.c
-               val-labs.c to value-labels.c
-               var-display.c to variable-display.c
-               var-labs.c to variable-label.c
-               format-prs.c to format-parser.c
-               range-prs.c to range-parser.c
-               range-prs.h to range-parser.h
-               subclist.c to subcommand-list.c
-               subclist.h to subcommand-list.h
-               vars-prs.c to variable-parser.c
-               descript.c to descriptives.c
-               sort-prs.c to sort-criteria.c/sort-cases.c
-               sort-prs.h to sort-criteria.h
-               sel-if.c to select-if.c
-               algorithm.c to array.c
-               algorithm.h to array.h
-               bitvector.h to bit-vector.h
-               som.c to manager.c
-               som.h to manager.h
-               tab.h to table.h
-               tab.c to table.c
-               readln.c to read-line.c
-               readln.h to read-line.h
-               cmdline.c to command-line.c
-               cmdline.h to command-line.h
-
-
-Sat Feb 11 22:35:20 2006  Ben Pfaff  <blp@gnu.org>
-
-       General clean-ups and minor bug fixes.
-
-       * filename.h: Move DIR_SEPARATOR, PATH_SEPARATOR here from
-       pref.h.orig.
-
-       * lex-def.h: (macro CHAR_IS_ID1) Removed.  All references changed
-       to lex_is_id1().
-       (macro CHAR_IS_IDN) Removed.  All references changed to
-       lex_is_idn().
-       
-       * lex-def.c: (lex_is_id1) New function.
-       (lex_is_idn) New function.
-       (lex_skip_identifier) New function.
-       (lex_id_match_len) Return bool instead of int.
-       (lex_id_match) Ditto.
-
-       * command.c: (parse_command_name) Convert parsed words to
-       uppercase to make error messages easier to read.
-       (cmd_host) Fix return value.
-
-       * dfm-read.c: (read_inline_record) Use tokens to check for BEGIN
-       DATA, not specialized lexical analysis.
-
-       * print.c: (print_space_trns_proc) Count of lines should be `int',
-       otherwise we might never finish.
-       (print_space_trns_free) Close writer.
-
-       * lexer.c: (enum string_type) New enum.
-       (lex_get) Remove essentially unused local variable `cp'.
-       Use enum string_type values.  Use parse_id().
-       (parse_id) New function.
-       (lex_look_ahead) Recognize octal strings too.
-       (strip_comments) New function.
-       (lex_get_line) Rewrite.
-       (lex_preprocess_line) Removed.
-       (convert_numeric_string_to_char_string) Use enum string_type.
-       (parse_string) Ditto.
-
-       * autorecode.c: (recode) Clone correct number of bytes based on
-       source string width.
-
-Sat Feb 11 22:34:38 2006  Ben Pfaff  <blp@gnu.org>
-
-       Reduce dependencies on getl, and of getl.
-
-       * data-in.c: (vdls_error) Don't output different message depending
-       on whether we're interactive.
-
-       * getl.h: (struct getl_line_list) Removed.
-       (struct getl_script) Removed.
-       (GETL_PRPT_*) Removed.
-       (GETL_MODE_*) Removed.
-       (GETL_PROMPT_FIRST, GETL_PROMPT_LATER, GETL_PROMPT_DATA,
-       GETL_PROMPT_CNT) New enums.
-
-       * settings.c: (static var prompt) Removed.
-       (static var cprompt) Removed.
-       (static var dprompt) Removed.
-       (settings_done) Don't initialize prompt, cprompt, dprompt.
-       (get_prompt) Removed.
-       (set_prompt) Removed.
-       (get_dprompt) Removed.
-       (set_dprompt) Removed.
-       (get_cprompt) Removed.
-       (set_cprompt) Removed.
-
-       * pfm-read.c: (corrupt_msg) Don't show filename and line number,
-       to get rid of getl_location().
-
-       * sfm-read.c: (corrupt_msg) Ditto.
-
-       * getl.c: (struct getl_source) New.
-       (static var cur_source) New.
-       (static var last_source) New.
-       (static var DO_REPEAT_level) Removed.
-       (global var getl_head) Removed.
-       (global var getl_tail) Removed.
-       (getl_initialize) Call init_prompts().
-       (getl_add_file) Removed.
-       (getl_include) Removed.
-       (getl_add_DO_REPEAT_file) Removed.
-       (getl_handle_line_buffer) Removed.
-       (getl_close_file) Removed.
-       (getl_close_all) Removed.
-       (getl_is_separate) Removed.
-       (getl_set_separate) Removed.
-       (getl_reading_script) Removed.
-       (append_source) New function.
-       (include_source) New function.
-       (create_source) New function.
-       (create_syntax_file_source) New function.
-       (create_filter_source) New function.
-       (create_function_source) New function.
-       (create_interactive_source) New function.
-       (getl_append_syntax_file) New function.
-       (getl_include_syntax_file) New function.
-       (getl_include_filter) New function.
-       (getl_include_function) New function.
-       (getl_append_interactive) New function.
-       (getl_abort_noninteractive) New function.
-       (getl_is_interactive) New function.
-       (close_source) New function.
-       (getl_location) Use new `cur_source' var.
-       (getl_uninitialize) Use close_source().  Call uninit_prompts().
-       (read_syntax_file) New function.
-       (read_line_from_source) New function.
-       (do_read_line) New function.
-       (getl_read_line) Rewrite.
-       (static var prompts) New.
-       (static var current_style) New.
-       (init_prompts) New function.
-       (uninit_prompts) New function.
-       (getl_get_prompt) New function.
-       (getl_set_prompt) New function.
-       (getl_set_prompt_style) New function.
-       (get_prompt) New function.
-
-       * command.c: Merge the EXIT (aka Q, aka QUIT) and FINISH commands,
-       and make EXIT undocumented.  EXIT was a PSPP extension that never
-       really entirely made sense.
-       (cmd_exit) Removed.
-       (cmd_finish) Return CMD_EOF unconditionally.
-       (cmd_clear_transformations) Drop requirement of interactivity.
-
-       * command.def: Merge the EXIT (aka Q, aka QUIT) and FINISH
-       commands.
-
-       * repeat.c: Major changes to match getl revision.
-       (struct line_list) New struct.
-       (enum repeat_entry_type) New.
-       (struct repeat_entry) Made `type' an enum repeat_entry_type.
-       (struct repeat_block) New.
-       (static var repeat_tab) Removed.
-       (static var count) Removed.
-       (static var line_buf_head) Removed.
-       (static var line_buf_tail) Removed.
-       (cmd_do_repeat) Rewritten.
-       (clean_up) Removed.
-       (append_record) Removed.
-       (recognize_keyword) New function.
-       (internal_cmd_do_repeat) Removed.
-       (parse_specification) New function.
-       (skip_indentor) New function.
-       (recognize_do_repeat) New function.
-       (recognize_end_repeat) New function.
-       (parse_lines) New function.
-       (create_vars) New function.
-       (parse_ids) Use enum repeat_entry_type.
-       (parse_strings) Ditto.
-       (find_DO_REPEAT_substitution) Renamed find_substitution(),
-       rewrote.
-       (perform_DO_REPEAT_substitutions) Renamed do_repeat_filter(),
-       rewrote.
-       (do_repeat_read) New function.
-       (do_repeat_close) New function.
-
-       * data-list.c: Don't need to keep track of eof from getl anymore,
-       because getl can tell us now.
-       (struct data_list_pgm) Removed `eof' member.
-       (cmd_data_list) Don't assign to `eof'.
-       (get_data_list_read_func) Renamed read_from_data_list(), changed
-       interface.
-       (read_from_data_list_fixed) Changed interface.
-       (read_from_data_list_free) Changed interface.
-       (read_from_data_list_list) Changed interface.
-       (data_list_trns_proc) Rewrote based on dfm_eof() and
-       dfm_reader_error().
-       (data_list_source_read) Check for dfm reader errors.
-
-       * dfm-read.c: (enum dfm_reader_flags) Removed DFM_EOF in favor of
-       new `eof_cnt' member in struct dfm_reader.
-       (struct dfm_reader) New `eof_cnt' member.
-       (dfm_close_reader) Check `eof_cnt', not DFM_EOF.
-       (dfm_open_reader) Initialize `eof_cnt'.
-       (read_inline_record) Set prompt style with
-       getl_set_prompt_style().  
-       (read_record) Rewrite.
-       (cmd_begin_data) Set prompt style with getl_set_prompt_style().
-
-       * include.c: (cmd_include) Use getl_include_syntax_file().
-
-       * set.q: (cmd_set) Use getl_set_prompt().
-
-       * html.c: (postopen) Remove "source-file" expansion variable, to
-       avoid use of getl_location().
-
-       * postscript.c: (postopen) Remove "source-file" expansion
-       variable, to avoid use of getl_location().
-
-       * cmdline.c: (parse_command_line) Drop -c command line option,
-       because it wasn't very useful.  -i command line option now calls
-       getl_append_interactive().  Use new getl function interfaces.
-       Drop support for clearing dictionary between syntax files and thus
-       the "+" command line syntax.
-       (static var pre_syntax_message) Remove description of now-gone -c
-       option.  Remove "+" command line syntax.
-
-       * main.c: (main) Only call handle_error() if the return value is
-       an error.
-       (execute_command) Use getl_set_prompt_style().  Drop support for
-       clearing dictionary between syntax files.
-       (handle_error) Handle CMD_CASCADING_FAILURE.  Don't call err_break().
-
-       * readln.c: Drop lots of #ifdefs.  Now that the Autoconf tests are
-       pickier, we can just use HAVE_READLINE.
-       (static var welcomed) Move into welcome().
-       (welcome) Make `welcomed' a local static var.  Check for and read
-       history file here.
-       (global var getl_mode) Removed.
-       (global var getl_interactive) Removed.
-       (global var getl_prompt) Removed.
-       (getl_read_line) removed.
-       (readln_read) New function.
-       (read_console) Removed.
-       
-
-Sat Feb 11 22:16:21 2006  Ben Pfaff  <blp@gnu.org>
-
-       Try to reduce some of the nastier dependencies on the error
-       module, and at the same time make PSPP nicer to deal with, by
-       getting rid of fatal errors.  All the existing calls to msg (FE,
-       ...) or err_cond_fail() or err_failure() have been replaced by
-       propagating an error upward to the command-dispatch layer.
-       Unfortunately this propagation took a fair bit of extra mechanism,
-       because now a lot of functions can fail that couldn't before.
-
-       New command return value CMD_CASCADING_FAILURE which indicates to
-       the command processor that syntax file processing should be
-       abandoned.  Many commands were modified to return
-       CMD_CASCADING_FAILURE.  When this modification was trivial it
-       isn't mentioned in detail below.
-
-       Transformation procedures (trns_proc_func) and free functions
-       (trns_free_func) now have a `bool' return type, which is normally
-       true, but false when an I/O or other serious error occurs.  All
-       transformation functions were modified to have this return type.
-       When this modification was trivial it isn't mentioned in detail
-       below.
-
-       * pspp-error.h: (FE) Removed this error class.
-
-       * error.c: (err_failure) Removed.
-       (err_cond_fail) Removed.
-       (err_break) Removed (it was unused).
-       (err_check_count) Don't cause a fatal error--instead, stop reading
-       the syntax file.
-       (err_vmsg) Don't have FE anymore, so no need to call terminate().
-
-       * any-reader.c: (any_reader_error) New function.
-
-       * any-writer.c: (any_writer_write) Propagate
-       scratch_writer_write_case()'s new return value.
-       (any_writer_error) New function.
-       (any_writer_close) Propagate underlying function's new return
-       value.
-
-       * casefile.c: Add an "error state" to a casefile.  A casefile that
-       encounters an I/O error enters the error state, and afterward
-       reading and writing cases fails.
-       (struct casefile) Add `ok' member.
-       (casefile_create) Set `ok' to true.
-       (casefile_destroy) Use io_error().
-       (casefile_error) New function.
-       (casefile_sleep) Now returns bool to indicate success.
-       (casefile_append) Ditto.
-       (casefile_append_xfer) Ditto.
-       (casefile_to_disk) Ditto.
-       (write_case_to_disk) Don't do anything in error state.
-       (flush_buffer) Don't do anything in error state.  Use io_error().
-       (reader_open_file) Ditto.
-       (fill_buffer) Ditto.
-       (casereader_read) Don't do anything in error state.  Handle
-       errors.
-       (casereader_read_xfer_assert) Removed, because now an I/O error
-       can occur even if the caller knows a case exists.
-       (io_error) New function.
-
-       * mkfile.c: (make_temp_file) Make failure non-fatal.
-       (make_unique_file_stream) Ditto.
-
-       * pfm-read.c: Add an error state.
-       (struct pfm_reader) Add `ok' member to indicate error state.
-       (error) Set `ok' to false.
-       (pfm_open_reader) Set `ok' to true.  Make failure non-fatal.
-       (pfm_read_case) Don't do anything in error state.
-       (pfm_read_error) New function.
-
-       * pfm-write.c: Postpone most error checking in favor of checking
-       ferror() afterward.
-       (pfm_open_writer) Make failure non-fatal.  Check for write error
-       after writing header.
-       (buf_write) Don't do anything if error has occurred.  Postpone
-       error checking.  Change return type to void.
-       (write_float) Postpone error checking.  Change return type to
-       void.
-       (write_int) Ditto.
-       (write_string) Ditto.
-       (write_header) Ditto.
-       (write_version_data) Ditto.
-       (write_format) Ditto.
-       (write_value) Ditto.
-       (write_variables) Ditto.
-       (write_value_labels) Ditto.
-       (pfm_write_case) Don't do anything if error has occurred.
-       (pfm_write_error) New function.
-       (pfm_close_writer) Change return type to bool.  Return false if an
-       I/O error occurred.
-
-       * scratch-reader.c: (scratch_reader_error) New function.
-
-       * scratch-writer.c: (scratch_writer_write_case) Change return type
-       to bool.  Propagate casefile error return.
-       (scratch_writer_error) New function.
-       (scratch_writer_close) Change return type to bool.  Propagate
-       casefile error return.
-
-       * sfm-read.c: Add an error state.
-       (struct sfm_reader) Add `ok' member.
-       (sfm_open_reader) Initialize `ok'.  Make errors non-fatal.
-       (buf_read) Set `ok' to false on error.
-       (buffer_input) Do nothing in error state.  Set `ok' to false on
-       error.
-       (read_compressed_data) Set `ok' false on error.
-       (sfm_read_case) Return false in error state.
-       (fread_ok) Set `ok' false on error.
-       (sfm_read_error) New function.
-
-       * sfm-write.c: Postpone most error checking in favor of checking
-       ferror() afterward.
-       (sfm_open_writer) Make failure non-fatal.  Check for write error
-       after writing header.
-       (write_header) Postpone error checking.  Change return type to
-       void.
-       (write_variable) Ditto.
-       (write_value_labels) Ditto.
-       (write_documents) Ditto.
-       (write_variable_display_parameters) Ditto.
-       (write_longvar_table) Ditto.
-       (write_rec_7_34) Ditto.
-       (buf_write) Ditto.
-       (ensure_buf_space) Ditto.
-       (sfm_write_case) Do nothing if write error has occurred.
-       (sfm_write_error) New function.
-       (pfm_close_writer) Change return type to bool.  Return false if an
-       I/O error occurred.
-
-       * var.h: Introduced a new return value for trns_proc_func that
-       means "a serious error has occurred, so abort the procedure
-       entirely".  Because the hard-coded values of -1, -2, etc. were
-       becoming even a worse idea now, also introduced some macros for
-       them: TRNS_CONTINUE, TRNS_DROP_CASE, TRNS_ERROR, TRNS_NEXT_CASE,
-       TRNS_END_FILE.  Also replaced all references to the hard-coded
-       values by uses of the macros.
-       
-       * command.h: New command return value CMD_CASCADING_FAILURE which
-       indicates to the command processor that syntax file processing
-       should be abandoned.
-
-       * dfm-read.c: (dfm_open_reader) Make failure non-fatal.
-       (dfm_reader_error) New function.
-       (read_inline_record) Make unexpected end of file nonfatal.
-       (read_file_record) Make read error nonfatal.
-       (dfm_eof) Make second unexpected end of file nonfatal.
-       (cmd_begin_data) Make errors nonfatal.  
-       
-       * dfm-write.c: (dfm_open_writer) Make failure non-fatal.
-       (dfm_write_error) New function.
-       (dfm_put_record) Do nothing in error state.  Now return error
-       state.
-       (dfm_close_reader) Now return `bool' indicating error state.
-
-       * file-type.c: (file_type_source_read) Now return `bool'
-       indicating error state.
-
-       * get.c: (case_reader_source_read) Now return `bool' indicating
-       write error.
-       (case_writer_destroy) Ditto.
-       (case_writer_write_case) Ditto.
-       (struct mtf_proc) New member `ok' indicating error state.
-       (cmd_match_files) Initialize and deal with `ok'.
-       (mtf_processing_finish) Now return `bool' indicating I/O error.
-       (mtf_free_file) Renamed mtf_close_file().  Now return `bool'
-       indicating I/O error.
-       (mtf_free) Now return `bool' indicating I/O error.
-       (mtf_delete_file_in_place) Ditto.
-       (mtf_read_nonactive_records) Ditto.
-       (mtf_processing) Ditto.
-
-       * inpt-pgm.c: (input_program_source_read) Now return `bool'
-       indicating I/O error.  Handle new TRNS_ERROR transformation return
-       value.
-
-       * matrix-data.c: Introduce error state.
-       (cmd_matrix_data) Check error return values.
-       (read_matrices_without_rowtype) Now return `bool' indicating I/O
-       error.
-       (matrix_data_read_without_rowtype) Ditto.
-       (dump_cell_content) Ditto.
-       (nr_output_data) Ditto.
-       (read_matrices_with_rowtype) Ditto.
-       (matrix_data_read_with_rowtype) Ditto.
-       (wr_output_data) Ditto.
-
-       * lexer.c: (lex_init) Make unexpected eof non-fatal.
-       (lex_get) Ditto.
-       (lex_look_ahead) Ditto.
-       (unexpected_eof) Removed.
-       (convert_numeric_string_to_char_string) Make unexpected eof
-       non-fatal.
-       (parse_string) Ditto.
-
-       * flip.c: Make I/O errors non-fatal.
-       (struct flip_pgm) Add `pool', `output_buf' members.
-       (cmd_flip) Create and use pool.  Propagate errors.
-       (destroy_flip_pgm) Rewrite, using pool.
-       (struct flip_sink_info) Removed.
-       (flip_sink_create) Use pool.  Make errors non-fatal.
-       (flip_sink_write) Make errors non-fatal.
-       (flip_file) Make errors non-fatal.  Make `bool' return type to
-       indicate failure.
-       (flip_sink_destroy) Remove.
-       (static var flip_sink_class) Use NULL as destroy func, not
-       flip_sink_destroy().
-
-       * sort.c: Make I/O errors non-fatal.  Propagate errors.
-       (sort_active_file_in_place) Propagate errors.
-       (sort_active_file_to_casefile) Ditto.
-       (do_internal_sort) Ditto.
-       (do_external_sort) Ditto.
-       (write_runs) Ditto.
-       (destroy_initial_run_state) Propagate errors via new `bool' return
-       type.
-       (merge) Propagate errors.
-       (merge_once) Ditto.
-
-       * output.c: [GLOBAL_DEBUGGING] Remove reentrancy detection,
-       because it used msg (FE, ...) and wasn't very useful.
-
-       * main.c: (handle_error) Handle CMD_CASCADING_FAILURE.
-
-       * vfm.c: (struct write_case_data) Change `proc_func' return type
-       to bool.
-       (procedure) Add `bool' return type to indicate I/O error.
-       Propagate errors.
-       (internal_procedure) Ditto.
-       (write_case) Ditto.
-       (execute_transformations) If a transformation returns TRNS_ERROR,
-       propagate the error.
-       (close_active_file) Add `bool' return type to indicate I/O error.
-       Propagate errors.
-       (cancel_transformations) Add `bool' return type to indicate I/O
-       error.  Propagate errors.
-       (struct split_aux_data) Change `proc_func' return type to bool.
-       (procedure_with_splits) Change `proc_func' return type to bool.
-       Add `bool' return type to indicate I/O error.
-       (multipass_procedure_with_splits) Change `split_func' return type
-       to bool.  Add `bool' return type to indicate I/O error.
-       (multipass_split_callback) Add `bool' return type to indicate I/O
-       error.  Propagate errors.
-
-       * vfm.h: (struct case_source_class) Change `read' return type from
-       void to bool to allow reporting I/O errors.  Updated all
-       implementations to do so.
-       (struct case_sink_class) Change `write' return type from void to
-       bool to allow reporting I/O errors.  Updated all implementations
-       to do so.
-
-Sun Feb 12 18:12:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       * pool.c: Useful new functions.
-       (pool_tmpfile) New function.
-       (pool_attach_file) New function.
-       (pool_detach_file) New function.
-       (pool_fopen) Reimplement in terms of pool_attach_file().
-       (pool_fclose) Reimplement in terms of pool_detach_file().  Fix
-       double-free.
-
-       * str.c: Useful new functions.
-       (ds_swap) New function.
-       (ds_rtrim_spaces) New function.
-       (ds_chomp) New function.
-       (ds_is_empty) New function.
-       (ds_first) New function.
-       (ds_last) New function.
-
-Sat Feb 11 21:51:21 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of finished, start_interactive globals.
-
-       * command.c: (cmd_exit) Instead of setting `finished', return
-       CMD_EOF.
-       (cmd_finish) Ditto.
-
-       * command.h: New enum CMD_EOF.
-
-       * main.c: (global var finished) Removed.
-       (global var start_interactive) Removed.
-       (main) Execute commands until CMD_EOF is the return value.
-       If parse_command_line() returns false, don't execute any commands
-       at all.
-
-       * cmdline.c: (parse_command_line) If the command line indicates we
-       shouldn't execute syntax files, return false instead of
-       terminating.
-       (usage) Don't terminate.
-
-Sat Feb 11 21:48:31 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of cur_proc global.  Replace by functions in err and tab
-       modules, which were the users.
-
-       * error.c: (static var command_name) New static var.
-       (err_vmsg) Use command_name.
-       (err_set_command_name) New function.
-
-       * tab.c: (static var command_name) New static var.
-       (tabi_title) Use command_name.
-       (tab_set_command_name) New function.
-
-       * command.c: (global var cur_proc) Removed.
-       (cmd_parse) Call err_set_command_name(), tab_set_command_name()
-       around executing command to set and clear command name.
-
-Sat Feb 11 21:44:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of glob.c, glob.h.
-
-       * Makefile.am: (pspp_SOURCES) Remove glob.c, glob.h.
-       
-       * dictionary.c: Move default_dict definition here.
-
-       * glob.c: Removed.
-       (global var FILTER_before_TEMPORARY) Variable removed.  All
-       references deleted.  The info in this var was redundant with
-       temp_dict, so they were changed to use temp_dict where needed.
-
-       * glob.h: Removed.
-
-       * start-date.c: New file. Moved get_start_date() here.
-
-       * start-date.h: New file.
-
-Fri Feb  3 20:34:52 2006  Ben Pfaff  <blp@gnu.org>
-       * font.h: (struct font_set) Removed, because unused.
-Sat Jan 28 17:45:36 2006  Ben Pfaff  <blp@gnu.org>
-
-       Cleaner (faster?) way to compact cases.
-
-       * dictionary.c: (dict_compact_case) Removed.
-       (dict_needs_compaction) New function.
-       (struct copy_map) New structure.
-       (struct dict_compactor) New structure.
-       (dict_make_compactor) New function.
-       (dict_compactor_compact) New function.
-       (dict_compactor_destroy) New function.
-       
-Sat Jan 28 17:24:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       Cleanups.
-
-       * data-list.c: Make data_list_source_class static.
-       (dump_fixed_table) Use fh_get_name() to describe source of data.
-       (dump_free_table) Ditto.
-       (cmd_repeating_data) Eliminate special cases for inline file.
-
-       * dictionary.c: (dict_contains_var) Change return value from int to
-       bool.
-       (dict_rename_vars) Ditto.
-       (dict_create_vector) Ditto.
-
-Sat Jan 28 17:20:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       Add scratch file handles.
-
-       Now a file handle can refer to a disk file, to an in-memory
-       structure, or to the "inline" file, instead of just to a disk
-       file.  The introduction of new categories means that special cases
-       for the inline file in a few places could be eliminated, but it
-       also means that code that assumed that a handle refers to a file
-       has to check for that.
-
-       Also, now file handles can be freed, so code now must be sure not
-       to access a handle after closing it (with fh_close()).
-
-       * Makefile.am: Add any-reader.c, any-reader.h, any-writer.c,
-       any-writer.h, scratch-handle.c, scratch-handle.h,
-       scratch-reader.c, scratch-reader.h, scratch-writer.c,
-       scratch-writer.h to pspp_SOURCES.
-
-       * any-reader.c: New file.
-       
-       * any-reader.h: New file.
-       
-       * any-writer.c: New file.
-       
-       * any-writer.h: New file.
-
-       * scratch-handle.c: New file.
-       
-       * scratch-handle.h: New file.
-
-       * scratch-reader.c: New file.
-       
-       * scratch-reader.h: New file.
-
-       * scratch-writer.c: New file.
-       
-       * scratch-writer.h: New file.
-
-       * aggregate.c: Use an any_writer instead of an sfm_writer, to add
-       flexibility.
-
-       * apply-dict.c: Use an any_reader instead of an sfm_reader, to add
-       flexibility.
-
-       * command.def: Add CLOSE FILE HANDLE command.
-
-       * dfm-reader.c: Now fewer special cases for inline file.
-       (static var inline_open_cnt) Removed.
-       (static var inline_file) Removed.
-       (dfm_close_reader) Eliminate a special case for inline file.
-       Reorganize to avoid access-after-free.
-       (dfm_open_reader) Eliminate a special case for inline file.
-       (read_inline_record) Use bool instead of int.  No need to
-       increment line number.
-       (read_file_record) Use bool instead of int.
-       (read_record) Check whether file handle is inline file, instead of
-       for null pointer.
-       (dfm_eof) Ditto.
-       (dfm_expand_tabs) Ditto.
-       (dfm_push) Ditto.
-       (dfm_pop) Ditto.
-       (cmd_begin_data) Fix inaccurate check for whether the inline file
-       is in use--now we can tell by checking whether the inline file's
-       open count is positive.
-       
-       * file-handle-def.c: (struct file_handle) Reorder members.  Add
-       `deleted' member.  Add `referent' member.  Add `sh' member.
-       (static var default_handle) New variable.
-       (static var inline_file) New variable.
-       (fh_init) Initialize inline file.
-       (free_handle) New function.
-       (fh_done) Rewrite.
-       (fh_from_name) Don't return deleted handles.
-       (fh_from_filename) Ditto.
-       (fh_create) Removed.
-       (create_handle) New function.
-       (fh_create_file) New function.
-       (fh_create_scratch) New function.
-       (fh_inline_file) New function.
-       (fh_free) Rewrite.
-       (fh_open) Now requires a referent type mask and verifies it.  All
-       references updated.
-       (fh_close) If open_cnt goes to 0 on a deleted handle, free it.
-       (fh_is_open) New function.
-       (fh_get_referent) New function.
-       (fh_get_filename) Limit to handles that refer to files.
-       (fh_get_mode) Ditto.
-       (fh_get_record_width) Limit to handles that refer to files or the
-       inline file.
-       (fh_get_tab_width) Ditto.
-       (fh_get_scratch_handle) New function.
-       (fh_set_scratch_handle) New function.
-       (fh_get_default_handle) New function.
-       (fh_set_default_handle) New function.
-
-       * file-handle.h: (enum fh_referent) New type.
-       (enum fh_mode) Rename MODE_TEXT to FH_MODE_TEXT, MODE_BINARY to
-       FH_MODE_BINARY, and update all usages.
-
-       * file-handle.q: Add "scratch" as a possible mode.
-       (cmd_file_handle) Mention CLOSE FILE HANDLE in error message.
-       Use lex_end_of_command(), lex_sbc_missing().  Support creating
-       scratch handles.
-       (cmd_close_file_handle) New function.
-       (referent_name) New function.
-       (fh_parse) Now takes a referent type mask to specify handles that
-       can be accepted.  Updated all references.
-       
-       * filename.c: (fn_extension) New function.
-
-       * get.c: Use any_reader and any_writer and thereby merge code that
-       has been duplicated for each kind of file.  Also, we had something
-       here called `any_writer' before, so its name had to be changed to
-       `case_writer'.
-       (enum operation) Removed, because unused.
-       (struct get_pgm) Removed.
-       (get_pgm_free) Removed.
-       (get_source_destroy) Removed.
-       (get_source_read) Removed.
-       (global var get_source_class) Removed.
-       (static var case_reader_source_class) Removed.
-       (enum reader_command) New enum.
-       (struct case_reader_pgm) New struct.
-       (parse_read_command) New function.
-       (case_reader_pgm_free) New function.
-       (case_reader_source_destroy) New function.
-       (case_Reader_source_Read) New function.
-       (cmd_get) Rewrote as a call to parse_read_command().
-       (cmd_import) Ditto.
-       (struct any_writer) Rename to case_writer.  Drop `writer_type',
-       `writer' members in favor of an `any_writer' member named
-       `writer'.
-       (any_writer_destroy) Rename case_writer_destroy.  Use
-       any_writer_close().
-       (parse_write_command) Allow scratch files.  Use any_writer.
-       (any_writer_write_case) Rename case_writer_write_case().  Use
-       any_writer_write().
-`      (struct mtf_file) Use any_reader.
-       (cmd_match_files) Allow scratch files.  Use any_reader.
-       (mtf_free_file) Use any_reader_close().
-       (mtf_read_nonactive_records) Use any_reader_read().
-       (mtf_processing) Use any_reader_read().
-       (struct import_pgm) Removed.
-       (import_pgm_free) Removed.
-       (import_source_destroy) Removed.
-       (import_source_read) Removed.
-       (global var import_source_class) Removed.
-
-       * glob.c: (global var default_handle) Removed.  Replaced all
-       references by fh_get_default_handle() or fh_set_default_handle().
-
-       * pfm-read.c: (static var portable_to_local) Moved from inside
-       read_header() to top level.
-       (pfm_detect) New function.
-
-       * pfm-write.c: (pfm_write_case) Make case argument const.
-       Reorganize to avoid access-after-free.
-
-       * print.c: (dump_table) Use fh_get_name() to describe source of
-       data.
-
-       * sfm-read.c: (sfm_close_reader) Reorganize to avoid
-       access-after-free.
-       (sfm_detect) New function.
-
-       * str.c: (str_lowercase) New function.
-
-       * vfm.c: Use new compaction interface.
-       (static var compaction_necessary) Removed.
-       (static var compactor) New variable.
-       (open_active_file) Initialize compactor.
-       (write_case) Use compactor.
-       (close_active_file) Free compactor.
-       
-Wed Jan 11 19:28:39 2006  Ben Pfaff  <blp@gnu.org>
-
-       Clean up file handle code in preparation to add scratch file
-       handles.
-       
-       * file-handle-def.c: Lots of formatting cleanup.  Added function
-       comments.
-       (struct file_handle) Renamed `length' member
-       to `record_width'.  All references updated.
-       (fh_init) New function.  Moved here from file-handle.q.
-       (fh_done) New function.  Moved here from file-handle.q and
-       rewrote.
-       (get_handle_with_name) Renamed fh_from_name().
-       (get_handle_for_filename) Renamed fh_from_filename().
-       (create_file_handle) Renamed fh_create().  Changed to take a
-       `struct fh_properties' instead of discrete values.  Updated all
-       references.
-       (create_file_handle_with_defaults) Removed.  Updated all
-       references to use fh_create() with fh_default_properties().
-       (fh_default_properties) New function.
-       (destroy_file_handle) Removed.  The code is now in fh_done().
-       (handle_get_name) Renamed fh_get_name().
-       (handle_get_filename) Renamed fh_get_filename().
-       (handle_get_record_width) Renamed fh_get_record_width().
-       (handle_get_tab_width) Renamed fh_get_tab_width().
-
-       * file-handle-def.h: Formatting, comment fixes.
-       (enum file_handle_mode) Renamed struct fh_mode.
-       (struct fh_properties) New structure.
-       (fh_init) Move prototype here from file-handle.h.
-       (fh_done) Ditto.
-       (fh_close) Ditto.
-
-       * file-handle.q: (static var handle_list) Removed.
-       (fh_parse) Don't add handle to handle_list, because
-       file-handle-def.c has its own list.
-       (fh_init) Moved to file-handle-def.c.
-       (fh_done) Ditto.
-
-Sun Jan 9 01:09  Jason Stover  <jason@sakla.net>
-
-       * regression.q: (run_regression) Moved coefficient initialization
-       to the linreg library. Altered other functions accordingly.
-
-Sat Jan  7 13:30:54 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-        * command.c data-in.c main.c: Fixed bug which crept in when 
-          separating getl from readline.
-
-        * vars-atr.c value-labels.h: Fixed constness of  val_labs_count.
-
-Fri Dec 23 20:59:01 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * getl.c error.c: Separated file_loc functionality from error.c
-
-Mon Dec 19 14:01:56 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * format.c: Additional error checking.
-       * getl.[ch]: Separated into getl.c and readln.c
-       * settings.[ch]: Made CC_CNT public
-
-Fri Dec 16 09:11:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q: Fixed buglet when cleaning up at end of procedure.
-
-Tue Dec 13 22:34:42 2005  Ben Pfaff  <blp@gnu.org>
-
-       Move global initialization and cleanup code into main.c.
-       Remove vestigial log infrastructure.
-       Minor related cleanups.
-       
-       * command.c: (shell) When execl() fails, use _exit(), not
-       err_hcf().
-
-       * error.c: (err_hcf) Move into main.c, rename terminate().  All
-       callers updated.
-       (err_done) New function with just the error.c-specific code for
-       err_hcf().  Called by terminate().
-
-       * glob.c: Removed all Borland C, DJGPP cruft.
-       (init_glob) Merged into main().
-       (done_glob) Merged into terminate().
-       (get_date) Removed.
-       (get_start_date) New function.  All users of curdate updated to call
-       this function instead.
-
-       * lexer.c: (lex_init) Moved initialization of tokstr here, from
-       init_glob().
-       (lex_done) Moved destruction of tokstr here, from done_glob().
-
-       * main.c: (global var pgmname) Removed.  Changed all references to
-       program_name, which is defined by gnulib.
-       (global var curdate) Removed.
-       (main) Moved init_glob() code here.  Merged parse_script() in
-       here.
-       (parse_script) Removed.
-       (terminate) Moved err_hcf() here from error.c and renamed
-       terminate().  Merged done_glob() code in here.  Call err_done().
-       All callers updated.
-       (i18n_init) New function.
-       (fpu_init) New function.
-
-       * output.c: (outp_init) Make void.
-       (init_default_drivers) New function.
-       (outp_read_devices) If no drivers are initialized successfully,
-       call init_default_drivers() to initialize a default driver.
-       (outp_done) Make void.
-       (static var prog) Make const.
-       (parse_options) Make parameter const.
-       (colon_tokenize) Make return value const.
-       (configure_driver) Change prototype to take a broken-down driver
-       configuration instead of a line of text.
-       (configure_driver_line) New function that does what
-       configure_driver() did before.
-
-       * q2c.c: (global var pgmname) Rename program_name.
-
-       * settings.c: (settings_init) Renamed from init_settings().
-       (settings_done) Renamed from done_settings().
-
-       * vfm.c: (global var last_vfm_invocation) Make static.
-       (vfm_last_invocation) New function.  All references to
-       last_vfm_invocation update to call this.
-       (procedure) Call update_last_vfm_invocation().
-       (internal_procedure) Ditto.
-       (update_last_vfm_invocation) New function.
-       
-Sat Dec 10 23:30:19 2005  Ben Pfaff  <blp@gnu.org>
-
-       Separate random numbers from other settings because of GSL
-       dependency.
-
-       * Makefile.am: Add random.c, random.h to sources.
-
-       * glob.c: (init_glob) Call random_init().
-       (done_glob) Call random_done().
-
-       * settings.c: (static var rng) Move to random.c.
-       (done_settings) Move freeing of RNG to random_done().
-       (get_rng) Move to random.c
-       (set_rng) Ditto.
-
-       * random.c: New file.
-
-       * random.h: New file.
-
-Sat Dec 10 18:13:36 2005  Ben Pfaff  <blp@gnu.org>
-
-       Separate settings and the SET command, for modularity.
-       
-       * Makefile.am: Add settings.c to sources.
-
-       * glob.c: (global variable test_mode) Removed.
-
-       * set.q: Remove all the set_* variables.  Remove a lot of obsolete
-       SPSS/PC+ settings.  Remove the aux_*() routines.  Moved the
-       get_*() functions into settings.c.  Rewrite the settings code and
-       functions to call the new set_*() functions.  Rewrite custom
-       currency parsing.  Write new by-hand cmd_show().
-
-       * esttings.c: New file.  Moved the get_*() functions here from
-       set.q.  Created new set_*() functions to correspond with them.
-       Regularized the names and types of some functions and updated
-       their callers.  Added static, file-scope variables to support the
-       settings.
-
-       * q2c.c: Remove "aux" support, which was only needed by set.q.
-       
-Sun Nov 27 06:43:46 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * data-out.c format.h: Added return value to data_out function.
-
-       * value-labels.c: Fixed bug in val_labs_remove.
-
-Sat Nov  5 18:37:26 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Remove devind.c, devind.h from list of source
-       files.
-
-       * devind.c: Removed.
-
-       * devind.h: Removed.
-
-       * list.q: Removed "support" for devind.
-
-       * output.c: Don't add devind class.
-
-Sat Nov  5 18:21:00 2005  Ben Pfaff  <blp@gnu.org>
-
-       * var.h: (struct variable) Make `init', `reinit' bool values.
-       Rearrange fields.
-
-Fri Nov  4 19:43:01 2005  Ben Pfaff  <blp@gnu.org>
-
-       * recode.c: Rewrote whole file, as clean-up.
-
-Fri Nov  4 19:37:50 2005  Ben Pfaff  <blp@gnu.org>
-
-       * pool.c: Don't make alignment exception for x86.
-       (pool_alloc) Return null for 0-size blocks.
-       (pool_alloc_unaligned) New function.
-       (pool_strndup) Removed.  Changed callers to use pool_clone_unaligned().
-       (pool_clone_unaligned) New function.
-       (pool_strdup) Use pool_clone_unaligned().
-
-       * var.h: (enum var_type) Give the NUMERIC, ALPHA enum this name.
-       (struct variable) Use `enum var_type' for `type'.
-
-       * vars-atr.c: (var_type_adj) New function.
-       (var_type_noun) New function.
-
-       * vars-prs: (parse_mixed_vars) Fix freeing code.
-       (parse_mixed_vars_pool) New function.
-
-Wed Nov  2 21:24:48 2005  Ben Pfaff  <blp@gnu.org>
-
-       * file-handle-def.c: Needed another #include, to avoid missing
-       prototype warning.
-
-       * file-handle.q: (cmd_file_handle) Declarations must precede
-       statements.  Free parse data on success as well as on failure, to
-       avoid memory leak.
-
-       * get.c: (parse_write_command) Destroy dict on success, to avoid
-       memory leak.
-       
-       * data-list.c: (cmd_repeating_data) Fix usage of saw_occurs,
-       saw_length, saw_continued, saw_id, which were boolean but
-       incorrectly treated as bitmaps as result of a previous
-       half-finished cleanup.
-
-       * weight.c: (struct weight_trns) Unused, so removed.
-
-       * Makefile.am: Add range-prs.h to sources.
-
-Wed Nov  2 21:24:15 2005  Ben Pfaff  <blp@gnu.org>
-
-       DO IF, LOOP cleanup.
-
-       * Makefile.am: Add ctl-stack.c, ctl-stack.h to source files.
-       Reformat source file list to list one file per file, so that
-       patches for future changes will be easier to read.
-
-       * ctl-stack.c, ctl-stack.h: New files.
-
-       * do-if.c: Rewrote whole file.
-
-       * do-ifP.h: Removed.
-
-       * loop.c: Rewrote whole file.
-
-       * glob.c: (global var ctl_stack) Move into ctl-stack.c.
-
-       * temporary.c: (cmd_temporary) Use ctl_stack_is_empty().
-
-       * vfm.c: (open_active_file) Use ctl_stack_clear().
-
-Wed Nov  2 21:18:13 2005  Ben Pfaff  <blp@gnu.org>
-
-       New pool functions.
-       
-       * pool.c: (pool_create_at_offset) New function.
-       (pool_add_subpool) New function.
-
-       * pool.h: (pool_create_container) New macro.
-       
-       * expressions/parse.c: (expr_parse_pool) New function.
-       
-       * autorecode.c: (recode) Use pool_create_container().
-
-       * count.c: (cmd_count) Ditto.
-
-Wed Nov  2 19:59:32 2005  Ben Pfaff  <blp@gnu.org>
-
-       Clean up transformations, by getting rid of `struct trns_header',
-       replacing it by `struct transformation' that has a void *
-       `private' member.  Updated all uses of transformations to match,
-       which was a lot of code.  Only major related changes listed below.
-
-       * compute.c: (cmd_if) Use get_proc_func().
-       (cmd_compute) Use get_proc_func().
-       (get_proc_func) New function.
-
-       * glob.c: (global var m_trns) Change type to size_t.
-       (global var n_trns) Ditto.
-       (global var f_trns) Ditto.
-       (global var t_trns) Change type to struct transformation *.
-
-       * var.h: (struct trns_header) Removed.
-       (struct transformation) New.
-       (typedef trns_proc_func) Takes a void * instead of a struct
-       trns_header *.
-       (typedef trns_free_func) Ditto.
-
-       * vfm.c: (execute_transformations) Takes an array of
-       transformations instead of trns_headers.
-       (add_transformation) Change prototype from (trns_header *) to
-       (trns_proc_func *, trns_free_func *, void *).
-       (next_transformation) New function.
-
-Sat Oct 29 16:25:36 2005  Ben Pfaff  <blp@gnu.org>
-
-       * count.c: Major cleanups.  Rename practically everything.
-       Rewrite much of the code.  Use pools for memory management.  Use
-       the new parse_num_range().
-
-       * mis-val.c: (cmd_missing_values) Use the new parse_num_range().
-       (parse_number) Removed.
-
-       * missing-values.c: (mv_add_num_range) Don't add out-of-order
-       ranges, e.g. where low > high.
-
-       * pool.c: (pool_2nrealloc) New function.
-
-       * range-prs.c: New file.
-       (parse_num_range) New function.
-       (parse_number) New function.
-       
-Fri Oct 28 22:47:48 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix up potential overflows in size calculations by replacing
-       instances of pool_alloc(p, x * sizeof *y) by pool_malloc(p, x,
-       sizeof *y) everywhere I could find them.  Similarly by
-       pool_malloc(), pool_realloc().
-       (Order is important: pool_alloc(p, sizeof *y, x) will divide by 0
-       if x is 0.)
-
-       * pool.c: (pool_nalloc) New function.
-       (pool_nmalloc) New function.
-       (pool_nrealloc) New function.
-
-Thu Oct 27 11:16:53 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       Separated the definition of a file handle object from the stuff 
-       pertaining to the FILE HANDLE command.
-
-       * file-handle-def.[ch]: New files.
-
-       * dfm-read.c file-handle.h file-handle.q
-       
-Tue Oct 25 21:56:23 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix up potential overflows in size calculations by replacing
-       instances of xmalloc(x * sizeof *y) by xnmalloc(x, sizeof *y)
-       everywhere I could find them.  Similarly by xrealloc(), malloc().
-       (Order is important: xnmalloc(sizeof *y, x) will divide by 0 if x
-       is 0.)
-
-       * alloc.c: (nmalloc) New function.
-       (out_of_memory) Removed.  Replaced references by xalloc_die().
-
-       * sort.c: (allocate_cases) Fix segfault if memory allocation
-       fails.
-
-       * subclist.c: (subc_list_double_create) Use xnmalloc() instead of
-       malloc().
-       (subc_list_double_push) Use xnrealloc() instead of realloc().
-
-Wed Oct 26 08:43:51 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       Dictionary abstraction part #2
-
-       * algorithm.c format.c str.c sysfile-info.c val.h var.h vars-atr.c:
-         Removed unnecessary #include directives
-
-Mon Oct 24 21:35:08 2005  Ben Pfaff  <blp@gnu.org>
-
-       * groff-font.c (font_msg): Use err_vmsg() instead of incorrectly
-       trying to pass a va_list to tmsg().  Thanks to Jason Stover for
-       reporting this bug.
-
-Mon Oct 24 21:24:15 2005  Ben Pfaff  <blp@gnu.org>
-
-       Work to get rid of GCC 4.0 warnings, part 2.
-
-       In many files, change `unsigned char' to `char'.  This often
-       requires adding casts to <ctype.h> functions.
-
-       * data-in.c: (parse_A) Use buf_copy_rpad().
-
-       * str.c: (str_copy_buf_trunc) New function.
-
-       * value-labels.c: (value_to_string) Fix mistaken use of strncpy(),
-       by rewriting.
-
-Mon Oct 24 13:42:32 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       Moved some definitions to make it easier to abstract a dictionary 
-       from the rest of PSPP.
-
-       * format-prs.c lex-def.[ch]:  New files.
-
-       * Makefile.am lexer.[ch] dictionary.c vars-atr.c vfm.c algorithm.c 
-         format.c:  Moved some functions between modules.
-       
-Sun Oct 23 19:28:08 2005  Ben Pfaff  <blp@gnu.org>
-
-       Work to get rid of GCC 4.0 warnings, part 1.
-       
-       In many files, change count parameters to parse_variables(),
-       etc. from `int' to `size_t'.  Also change related variables and
-       struct members.  Also change messages as needed (e.g. %d to %u
-       with cast to unsigned).  Also change arithmetic as necessary
-       (e.g. n >= m - 1 to n + 1 >= m). 
-
-       * crosstabs.q: (crs_custom_tables) Check for size_t overflow in
-       multiplication.
-
-       * q2c.c: (dump_declarations) Generate code for size_t instead of
-       int.
-       
-Thu Oct 20 18:18:40 2005  Ben Pfaff  <blp@gnu.org>
-
-       * output.c: (outp_read_devices) Fix message.
-
-Sat Sep 17 11:13:13 2005  Ben Pfaff  <blp@gnu.org>
-
-       * matrix-data.c: (cmd_matrix_data) Change type of variable whose
-       address is passed to dict_get_vars() from size_t to int to match
-       John's change below.
-
-       * modify-vars.c: (validate_var_modification) Ditto.
-
-Mon Sep 12 19:26:06 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.[ch]  Changed cnt from size_t* to int* since that's
-       what it's called as, and on  x86_64 machines they're different sizes.
-       
-       * str.c: (ds_vprintf) Copied va_list args so they can be re-used
-       
-Sun Aug 21 00:12:24 2005  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c: (lex_sbc_only_once) New function.
-       (lex_sbc_missing) New function.
-
-Sun Aug 21 00:00:47 2005  Ben Pfaff  <blp@gnu.org>
-
-       * case.h: (case_str) Make it return `unsigned char'.
-
-Sat Aug 20 23:56:14 2005  Ben Pfaff  <blp@gnu.org>
-
-       Revamp SAVE, XSAVE, EXPORT.  Add (or at least parse) all the
-       subcommands that we didn't support.  Fix bug 13911.  Fix bug
-       reported by Adam Pierson (COMPRESSED and other subcommands didn't
-       work on SAVE).  Refactor all related code.
-       
-       * command.def: Add XEXPORT command.
-
-       * dictionary.c: (dict_delete_scratch_vars) New function.
-
-       * get.c: (cmd_get) Fix parsing.
-       (struct save_trns) Removed.
-       (cmd_save_internal) Removed.
-       (cmd_save) Removed.
-       (do_write_case) Removed.
-       (save_write_case_func) Removed.
-       (save_trns_proc) Removed.
-       (save_trns_free) Removed.
-       (trim_dictionary) Removed.
-       (struct export_proc) Removed.
-       (cmd_export) Rewrote.
-       (export_write_case_func) Removed.
-       (export_proc_free) Removed.
-       (enum writer_type) New enum.
-       (enum command_type) New enum.
-       (struct any_writer) New struct.
-       (any_writer_destroy) New function.
-       (parse_write_command) New function.
-       (any_writer_write_case) New function.
-       (parse_output_proc) New function.
-       (output_proc) New function.
-       (cmd_save) Rewrote.
-       (cmd_xsave) Rewrote.
-       (struct output_trns) New struct.
-       (parse_output_trns) New function.
-       (output_trns_proc) New function.
-       (output_trns_free) New function.
-       (cmd_xsave) Rewrote.
-       (cmd_xexport) New function.
-       (parse_dict_trim) New function.
-       (struct mtf_proc) Change `by_cnt' member type to `int'.
-       (cmd_import) Rewrote.
-
-       * pfm-write.c: (struct pfm_writer) Add `digits' member.
-       (pfm_writer_default_options) New function.
-       (pfm_open_writer) Add `opts' argument and handle options.
-       (write_float) Write only as many digits as `digits' member says.
-       (format_trig_double) Limit base-10 precision to LDBL_DIG.
-
-       * pfm-write.h: (enum pfm_type) Moved here from pfm-read.h.
-       (struct pfm_write_options) New struct.
-
-       * sfm-write.c: (sfm_writer_default_options) New function.
-       (sfm_open_writer) Remove `compress', `omit_long_names' args.  Add
-       `opts' argument.  Implement options.
-
-       * sfm-write.h: (struct sfm_write_options) New struct.
-
-       * expressions/helpers.c: (copy_string) Make `old' arg `unsigned
-       char *' instead of `char *'.
-       
-Sat Aug  6 21:29:15 2005  Ben Pfaff  <blp@gnu.org>
-
-       * factor_stats.c: Needed <config.h> included earlier.
-
-       * percentiles.c: Needed to include <config.h>.
-
-       * val.h: Don't include "config.h".
-
-Sat Aug  6 21:26:27 2005  Ben Pfaff  <blp@gnu.org>
-
-       Clean up treatment of missing values by moving all the code into
-       one place.  All references to the missing value function were
-       updated, but only major changes are detailed below.
-
-       * Makefile.am: Add missing-values.c, missing-values.h to sources.
-
-       * apply-dict.c: (cmd_apply_dictionary) Use mv_resize().
-
-       * dictionary.c: (dict_create_var) Initialize `miss' member with
-       mv_init().
-       (dict_clone_var) Copy `miss' member with mv_copy().
-       
-       * get.c: (mtf_merge_dictionary) Use mv_copy().
-
-       * missing-values.c: New file.
-       
-       * missing-values.h: New file.
-
-       * mis-val.c: Rewrite.  New version implements updated semantics.
-
-       * pfm-read.c: (read_variables) Rewrite missing value handling.
-
-       * pfm-write.c: (write_variables) Rewrite missing value handling.
-
-       * sfm-read.c: (read_variables) Rewrite missing value handling.
-
-       * sfm-write.c: (write_variable) Rewrite missing value handling.
-
-       * sfmP.h: Include "magic.h" to get definition of
-       second_lowest_value.
-
-       * sysfile-info.c: (describe_variable) Rewrite missing value
-       handling.
-
-       * val.h: Include "magic.h" to get definition of
-       second_lowest_value.
-
-       * var.h: Include "missing-values.h".  Drop MISSING_* enums.
-       (struct variable) Remove `miss_type', `missing'.  Add `miss'.
-
-       * vars-atr.c: (is_num_user_missing) Removed--use
-       mv_is_num_user_missing().
-       (is_str_user_missing) Removed--use mv_is_str_user_missing().
-       (is_system_missing) Removed--use mv_is_value_system_missing().
-       (is_missing) Removed--use mv_is_value_missing().
-       (is_user_missing) Removed--use mv_is_value_user_missing().
-       
-Sun Jul 31 14:09:57 2005  Ben Pfaff  <blp@gnu.org>
-
-       Adopt use of gnulib for portability.
-
-       * Make.build: Add $(top_srcdir)/gl and $(top_builddir)/gl to
-       include path.
-
-       * Makefile.am: Remove bool.h, stat.h and change getline.[ch] to
-       getl.[ch] in pspp_SOURCES.  Remove libmisc, add libgl in
-       pspp_LDADD.
-
-       * In many source files, added an explicit inclusion of gettext.h
-       and definition of _ macro.  These are no longer in pref.h because
-       it interfered with definitions in a few gnulib source files.
-
-       * In many source files, changed #include "bool.h" to #include
-       <stdbool.h>, which is provided by gnulib.
-
-       * alloc.c: Removed functions defined in gnulib:
-       (xmalloc) Removed.
-       (xcalloc) Removed.
-       (xrealloc) Removed.
-       (xstrdup) Removed.
-       (out_of_memory) Redefined as wrapper for xalloc_die().
-
-       * alloc.h: Replace prototypes by #include "xalloc.h".
-
-       * casefile.c: Use full_read() and full_write() from gnulib instead
-       of our home-grown versions.
-       (full_read) Removed.
-       (full_write) Removed.
-
-       * getline.c: Renamed getl.c.
-
-       * getline.h: Renamed getl.h, updated all references.
-
-       * filename.c: (fn_readlink) Change to wrapper around xreadlink()
-       from gnulib.
-
-       * glob.c: Just #include <time.h> instead of the crazy rigmarole
-       here before.
-       (init_glob) Call set_program_name() to initial gnulib progname
-       module.
-
-       * html.c: (postopen) Use getlogin_r(), gethostname() from gnulib.
-
-       * permissions.c: Use "stat-macros.h" from gnulib.
-
-       * postscript.c: Just #include <time.h> instead of the crazy
-       rigmarole here before.
-
-       * q2c.c: (main) Make generated code #include "gettext.h".
-
-       * str.h: Get rid of most explicit declarations of standard
-       functions, in favor of including gnulib header files.
-
-       * expressions/evaluate.c: Ditto.
-
-       * expressions/operations.h.pl: Make generated code #include
-       <stdbool.h>, not "bool.h".
-
-Sat Jul 30 23:13:17 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/parse.c: (validate_function_args) Fix two msg() bugs
-       found by -Wformat.
-
-Sat Jul 30 23:10:01 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/evaluate.c: (expr_debug_print_postfix) Don't pass
-       null pointer to printf for %.*s.
-
-Sat Jul 30 23:05:33 2005  Ben Pfaff  <blp@gnu.org>
-
-       * vars-atr.c: (var_is_valid_name) Fix three msg() bugs found by
-       -Wformat.
-
-Sat Jul 30 22:58:33 2005  Ben Pfaff  <blp@gnu.org>
-
-       * rank.q: (parse_rank_function) Fix msg() bug found by -Wformat.
-
-Sat Jul 30 22:56:12 2005  Ben Pfaff  <blp@gnu.org>
-
-       * postscript.c: (postopen) Cast `char' to `unsigned char' before
-       passing to isspace().
-
-Sat Jul 30 22:52:09 2005  Ben Pfaff  <blp@gnu.org>
-
-       * pfm-read.c: (read_variables) Fix msg() bug found by -Wformat.
-
-Sat Jul 30 22:50:57 2005  Ben Pfaff  <blp@gnu.org>
-
-       * histogram.c: Include <config.h>.
-
-Sat Jul 30 22:48:50 2005  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (cmd_match_files) Fix msg() bug found by -Wformat.
-
-Sat Jul 30 22:46:10 2005  Ben Pfaff  <blp@gnu.org>
-
-       * format.c: (check_common_specifier) Fix msg() bug found by
-       -Wformat.
-       (check_output_specifier) Ditto.
-
-Sat Jul 30 22:43:57 2005  Ben Pfaff  <blp@gnu.org>
-
-       * file-handle.q: (cmd_file_handle) Fix msg() bug found by
-       -Wformat.
-
-Sat Jul 30 22:41:44 2005  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: (parse_Z) [WORDS_BIGENDIAN] Don't declare buf[], to
-       avoid "unused variable" warning.
-
-Sat Jul 30 22:38:46 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (find_word) Cast `char' to `unsigned char' before
-       passing to isspace().
-
-Sat Jul 30 22:36:29 2005  Ben Pfaff  <blp@gnu.org>
-
-       * case.c: (case_compare) Implement as delegating to
-       case_compare_2dict().
-
-Sat Jul 30 22:34:18 2005  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c: Inclusion of <alloca.h> is unneeded.
-
-Sat Jul 30 22:01:32 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Make.build: Don't append -ansi to AM_CFLAGS for GCC.  Using
-       -ansi changes the behavior of header files significantly.  It
-       causes __STRICT_ANSI__ to be defined, and some headers interpret
-       that as cause to e.g. not use `long long' or __attribute__.  The
-       former example is bad when off_t is supposed to be `long long',
-       and the latter prevents -Wformat from working.
-
-Sun Jul 24 20:26:59 2005  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of dependency on libgmp by writing our own routine for
-       floating-point base conversion.
-
-       * pfm-write.c: (write_float) Rewrote.
-       (write_int) Rewrote.
-       (pow30_nonnegative) New function.
-       (pow30) New function.
-       (trig_to_char) New function.
-       (format_trig_digits) New function.
-       (recurse_format_trig_int) New function.
-       (format_trig_int) New function.
-       (should_round_up) New function.
-       (try_round_up) New function.
-       (format_trig_double) New function.
-
-Sun Jul 24 18:49:20 2005  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: (parse_numeric) Allow "1+23" even for F format, for
-       compatibility.
-
-Sun Jul 24 18:47:37 2005  Ben Pfaff  <blp@gnu.org>
-
-       * pfm-read.c: (read_version_data) Read and ignore author field.
-
-Wed Jul  6 20:44:27 2005  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (mtf_processing) Don't assume that
-       mtf_compare_BY_values() always returns -1, 0, or 1.  Actually, it
-       returns a negative, zero, or positive result.  Fixes MATCH FILES
-       bug on Mac OS X reported by "Marshall DeBerry" <mdb@radix.net>.
-
-Mon Jul  4 18:01:15 2005  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c: [HAVE_SYS_TYPES_H] Really include <sys/types.h>.  The
-       preprocessor test for sys/types.h was accidentally inverted.  This
-       was bug 12789.
-
-Sun Jul  3 22:47:39 2005  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (cmd_match_files) Fix memory leak on `by' and on
-       `vfm_source'.
-
-       * getline.c: [HAVE_LIBREADLINE] (read_console) Fix memory leak on
-       `line'.
-
-       * vfm.c: (close_active_file) Remove unnecessary test.
-
-Sun Jul  3 21:45:32 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix NDEBUG compile errors.
-
-       * hash.h: Needed explicit #include <assert.h>.
-
-       * linked-list.c: (ll_next) First arg is UNUSED when NDEBUG is
-       defined.
-
-Sun Jun 12 23:44:38 2005  Ben Pfaff  <blp@gnu.org>
-
-       Implement embedding for PostScript driver.  Fixes bug 12970.
-
-       * ascii.c: Fix compiler warnings.
-
-       * html.c: Ditto.
-
-       * chart.h: Add `file' member.
-
-       * output.h: (struct outp_class) initialise_chart, finalise_chart
-       should take outp_driver *, not outp_class *.  Update all
-       references.
-
-       * plot-chart.c: (chart_create) Fix segfault when there are no
-       output drivers at all.
-       (chart_submit) Call d->class->finalise_chart.
-
-       * postscript.c: (ps_open_page) Set cp_y to 0.
-       (ps_submit) New function.
-       (ps_chart_initialise) Implement.
-       (ps_chart_finalise) Implement.
-       (static var postscript_class) Add ps_submit.
-       (static var epsf_class) Add ps_submit.
-       
-
-Sun Jun 12 14:54:40 2005  Ben Pfaff  <blp@gnu.org>
-
-       Did some more work on bug 12859 and then realized that a *good*
-       solution would require some fundamental restructuring.  For now,
-       I'm marking REPEATING DATA unimplemented, and then we can revisit
-       it post-0.4.0.
-       
-       * command.def: Make REPEATING DATA unimplemented.
-
-       * data-list.c: (cmd_repeating_data) Assume inline file is 80
-       characters wide.
-       (realize_value) Revert previous changes; no longer needed.
-       Updated all callers.
-
-       * error.c: (err_hcf) Set nfile_loc, mfile_loc to 0 after freeing
-       file_loc, to avoid bad references later.
-
-       * str.c: Fix typo.
-
-Tue Jun  7 00:14:09 2005  Ben Pfaff  <blp@gnu.org>
-
-       Make some code tolerant of reentry.  Should not be needed if other
-       code is correct but it is good to be generally tolerant.
-       
-       * error.c: (err_hcf) Set file_loc to null after free().
-
-       * output.c: (outp_done) Similar changes.
-
-       * str.c: (ds_destroy) Ditto.
-       
-Tue Jun  7 00:10:20 2005  Ben Pfaff  <blp@gnu.org>
-
-       Continue work on bug 12859, plus some code cleanup.
-       
-       * data-list.c: (cmd_repeating_data) Replace `seen' bitmap by
-       boolean variables.  Don't try to compute starts_end, cont_end for
-       inline file.  Calculate length only after parsing variable
-       specifications.  Add proper transformation to list.
-       (realize_value) If the rpd_num_or_var has no value, return new
-       DEFAULT_MEMBER argument (for use with inline file).
-       (repeating_data_trns_proc) Pass default values.
-
-       * dfm-read.c: (dfm_close_reader) Only skip data if *not* still
-       open, and only if we actually started reading data.
-
-Sun Jun  5 18:39:36 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug 11894.
-       
-       * output.c: (outp_read_devices) Fix message.
-
-Fri May 27 12:34:43 WST 2005 John Darrington <john@darrington.wattle.id.au>
-       
-       * sort-prs.[ch] (newfiles), aggregate.c, sort.[ch]: Separated the guts 
-       of the sort algorithm from the parser for the SORT command.
-       
-       * rank.q: Added the parser for the RANK command.
-       
-Thu May 26 12:29:21 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug 13192.
-
-       * sort.c: (sort_parse_criteria) Only set *saw_direction if
-       saw_direction is non-null.  Thanks to John Darrington for
-       reporting this bug.
-
-Tue May 24 21:52:55 2005  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (mtf_processing) Handle case of a lookup table as the
-       active file.  Thanks to John Darrington for reporting this bug.
-
-Wed May 25 10:27:02 WST 2005 John Darrington <john@darrington.wattle.id.au>
-       
-       * alloc.c alloc.h: (xcalloc) changed signature to imitate the
-       POSIX  calloc function.
-       
-       * crosstabs.q get.c vars-prs.c: Updated calls to xcalloc to
-       reflect new signature.
-
-       * sfm-read.c: Now much more robust in the face of badly formed
-       system files.
-
-Mon May 23 11:57:31 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       *sfm-read.c: Fixed some bugs regarding long string continuation
-       records, which the previous fix uncovered.
-
-Sat May 21 12:48:34 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * sfm-read.c, sfmP.h:  Allow reading of system files when the 
-       case_size value in the header is -1.  Also changed some Errors to 
-       Warnings when reading system files.
-
-Tue May 17 21:00:57 2005  Ben Pfaff  <blp@gnu.org>
-
-       * data-list.c: (data_list_trns_free) Don't free the argument
-       because cancel_transformations() will do that itself.
-       (data_list_source_destroy) Destroy the argument to
-       data_list_trns_free(), because it no longer does so itself.
-
-Tue May 17 18:29:35 2005  Ben Pfaff  <blp@gnu.org>
-
-       * data-out.c: (format_and_round) Don't output leading `-' if value
-       rounds to zero.
-
-Tue May 17 00:06:43 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug 11119.
-
-       * som.c: (output_encodings) If some cell in the table won't fit
-       with the horizontal or vertical headers, cancel those headers.
-
-       * som.h: (struct som_table_class) Add fits_width, fits_length,
-       set_headers members.
-
-       * tab.c: (tabi_fits_width) New function.
-       (tabi_fits_length) New function.
-       (tabi_set_headers) New function.
-       (global var tab_table_class) Add the new functions as appropriate
-       members.
-       
-Mon May 16 22:34:06 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix rest of bug 13054.
-
-       * format.def: Fix EDATE, SDATE, ADATE, JDATE, QYR, MOYR, WKYR,
-       DATETIME, TIME system/portable file values.
-
-Mon May 16 22:31:15 2005  Ben Pfaff  <blp@gnu.org>
-
-       * data-list.c: (parse_free) Use make_input_format().
-       
-       * data-out.c: (num_to_string) Use make_output_format().
-
-       * dictionary.c: (dict_create_var) Ditto.
-
-       * format.c: (global var f8_2) New var.
-       (make_input_format) New function.
-       (make_output_format) New function.
-
-       * get.c: (cmd_match_files) Use make_output_format().
-
-       * list.q: (cmd_list) Ditto.
-
-       * matrix-data.c: Ditto.
-
-       * sfm-read.c: (parse_format_spec) Check output specifier
-       thoroughly.
-
-       * tab.c: (tab_float) Use make_output_format().
-
-Sun May 15 23:38:10 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix more of bug 13054.
-       
-       * format.def: FMT_A should allow 255-character output.  FMT_AHEX
-       should allow 510-character input and output.
-
-       * data-out.c: (num_to_string) Get rid of NEW_STYLE option.
-       (convert_E) Handle non-finite values.
-       (try_F) Rewrite.
-       (format_and_round) New function.
-       (convert_infinite) New function used by try_F() and convert_E().
-
-Sun May 15 23:36:55 2005  Ben Pfaff  <blp@gnu.org>
-
-       Regularize string and buffer function names so that they make some
-       kind of sense.
-
-       * str.c: (mm_reverse) Rename buf_reverse().  Update all
-       references.
-       (mm_find_reverse) Rename buf_find_reverse().  Update all
-       references.
-       (mm_case_compare) Rename buf_compare_case().  Update all
-       references.
-       (st_compare_pad) Rename buf_compare_rpad().  Update all
-       references.
-       (str_compare_rpad) New function.
-       (st_bare_pad_copy) Rename buf_copy_str_rpad().  Update all
-       references.
-       (buf_copy_str_lpad) New function.
-       (st_bare_pad_len_copy) Rename buf_copy_rpad().  Update all
-       references.
-       (st_pad_copy) Rename str_copy_rpad().  Update all references.
-       (st_trim_copy) Rename str_copy_trunc().  Update all references.
-       (st_uppercase) Renamed str_uppercase().  Update all references.
-       
-Sat May 14 08:22:26 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * dfm-read.c: Fixed polarity of test in dfm-close-reader.  Closes 
-       Bug #13082
-
-Tue May 10 20:08:18 2005  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: (data_in) Add assertion to check input specifier.
-
-       * data-out.c: (data_out) Add assertion to check output specifier.
-
-Tue May 10 19:56:35 2005  Ben Pfaff  <blp@gnu.org>
-
-       Start to fix bug 13054.
-
-       * format.c: (check_input_specifier) Improve error message.
-       (check_input_specifier) Check F, COMMA, and DOLLAR formats for
-       valid decimal places.
-       (check_output_specifier) Ditto (but different criteria).
-       (convert_fmt_ItoO) Assert valid input and output specifiers.
-       Also, if input specifier has *any* decimal places, make the output
-       specifier 1 place wider.
-
-Mon May  9 07:14:29 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * sysfile-info.c: Fixed bug [# 13024 ]
-
-Sun May  8 13:52:12 2005  Ben Pfaff  <blp@gnu.org>
-
-       "Fix" bug 13021 by disabling FILE TYPE.  Eventually, we should
-       actually implement it.
-
-       * command.c: (FILE_TYPE_okay) Always return 1.
-
-       * command.def: Change FILE TYPE, END FILE TYPE into UNIMPL.
-
-       * file-type.c: Add prototypes to get rid of warnings.
-
-Sun May  8 08:08:07 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * barchart.c box-whisker.c cartesian.c piechart.c plot-hist.c: Fixed 
-        more ISO/IEC 9899:1990 conformance issues.
-
-Wed May  4 23:54:02 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug 12948.  See also new test in
-       tests/bugs/match-file-scratch.sh.
-       
-       * get.c: (mtf_merge_dictionary) Don't compact dictionary because
-       that deletes scratch variables that someone else might be using,
-       and because we can't reassign our sources' value indexes.
-       Instead, simply don't copy scratch variables into the master
-       dictionary.
-
-       * dictionary.c: (dict_compact_values) Delete variables from the
-       dictionary passed in, not from default_dict (!).
-
-Tue May  3 22:25:17 2005  Ben Pfaff  <blp@gnu.org>
-
-       Improve hash.c comments, error-checking.
-       
-       * hash.c: (struct hsh_table) [NDEBUG] Add hash_ordered member.
-       (hsh_create) size == 0 should *not* return NULL!  Set
-       hash_ordered.
-       (hsh_clear) Set hash_ordered.
-       (locate_matching_entry) Check hash_ordered.
-       (hsh_rehash) Rename rehash().  Add assertion.  Set hash_ordered.
-       (hsh_data) Set hash_ordered.  Add const-ness to return value and
-       update all callers.
-       (hsh_sort) Ditto.       
-
-Wed May  4 08:50:11 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * casefile.c: Removed unnecessary #include <valgrind/valgrind.h>
-
-Tue May  3 19:14:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * copyleft.c: Updated copyright date.
-
-       * Makefile.am: Removed erroneous explicit "-lplot"
-
-       * examine.q oneway.q: Made these files conform to ISO/IEC 9899:1990
-
-Tue May  3 16:20:31 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * command.c command.def: Added description string for unimplemented commands.
-
-       * oneway.q: Sorted the hash tables before shipping out the results. Closes 
-       bug [#12931].
-
-Mon May  2 23:45:01 2005  Ben Pfaff  <blp@gnu.org>
-
-       Code improvements.
-       
-       * data-list.c:  (parse_fixed) Use lex_end_of_command().
-       (parse_free) Ditto.
-       (cmd_repeating_data) Set cont_end.num in right situations.
-       (parse_repeating_data) Remove redundant test.
-
-Mon May  2 23:37:19 2005  Ben Pfaff  <blp@gnu.org>
-
-       Partial fix for bug 12859.
-       
-       * data-list.c: (cmd_data_list) Add transformation properly in
-       vfm_source == NULL case.
-
-Mon May  2 23:27:28 2005  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c: (lex_error) Improve error messages.
-
-Mon May  2 22:28:17 2005  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (cmd_match_files) Check token type before trying to match
-       tokid.  Fixes bug 12923.
-
-Mon May  2 22:16:51 2005  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c: [HAVE_SYS_TYPES_H] Include <sys/types.h>.  Fixes bug
-       12789.
-
-Mon May  2 22:02:52 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/generate.pl: (get_token) Make use of /g
-       backward-compatible with Perl 5.6.1.
-
-Sun May  1 23:00:19 2005  Ben Pfaff  <blp@gnu.org>
-
-       * var-display.c: (cmd_variable_alignment) Fix memory leak.
-       (cmd_variable_level) Ditto.
-
-Sun May  1 22:49:04 2005  Ben Pfaff  <blp@gnu.org>
-
-       Hash table had buggy deletion function.  The fix required changing
-       other functions to do probing in the required order.
-
-       * hash.c: (locate_matching_entry) Rewrite and change interface.
-       (hsh_rehash) Rewrite to use locate_matching_entry().
-       (hsh_probe) Ditto.
-       (hsh_find) Ditto.
-       (hsh_delete) Ditto.  Also, fix stupid bugs.
-
-Sun May  1 22:24:58 2005  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c: (dict_clone) Properly copy vectors.
-
-Sun May  1 22:07:58 2005  Ben Pfaff  <blp@gnu.org>
-
-       New implementation of long variable names.  Each variable has a
-       "normal" name, which may be up to 64 bytes long and which is used
-       for all normal operations.  Variables may have a "short" name,
-       which is limited to 8 bytes and used only for system and portable
-       file input and output.
-       
-       Make tokid case-preserving.  Update most uses of tokid to treat it
-       case-insensitively.
-
-       Update many commands to deal with long variable names.
-
-       * autorecode.c: (cmd_autorecode) Use strcasecmp() instead of strcmp().
-
-       * command.c: (cmd_parse) Ditto.
-       (match_strings) Use toupper() before comparing characters.
-       (conflicting_3char_prefixes) Use mm_case_compare() instead of
-       memcmp().
-       (cmd_match_words) Ditto.
-
-       * compute.c: (lvalue_parse) Use st_trim_copy() instead of
-       strncpy().
-
-       * count.c: (struct cnt_var_info) Change n[] to fit long var name.
-       Use st_trim_copy() instead of strcpy().
-
-       * data-in.c: (parse_enum) Use mm_case_compare() instead of
-       memcmp().
-
-       * data-list.c: (struct dls_var_spec) Change name[] to fit long var
-       name.
-       (parse_free) Use st_trim_copy() instead of strcpy().
-
-       * descript.c: (struct dsc_var) Change z_name[] to fit long var
-       name.
-       (try_name) Use strcasecmp() instead of strcmp().
-       (generate_z_varname) Use st_trim_copy() instead of strcpy().
-       (descriptives_compare_dsc_vars) Use strcasecmp() instead of
-       strcmp().
-
-       * dictionary.c: (struct dictionary) Removed `long_name_tab'
-       member.
-       (compare_long_names) Removed.
-       (hash_long_name) Removed.
-       (dict_create) Don't initialize `long_name_tab' member.
-       (dict_clone) Copy short names into new dictionary. 
-       (dict_clear) Don't clear `long_name_tab' member.
-       (dict_get_varname_block) Removed.
-       (dict_add_longvar_entry) Removed.
-       (free_nte) Removed.
-       (dict_destroy) Don't destroy `long_name_tab' member.
-       (dict_create_var_from_short) Removed.
-       (dict_create_var_x) Removed.
-       (dict_create_var) Get rid of longname handling.
-       Clear short name.
-       (dict_clone_var) Get rid of longname parameter and longname
-       handling.
-       (dict_lookup_var) Get rid of longname handling.
-       (dict_reorder_var) New function.
-       (dict_rename_var) Clear short name.
-       (dict_rename_vars) Get rid of longname handling.  Clear short
-       names.
-       (dict_create_vector) Support long vector names.
-       (dict_lookup_vector) Use strcasecmp() instead of strcmp().
-       (quasi_base27) Removed.
-       (make_short_name) Removed.
-       (compare_strings) New function.
-       (hash_string) New function.
-       (dict_assign_short_names) New function.
-
-       * file-handle.q: (get_handle_with_name) Use strcasecmp() instead
-       of strcmp().
-       (get_handle_for_filename) Support long handle names.
-
-       * file-type.c: (struct col_spec) Make `name' fit long var names.
-       (cmd_file_type) Use strcasecmp() instead of strcmp().
-
-       * flip.c: (make_new_var) Rewrite.
-       (flip_sink_write) Use st_trim_copy() instead of strncpy().
-
-       * format.c: (parse_format_specifier_name) Use mm_case_compare()
-       instead of memcmp().
-
-       * get.c: (cmd_save_internal) Rephrase.
-       (rename_variables) Drop test for identical variable name.
-       (struct mtf_proc) Change `first', `last' to fit long var name.
-
-       * hash.c: (hsh_hash_case_string) New function for case-insensitive
-       string hashing.
-
-       * lexer.c: (restore_token) Use st_trim_copy() instead of
-       strncpy().
-       (lex_get) Don't uppercase string when copying into tokid.
-       (lex_put_back_id) Use st_trim_copy() instead of
-       strncpy().
-
-       * list.q: (determine_layout) Consider length of variable names in
-       choosing vertical layout.
-
-       * matrix-data.c: (cmd_matrix_data) Use strcasecmp() instead of
-       strcmp().
-       (string_to_content_type) Ditto.
-
-       * modify-vars.c: (compare_variables_given_ordering) Ditto.
-       (struct var_renaming) Change `new_name' to fit long var name.
-       (compare_var_renaming_by_new_name) Use strcasecmp() instead of
-       strcmp().
-
-       * pfm-read.c: (read_variables) Disallow system variables in system
-       files.
-       (write_variables) Call dict_assign_short_names() and use
-       short_name[] members.
-
-       * repeat.c: (internal_cmd_do_repeat) Use strcasecmp() instead of
-       strcmp().
-
-       * sfm-read.c: (sfm_open_reader) Rewrite code for long variable
-       map.  Reorder variables into same order as long variable map.
-       (read_variables) Set short name.
-
-       * sfm-write.c: (sfm_open_writer) Call dict_assign_short_names().
-       (write_variable) Use st_bare_pad_copy().
-       (write_longvar_table) Rewrite.
-
-       * str.c: (mm_case_compare) New function.
-
-       * sysfile-info.c: (compare_vectors_by_name) Use strcasecmp()
-       instead of strcmp().
-
-       * t-test.q: (tts_custom_groups) Remove redundant test.
-       (tts_custom_pairs) Ditto.
-
-       * var.h: (struct variable) Change `name' to fit long var names.
-       Remove `longname'.  Add `short_name' member.  Reorder some
-       variables.
-       (struct name_table_entry) Removed.
-       (struct vector) Change `name' to fit long vector names.
-
-       * vars-atr.c: (var_is_valid_name) Allow long var names.
-       (compare_var_names) Use strcasecmp() instead of strcmp().
-       (compare_var_ptr_names) Ditto.
-       (hash_var_name) Use hsh_hash_case_string().
-       (hash_var_ptr_name) Ditto.
-       (var_set_short_name) New function.
-       (var_clear_short_name) New function.
-       (var_set_short_name_suffix) New function.
-
-       * vars-prs.c: (parse_DATA_LIST_vars) Support long names.
-       Use strcasecmp() instead of strcmp().
-       (struct array_var_set) Removed `longname_tab'.
-       (array_var_set_lookup_var_idx) Drop longname_tab support.
-       (array_var_set_destroy) Don't destroy `longname_tab'.
-       (var_set_create_from_array) Don't create `longname_tab'.
-
-       * vector.c: (cmd_vector) Use strcasecmp() instead of strcmp().
-       Support long names.
-
-       * expressions/parse.c: (word_matches) Use mm_case_compare()
-       instead of memcmp().
-       (compare_strings) New function.
-       (lookup_function) Use compare_strings() instead of strcmp().
-       
-Sun May  1 22:07:43 2005  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c: (move_element) New function.
-
-Sun May  1 22:05:35 2005  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: (parse_aggregate_functions) Always initialize
-       destvar.
-
-Sun May  1 22:03:47 2005  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: (cmd_aggregate) Use dict_clone_var_assert().
-
-       * dictionary.c: (dict_clone) Ditto.
-       (dict_clone_var_assert) New function.
-
-       * get.c: (mtf_merge_dictionary) Use dict_clone_var_assert().
-
-Sun May  1 15:05:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * error.c: Added a string for the compiler version to the
-       request_bug_report_and_abort function.
-
-       * groff_font.c, font.c: Removed manpage(1) style references from 
-       comments, because RMS frowns upon them.
-
-Thu Apr 28 18:52:06 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/parse.c: Improve previous fix for bug 12858 (LAG).
-
-Fri Apr 29 09:28:00 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * expressions/parse.c: Added handler for OP_LAG_Vn and OP_LAG_Vs.  
-       Fixed bug [#12858] .
-
-Wed Apr 27 12:42:34 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * loop.c recode.c repeat.c: Fixed a couple of instances of SHORT_NAME_LEN 
-       which should be LONG_NAME_LEN
-
-Wed Apr 27 07:43:50 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * command.def echo.c:  Added the ECHO command.
-
-Mon Apr 25 22:55:59 2005  Ben Pfaff  <blp@gnu.org>
-
-       Finish fixing MATCH FILES (bug 11677).
-
-       * get.c: (trim_dictionary) Rewrite in terms of drop_variables(),
-       keep_variables(), rename_variables().
-       (drop_variables) New function.
-       (keep_variables) New function.
-       (struct mtf_file) Rename `in' to `in_name'.  Add `in_var'.
-       (cmd_match_files) Deal with in_var.  Use drop_variables(),
-       keep_variables().  When IN is specified, require BY.  Set master
-       variables after master dictionary is complete.  Add IN variables
-       after master dictionary is complete.
-       (mtf_free_file) Free `in_name'.
-       (mtf_delete_file_in_place) Set in_var value to 0.
-       (mtf_read_nonactive_records)  Rephrase.
-       (mtf_processing) Support IN.  Rephrase.  Fix bugs.
-       (mtf_merge_dictionary) Don't set master variables; we do that
-       later now.
-       (get_master) Don't insist that there's a master variable.
-       
-Mon Apr 25 22:55:22 2005  Ben Pfaff  <blp@gnu.org>
-
-       Kluge to make some variable renaming sort of work.
-       Needs real fix.
-
-       * dictionary.c: (dict_rename_var) Call dict_add_longvar_entry().
-
-Mon Apr 25 22:52:28 2005  Ben Pfaff  <blp@gnu.org>
-
-       Add functions for comparing sets of variables between cases.
-       Use the functions.
-
-       * case.c: (case_compare) New function.
-       (case_compare_2dict) New function.
-       
-       * aggregate.c: (struct agr_proc) Remove `prev_break' member.  Add
-       `break_case'.
-       (cmd_aggregate) Nullify break_case.  Don't call
-       initialize_aggregate_info().
-       (agr_destroy) Destroy break_case.
-       (aggregate_single_case) Rewrite.  Use case_compare().
-       (dump_aggregate_info) Copy from break_case into output.
-       (initialize_aggregate_info) Copy break_case from input.
-
-       * get.c: (mtf_compare_BY_values) Use case_compare_2dict().
-
-       * vfm.c: (equal_splits) Use case_compare().
-
-Sat Apr 23 17:01:04 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.c vars-prs.c sfm-write.c: Fixed some memory leaks
-
-Sun Apr 17 23:08:15 2005  Ben Pfaff  <blp@gnu.org>
-
-       Start work on fixing MATCH FILES.
-
-       * get.c: (enum operation) Remove OP_MATCH.
-       (trim_dictionary) Change return value to bool.  Don't support
-       OP_MATCH.
-       (struct mtf_file) Remove `first', `last' members.
-       (struct mtf_proc) Add `first', `last' members.  Change mtf_case
-       from `struct ccase *' to `struct ccase'.  Remove `by' member.
-       (cmd_match_files) Essentially rewrite.
-       (mtf_free) Don't free `by' member.  Destroy `mtf_case' member.
-       (mtf_read_nonactive_records) mtf_ parameter is not unused.
-       (mtf_processing) Ditto.  Also rephrase some code.
-       (mtf_merge_dictionary) Rewrite for easy comprehension.  
-
-Sun Apr 17 23:06:00 2005  Ben Pfaff  <blp@gnu.org>
-
-       * matrix-data.c: (wr_output_data) [DEBUGGING] Fix compilation
-       error.
-
-       * q2c.c: (dump_token) [DEBUGGING] Fix compilation error.
-       
-Thu Apr 14 2005 John Darrington
-
-        * var-display.c: New file.
-
-       * format.h var.h sfm-read.c sfm-write.c dictionary.c :  Added 
-         display_width, measure and alignment parameters to variables.
-
-       * aggregate.c command.def compute.c count.c data-list.c descript.c
-         dictionary.c dictionary.h expr-prs.c file-type.c flip.c get.c 
-         lexer.c lexer.h loop.c modify-vars.c pfm-read.c recode.c repeat.c 
-         sfm-read.c sfm-write.c sfm-write.h sfmP.h val-labs.c val.h var.h 
-         vars-prs.c vector.c :  
-             - Replaced literal constants representing maximum variable name 
-               length with macro definitions. 
-             - Added support for long variable names.
-             - Changed lexer such that it no longer makes tokens upper
-               case, but relies upon case insensitive behaviour of commands.
-
-Mon Apr  4 22:27:34 2005  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: (parse_aggregate_functions) If dict_create_var()
-       fails, don't dereference the resulting null pointer (bug 12427).
-       Also, fix double free error.
-
-Sat Mar 19 23:06:02 2005  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: (parse_aggregate_functions) Fix N_NO_VARS format.
-       (accumulate_aggregate_info) Set int1 to 1 for SUM.
-       (dump_aggregate_info) Only make SUM non-missing if there was at
-       least one variate.
-
-Sat Mar 19 14:48:19 2005  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: (dump_aggregate_info) Properly test whether the
-       destination variable is numeric, when making the result
-       system-missing for columnwise missing values.
-
-Mon Mar 14 21:52:34 2005  Ben Pfaff  <blp@gnu.org>
-
-       * misc.h: Remove GCC specializations.
-
-Mon Mar 14 21:07:23 2005  Ben Pfaff  <blp@gnu.org>
-
-       Make sort stable (bug 12313).
-       
-       * sort.c: Don't need to include some headers anymore.
-       (static var min_buffers) New variable.
-       (static var max_buffers) New variable.
-       (static var allow_internal_sort) New variable.
-       (cmd_sort_cases) Add test mode.
-       (sort_execute) Rephrase.
-       (do_internal_sort) Don't try internal sorting if
-       allow_internal_sort is set.
-       (struct external_sort) Renamed `initial_runs' to `runs' and
-       updated all references.
-       (macro MIN_BUFFER_TOTAL_SIZE_RECS) Removed.
-       (macro MIN_BUFFER_SIZE_BYTES) Removed.
-       (macro MIN_BUFFER_SIZE_RECS) Removed.
-       (compare_initial_runs) Removed.
-       (struct record_run) Add member `idx'.
-       (write_initial_runs) Pass increasing values to process_case() as
-       index.
-       (process_case) Add `idx' parameter and use it to initialize new
-       `idx' member.
-       (allocate_cases) Limit allocated buffers to max_buffers.
-       (compare_record_run) Use new `idx' member for last resort
-       comparison, for stability.
-       (end_run) Call casefile_sleep() on irs->casefile, to prevent
-       running out of file descriptors.
-       (struct merge_state) Removed.
-       (merge) Don't need to allocate cases.  Always use MAX_MERGE_ORDER
-       unless we have fewer runs left.  Always merge consecutive runs,
-       for stability.  Return the final run.
-       (mod) Removed.
-       (choose_merge) New function.
-       (merge_once) Rewritten.
-
-Mon Mar 14 21:05:42 2005  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: (static var testing_mode) Move into
-       parse_command_line().
-       
-Mon Mar 14 21:05:13 2005  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c: (remove_range) New function.
-       (remove_element) New function.
-
-       * dictionary.c: (dict_delete_var) Use remove_element().
-
-       * flip.c: (cmd_flip) Ditto.
-
-Sun Mar 13 22:52:05 2005  Ben Pfaff  <blp@gnu.org>
-
-       * file-handle.q: (struct file_handle) `open_mode' should not be
-       const.
-       
-Sun Mar 13 22:40:54 2005  Ben Pfaff  <blp@gnu.org>
-
-       First phase of making SORT CASES stable (bug 12313).
-
-       * sort.c: (struct indexed_case) New structure.
-       (do_internal_sort) Rewrite to make internal sorting stable.
-       (compare_case_dblptrs) Removed.
-       (compare_indexed_cases) New function.
-
-Sun Mar 13 22:38:40 2005  Ben Pfaff  <blp@gnu.org>
-
-       Clean-ups.
-
-       * casefile.c: (casereader_read_xfer_assert) New function.
-
-       * dictionary.c: (dict_compact_case) New function.
-
-       * flip.c: (struct flip_pgm) New member idx_to_fv.
-       (cmd_flip) Initialize idx_to_fv member.
-       (destroy_flip_pgm) Free idx_to_fv member.
-       (flip_sink_write) Use struct flip_pgm member instead of case_sink
-       member.
-       (flip_sink_write) Ditto.
-
-       * vfm.c: (write_case) Use dict_compact_case() instead of
-       compact_case().
-       (compact_case) Removed.
-       (storage_source_create) Removed `dict' parameter.  All references
-       updated.
-
-       * vfm.h: (struct case_source) Removed `value_cnt' member.  All
-       references removed.
-       (struct case_sink) Removed `dict', `idx_to_fv' members.  All
-       references removed.
-
-Sun Mar 13 22:35:55 2005  Ben Pfaff  <blp@gnu.org>
-
-       More AGGREGATE fixes.
-
-       * aggregate.c: (accumulate_aggregate_info) Implement NMISS and
-       NUMISS for strings.  Fix FOUT, POUT, FGT, FLT, FIN, FOUT for
-       strings.
-       (initialize_aggregate_info) Fix initialization for MIN, MAX for
-       strings.
-
-Sat Mar 12 23:26:21 2005  Ben Pfaff  <blp@gnu.org>
-
-       Start work on testing and debugging AGGREGATE.
-
-       * aggregate.c: (cmd_aggregate) Use discrete bool variables instead
-       of a bit-map.  Require proper subcommand ordering.  Make OUTFILE
-       subcommand mandatory.
-       (parse_aggregate_functions) Check that PIN, POUT, FIN, FOUT
-       functions' arguments are in the correct order and swap them if
-       not.
-       (accumulate_aggregate_info) Make SUM include weights.  Add various
-       string functions.
-       (dump_aggregate_info) Add various string functions.
-       (initialize_aggregate_info) Initialize int1 for MIN, MAX.
-
-       * sort.c: (sort_parse_criteria) Add parameter for returning
-       whether any directions were specified.  All callers updated.
-
-Sun Mar 13 14:54:27 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q: Fixed erroneous logic in compare_group_binary.
-
-Sat Mar 12 13:29:21 2005  Ben Pfaff  <blp@gnu.org>
-
-       * split-file.c: (cmd_split_file) Ignore LAYERED and SEPARATE
-       keywords (bug 11628).
-
-Sat Mar 12 13:17:12 2005  Ben Pfaff  <blp@gnu.org>
-
-       * vfm.c: (procedure_with_splits) Fix bug 11492: end_func() must be
-       called *before* close_active_file().
-
-Sat Mar 12 12:20:57 2005  Ben Pfaff  <blp@gnu.org>
-
-       * file-handle.q: (struct file_handle) Change open_mode from
-       character pointer to 3-char array, for safety.  Updated all
-       references.
-
-Sat Mar 12 12:15:49 2005  Ben Pfaff  <blp@gnu.org>
-
-       Thanks to Ben Kujala <bkujala@oregonchildcare.org> for reporting
-       these bugs.
-       
-       * pfm-read.c: (read_header) Improve error message for many cases
-       in which the input is not actually a portable file.
-
-       * file-handle.q: (fh_open) When we give an error message, actually
-       return NULL.
-
-Fri Mar 11 11:50:30 2005  Ben Pfaff  <blp@gnu.org>
-
-       * format.c: (check_common_specifier) New function for checks
-       common to check_input_specifier() and check_output_specifier().
-       (check_input_specifier) Use check_common_specifier().
-       (check_output_specifier) Use check_common_specifier().
-       (check_string_specifier) Removed.
-       (check_specifier_type) New function.
-       (check_specifier_width) New function.
-       (get_format_var_width) Fix bug.
-
-       * formats.c: (internal_cmd_formats) Only accept numeric variables.
-
-       * lexer.c: (check_id) Rename lex_id_to_token(), make public,
-       update all references.  Make case-insensitive.
-
-       * pfm-read.c: Essentially rewrite the whole file.  Now much
-       cleaner.
-
-       * print.c: (check_string_width) New function.
-       (fixed_parse_compatible) Use check_string_width(),
-       check_specifier_type().
-       (dump_fmt_list) Ditto.
-
-       * str.c: (st_trim_copy) New function.
-       (st_uppercase) New function.
-
-       * vars-atr.c: (var_is_valid_name) New function.
-       
-       * expressions/parse.c: (type_coercion_core) Use
-       check_specifier_type().
-       
-Fri Mar 11 11:31:24 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/evaluate.c: (cmd_debug_evaluate) Fix memory leaks.
-
-       * expressions/parse.c: (no_match) Ditto.
-
-Wed Mar  9 09:54:27 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (pspp_LDADD) Add libgsl-extras.a.
-
-       * expressions/helpers.c: (struct func_params) Removed.
-       (generalized_idf) Removed.
-       (cdf_beta) Removed.
-       (idf_beta) Removed.
-       (idf_fdist) Use gslextras_cdf_beta_Pinv() instead of idf_beta().
-
-       * expressions/operations.def: Implement IDF.BETA, CDF.BINOM,
-       CDF.GEOM, CDF.HYPER, CDF.NEGBIN, CDF.POISSON using gsl-extras.
-       Implement SIG.F, which I had overlooked previously.
-
-Tue Mar  8 12:47:53 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * command.c command.def glob.[ch] cmdline.c: Made DEBUG cmds
-       available only in testing mode.
-
-Sun Mar  6 23:25:40 2005  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: Use `bool' throughout, where relevant.
-
-Sun Mar  6 19:52:22 2005  Ben Pfaff  <blp@gnu.org>
-
-       DATA LIST with free-field formats should not have implied decimal
-       places (bug 12035).  Also clean up data-in.c a bit.
-
-       * data-in.h: (enum) Add DI_IMPLIED_DECIMALS.
-
-       * data-in.c: (apply_implied_decimals) New function.
-       (parse_numeric) Don't adjust exponent if DI_IMPLIED_DECIMALS not
-       set.  Also, get rid of gotos.
-       (parse_Z) Use apply_implied_decimals() if the field doesn't
-       contain a decimal point.
-       (parse_N) Use apply_implied_decimals().
-       (parse_IB) Ditto.
-       (parse_PIB) Ditto.
-       (parse_P) Ditto.
-       (parse_PK) Ditto.
-       (to_roman) Removed.
-       (parse_enum) New function.
-       (macro CHAR_IS_ROMAN) Removed.
-       (macro ROMAN_VALUE) Removed.
-       (parse_month) Use parse_enum().
-       (parse_weekday) Use parse_enum().
-       (parse_DATETIME) Use long for weekday.
-
-       * data-list.c: (read_from_data_list_fixed) Use
-       DI_IMPLIED_DECIMALS.
-
-Sun Mar  6 17:07:20 2005  Ben Pfaff  <blp@gnu.org>
-
-       When the lexer sees something like `-5' in the input, it has to
-       decide whether it's a negative numeric constant token or a '-'
-       token followed by a positive numeric constant token.  It always
-       decides on the former, and then the parser can call
-       lex_negative_to_dash() if it wants the latter.  However, this
-       doesn't work for the case of `-0', because negative zero is
-       (portably) indistinguishable from positive zero.  So now we divide
-       T_NUM into two tokens, T_POS_NUM and T_NEG_NUM, to make the
-       distinction clear.  This requires a little bit of extra effort,
-       because there were several references to T_NUM in the code base.
-       
-       * lexer.c: (lex_get) Use T_NEG_NUM and T_POS_NUM to distinguish
-       positive and negative numeric constants.
-       (lex_double_p) Renamed lex_is_number().  Changed return type to
-       bool.  Updated all relevant references to T_NUM to instead use
-       this function.
-       (lex_double) Renamed lex_number().  All references updated.
-       (lex_integer_p) Renamed lex_is_integer().  Changed return type to
-       bool.  All references updated.
-       (lex_token_representation) Understand T_NEG_NUM and T_POS_NUM.
-       (lex_negative_to_dash) Ditto.
-       (dump_token) Ditto.
-       
-       * lexer.h: (enum) Add T_POS_NUM, T_NEG_NUM.  Remove T_NUM.
-
-Sun Mar  6 22:09:20 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/operations.def: (NUMBER) Use DI_IMPLIED_DECIMALS.
-
-Sun Mar  6 19:33:24 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/operations.def: (VEC_ELEM_NUM) Treat user-missing
-       values as system-missing.
-
-       * expressions/parse.c: (parse_vector_element) Fix order of
-       arguments in call to expr_allocate_binary().
-
-Sun Mar  6 17:51:05 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/optimize.c: (optimize_tree) Fix optimization bug for
-       x**2.
-
-       * expressions/parse.c: (type_coercion_core) Set *node to NULL on
-       failure, as indicated by function comment.
-       (parse_binary_operators) Always return NULL on type_coercion()
-       failure.  Should have been doing this anyway, but bug in
-       type_coercion_core() filtered through.
-       (parse_add) Fix typo in user message.
-       (parse_primary) Understand T_NEG_NUM and T_POS_NUM.
-
-Sun Mar  6 10:47:13 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/operations.def: Add VALUE function.
-
-       * expressions/parse.c: (parse_function) Need an unary composite
-       node for variables in A TO B, not a variable node.  Use
-       allocate_unary_variable().
-       (parse_primary) Use allocate_unary_variable().
-       (allocate_unary_variable) New function.
-
-Thu Mar  3 23:53:32 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/PSPP_expressions.pm: Renamed it back to generate.pl
-       but fixed the real problem that was preventing the build from a
-       separate directory.  I liked it my way better ;-)
-       
-Thu Mar  3 23:17:51 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/parse.c: (expr_parse) Fix parameter type.  Thanks to
-       John Darrington <john@darrington.wattle.id.au> for reporting this
-       bug.
-
-Thu Mar  3 22:10:25 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * expressions/Makefile.am expressions/evaluate.h.pl
-         expressions/evaluate.inc.pl expressions/operations.h.pl
-         expressions/optimize.inc.pl expressions/parse.inc.p:
-
-         Renamed generate.pl to PSPP_expressions.pm and adjusted *.pl
-         to suit. 
-
-         Fixed everything so that it can be built from an arbitrary
-         directory.
-       
-Thu Mar  3 22:08:35 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * Makefile.am : Fixed up CLEANFILES target.
-
-Mon Feb 28 23:49:56 2005  Ben Pfaff  <blp@gnu.org>
-
-       * str.h: Changed `struct len_string' to `struct fixed_string', a
-       more accurate name.  Updated all references.
-
-Mon Feb 28 23:35:30 2005  Ben Pfaff  <blp@gnu.org>
-
-       Redo calendar support.  Should now be bug-for-bug compatible.
-       
-       * calendar.c: New file.
-
-       * calendar.h: New file.
-
-       * data-in.c: Use new calendar functions.
-       (parse_sign) Change sense of return value.
-       (calendar_error) New function.
-       (ymd_to_ofs) New function.
-       (ymd_to_date) New function.
-       (parse_DATE) Use new function.
-       (parse_ADATE) Ditto.
-       (parse_EDATE) Ditto.
-       (parse_SDATE) Ditto.
-       (parse_JDATE) Ditto.
-       (parse_QYR) Ditto.
-       (parse_MOYR) Ditto.
-       (parse_WKYR) Ditto.
-       (parse_TIME) Ditto.
-       (parse_DTIME) Ditto.
-       (parse_DATETIME) Ditto.
-
-       * data-out.c: (convert_date) Use new calendar functions.
-
-       * error.c: (err_vmsg) Changed interface to be more sensible.
-       Updated all callers.
-       (dump_message) Don't double new-lines (why did we do this
-       anyway?).
-
-Mon Feb 28 23:30:25 2005  Ben Pfaff  <blp@gnu.org>
-
-       * sfmP.h: (macro flt64) Moved here from pref.h.orig.
-       (macro FLT64_MAX) Moved here from pref.h.orig.
-
-Mon Feb 28 23:28:01 2005  Ben Pfaff  <blp@gnu.org>
-
-       * set.q: Support SET EPOCH.
-       (static var set_epoch) New var.
-       (aux_stc_custom_epoch) New function.
-       (stc_custom_epoch) New function.
-       (get_epoch) New function.
-       (stc_custom_pager) [USE_INTERNAL_PAGER] Fix bug.
-
-       * format.c: Make it possible just to check whether a specifier is
-       valid without emitting an error message.
-       (parse_format_specifier_name) Change interface, update all
-       callers.
-       (check_input_specifier) Ditto.
-       (check_output_specifier) Ditto.
-       (parse_format_specifier) Ditto.
-
-Mon Feb 28 23:24:08 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: Add DEBUG POOL.
-
-       * pool.c: (pool_destroy) Fix bug in deleting this pool from its
-       parent.
-       (pool_clear) Properly account for size of pool gizmo.
-       (pool_realloc) Ditto.
-       (pool_clone) New function.
-
-       * pool.h: Mark our allocation functions MALLOC_LIKE.
-
-Mon Feb 28 23:21:26 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Move many definitions into new top-level
-       Make.build.  Add expressions to SUBDIRS.  Add calendar.c,
-       calendar.h.  Remove expr-evl.c, expr-opt.c expr-prs.c, expr.h,
-       exprP.h, expr.def.
-
-       * case.c: (case_resize) New function.
-       (case_swap) New function.
-
-       * casefile.c: Include mkfile.h.
-
-Fri Feb 25 21:11:35 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * sfm-read.c: Fixed a buglet which caused a crash when trying
-       to read a non-existent file.
-
-Sun Feb 13 16:11:13 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug 11955.
-
-       * aggregate.c: (parse_aggregate_functions) Code cleanup.
-       Important part: get rid of spurious copying of function->format to
-       destvar->print and destvar->write.
-
-Fri Feb 11 00:08:36 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug 11916, which was confusing a variable's `index' member
-       with the variable's position in a var_set.  Although these are
-       usually the same, they are not for array `var_set's.
-       
-       Took advantage of this bug as an opportunity to clean up and
-       rewrite parse_var_set_vars().
-
-       * vars-prs.c: (parse_vs_variable_idx) New function.
-       (parse_vs_variable) Reimplement in terms of
-       parse_vs_variable_idx().
-       (parse_var_idx_class) New function.
-       (add_variable) New function.
-       (add_variables) New function.
-       (parse_var_set_vars) Rewritten.
-       (struct var_set) Change `lookup_var' member that returns a
-       variable into `lookup_var_idx' member that returns an int.
-       Updated the var set implementations in obvious corresponding ways.
-       Used compare_var_ptr_names(), hash_var_ptr_name() just added.
-       
-Fri Feb 11 00:06:03 2005  Ben Pfaff  <blp@gnu.org>
-
-       Use our global variable compare & hash functions and give them
-       better names.  Add similar functions for dealing with double
-       pointers to variables.
-       
-       * vars-atr.c: (compare_variables) Renamed compare_var_names().
-       (hash_variable) Renamed hash_var_name().
-       (compare_var_ptr_names) New function.
-       (hash_var_ptr_name) New function.
-       
-       * t-test.q: (cmd_t_test) Use global compare_var_names(),
-       hash_var_name().
-       (compare_var_name) Removed.
-       (hash_var_name) Removed.
-
-Fri Feb 11 00:04:39 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fix dictionary bug.
-       
-       * dictionary.c: (compare_variable_dblptrs) Rename
-       compare_var_ptrs() and fix it to properly dereference the double
-       pointers.
-
-Mon Feb  7 09:58:15 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       crosstabs.q examine.q oneway.q q2c.c:  Added a q2c feature to 
-       declare subcommands as mandatory.  Closed bug #11843
-
-Sat Feb  5 20:35:10 WST 2005 John Darrington <john@darrington.wattle.id.au>
-       
-       * getline.c command.[ch] command.def:  Added (very rudimentary)
-       support for line  completion when in interactive mode.  Partially 
-       addresses bug #11693
-       
-Mon Jan 31 09:52:51 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q factor_stats.c oneway.q output.c pfm-read.c: Fixed some
-       problems revealed by valgrind.
-
-
-Wed Jan 26 11:44:11 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * set.q: Affixed a fix to the previous fix such that we'll be OK now
-       whether or not PAGER is set.
-
-Wed Jan 26 09:25:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * set.q: Copied the string produced by getenv("PAGER") thus avoiding
-       "invalid free" errors.  Hopefully fixes bug #11722
-
-       * compute.c expr-prs.c: Check that lvalues are populated before 
-       attempting to destroy them.  Closes bug #11676
-
-Tue Jan 25 21:01:43 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * aggregate.c: Initialised the complete agr_proc structure.
-       Closes bug #11675
-
-
-Sun Jan 23 23:02:21 2005  Ben Pfaff  <blp@gnu.org>
-
-       * print.c: (print_trns_free) Close the dfm writer if there is one,
-       fixing a memory leak.
-
-Mon Jan 24 12:24:36 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * glob.c oneway.q q2c.c t-test.q vfm.c: Still *more* memory leaks 
-       fixed.
-
-
-Fri Jan 21 19:54:14 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * linked-list.[ch] Added
-
-       * examine.q file-handle.[hq] font.h glob.c groff-font.c postscript.c 
-         set.q:    Yet more memory leaks
-
-Tue Jan 18 23:12:40 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q examine.q : More memory leaks fixed.
-
-Tue Jan 18 19:26:59 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q  factor_stats.[ch] get.c pfm-read.c: Plugged numerous
-       memory leaks.
-
-Mon Jan 10 14:43:45 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * ascii.c cartesian.c casefile.c chart.h devind.c 
-         examine.q frequencies.q
-         html.c output.h piechart.c plot-chart.c plot-hist.c
-
-         Integrated the chart rendering into the output stream
-         (currently only works for html).
-         
-         Removed gratuitous use of ifndef NO_CHARTS, and replaced with
-         dummy-chart.c for compiling without charts.
-
-       * mkfile.[ch] Created.  
-
-       * som.[ch] tab.[ch]: Changed name of som_table to som_entity
-       Added type element so we can tell if it's a chart or a table.
-
-       * chart.h examine.q piechart.c plot-chart.c plot-hist.c: changed the 
-       API of charts to be more like that of tables.
-
-Thu Jan 13 21:00:02 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * casefile.c main.c: Moved the SIGINT handler from casefile.c to
-       main.c. Removed the handler for SIGQUIT.
-
-Mon Jan 10 14:43:45 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * casefile.c: Added a signal handler to delete temp files on 
-       SIGINT and SIGQUIT
-
-       * permissions.c Inhibited the PERMISSIONS command when SAFER is on.
-
-       * command.def Added a lot more unimplemented commands.
-
-       * copyleft.[ch] cmdline.c Moved legal information to copyleft.c
-
-Sat Jan  8 23:58:34 2005  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c: (compare_initial_runs) Needed additional level of
-       dereferencing.
-       (merge_once) Fix plenty of stupid mistakes.
-
-Sat Jan  8 23:55:27 2005  Ben Pfaff  <blp@gnu.org>
-
-       * casefile.c: (casefile_sleep) Need to flush_buffer() after
-       calling casefile_to_disk() or we will lose the last block in the
-       file if the casefile started out as disk-based.
-       (casefile_get_reader) Initialize reader->destructive to 0.
-       (cmd_debug_casefile) Add new test pattern.
-       (test_casefile) Define new test pattern to make sure
-       casefile_sleep() works properly.
-
-Fri Jan  7 08:00:05 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * Makefile.am chart.[ch]  histogram.[ch] piechart.c (Modified);
-          plot-hist.c plot-chart.c (Added) Reorganised these files in an
-          attempt to seperate the creation and processing of charts from their
-          actuall renedering.
-
-        * examine.q frequencies.q generated charts conditional upon the NO_CHARTS
-          macro.
-
-Thu Jan  6 18:48:58 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * main.c Added a signal handler for SIGFPE
-
-       * sort.c Somewhat more robust fix to the previous entry.
-
-Wed Jan  5 21:23:31 2005  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c: (merge) Fix assertion for proper Huffman merge pattern:
-       0 == 1 modulo 1.  See Knuth 5.4.9 (vol. 3, 2nd ed.,
-       pp. 361).  Thanks to John Darrington <john@cellform.com.au> for
-       reporting the bug.
-
-Wed Jan  5 22:42:26 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * case.h Fixed bug # 11307
-       
-Wed Jan  5 08:30:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * val-labs.c Fixed bug which caused a crash if VALUE LABELS had
-       a trailing slash.
-
-Mon Jan  3 17:44:37 2005  Ben Pfaff  <blp@gnu.org>
-
-       * pfm-read.c: (read_variables) Remove direct manipulation of
-       v->aux, which is no longer needed.  Fixes bug 11483.
-
-Sat Jan  1 19:01:16 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * data-list.c Fixed a bug in parsing delimiters.
-
-       * group.c vars-atr.c Fixed buglet in hash/compare functions for alpha
-       values.
-
-       * percentiles.c Properly handled calculation of Tukey hinges where
-       the number of data is small.
-
-       * oneway.q Used the generic value_to_string function for independent
-       variable instead of trying to do it ourselves.
-
-       * box-whisker.c Fixed a buglet which caused a crash if the number of
-       data was zero
-
-
-Fri Dec 31 16:47:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q box-whisker.c chart.h Implemented boxplots in EXAMINE
-
-       * percentiles.c Fixed some bugs when calculating percentiles when
-       there's a small number of cases.
-
-Wed Dec 29 08:18:08 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * percentiles.[ch] Added. Calculates percentiles and Tukey hinges
-
-       * examine.q factor_stats.[ch]  Added calculation of percentiles
-
-Fri Dec 24 15:09:11 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q Fixed bug #11227 Made t-test work when the independent
-       variable is alpha
-
-Sat Dec 11 11:43:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * factor_stats.c Fixed calculation of trimmed mean under various
-       special conditions.
-
-Sat Dec  4 17:14:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * histogram.c chart.[ch] factor_stats.c frequencies.q
-
-       Added code to calculate sensible histogram ranges and limits.
-
-Thu Dec  2 13:37:43 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * chart.h Updated to reflect many API changes.
-
-       * cartesian.c chart.c Moved the definitions of chart_write_{xy}scale from 
-       cartesian.c and into chart.c
-
-       * factorstats.[ch] Added the histogram calculations
-
-       * casefile.c Removed an unused variable.
-
-       * frequencies.q examine.q histogram.c  Reworked the API for 
-       histograms.
-
-       * piechart.c  Revised the API for piecharts.
-
-       * var.h  Moved the definitions of freq_tab and freq out of var.h
-       and into frequencies.q where they belong.
-       
-Tue Nov 30 21:10:20 2004  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c: (flip_file) Check for off_t separately from fseeko(),
-       using AC_TYPE_OFF_T.
-
-Tue Nov 30 08:47:41 2004  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c: (flip_file) If fseeko() is not available, use long int
-       for off_t.  Thanks to "Marshall DeBerry" <mdb@radix.net> for
-       reporting the problem.
-
-Mon Nov 29 12:20:59 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q factor_stats.[ch] Changed stderr to se_mean to avoid
-       conflict with stdio.
-
-Sun Nov 21 10:32:41 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * var-labs.c (var_to_string) Now returns null if the variable is null
-
-       * value-labels.c (value_to_string) Made it return null if either the 
-       value or the variable is null.
-
-       * hash.c (hsh_clear) Fixed a buglet.
-
-       * examine.q  factor_stats.[ch] Largely  rewrote, because I'd started 
-       with  the wrong model.
-
-       * casefile.[ch] Added a function to return the casereader.case_idx 
-       member
-
-       * examine.q  Implemented the extreme values results.
-
-John Darrington <john@darrington.wattle.id.au>
-
-       * settings.h set.c glob.[ch] frequencies.q q2c.c error.c lexer.[ch] 
-          output.[ch] getline.c 
-
-          Plugged some memory leaks
-
-Mon Nov 15 23:47:40 2004  Ben Pfaff  <blp@gnu.org>
-
-       Adopt GSL random number generators, paving the way for providing
-       the complete suite of random number generators on expressions.
-       
-       * Makefile.am: Remove random.c, random.h.
-
-       * random.c: Removed.
-
-       * random.h: Removed.
-
-       * algorithm.c: (algo_default_random) Use GSL functions.
-
-       * casefile.c: (test_casefile) Use GSL RNG functions.
-
-       * expr-evl.c: (expr_evaluate) Use GSL RNG functions for OP_NORMAL,
-       OP_UNIFORM.
-
-       * sample.c: (cmd_sample) Use GSL RNG functions.
-       (sample_trns_proc) Ditto.
-
-       * set.q: (static var set_seed) Removed.
-       (static var seed_flag) Removed.
-       (static var rng) New variable.
-       (aux_stc_custom_seed) No seed value anymore, don't print anything.
-       (stc_custom_seed) Use new seed functions.
-       (seed_is_set) Removed.
-       (get_rng) New function that composes the entire external
-       interface.
-       (set_rng) New function.
-       (random_seed) New function.
-
-Mon Nov 15 22:08:25 2004  Ben Pfaff  <blp@gnu.org>
-
-       * expr-evl.c: (expr_evaluate) Fix XDATE.JDAY formula.  Thanks to
-       John Darrington <john@darrington.wattle.id.au> for reporting this
-       bug.
-
-Tue Nov 16 13:19:18 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * permissions.c command.def Added the PERMISSIONS command
-
-Mon Nov 15 01:33:32 2004  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c: (dump_header) Don't try to emit #includes at very top of
-       output file because that will precede #include <config.h>, which
-       is bad.
-       (main) Add needed headers to /* (header) */ code.
-
-Mon Nov 15 01:21:36 2004  Ben Pfaff  <blp@gnu.org>
-
-       Instead of making system or portable file readers responsible for
-       dropping and reordering variables, make them read full cases and
-       let the caller take care of any changes.
-
-       * get.c: New "case map" structure to handle this.  Use for GET,
-       IMPORT, MATCH FILES.  Essentially rewrite the whole file.
-
-       * pfm-read.c: (pfm_read_case) Read into provided case.  Signature
-       changed appropriately.
-
-       * sfm-read.c: (sfm_read_case) Ditto.
-
-Mon Nov 15 00:47:45 2004  Ben Pfaff  <blp@gnu.org>
-
-       Decided that case_serialize() and case_unserialize() were too
-       abstract.  Also we need a couple more functions to avoid excessive
-       copying for data in/out fast paths.
-
-       * case.c: (case_serial_size) Removed.
-       (case_serialize) Rename case_to_values() and make its argument
-       explicitly an array of union values.
-       (case_unserialize) Rename case_from_values() and make its argument
-       explicitly an array of union values.
-       (case_data_all) New function.
-       (case_data_all_rw) New function.
-
-       * casefile.c: (struct casefile) Change buffer from array of
-       unsigned char to array of union value for better accuracy.
-       Redefine buffer_used and buffer_size in terms of values, not
-       bytes.  Remove case_size because it is now redundant with
-       value_cnt.  Fix up all references to these members.
-
-Mon Nov 15 00:45:46 2004  Ben Pfaff  <blp@gnu.org>
-
-       * barchart.c: (struct subcat) Make `label' member const to silence
-       GCC warning with -Wwrite-strings.
-
-       * cartesian.c: (struct dataset) Ditto.
-
-       * case.c: Don't re-define NDEBUG if already defined.
-       Add lots of comments.
-
-       * str.c: Fix includes.
-
-       * crosstabs.q: Fix includes.
-
-       * examine.q: Fix includes.  Fix GCC warning about unused
-       variables.
-       
-       * frequencies.q: (stat macro) Removed and replaced where used by
-       its expansion.
-
-       * list.q: Fix includes.
-
-       * oneway.q: Fix includes.
-
-       * piechart.c: Fix includes.  Only define M_PI if not already
-       defined.
-
-       * sfm-read.c: (bswap) New function.
-       (bswap_int32) Write in terms of bswap.
-       (bswap_flt64) Ditto.
-
-       * str.c: (ds_data) Add external definition here, needed because
-       str.h has only an `extern inline' version.
-
-       * value-labels.c: Fix includes.
-
-Mon Nov 15 00:40:55 2004  Ben Pfaff  <blp@gnu.org>
-
-       Instead of providing a system or portable file writer with a raw
-       case in the format needed for output, provide it with a regular
-       case.  The writer takes care of any needed translation.
-
-       * aggregate.c: Adopt new scheme for AGGREGATE.
-       (struct agr_proc) sfm_agr_case member removed.
-       (write_case_to_sfm) Removed because the new interface is easier to
-       use.
-
-       * get.c: Adopt new scheme for SAVE, XSAVE, EXPORT.
-
-       * pfm-write.c: Implement new scheme.
-
-       * sfm-write.c: Ditto.
-
-Mon Nov 15 00:32:24 2004  Ben Pfaff  <blp@gnu.org>
-
-       Instead of treating `struct file_handle' as a class to subclass
-       into data files, system files, and portable files, instead use it
-       as a helper that coordinates access.  Now it is opaque, too.
-
-       This means that most references to a struct file_handle are now
-       changed into references to one of struct dfm_reader, struct
-       dfm_writer, struct sfm_reader, struct sfm_writer, struct
-       pfm_reader, or struct pfm_writer, according to what's being read
-       or written.
-
-       Most related changes are only worth summarizing briefly.
-
-       * dictionary.c: (dict_clear) Destroy aux data in deleted
-       variables.
-       (dict_clear_aux) New function.
-       (dict_create_var) Initialize aux, aux_dtor.
-       (dict_delete_var) Destroy aux data in deleted variable.
-
-       * file-handle.h: (struct fh_ext_class) Removed.
-       (struct file_handle) Removed.
-       (fh_init_files) Removed.
-
-       * file-handle.q: Changed references to a handle's `private' member
-       to direct references.
-       (struct private_file_handle) Renamed file_handle.
-       Add next, open_cnt, type, open_mode, aux members.
-       (struct file_handle_list) Removed.
-       (extern var inline_file) Removed.
-       (static var file_handles) Changed from file_handle_list * to
-       file_handle *.
-       (create_file_handle) Initialize new members.
-       (fh_close_handle) Removed.
-       (mode_name) New function.
-       (fh_open) New function.
-       (fh_close) New function.
-       (fh_parse_file_handle) Renamed fh_parse().
-
-       * glob.c: (init_glob) Remove fh_init_files() call.
-       
-       * aggregate.c: use sfm_writer.
-       (create_sysfile) Removed because the new interface is simpler.
-       
-       * apply-dict.c: Use sfm_reader.
-
-       * data-list.c: Use dfm_reader.
-
-       * file-type.c: Use dfm_reader.
-
-       * get.c: Use sfm_reader, sfm_writer, pfm_reader, pfm_writer.
-
-       * inpt-pgm.c: Use dfm_reader.
-
-       * print.c: Use dfm_writer.
-
-       * sysfile-info: Use sfm_reader.
-
-       * dfm-read.c: Adopt new file handle infrastructure.
-
-       * dfm-write.c: Ditto.
-
-       * pfm-read.c: Ditto.
-       
-       * pfm-write.c: Ditto.
-
-       * sfm-read.c: Ditto.
-
-       * sfm-write.c: Ditto.
-       
-Mon Nov 15 00:31:44 2004  Ben Pfaff  <blp@gnu.org>
-
-       Break dictionary functions into separate header file.
-
-       * dictionary.h: New file.
-
-       * var.h: Moved dict_*() functions to dictionary.h.
-
-Mon Nov 15 00:30:33 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of procedure-specific union in struct variable, using
-       instead a void * pointer and a destructor function.
-
-       Most related changes are only worth brief summaries.
-
-       * crosstabs.q: Fix includes.  Use new struct var_range in lieu of
-       old p.crs member in struct variable.
-       
-       * frequencies.q: Fix includes.  Use new struct var_freqs in lieu
-       of old p.frq member in struct variable.
-
-       * histogram.c: (draw_histogram) Takes new freq_tab arg because
-       it's no longer possible to grab this from var->p.frq.
-
-       * piechart.c: (draw_piechart) Ditto.
-
-       * group.c: (group_proc_get) New function.
-
-       * levene.c: Use group_proc_get() in lieu of old p.grp_data member
-       in struct variable.
-
-       * oneway.q: Ditto.
-
-       * t-test.q: Ditto.
-
-       * main.c: (execute_command) Clear aux data in default_dict after
-       each command.  (It's debatable whether this should be done.)
-
-       * matrix-data.c: Use new struct mxd_var in lieu of old p.mxd
-       member in struct variable.
-
-       * means.q: Get rid of integer mode, which is not included in
-       recent SPSS and was the only code that wanted per-variable private
-       data.
-
-       * var.h: (struct crosstab_proc) Removed.
-       (struct frequencies_proc) Removed.
-       (struct list_proc) Removed.
-       (struct get_proc) Removed.
-       (struct means_proc) Removed.
-       (struct matrix_data_proc) Removed.
-       (struct match_files_proc) Removed.
-       (lots of enums) Removed.
-       (struct variable) Removed members `p', `get'.  Add member
-       `aux_dtor'.
-
-       * vars-atr.c: (var_attach_aux) New function.
-       (var_detach_aux) New function.
-       (var_clear_aux) New function.
-       (var_dtor_free) New function.
-       (discard_variables) Use NULL instead of inline_file.
-
-Fri Nov 12 10:07:11 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * value-labs.c  Fixed the implmentation of value_to_string, so 
-       that it properly handles alpha values.
-
-       * oneway.q  Changed instances where labels were being probed manually, 
-       to use the canonical {var,value}_to_string functions
-
-Thu Nov 11 21:01:31 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q cartesian.c chart.[ch]   Added normal and detrended normal
-       plots.  Changed the API of the cartesian plot to be a much lower level
-       thing.
-
-Sun Nov  7 17:25:04 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q Added some of the parametric calculations
-
-       * factor_stats.[ch]  Created
-       
-Sat Nov  6 21:24:31 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q  Changed the definition of factors to be a composite, and
-       dealt with the consequences.
-
-Sat Nov  6 20:40:38 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q Fixed problem where examine wasn't dealing properly with 
-       splits
-
-Sat Nov  6 14:49:47 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * oneway.q Fixed problem where oneway wasn't dealing properly with 
-       splits
-
-Thu Nov  4 11:09:01 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * q2c.c examine.q  Fixed a bug (feature?) whereby arrays in the
-       command which had settings didn't get the appropriate code
-       generated.
-
-       * val.h value-labels.[ch] var-labs.c Added v*to_string functions
-       to convert variables/values to strings.
-
-       * examine.q  Added framework for the EXAMINE command.
-
-Mon Nov  1 12:46:17 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * q2c.c frequencies.q set.q t-test.q  Fixed the q2c parsing of DBL 
-       subcommand types.  Changed frequencies.q to use it rather then the 
-       custom parser.  Dealt with the consequences.  Added a test for NTILES
-       subcommand of frequencies.
-
-Sat Oct 30 09:16:29 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * oneway.q   Fixed up the behaviour when given missing values
-
-       * levene.c oneway.q Fixed a buglet with the levene statistic and
-       incorporated the levene test into the oneway command.
-
-        * group.h  t-test.q  Moved the CMP_EQ and CMP_LE symbols out of 
-       global scope, since they're only relevant to T-TEST
-
-Fri Oct 29 17:39:03 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-        * group.c group.h group_proc.h levene.c oneway.q t-test.q
-
-       Made the t-test more consistent
-       with the way it handles groups.  That is, it now uses a hash instead
-       of an array of 2.  Also, made the levene.c file independent of the 
-       implementation of the t-test.  So now levene should be fine for both
-       t-test and anova.
-
-       * Added an oneway.q file for one way anova
-
-Wed Jun  2 22:08:02 2004  Ben Pfaff  <blp@gnu.org>
-
-       * descript.c: (cmd_descriptives) Remove harmless but bogus test in
-       STATISTICS parsing.
-
-Mon May 31 20:45:24 2004  Ben Pfaff  <blp@gnu.org>
-
-       Fix memory leaks.
-
-       * data-list.c: (cmd_data_list) Free dls->delims on lossage.
-       (data_list_trns_free) Free dls->delims.
-
-       * t-test.q: (tts_custom_pairs) Free vars.
-       (ssbox_one_sample_init) Fix tab_vline() argument.
-       (ssbox_independent_samples_init) Ditto.
-       (trbox_paired_init) Ditto.
-       (trbox_one_sample_init) Ditto.
-
-Mon May 31 17:19:27 2004  Ben Pfaff  <blp@gnu.org>
-
-       Generalize casefiles to the extent that we can use them for
-       sorting and other kinds of data transformations.  Change cases to
-       be copy-on-write to improve memory efficiency in common cases.
-       Every access to a member of a `struct ccase' was changed to be a
-       call to a case_*() function, especially case_data(), case_num(),
-       case_str(), or case_data_rw().  Many instances of a local variable
-       named "case_num" were changed to "case_idx" as a consequence.
-       Many `struct ccase *' were changed to actual `struct ccase'
-       because of copying semantics of cases.  In several places there
-       was a choice between updating debug code to work with the new ADTs
-       or just deleting it because it was useless; I chose to delete it.
-       * Makefile.am: (pspp_SOURCES) Add case.c, case.h.
-
-       * case.c: New file.
-
-       * case.h: New file.
-
-       * aggregate.c: (struct agr_proc) Change type of `sort' to
-       sort_criteria *.  Add `break_vars', `break_var_cnt' members.
-       Rename `vars' to `agr_vars', all references updated.  Change
-       `agr_case' to type `struct ccase'.
-       (cmd_aggregate) Deal with new members.  Use case_create(),
-       sort_active_file_in_place(), sort_active_file_to_casefile().
-       (agr_destroy) Deal with new members.
-       (aggregate_single_case) Ditto.
-       (dump_aggregate_info) Ditto.
-       (initialize_aggregate_info) Ditto.
-       (agr_to_active_file) Ditto.
-       (presorted_agr_to_sysfile) Ditto.
-       (sort_agr_to_sysfile) Removed.
-
-       * alloc.c: (out_of_memory) Make non-static.
-
-       * alloc.h: Prototype out_of_memory().
-
-       * casefile.c: Switched from a linked list in-memory representation
-       to a two-level array-style representation.  The linked list was
-       appropriate when we could stick a header onto cases, but that's no
-       longer the case.  Also, the two-level array will allow for random
-       in-memory access in case that's ever wanted.  Also added the
-       concept of a `destructive casereader', one that destroys cases in
-       the underlying casefile as they are read out.
-       (macro CASES_PER_BLOCK) New macro.
-       (struct casefile) New members `value_cnt', `case_list_size',
-       `case_acct_size', `being_destroyed', `cases'.  Removed `head',
-       `tail'.
-       (struct casereader) Removed `cur'.  Added `destructive', `c'.
-       (global var casefiles) Made static.
-       (static var case_bytes) New var.
-       (casefile_create) Takes a value count, not a case size in bytes,
-       to conform to the case interface.  All callers updated.  Deal with
-       new and removed members.
-       (casefile_destroy) Deal with new and removed members.
-       (casefile_sleep) New function.
-       (casefile_get_case_size) Removed.
-       (casefile_get_value_cnt) New function.
-       (casefile_append) Rewritten to deal with new and removed members.
-       (casefile_append_xfer) New function.
-       (write_case_to_disk) Use case_serialize().
-       (call_posix_fadvise) Removed because posix_fadvise64 segfaults.
-       Couldn't figure out why.
-       (casefile_to_disk) Don't call call_posix_fadvise.  Rewritten to
-       deal with new and removed members.
-       (merge) Removed.
-       (merge_sort) Removed.
-       (casefile_sort) Removed.
-       (casefile_get_reader) Deal with new and removed members.
-       (casefile_get_destructive_reader) New function.
-       (reader_open_file) Make code more readable.  Create case for
-       reader.
-       (casereader_get_casefile) New function.
-       (casereader_read) Deal with new and removed members.  Now returns
-       a copy of the case, so that the caller is responsible for
-       destroying the returned case.
-       (casereader_read_xfer) New function.
-       (casereader_destroy) Destroy reader's case.
-       (test_casefile) Second arg is now a value count, all callers
-       updated.  Now tests destructive readers too.
-       (get_random_case) Deal with new case ADT.
-       (write_random_case) Ditto.
-       (read_and_verify_random_case) Ditto.
-
-       * crosstabs.q: Remove debug code.
-
-       * descript.q: (calc_descriptives) Deal with new case, casefile
-       ADTs.
-
-       * dfm.c: (cmd_begin_data) There's no storage_source_class anymore.
-
-       * do-if.c: Remove unneeded header inclusion.
-
-       * expr-prs.c: Remove debug code.
-
-       * exprP.h: Remove debug code.
-
-       * flip.c: (flip_file) Use fseeko() if available.
-
-       * formats.c: Remove debug code.
-
-       * get.c: Remove debug code.
-       (struct mtf_file) Change `input' from `union value *' to `struct
-       ccase', all references updated.
-
-       * levene.c: (levene) Deal with new case, casefile ADTs.
-
-       * list.q: Remove debug code.
-
-       * loop.c: Remove debug code.
-       
-       * matrix-data.c: Remove debug code.
-
-       * means.q: Remove debug code.
-
-       * mis-val.c: Remove debug code.
-
-       * pfm-read.c: Remove debug code.
-       (pfm_read_code) Change second arg from `union value *' to `struct
-       ccase *', all references updated.
-
-       * recode.c: (string_to_long) Make first arg const.
-       (convert_to_double) Ditto.
-
-       * repeat.c: Remove debug code.
-
-       * sample.c: Remove debug code.
-
-       * sfm-read.c: Remove debug code.
-       (sfm_read_case) Change second arg from `union value *' to `struct
-       ccase *'.
-
-       * sort.c: Redone in terms of casefiles.
-       (enum sort_direction) Moved here from sort.h.
-       (struct sort_criterion) New structure.
-       (struct sort_criteria) New structure.
-       (cmd_sort_cases) Rewritten.
-       (prepare_to_sort_active_file) New function.
-       (sort_active_file_in_place) New function.
-       (sort_active_file_to_casefile) New function.
-       (parse_sort) Renamed sort_parse_criteria(), rewritten & interface
-       changed, all callers updated.
-       (destroy_sort_cases_pgm) Renamed sort_destroy_criteria(),
-       rewritten & interface changed, all callers updated.
-       (sort_cases) Renamed sort_execute(), rewritten & interface
-       changed, all callers updated.
-       (struct internal_sort) Removed.
-       (do_internal_sort) Rewritten, interface changed.
-       (destroy_internal_sort) Removed.
-       (compare_case_dblptrs) Use sort_criteria instead of sort_case_pgm.
-       (struct initial_run) Removed; an initial run is now just a
-       casefile.
-       (compare_initial_runs) Rewritten.
-       (struct external_sort) Changed almost completely.
-       (do_external_sort) Rewritten, interface changed.
-       (destroy_external_sort) Rewritten.
-       [HAVE_MKDTEMP] (make_temp_dir) Removed.
-       [!HAVE_MKDTEMP] (do_mkdir) Removed.
-       [!HAVE_MKDTEMP] (make_temp_dir) Removed.
-       (init_external_sort) Removed.
-       (simulate_error) Removed.
-       (rmdir_temp_dir) Removed.
-       (get_temp_file_name) Removed.
-       (open_temp_file) Removed.
-       (close_temp_file) Removed.
-       (remove_temp_file) Removed.
-       (write_temp_file) Removed.
-       (read_temp_file) Removed.
-       (struct record_run) Change `record' from `struct case_lit *' to
-       `struct ccase'.
-       (struct initial_run_state) Remove `idx_to_fv', `free_list',
-       `file_idx', `output_file'.  Add `run', casefile'.  Change
-       `last_output' from `struct case_list *' to `struct ccase'.
-       (write_initial_runs) Change interface, rewrite.
-       (sort_sink_write) Renamed process_case(), changed interfaced,
-       rewrote.
-       (destroy_initial_run_state) Rewritten.
-       (allocate_cases) Rewritten.
-       (compare_record) Interface changed, rewritten.
-       (start_run) Rewritten.
-       (end_run) Rewritten.
-       (output_record) Rewritten.
-       (grab_case) Removed.
-       (release_case) Removed.
-       (struct merge_case) Change `cases' from double pointer to single
-       pointer.
-       (merge) Deal with new case and casefile ADTs.
-       (struct run) Removed.
-       (merge_once) Rewritten, interface changed.
-       (fill_run_buffer) Removed.
-       (sort_sink_make_source) Removed.
-       (sort_sink_class) Removed.
-       (struct sort_source_aux) Removed.
-       (sort_source_read_helper) Removed.
-       (sort_source_read) Removed.
-       (read_sort_output) Removed.
-       (read_internal_sort_output) Removed.
-       (read_external_sort_output) Removed.
-       (sort_source_destroy) Removed.
-       (sort_source_class) Removed.
-
-       * sort.h: (struct sort_cases_pgm) Removed.
-       (enum sort_direction) Moved to sort.c.
-
-       * t-test.q: (calculate) Deal with new case, casefile ADTs.
-
-       * tab.c: Remove debug code.
-
-       * var-labs.c: Remove debug code.
-
-       * var.h: (struct ccase) Removed.
-       (struct case_list) Removed.
-
-       * vars-atr.c: (discard_variables) Use free_case_source().
-
-       * vars-prs.c: (parse_vs_variable) Make arg const.
-       (parse_dict_variable) Ditto.
-       (parse_variables) Make struct dictionary * arg const.
-       (parse_var_set_vars) Make struct var_set * arg const.
-       (struct var_set) Add const to some of the function pointers' args.
-       (var_set_get_cnt) Make arg const.
-       (var_set_get_var) Make first arg const.
-       (var_set_lookup_var) Make first arg const.
-       (dict_var_set_get_cnt) Make arg const.
-       (dict_var_set_get_var) Make first arg const.
-       (dict_var_set_lookup_var) Make first arg const.
-       (var_set_create_from_dict) Make arg const.  Add cast to aux
-       assignment.
-       (struct array_var_set) Add const to var member.
-       (array_var_set_get_cnt) Make arg const.
-       (array_var_set_get_var) Make first arg const.
-       (array_var_set_lookup_var) Make first arg const.
-       (var_set_create_from_array) Make first arg const.  Insert cast.
-
-       * vfm.c: (struct write_case_data) Change trns_case, sink_case
-       members from `struct ccase *' to `struct ccase'.
-       (static var lag_queue) Change from double to single pointer.
-       (procedure) Optimize trivial case.
-       (internal_procedure) Deal with changed case, case_source ADTs.
-       (create_trns_case) Changed interface, rewrote.
-       (open_active_interface) Initialize modified lag queue.
-       (write_case) Deal with changed case ADT.
-       (lag_case) Deal with modified lag queue.
-       (close_active_file) Destroy modified lag queue.
-       Deal with changed case_source, case_sink ADTs.
-       (destroy_storage_stream_info) Make null arg into no-op.
-       (storage_sink_make_source) Set aux in created source.
-       (storage_source_read) Deal with changed case, casefile ADTs.
-       (storage_source_create) New function.
-       (lagged_case) Rewrite.
-       (free_case_source) New function.
-       (free_case_sink) Rewrite.
-       (struct split_aux_data) Changed prev_case from `struct ccase *' to
-       `struct ccase'.
-       (procedure_with_splits) Deal with changed prev_case.
-       (procedure_with_splits_callback) Ditto.
-       (multipass_split_aux_data) Changed prev_case from `struct ccase *' to
-       `struct ccase'.
-       (multipass_procedure_with_splits) Deal with changed prev_case.
-       (multipass_split_callback) Ditto.
-       
-       
-Mon May 31 17:19:06 2004  Ben Pfaff  <blp@gnu.org>
-
-       The workspace idea didn't work out.
-
-       * Makefile.am: (pspp_SOURCES) Remove workspace.c, workspace.h.
-       
-       * workspace.c: Removed.
-
-       * workspace.h: Removed.
-
-Sun May 30 18:35:19 2004  Ben Pfaff  <blp@gnu.org>
-
-       Fully implement arbitrary delimiters on DATA LIST, extending the
-       half implementation that was already there.
-
-       * data-list.c: (struct data_list_pgm) Remove `delim', add
-       `delims', `delim_cnt'.
-       (cmd_data_list) Initialize new members.  Parse delimiters and
-       clean up code a bit.
-       (cut_field) Extract fields with arbitrary delimiters.  Also, fix
-       handling of leading commas.
-       (read_from_data_list_fixed) Expand tabs.  Adapt to new DFM
-       interfaces.
-       (read_from_data_list_free) Adapt to new DFM interfaces.
-       (read_from_data_list_list) Ditto.
-       (repeating_data_trns_proc) Ditto.
-
-       * dfm.c: Split up reader and writer into separate code, because
-       they do different things.  Use struct string instead of explicit
-       allocation code, for clarity.
-       (enum dfm_reader_flags) New enum.
-       (struct dfm_fhuser_ext) Removed.
-       (struct dfm_reader_ext) New.
-       (get_reader) New function, used by just about all the reader
-       functions.
-       (dfm_close) Removed.
-       (close_reader) New function.
-       (dfm_open_for_reading) Rewrite initialization of dfm_fhuser_ext.
-       (dfm_open_for_writing) Ditto.
-       (macro force_line_buffer_expansion) Removed.
-       (count_tabs) Removed.
-       (tabs_to_spaces) Removed.
-       (read_record) Deal with new dfm_reader_ext.  Use struct string
-       functions.  Don't convert tabs to spaces.
-       (dfm_eof) New function.
-       (dfm_get_record) Changed interface, rewrote.
-       (dfm_expand_tabs) New function.
-       (dfm_fwd_record) Renamed dfm_forward_record(), updated to new
-       dfm_reader_ext, rewritten.
-       (dfm_bkwd_record) Renamed dfm_reread_record(), updated to new
-       dfm_reader_ext, rewritten.
-       (dfm_set_record) Removed in favor of dfm_forward_columns().
-       (dfm_forward_columns) New function.
-       (dfm_get_cur_col) Renamed dfm_column_start, updated to new
-       dfm_reader_ext, rewritten.
-       (static var dfm_r_class) Use close_reader for the destructor.
-       (struct dfm_writer_ext) New.
-       (dfm_put_record) Updated to new dfm_writer_ext, rewritten.  Uses
-       bounce buffer now instead of local allocation.
-       (close_writer) New function.
-       (static var dfm_writer_ext) Use close_writer for destructor.
-       (cmd_begin_data) Adapt to new dfm_reader_ext.
-
-       * file-handle.q: Add support for per-file tab width.
-       (struct private_file_handle) Add tab_width member.
-       (q2c specifications) Add tabwidth subcommand.
-       (cmd_file_handle) Put parsed tab width into private_file_handle.
-       (create_file_handle) Set default tab width.
-       (handle_get_tab_width) New function.
-
-       * file-type.c: (file_type_source_read) Adapt to new DFM interface.
-
-       * inpt-pgm.c: (reread_trns_proc) Ditto.
-
-       * matrix-data.c: (context) Ditto.
-       (another_token) Ditto.
-       (mget_token) Ditto.
-       (force_eol) Ditto.
-
-Sun May 30 18:33:59 2004  Ben Pfaff  <blp@gnu.org>
-
-       * casefile.c: (casefile_destroy) Fix memory leak by freeing
-       cf->filename.
-       (casereader_destroy) Don't close file descriptor -1.
-
-       * recode.c: (cmd_recode) Fix memory leak.
-
-       * set.q: (q2c specifications) Fix typo in user message.
-
-       * str.c: (st_bare_pad_len_copy) Change memcpy to memmove to avoid
-       undefined behavior for overlapping arguments.
-
-Sun May 30 18:31:48 2004  Ben Pfaff  <blp@gnu.org>
-
-       * casefile.c: valgrind doesn't implement posix_fadvise() yet, so
-       don't call it when we're running under valgrind.
-       (call_posix_fadvise) New function.
-       (casefile_to_disk) Use call_posix_fadvise().
-       (reader_open_file) Ditto.
-       
-Sun May 30 18:20:12 2004  Ben Pfaff  <blp@gnu.org>
-
-       Update our string ADTs, struct string and struct len_string.  Get
-       rid of pool support, which was largely unused.  Rename lots of
-       functions to have more obvious or consistent names.
-       
-       * ascii.c: Get rid of ascii_pool.  It was only used for string
-       allocations.
-       (ascii_open_global) Don't create ascii_pool.
-       (ascii_close_driver) Don't destroy ascii_pool.
-       (ascii_postopen_driver) Don't use pool.
-       (ascii_close_driver) Destroy strings manually.
-
-       * str.c: (ds_create) Remove pool argument, all references updated.
-       (ds_init) Ditto.
-       (ds_replace) Remove pool support, make more efficient when we
-       don't need to reallocate.
-       (ds_destroy) Remove pool support.
-       (ds_rpad) New function.
-       (ds_size) Renamed ds_capacity(), all references updated.
-       (ds_value) Renamed ds_c_str(), all references updated.
-       (ds_concat) Renamed ds_puts(), all references updated.
-       (ds_concat_buffer) Renamed ds_concat(), all references updated.
-       (ds_putchar) Renamed ds_putc(), all references updated.
-       (ds_getline) Renamed ds_gets(), all references updated.
-       (ls_create) Remove pool argument, all references updated.
-       (ls_create_buffer) Ditto.
-       (ls_destroy) Removed pool support.
-       (ls_value) Renamed ls_c_str(), all references updated.
-
-       * str.h: (ls_length) [__GNUC__] Add inline version.
-       (ls_c_str) [__GNUC__] Add inline version.
-       (ls_end) [__GNUC__] Add inline version.
-       (struct string) Remove pool member.  Rename `size' to `capacity',
-       all references updated.
-
-       * tab.c: (text_format) Instead of using pool argument to
-       ls_create_buffer(), call pool_register() on allocated data.
-
-Mon Apr 26 22:40:07 2004  Ben Pfaff  <blp@gnu.org>
-
-       We're abusing the current ASCII driver by telling it to allocate a
-       9999-line, 9999-character page in the tests.  This causes some
-       systems to curl up and die because it allocates 20 MB of
-       contiguous RAM.  This change alleviates at least part of the
-       problem.  It is mostly a stop-gap until the new output system is
-       ready.
-       
-       * ascii.c: (struct line) New structure.
-       (struct ascii_driver_ext) Remove `page', `page_size', `line_len',
-       `line_len_size', `n_output' members.  Add `lines', `lines_cap'.
-       (ascii_preopen_driver) Initialize new members, not old ones.
-       (ascii_close_driver) Destroy new members, not old ones.
-       (ascii_open_page) Allocate new members, not old ones.
-       (expand_line) Allocate room in line.
-       (draw_line) Use new members.
-       (ascii_line_horz) Ditto.
-       (ascii_line_vert) Ditto.
-       (ascii_line_intersection) Ditto.
-       (text_draw) Ditto.
-       (output_lines) Ditto.
-       (ascii_close_page) Ditto.
-
-Sun Apr 25 23:40:15 2004  Ben Pfaff  <blp@gnu.org>
-
-       * matrix.c: Dead code.  Removed.
-
-       * matrix.h: Dead code.  Removed.
-
-Fri Apr 16 23:59:51 2004  Ben Pfaff  <blp@gnu.org>
-
-       Contrary to what I'd always understood, there is an efficient
-       algorithm for deletion from a hash table populated via linear
-       probing.  This change implements it.
-       
-       * hash.c: (hsh_rehash) Probe in increasing order.
-       (hsh_probe) Ditto.
-       (locate_matching_entry) Ditto.
-       (hsh_delete) Use Knuth's Algorithm 6.4R for deletion.
-
-Tue Apr 13 19:24:15 2004  Ben Pfaff  <blp@gnu.org>
-
-       * moments.c (calc_moments): Adjust calculation of kurtosis to
-       avoid subtracting huge numbers from huge numbers, on Michael
-       Kiefte's advice.
-
-Sun Apr 11 14:22:12 2004  Ben Pfaff  <blp@gnu.org>
-
-       Rework moments routines for improved numerical stability based on
-       Michael Kiefte's advice.  Any bugs or remaining numerical problems
-       are still mine though.
-
-       There is now a struct moments1 for use with one-pass moments.  It
-       uses a provisional means algorithm as an attempt to improve
-       accuracy of higher moments.  The older struct moments now only
-       handles two-pass moments.
-       
-       * aggregate.c: Use moments1 instead moments.
-
-       * descript.c: Revert previous change, which is no longer needed
-       due to the moments revision.
-
-       * moments.c: (calc_moments) New function for calculating variance,
-       skewness, kurtosis.
-       (moments_pass_one) Only accumulate weights bigger than zero.
-       (moments_calculate) Allow calculating the mean on pass one, others
-       require pass two.  Implement in terms of calc_moments().
-       (struct moments1) New structure.
-       (init_moments1) New function.
-       (moments1_clear) Ditto.
-       (moments1_create) Ditto.
-       (moments1_add) Ditto.
-       (moments1_calculate) Ditto.
-       (moments1_destroy) Ditto.
-       (cmd_debug_moments) Deal with `struct moments' or `struct
-       moments1' as requested by user.
-
-Sun Apr 11 14:21:55 2004  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am (pspp_SOURCES): Remove debug.c.
-
-       * debug.c: Removed.  It was empty anyway.
-
-Fri Apr  9 20:04:49 2004  Ben Pfaff  <blp@gnu.org>
-
-       * descript.c (calc_descriptives): Fix assert failure when only
-       MOMENT_MEAN is needed.
-
-2004-04-09  Michael Kiefte  <mkiefte@dal.ca>
-
-       * descript.c: 
-
-       fixed problem with parsing in match_statistic() causing
-       "DESCRIPTIVE STAT=MEAN." to barf.
-
-       "MEAN" is now default if "SORT" given without specification.
-
-       Fixed infinite loop with "DESCRIPT GIBBERISH=ALL."  Parsing is
-       generally less forgiving of syntax errors: better to have it do
-       nothing and type it in again then to not know what it actually did
-       instead.  
-
-       z-score transformation now checks score for user-missing values
-       and checks std_dev for SYSMIS.
-
-2004-04-06  Michael Kiefte  <mkiefte@dal.ca>
-
-       * aggregate.c, crosstabs.q, descript.c, dictionary.c, frequencies.q, levene.c, t-test.q, var.h: 
-       Changed dict_get_case_weight() to accept an additional int * flag
-       to complain about system-missing, user-missing, zero, or negative
-       weights and updated existing functions to pass int * to
-       dict_get_case_weight().
-
-2004-04-05  jmd  <jmd@gnu.org>
-
-       * main.c: Fixed configuration problems with gsl
-
-       * t-test.q: Fixed some problems encountered when compiling under Cygwin
-
-2004-04-03  blp  <blp@gnu.org>
-
-       * lexer.c, ChangeLog:
-       Fix infinite loop on comment at end of file, add test.
-
-2004-04-03  jmd  <jmd@gnu.org>
-
-       * settings.h, var.h, ChangeLog, Makefile.am, cmdline.c, command.c, command.h, error.h, filename.c, frequencies.q, lexer.h, main.c, q2c.c, set.q:
-       Fixed the calculation of percentiles and added --syntax and --algorithm options
-
-Sat Apr  3 11:43:37 2004  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c: (lex_skip_comment) Handle end-of-file correctly (I
-       hope).
-
-Sat Apr  3 15:00:18 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-        * frequencies.q:  Fixed the calculation of percentiles
-
-       * Makefile.am:  Added the --ansi flag and dealt with the
-       consequences.  Added some entries to PSPP_sources so that
-       make distcheck would pass
-
-       * cmdline.c:   Added the --syntax and --algorithm options
-
-       * q2c.c:  Added an implicit /ALGORITHM subcommand to everything.
-
-Fri Apr  2 11:25:22 WAST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q, levene.c, levene.h  Converted t-test (incl levene) to 
-       use the new multipass_split_... mechanism.
-
-Wed Mar 31 22:36:22 2004  Ben Pfaff  <blp@gnu.org>
-
-       * frequencies.q: (calc_stats) Use moments data structure and
-       calc_seskew(), calc_sekurt() functions.
-
-       * set.q main.c settings.h Added support for --syntax and --algorithm 
-       options
-
-Tue Mar 30 22:04:19 2004  Ben Pfaff  <blp@gnu.org>
-
-       * vfm.c: Had to get last call to multipass_split_output() inside
-       open_active_file()/close_active_file() pairing, so introduce new
-       function.
-       (internal_procedure) Move procedure() code here, except for calls
-       to open_active_file() and close_active_file().
-       (procedure) Wrap open_active_file() and close_active_file() around
-       internal_procedure().
-       (multipass_procedure_with_splits) Wrap open_active_file() and
-       close_active_file() around internal_procedure().
-
-Tue Mar 30 22:01:57 2004  Ben Pfaff  <blp@gnu.org>
-
-       * descript.c: (cmd_descriptives) Free `vars' to avoid memory leak.
-
-Mon Mar 29 16:26:40 2004  Ben Pfaff  <blp@gnu.org>
-
-       * debug.c: Removed.  Moved cmd_debug_evaluate() into expr-evl.c.
-
-       * expr-evl.c: (cmd_debug_evaluate) Moved here from debug.c.
-
-Mon Mar 29 16:03:08 2004  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c: By default turn off some of the more expensive
-       assertions.
-       (expensive_assert) New macro which expands to assert if
-       EXTRA_CHECKS is defined, to nothing otherwise.
-       (unique) Use expensive_assert().
-       (binary_search) Ditto.
-       (push_heap) Ditto.
-       (pop_heap) Ditto.
-       (make_heap) Ditto.
-       (sort_heap) Ditto.
-
-       * command.c: (conflicting_3char_prefixes) Words that are the same
-       don't cause conflicts when they are abbreviated to the first three
-       letters.
-
-       * expr-evl.c: (CONCAT_func) Fix memory leak by incrementing struct
-       nonterm_node's n earlier.
-       (generic_str_func) Ditto.
-       
-Mon Mar 29 15:32:17 2004  Ben Pfaff  <blp@gnu.org>
-
-       Add support for multipass procedures.  Rewrite DESCRIPTIVES to
-       test multipass support, take advantage of new moments
-       calculation, and to not be such crappy code.  Get rid of q2c
-       processing for DESCRIPTIVES.
-
-       * vfm.c: (struct multipass_split_aux_data) New structure.
-       (multipass_procedure_with_splits) New function.
-       (multipass_split_callback) New function.
-       (multipass_split_output) New function.
-       * descript.q: Removed.
-
-       * descript.c: New file.
-
-       * var.h: Removed descriptives enums.
-       (struct descriptives_proc) Removed.
-       (struct variable) Removed p.dsc.
-
-       * Makefile.am: (q_sources_c) Remove descript.c.
-       (q_sources_q) Removed descript.q.
-       
-Mon Mar 29 15:31:55 2004  Ben Pfaff  <blp@gnu.org>
-
-       New manager for keeping track of used workspace.
-       
-       * workspace.c: New file.
-
-       * workspace.h: New file.
-
-       * Makefile.am: (pspp_SOURCES) Add workspace.c, workspace.h.
-
-       * sort.c: (do_internal_sort) Use workspace_malloc().
-       (destroy_internal_sort) Use workspace_free().
-
-Mon Mar 29 15:31:08 2004  Ben Pfaff  <blp@gnu.org>
-
-       New `struct casefile' for managing sets of cases.
-
-       * casefile.c: New file.
-
-       * casefile.h: New file.
-
-       * command.def: Add DEBUG CASEFILE command.
-
-       * Makefile.am: (pspp_SOURCES) Add casefile.c, casefile.h.
-
-       * sort.c: (sort_cases) Move logic for sending storage file to disk
-       into do_external_sort().
-       (struct internal_sort) Use an array of ccase pointers instead of a
-       case_list.
-       (do_internal_sort) Rewrite to handle casefiles.
-       (compare_case_list) Removed.
-       (compare_cases) New function.
-       (compare_case_dblptrs) New function.
-       (read_internal_sort_output) Deal with new struct internal_sort.
-
-       * vfm.c: (static var workspace_overflow) Removed.
-       (struct storage_stream_info) Removed all the members.  Added
-       struct casefile * member.
-       (storage_sink_open) Use casefile.
-       (open_storage_file) Removed.
-       (write_storage_file) Removed.
-       (storage_to_disk) Removed.
-       (destroy_storage_stream_info) Use casefile.
-       (storage_sink_write) Use casefile.
-       (storage_sink_make_source) Use casefile.
-       (storage_source_count) Use casefile.
-       (storage_source_read) Use casefile.
-       (storage_source_on_disk) Removed.
-       (storage_source_get_cases) Removed.
-       (storage_source_set_cases) Removed.
-       (storage_source_get_casefile) New function.
-       
-Mon Mar 29 15:30:09 2004  Ben Pfaff  <blp@gnu.org>
-
-       New `struct moments' for calculating moments.
-
-       * stats.c: Removed.
-
-       * stats.h: Removed.
-
-       * moments.c: New file.
-
-       * moments.h: New file.
-
-       * command.def: Add DEBUG MOMENTS command.
-
-       * Makefile.am: (pspp_SOURCES) Add moments.c, moments.h.  Remove
-       stats.c, stats.h.
-
-       * aggregate.c: Modify AGGREGATE to use the new moments
-       calculation, even if not in such a great way.
-       (struct agr_var) Add `moments' member.
-       (parse_aggregate_functions) Set `moments' member to null.
-       (agr_destroy) Destroy `moments' member.
-       (accumulate_aggregate_info) Use `moments' for standard deviation.
-       (dump_aggregate_info) Ditto.
-       (initialize_aggregate_info) Create or clear `moments'.
-
-       * misc.h: Add pow2(), pow3(), pow4() functions in place of sqr(),
-       cube(), pow4() that were in stats.h.  All references updated.
-
-       * crosstabs.q: stats.h had chi-square significance functions.  Use
-       GSL instead.
-       (display_chisq) Use gsl_cdf_chisq_Q() instead of chisq_sig().
-
-       * expr-evl.c: (expr_evaluate) Use moments_of_values() for
-       OP_CFVAR, OP_MEAN, OP_SD, OP_VARIANCE.
-               
-Fri Mar 26 14:21:23 2004  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c: (dict_compact_values) Compacted values need to
-       start off from 0.
-
-Fri Mar 26 00:54:57 2004  Ben Pfaff  <blp@gnu.org>
-
-       * var-labs.c: (cmd_variable_labels) For compatibility, don't allow
-       `/' at start.  Check return value of parse_variables() for error
-       return.
-
-Fri Mar 26 00:19:27 2004  Ben Pfaff  <blp@gnu.org>
-
-       Revamp expressions: make the code a little nicer, and fix bugs
-       found in testing.
-       
-       * expr-evl.c: (expr_evaluate) Make expression argument const.
-       Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL.
-       OP_POW is missing for arg 2 <= 0.  OP_LOG is natural log, not
-       base-10 log.  Fix OP_ANY, OP_ANY_STRING, OP_RANGE, OP_RANGE_STRING
-       off-by-ones.  Add OP_MAX_STRING, OP_MIN_STRING.  Fix OP_TIME_HMS,
-       OP_DATE_WKYR boundary conditions.  Add OP_CTIME_DAYS,
-       OP_CTIME_HOURS, OP_CTIME_MINUTES, OP_CTIME_DAYS, OP_CTIME_SECONDS.
-       Support OP_INDEX_2, OP_INDEX_3, OP_RINDEX_2, OP_RINDEX_3 instead
-       of OP_INDEX, OP_INDEX_OPT, OP_RINDEX, OP_RINDEX_OPT.  Merge
-       OP_LPAD_OPT into OP_LPAD, OP_RPAD_OPT into OP_RPAD, OP_LTRIM_OPT
-       into OP_LTRIM, OP_RTRIM_OPT into OP_RTRIM, OP_NUMBER_OPT into
-       OP_NUMBER.  Fix OP_RTRIM fragility.  Support OP_SUBSTR_2,
-       OP_SUBSTR_3 instead of OP_SUBSTR, OP_SUBSTR_OPT.  Remove OP_INV.
-       Simplify OP_SYSMIS.  Remove OP_STR_MIS.
-
-       * expr-opt.c: (optimize_expression) Rewrite.
-       (macro n0) Removed.
-       (macro n1) Removed.
-       (macro n2) Removed.
-       (macro s0) Removed.
-       (macro s0l) Removed.
-       (macro s1) Removed.
-       (macro s1l) Removed.
-       (macro s2) Removed.
-       (macro s2l) Removed.
-       (macro s) Removed.
-       (macro sl) Removed.
-       (eq_num_con) New function.
-       (optimize_tree) New function.
-       (macro rnc) Removed.
-       (macro frnc) Removed.
-       (str_search) Add const to string params.
-       (str_rsearch) Ditto.
-       (evaluate_tree_no_missing) Renamed from evaluate_tree.  Add num[],
-       str[], str_len[] locals to substitute for most of removed macros.
-       Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL.
-       Removed support for missing values because we're never called with
-       missing values.  Use set_number() or set_number_errno() instead of
-       rnc or frnc.  Removed any stuff that caused trouble in testing.
-       We can re-add it later if it really slows anything.  Fix some
-       random problems.
-       (evaluate_tree_with_missing) Not yet supported.  To be added later
-       if it's important.
-       (repl_num_con) Removed.
-       (collapse_node) New function.
-       (force_repl_num_con) Removed.
-       (set_number) New function.
-       (set_number_errno) New function.
-       (repl_str_con) Removed.
-       (set_string) New function.
-       (yrmoda) Tighten boundary conditions.  Adopt 2030 cut-off for
-       2-digit years.
-       (dump_node) No special case for OP_AND, OP_OR.
-
-       * expr-prs.c: (expr_prs) Honor EXPR_NO_OPTIMIZE bit.  Rewrite.
-       (expr_get_type) New function.
-       (type_check) Rewrite.
-       (type_coercion) New function.
-       (struct operator) New structure.
-       (match_operator New function.
-       (parse_binary_operators) New function.
-       (parse_inverting_unary_operator) New function.
-       (parse_or) Rewritten.
-       (parse_and) Rewritten.
-       (parse_not) Rewritten.
-       (parse_rel) Rewritten.
-       (parse_add) Rewritten.
-       (parse_mul) Rewritten.
-       (parse_neg) Rewritten.
-       (parse_exp) Rewritten.
-       (parse_sysvar) Add $TRUE, $FALSE system variables.
-       Get $LENGTH, $WIDTH from get_viewlength(), get_viewwidth().
-       (parse_primary) Use allocate_var_node(), allocate_num_con(),
-       allocate_str_con().
-       (struct function) Remove desc, change `func' prototype.
-       (unary_func) Remove special cases.
-       (MISSING_func) Reduce to unary_func() that just returns a boolean.
-       (SYSMIS_func) Handle SYSMIS((x)) like SYSMIS(x).
-       (VALUE_func) Use allocate_var_node().
-       (nary_num_func) Allow MIN and MAX for strings.
-       Use allocate_var_node().  Properly clean up.
-       Fix return type.
-       (generic_str_func) Use local table instead of removed `desc'
-       member.  Mostly rewrite.
-       (get_num_args) Revise error message.
-       (parse_function) Return EXPR_ERROR, not 0 on error.
-       (macro op) Removed.
-       (macro varies) Removed.
-       (ops[]) Use expr.def.
-       (free_node) Do nothing if node is null.
-       (allocate_num_con) New function.
-       (allocate_str_con) New function.
-       (allocate_var_node) New function.
-       (allocate_binary_nonterminal) New function.
-       (append_nonterminal_arg) Removed.
-       (static var func_tab[]) Revised.
-       (expr_debug_print_postfix) Make parameter const.
-       Use printf() instead of debug_printf().
-
-       * expr.def: New file.
-       
-       * expr.h: Change PXP_* to EXPR_*, all references updated.  Also
-       use named enum instead of unnamed, all references updated.  Add
-       EXPR_ANY, EXPR_NO_OPTIMIZE.
-
-       * exprP.h: Remove EX_*.  Add DEFINE_OPERATOR.  Use expr.def
-       instead of defining OP_* directly.
-       (macro IS_TERMINAL) New macro.
-       (macro IS_NONTERMINAL) New macro.
-       (enum OP_NO_FLAGS) New.
-       
-Fri Mar 26 00:18:01 2004  Ben Pfaff  <blp@gnu.org>
-
-       * error.c: (err_assert_fail) msg variable needs to be non-const.
-
-Fri Mar 26 00:17:24 2004  Ben Pfaff  <blp@gnu.org>
-
-       * debug.c: (cmd_debug_evaluate) Rewrite.
-
-Fri Mar 26 00:15:13 2004  Ben Pfaff  <blp@gnu.org>
-
-       Fix some CROSSTABS bit rot stupidity.
-
-       * crosstabs.q: Reorder the CELLS subcommands for compatibility.
-       (internal_cmd_crosstabs) Initializes cells[] correctly.
-       (float_M_suffix) Rename format_cell_entry(), change prototype,
-       rewrite.
-       (display_crosstabulation) Fix cell formatting.
-
-Fri Mar 26 00:14:09 2004  Ben Pfaff  <blp@gnu.org>
-
-       Make lex_rest_of_line(), lex_entire_end() not discard lines.  Have
-       to call lex_discard_line() to do that.
-
-       * command.c: (run_command) Call lex_discard_line() after
-       lex_rest_of_line().
-
-       * lexer.c: (lex_entire_end) Change behavior.
-       (lex_rest_of_line) Change behavior.  Return const char *.
-       (lex_discard_line) Don't clear getl_buf, don't emit message.
-
-       * main.c: (handle_error) Emit message here.
-
-       * repeat.c: (internal_cmd_do_repeat) Use lex_discard_line()
-       instead of lex_entire_line().
-
-       * str.c: (mm_find_reverse) Make length params size_t.  Rewrite.
-
-       * title.c: (get_title) Call lex_discard_line() after
-       lex_rest_of_line().
-       (cmd_file_label) Ditto.
-       (cmd_document) Deal with const char * return value.
-
-Fri Mar 26 00:10:16 2004  Ben Pfaff  <blp@gnu.org>
-
-       Removed REMARK command.
-
-       * command.c: (extract_prefix) Removed.
-       (output_line) Removed.
-       (cmd_remark) Removed.
-
-       * command.def: Remove REMARK.
-
-Fri Mar 26 00:08:38 2004  Ben Pfaff  <blp@gnu.org>
-
-       Added abort() after lots of assert(0) invocations to avoid some
-       compiler warnings.  We really need a NOT_REACHED macro.
-
-Tue Mar 23 08:00:42 WAST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * sort.c: Added missing call to temp_file_close.  Changed error 
-       messages to warnings.
-
-       * set.q: Improved setting of set_view{length,width} to be more tolerant
-       of buggy OSes.
-
-Sun Mar 21 10:11:14 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-        * val-labs.c: Fixed a bug where PSPP would crash, if VALUE LABELS was
-       used with incorrect syntax.
-
-       * error.c, error.h et al:  Overridden definition of assert for a
-       custom one.
-
-       * test-q.c: Fixed a buglet where it would crash if no /VARIABLES
-       subcommand was given when it ought to have been.
-
-Sat Mar 20 22:19:08 2004  Ben Pfaff  <blp@gnu.org>
-
-       * tab.c: (tab_vline) Fix assertions to respect row_ofs and
-       col_ofs.
-       (tab_hline) Ditto.
-       (tab_box) Ditto.
-       (tab_joint_text) Ditto.
-
-Sat Mar 20 17:57:23 2004  Ben Pfaff  <blp@gnu.org>
-
-       * levene.c: Add #include.
-
-       * set.q: (set_viewport) Add `int' argument to make its prototype
-       correct for signal().
-
-Sat Mar 20 15:35:17 2004  Ben Pfaff  <blp@gnu.org>
-
-       * expr-evl.c: (expr_evaluate) Assert that `c' is nonzero before
-       using it.
-
-Sat Mar 20 15:18:16 2004  Ben Pfaff  <blp@gnu.org>
-
-       Changed DFM from open-at-first-access to explicit-open.  Before,
-       calling dfm_get_record() or dfm_put_record() would automatically
-       open the file.  Now, you have to call dfm_open_for_reading() or
-       dfm_open_for_writing() explicitly.  This makes it possible to
-       check permissions, file existence, etc. earlier.
-
-       Also made struct file_handle more opaque, and clean up in general.
-
-       * data-list.c: (cmd_data_list) Open handle for reading.
-
-       * dfm.c: (struct dfm_fhuser_ext) Add `where', `saw_begin_data'
-       members.
-       (open_file_r) Renamed dfm_open_for_reading(), rewrote.
-       (open_file_w) Renamed dfm_open_for_writing(), rewrote.
-       (open_inline_file) Removed.
-       (read_record) For inline_file, if we haven't seen BEGIN DATA, read
-       it.  Deal with line_number in extension record instead of file
-       handle.
-       (dfm_get_record) Rewrote.
-       (dfm_put_record) Rewrote.
-       (dfm_push) Assert file is open and one of ours.  Deal with
-       line_number in extension record instead of file handle.
-       (dfm_pop) Assert file is open and one of ours.  Deal with
-       line_number in extension record instead of file handle.
-       (cmd_begin_data) Use dfm_open_for_reading().  Mark that we saw
-       BEGIN DATA.     
-
-       * file-handle.h: (enum constants RH_RF_*) Removed.
-       (enum constants FH_MD_*) Removed.
-       (struct file_handle) Removed `name', `norm_fn', `fn', `where',
-       `recform', `lrecl', `mode' members.  Public references to
-       `recform' changed to use handle_get_mode(), references to `lrecl'
-       changed to use handle_get_record_width().  Added `private' member.
-       (enum file_handle_mode) New.
-
-       * file-handle.q: (struct private_file_handle) New structure.
-       (struct file_handle_list) New structure.
-       (static var files) New.
-       (static var file_handles) Removed.
-       (init_file_handle) Removed.
-       (create_file_handle) Removed.
-       (get_handle_with_name) New function.
-       (get_handle_for_filename) New function.
-       (cmd_file_handle) Rewritten.
-       (hash_file_handle) Removed.
-       (cmp_file_handle) Removed.
-       (fh_init_files) Rewritten.
-       (fh_parse_file_handle) Rewritten.  Allows identifiers as
-       filenames.
-       (fh_get_handle_by_name) Renamed handle_get_name(), all references
-       updated.  Rewritten.
-       (fh_get_handle_by_filename) Renamed handle_get_filename(), all
-       references updated.  Rewritten.
-       (fh_record_width) Renamed handle_get_record_width(), all
-       references updated.  Rewritten.
-       (handle_get_mode) New function.
-
-       * file-type.c: (cmd_file_type) Open handle for reading.
-
-       * filename.c: [unix] (struct file_identity) New structure.
-       [unix] (fn_get_identity) New function.
-       [unix] (fn_free_identity) New function.
-       [unix] (fn_compare_file_identities) New function.
-       [!unix] (struct file_identity) New structure.
-       [!unix] (fn_get_identity) New function.
-       [!unix] (fn_free_identity) New function.
-       [!unix] (fn_compare_file_identities) New function.
-
-       * lexer.c: (static var put) Renamed put_token, all references
-       updated.
-       (static var put_tokstr) New.
-       (static var put_tokval) New.
-       (lex_init) Initialize put_tokstr().
-       (restore_token) New function.
-       (save_token) New function.
-       (lex_get) Use restore_token().
-       (lex_put_back) Use save_token().
-       (lex_put_back_id) New function.
-       (lex_put_forward) Removed.
-       (lex_preprocess_line) Set put_token instead of using
-       lex_put_forward().
-       (lex_negative_to_dash) Use save_token(), set put_token directly.
-       (dump_token) Use stderr instead of stdout.
-
-       * main.c: (main) Remove call to cmd_init().
-       
-       * matrix-data.c: (cmd_matrix_data) Open file for reading.
-
-       * pfm-read.c: Use handle_get_filename() instead of trying to use
-       h->fn directly, all over.
-
-       * pfm-write.c: Ditto.
-
-       * print.c: (internal_cmd_print) Open handle for writing.
-       (dump_table) Use handle_get_filename().
-       (print_trns_proc) Use handle_get_mode().
-       (cmd_print_space) Use fh_parse_file_handle().
-       Open handle for writing.
-       [0] (debug_print) Removed.
-
-       * sfm-read.c: Use handle_get_filename() instead of trying to use
-       h->fn directly, all over.
-
-       * sfm-write.c: Ditto.
-
-Sat Mar 20 14:35:48 2004  Ben Pfaff  <blp@gnu.org>
-
-       Fix memory leaks.
-       
-       * autorecode.c: (arc_free) Free arc->src_values.
-
-       * error.c: (msg) Free buf.
-
-       * val-labs.c: (do_value_labels) Always free vars.
-
-       * vfm.c: (close_active_file) If sink has no make_source then call
-       its destroy function.
-
-Sat Mar 20 14:00:24 2004  Ben Pfaff  <blp@gnu.org>
-
-       Fixed cmd_parse() so that it always skips past a full command
-       name.  A few special commands for which this would be bad get
-       special treatment.  This lets us drop code for skipping past the
-       end of a command name in most cmd_*() functions.  It's not worth
-       listing all the commands affected.
-
-       * command.c: (struct command) Remove `cmd' member, replace by
-       `name' member, all references updated.  Remove `word', `next',
-       `skip_entire_name' members.
-       (macro DEFCMD) Deal with revised `struct command'.
-       (macro UNIMPL) Ditto.
-       (macro SPCCMD) New macro for commands whose last word shouldn't be
-       skipped.
-       (static array cmd_table[]) Make const, rename `commands', remove
-       sentinel element.
-       (macro COMMAND_CNT) New macro.
-       (split_words) Removed.
-       (cmd_init) Removed.
-       (FILE_TYPE_okay) Make parameter const.
-       (cmd_parse) Improve error messages.
-       (match_strings) New function.
-       (next_word) New function.
-       (enum command_match) New enum.
-       (conflicting_3char_prefixes) New function.
-       (conflicting_3char_prefix_command) New function.
-       (cmd_match_words) New function.
-       (count_matching_commands) New function.
-       (get_command_name) New function.
-       (free_words) New function.
-       (unknown_command_error) New function.
-       (figure_out_command) Renamed parse_command_name(), rewritten.
-
-       * command.def: Removed @ command.  Marked BEGIN DATA, DOCUMENT,
-       FILE LABEL, REMARK, SUBTITLE, TITLE as special.  Renamed EVALUATE
-       to DEBUG EVALUATE.  Added N alias for N OF CASES, SORT alias for
-       SORT CASES.
-
-       * command.h: (macro SPCCMD) New.
-
-       * include.c: (cmd_include_at) Removed.
-       (cmd_include) Allow identifier to be used as filename.
-
-       * inpt-pgm.c: (cmd_reread) Use fh_parse_file_handle().
-
-       * t-test.q: (cmd_t_test) Command name is now parsed for us.
-       
-
-Sat Mar 20 13:56:00 2004  Ben Pfaff  <blp@gnu.org>
-
-       Start work on better test framework.
-       
-       * Makefile.am: (pspp_sources) Add debug.c.
-       
-       * debug.c: New file.
-
-       * compute.c: (cmd_evaluate) Moved to debug.c, renamed
-       cmd_debug_evaluate().
-
-       * expr-prs.c: (expr_parse) Remove PXP_DUMP support.
-
-       * expr.h: (enum constant PXP_DUMP) Removed.
-
-Sat Mar 20 00:05:42 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * set.q:  Implemented the SHOW command, and synced it to the existing 
-       SET cmd.
-
-       Added a handler for SIGWINCH so that viewlength and viewwidth follow
-       changes as the window size is changed.
-
-       Added fallback to set viewlength and viewwidth from LINES and COLUMS
-       environment variables if other methods are not available.
-
-       glob.c: Removed a lot of global variables from glob.c and encapsulated 
-       them in set.q
-
-       random.c: Tidied up the way the random seed is set.
-
-       str.c: Added a ds_vprintf function.
-
-       error.c: Extended dump_message so that messages are always broken at
-       '\n' characters.
-       
-Thu Mar 18 11:07:14 2004  Ben Pfaff  <blp@gnu.org>
-
-       * pfm-write.c: (bufwrite) Write out the correct element for string
-       variables.  From Andreas Streichardt <streichardt@globalpark.de>.
-
-Mon Mar 15 20:48:03 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of static and global (!) vars in matrix-data.c.
-
-       * matrix-data.c: (static var nr_data) Removed.
-       (static var nr_factor_values) Removed.
-       (static var max_cell_index) Removed.
-       (static var split_values) Removed.
-       (struct nr_aux_data) New structure.
-       (read_matrices_without_rowtype) Use a local struct nr_aux_data in
-       place of static vars, pass to create_case_source() and procedure()
-       as aux data.
-       (nr_read_data_lines) Use struct nr_aux_data * parameter instead of
-       struct matrix_data_pgm *.
-       (nr_read_splits) Ditto.
-       (nr_read_factors) Ditto.
-       (nr_output_data) Ditto.
-       (static var wr_content) Removed.
-       (global var wr_data) Removed.
-       (global var wr_current) Removed.
-       (struct wr_aux_data) New structure.
-       (read_matrices_with_rowtype) Use a local struct wr_aux_data in
-       place of static vars, pass to create_case_source() and procedure()
-       as aux data.
-       (matrix_data_read_with_rowtype) Use struct wr_aux_data * parameter
-       instead of matrix_data_pgm *.
-       (wr_read_splits) Ditto.
-       (wr_output_data) Ditto.
-       (wr_read_rowtype) Ditto.
-       (wr_read_factors) Ditto.
-       (wr_read_indeps) Ditto.
-       
-Mon Mar 15 20:07:29 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of static vars in autorecode.c.
-
-       * autorecode.c: (struct autorecode_trns) Rename `arc' to `specs',
-       `n_arc' to `spec_cnt'.  All references updated.
-       (static var v_src) Removed.
-       (static var v_dest) Removed.
-       (static var h_trns) Removed.
-       (static var nv_src) Removed.
-       (static var descend) Removed.
-       (static var print) Removed.
-       (enum direction) New enum.
-       (struct autorecode_pgm) New structure.
-       (cmd_autorecode) Use struct autorecode_pgm instead of static vars.
-       Move n_dest local var into struct autorecode_pgm for ease of
-       clean-up.  Use arc_free().
-       (arc_free) New function.
-       (recode) Modify to take struct autorecode_pgm * parameter instead
-       of using statics.  Let the caller clean up.
-       (autorecode_proc_func) Use struct autorecode_pgm * auxiliary data
-       instead of statics.  Rearrange code a little.
-
-Mon Mar 15 00:25:02 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of static, global vars in recode.c.  Remove debug code.
-
-       * recode.c: (static var head) Removed.
-       (global var v) Removed.
-       (global var nv) Removed.
-       (cmd_recode) New local variables head, v, nv.  Initialize and free
-       v.  Don't call debug_print().
-       [DEBUGGING] (dump_dest) Removed.
-       [DEBUGGING] (debug_print) Removed.
-
-Mon Mar 15 00:14:49 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of static vars in expr-opt.c.
-
-       * expr-opt.c: (static var e) Removed.
-       (static var nop) Removed.
-       (static var mop) Removed.
-       (static var ndbl) Removed.
-       (static var mdbl) Removed.
-       (static var nstr) Removed.
-       (static var mstr) Removed.
-       (static var nvars) Removed.
-       (static var mvars) Removed.
-       (struct expr_dump_state) New structure.
-       (dump_expression) Use new struct expr_dump_state instead of static
-       vars and pass to functions we call.
-       (dump_node) Use struct expr_dump_state * parameter.
-       (emit) Ditto.
-       (emit_num_con) Ditto.
-       (emit_str_con) Ditto.
-       (emit_var) Ditto.
-       
-Mon Mar 15 00:03:51 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of static var in COUNT.
-
-       * count.c: (static var head) Move into cmd_count().
-       (cmd_count) [DEBUGGING] Don't call debug_print.
-       [DEBUGGING] (debug_print) Removed.
-
-Sun Mar 14 23:56:09 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of static vars in VALUE LABELS, ADD VALUE LABELS.
-
-       * val-labs.c: (static var v) Removed.
-       (static var nv) Removed.
-       [DEBUGGING] (debug_print) Removed.
-       (verify_val_labs) Add struct variable **, int parameters.
-       (get_label) Ditto.  Improve error messages, streamline.
-       (erase_labels) New function for erasing value labels, taking over
-       part of verify_val_labs()'s function.
-       (init) Removed.
-       (done) Removed.
-       (cmd_value_labels) No need to call init() or done() anymore.
-       (cmd_add_value_labels) Ditto.
-       (do_value_labels) Add vars, var_cnt local variables.  Clean up
-       after them internally.  Call erase_labels() if we should.  Don't
-       call debug_print().
-
-Sun Mar 14 23:33:53 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of static vars in MATCH FILES.
-       
-       * get.c: (static var mtf_head) Removed.
-       (static var mtf_tail) Removed.
-       (static var mtf_by) Removed.
-       (static var mtf_n_by) Removed.
-       (static var mtf_master) Removed.
-       (static var mtf_seq_num) Removed.
-       (static var mtf_seq_nums) Removed.
-       (static var mtf_sink) Removed.
-       (static var mtf_case) Removed.
-       (struct mtf_proc) New structure.
-       (cmd_match_files) Use struct mtf_proc instead of static vars.
-       (mtf_processing_finish) Ditto.
-       (mtf_free) Ditto.
-       (mtf_delete_file_in_place) Ditto.
-       (mtf_read_nonactive_records) Ditto.
-       (mtf_compare_BY_values) Ditto.
-       (mtf_processing) Ditto.
-       (mtf_merge_dictionary) Ditto.
-
-Sun Mar 14 22:48:12 2004  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: Add CASESTOVARS, VARSTOCASES unimplemented commands.
-
-       * dictionary.c: (dict_rename_var) Add assertion.
-       (dict_contains_var) Check by index instead of name.
-
-Sun Mar 14 22:01:02 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of compaction_necessary, compaction_nval, compaction_case.
-       Redo VFM interface.  Replace disk_sink and memory_sink by
-       storage_sink, disk_source and memory_source by storage_source.
-
-       * vfm.h: (struct case_sink) Add `dict', `idx_to_fv', `value_cnt'
-       members.
-
-       * vfm.c: 
-       (struct write_case_data) Remove `begin_func', `end_func',
-       `func_aux' members.  Add `aux', `trns_case', `sink_case',
-       `cases_written', `cases_analyzed' members.
-       (global var compaction_necessary) Make static.
-       (global var compaction_nval) Removed.
-       (global var compaction_case) Removed.
-       (static var case_count) Removed.
-       (struct procedure_aux_data) Removed.
-       (struct split_aux_data) Removed.
-       (procedure) Remove begin_func, end_func parameters.  Rewrite.
-       (static var not_canceled) Removed.
-       (process_active_file) Removed.
-       (process_active_file_write_case) Removed.
-       (process_active_file_output_case) Removed.
-       (prepare_for_writing) Moved into open_active_file().
-       (arrange_compaction) Ditto.
-       (setup_lag) Ditto.
-       (open_active_file) Rewrote.
-       (write_case) New function.
-       [DEBUGGING] (index_to_varname) Removed.
-       (execute_transformations) New function.
-       (exclude_this_case) Renamed filter_case(), changed interface.
-       (clear_case) Added struct ccase * parameter to interface.
-       (close_active_file) Added struct write_case_data * parameter,
-       rewrote.
-       (disk_sink_create) Removed.
-       (disk_sink_destroy) Removed.
-       (disk_sink_make_source) Removed.
-       (disk_sink_write) Removed.
-       (disk_source_count) Removed.
-       (disk_source_destroy) Removed.
-       (disk_source_read) Removed.
-       (global var disk_sink_class) Removed.
-       (global var disk_source_class) Removed.
-       (global var memory_sink_class) Removed.
-       (global var memory_source_class) Removed.
-       (memory_sink_create) Removed.
-       (memory_sink_destroy) Removed.
-       (memory_sink_make_source) Removed.
-       (memory_sink_write) Removed.
-       (memory_source_count) Removed.
-       (memory_source_destroy) Removed.
-       (memory_source_get_cases) Removed.
-       (memory_source_read) Removed.
-       (memory_source_set_cases) Removed.
-       (struct disk_stream_info) Removed.
-       (struct memory_sink_info) Removed.
-       (struct memory_source_info) Removed.
-       (write_active_file_to_disk) Removed.
-       (destroy_storage_stream_info) New function.
-       (global var null_sink_class) New var.
-       (global var storage_sink_class) New var.
-       (global var storage_source_class) New var.
-       (open_storage_file) New function.
-       (storage_sink_destroy) New function.
-       (storage_sink_make_source) New function.
-       (storage_sink_open) New function.
-       (storage_sink_write) New function.
-       (storage_source_count) New function.
-       (storage_source_destroy) New function.
-       (storage_source_get_cases) New function.
-       (storage_source_on_disk) New function.
-       (storage_source_read) New function.
-       (storage_source_set_cases) New function.
-       (storage_source_to_disk) New function.
-       (storage_to_disk) New function.
-       (struct storage_stream_info) New structure.
-       (write_storage_file) New function.
-       (procedure_write_case) Removed.
-       (create_case_source) Add `struct dictionary *' parameter, all
-       references updated.
-       (create_case_sink) Ditto.
-       (free_case_sink) New function.
-       (struct split_aux_data) New structure.
-       (procedure_with_splits) New function implementing what procedure()
-       used to.
-       (SPLIT_FILE_proc_func) Removed.
-       (procedure_with_splits_callback) New function.
-       (equal_splits) New function.
-       
-       * aggregate.c: Pass around a struct instead of using statics.
-       (static var outfile) Remove.
-       (enum type) Give it tag `missing_treatment'.
-       (static var missing) Remove.
-       (static var sort) Remove.
-       (static var agr_first) Remove.
-       (static var agr_next) Remove.
-       (static var case_count) Remove.
-       (static var prev_case) Remove.
-       (static var buf64_1xx) Remove.
-       (static var buf_1xx) Remove.
-       (struct agr_proc) New structure incorporating the above.
-       (cmd_aggregate) Use new struct.  Clean up error handling using
-       agr_destroy().  Completely rewrite actual implementation of
-       aggregation.
-       (create_sysfile) Add struct agr_proc * parameter, modify
-       accordingly.
-       (parse_aggregate_functions) Ditto.
-       (free_aggregate_functions) Ditto.  Rename agr_destroy().
-       (aggregate_single_case) Add struct agr_proc * parameter, modify
-       accordingly.
-       (accumulate_aggregate_info) Ditto.
-       (dump_aggregate_info) Ditto.
-       (initialize_aggregate_info) Ditto.
-       (agr_00x_trns_proc) Removed.
-       (agr_00x_end_func) Removed.
-       (agr_10x_trns_proc) Removed.
-       (agr_10x_trns_free) Removed.
-       (agr_10x_end_func) Removed.
-       (agr_11x_read) Removed.
-       (agr_11x_finish) Removed.
-       [DEBUGGING] (debug_print) Removed.
-       (write_case_to_sfm) Add struct agr_proc * parameter, modify
-       accordingly.
-       (agr_to_active_file) New function.
-       (presorted_agr_to_sysfile) New function.
-       (sort_agr_to_sysfile) New function.
-
-       * autorecode.c: (cmd_autorecode) Use procedure_with_splits().
-
-       * crosstabs.q: (internal_cmd_crosstabs) Ditto.
-
-       * descript.q: (cmd_descriptives) Ditto.
-
-       * dfm.c: (cmd_begin_data) Check for storage_source_class.  Adapt
-       to new procedure() interface.
-
-       * command.c: (cmd_execute) Adapt to new procedure() interface.
-
-       * dictionary.c: (dict_compact_values) Also delete scratch
-       variables.
-       (dict_get_compacted_value_cnt) New function.
-       (dict_get_compacted_idx_to_fv) New function.
-
-       * flip.c: (cmd_flip) Warn about and cancel TEMPORARY.
-       (cmd_flip) Adapt to new procedure() interface.
-       (flip_sink_write) Use sink->idx_to_fv.
-
-       * frequencies.q: (internal_cmd_frequencies) Use
-       procedure_with_splits().
-
-       * get.c: (cmd_save_internal) Adapt to new procedure() interface.
-       (static var mtf_sink) New static var.
-       (static var mtf_case) New static var.
-       (cmd_match_files) Warn about and cancel TEMPORARY.  Redo the way
-       we actually implement the matching.
-       (mtf_delete_file_in_place) Use mtf_case.
-       (mtf_processing) Use mtf_case and mtf_sink.
-       (cmd_export) Adapt to new procedure() interface.
-
-       * levene.c: (levene) Use procedure_with_splits().
-
-       * list.q: (cmd_list) Use procedure_with_splits().
-
-       * matrix-data.c: (read_matrices_without_rowtype) Adapt to new
-       procedure() interface.
-       (read_matrices_with_rowtype) Ditto.
-
-       * modify-vars.c; (cmd_modify_vars) Warn about and cancel
-       TEMPORARY.  Adapt to new procedure() interface.
-
-       * rename-vars.c: Warn about and cancel TEMPORARY.
-
-       * sort.c: (cmd_sort_cases) Warn about TEMPORARY.
-       (sort_cases) Use dict_get_compacted_value_cnt() instead of
-       compaction_nval.  Adapt to new procedure() interface.  Use
-       storage_source_to_disk().
-       (do_internal_sort) Don't try to dump the cases to memory.
-       (compare_case_lists) Pass null idx_to_fv.
-       (struct initial_run_state) Add `idx_to_fv' member.  Remove
-       `case_size' member.
-       (write_initial_runs) Don't initialize irs->case_size.  Adapt to
-       new procedure() interface.  Reset irs->idx_to_fv after calling
-       procedure().
-       (sort_sink_write) Set irs->idx_to_fv.  Use case_size from struct
-       sort_cases_pgm.  Pass irs, not struct sort_cases_pgm to
-       push_heap().
-       (destroy_initial_run_state) Don't dereference irs after freeing
-       it.
-       (allocate_cases) Don't calculate case_size locally.
-       (compare_record) Add idx_to_fv parameter.
-       (compare_record_run) Change parameter from struct sort_cases_pgm *
-       to struct initial_run_state *.  Pass irs->idx_to_fv to
-       compare_record().
-       (compare_record_run) Third parameter now a struct
-       initial_run_state *.
-       (output_record) No need for out_case anymore.  Pass irs, not
-       struct sort_cases_pgm to pop_heap().  Use case_size from struct
-       sort_cases_pgm.
-       (merge) Use case_size from struct sort_cases_pgm.
-       (merge_once) Use case_size from struct sort_cases_pgm.
-       Pass null pointer to compare_record() as idx_to_fv.
-       (global var sort_sink_class) Make static.
-
-       * t-test.q: (cmd_t_test) Use procedure_with_splits().
-
-       * temporary.c: Remove debugging crap.
-
-Sat Mar 13 14:19:52 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q, levene.c: Fixed up the handling of MISSING values
-       int the T-TEST
-
-Fri Mar 12 16:23:35 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q, levene.c: Added support for T-TEST /GROUP where only 
-       one value is given.
-
-Wed Mar 10 23:25:13 2004  Ben Pfaff  <blp@gnu.org>
-
-       Change explicit variable name checks into use of
-       dict_class_from_id().
-
-       * dictionary.c: (dict_create_var)  Change explicit variable name
-       check into use of dict_class_from_id().
-
-       * get.c: (trim_dictionary) Ditto.
-
-       * sel-if.c: (cmd_filter) Ditto.
-
-       * sysfile-info.c: (cmd_display) Ditto.
-
-       * vars-prs.c: (parse_DATA_LIST_vars) Ditto.
-
-       * vfm.c: (arrange_compaction) Ditto.
-
-       * weight.c: (cmd_weight) Ditto.
-
-Wed Mar 10 21:16:34 2004  Ben Pfaff  <blp@gnu.org>
-
-       * temporary.c: (cmd_temporary) When TEMPORARY was the first
-       transformation following the input program, if any, for some
-       reason we special-cased f_trns.  That's just wrong.  It should
-       always be set to n_trns.
-
-Tue Mar  9 23:44:40 2004  Ben Pfaff  <blp@gnu.org>
-
-       * format.c: (parse_format_specifier_name) Fix brown-bag bug
-       introduced in last check-in.
-
-Tue Mar  9 23:10:41 2004  Ben Pfaff  <blp@gnu.org>
-
-       * format.c: (global array translate_fmt[]) Removed.
-       (translate_fmt) New function as replacement.
-       (parse_format_specifier_name) Rewrite.
-
-       * pfm-read.c: (convert_format) Use translate_fmt() instead of
-       translate_fmt[].
-
-       * sfm-read.c: (parse_format_spec) Ditto.
-
-       * postscript.c: (text) Fix handling of fonts with missing
-       ligatures.
-
-       * sort.c: (struct external_sort) Add temp_name member.
-       (destroy_external_sort) Free temp_dir, temp_name members.
-       (init_external_sort) Allocate temp_name.
-       (get_temp_file_name) Change prototype.
-       (open_temp_file) Deal with change to get_temp_file_name().
-       (close_temp_file) Ditto.
-       (remove_temp_file) Ditto.
-       (write_temp_file) Ditto.
-       (read_temp_file) Ditto.
-       (sort_sink_destroy) Removed.
-       (sort_sink_class) Change destroy member to null.
-
-Tue Mar  9 22:36:34 2004  Ben Pfaff  <blp@gnu.org>
-
-       Eliminate temp_case.
-
-       * aggregate.c: (cmd_aggregate) No need to save/restore temp_case
-       anymore.  Use agr_11x_finish().
-       (aggregate_single_case) Make first param const.
-       (accumulate_aggregate_info) Ditto.
-       (agr_00x_end_func) Use compaction_case, not temp_case.
-       (agr_11x_func) Break into agr_11x_read(), agr_11x_finish().
-
-       * data-list.c: (struct data_list_pgm) Add `case_size' member.
-       (cmd_data_list) Initialize case_size.
-       (read_from_data_list_fixed) Add struct ccase * param, use instead
-       of temp_case.
-       (read_from_data_list_free) Ditto.
-       (read_from_data_list_list) Ditto.
-       (read_one_case) Rename data_list_trns_proc(), all references
-       updated.  Add argument in calling above functions.  Use c
-       argument instead of temp_case.
-       (destroy_dls) Rename data_list_trns_free(), all references
-       updated.
-
-       * expr-evl.c: (expr_evaluate) Make second parameter const.
-
-       * file-type.c: (struct file_type_pgm) Add `case_size' member.
-       (cmd_end_file_type) Initialize `case_size'.
-       (file_type_source_read) Add struct ccase * parameter.  Use instead
-       of temp_case.
-
-       * flip.c: Rewritten.
-
-       * get.c: (struct get_pgm) New structure to keep track of
-       case_size.
-       (cmd_get) Initialize case_size.
-       (cmd_import) Ditto.
-       (get_source) Deal with struct get_pgm.
-       (get_source_read) Add struct ccase * parameter, use instead of
-       temp_case.
-       (import_source_read) Ditto.
-
-       * get.c: Use a null pointer instead of temp_case to represent the
-       "current case" in a struct mtf_file's input member.
-       (mtf_processing_finish) Pass null to mtf_processing(), not
-       temp_case.
-       (mtf_read_nonactive_records) Don't set iter->input to temp_case.
-       (mtf_compare_BY_values) Add extra arg, use instead of null input
-       members.
-       (mtf_processing) Use c parameter instead of temp_case.  Pass
-       compaction_case to process_active_file_output_case().
-       
-       * glob.c: (global variable temp_case) Removed.
-
-       * inpt-pgm.c: (struct input_program_pgm) Add `case_size' member.
-       (cmd_input_program) Initialize case_size.  Set
-       vfm_source->value_cnt.
-       (init_case) Add struct ccase * parameter, use instead of
-       temp_case.
-       (clear_case) Ditto.
-       (input_program_source_read) Ditto.
-
-       * matrix-data.c: (matrix_data_read_without_rowtype) Ditto.
-       (dump_cell_content) Ditto.
-       (nr_output_data) Ditto.
-       (read_matrices_without_rowtype) Ditto.
-       (matrix_data_read_with_rowtype) Ditto.
-       (wr_read_splits) Ditto.
-       (wr_output_data) Ditto.
-
-       * sort.h: (struct sort_cases_pgm) New member `case_size'.
-       
-       * sort.c: (sort_cases) Initialize scp->case_size.
-       (struct external_sort) Remove `case_size' member.
-       (write_initial_runs) Only call vfm_sink->class_destroy if
-       non-null.
-       (struct sort_source_aux) New structure.
-       (sort_source_read_helper) New function.
-       (sort_source_read) Use sort_source_read_helper().
-       (read_sort_output) Change interface to be more reasonable.
-       (read_internal_sort_output) Ditto.
-       (read_external_sort_output) Ditto.
-
-       * vars-prs.c: (dict_class_to_name) Pass return value through
-       gettext.
-
-       * vfm.c: (struct procedure_aux_data) Add `trns_case' member.
-       (procedure) Initialize trns_case.
-       (procedure) Pass trns_case to vfm_source->class->read().
-       Free trns_case.
-       (process_active_file) Start using struct procedure_aux_data.
-       (process_active_file_write_case) Pass trns_case to
-       transformations, lag_case(), clear_case().
-       (process_active_file_output_case) Add struct ccase * parameter.
-       (create_trns_case) New function.
-       (make_temp_case) Removed.
-       (vector_initialization) Removed.
-       (close_active_file) Only call make_source if non-null, otherwise
-       set vfm_source to null pointer.  Don't free temp_case.
-       (disk_source_read) Add struct ccase * parameter, use instead of
-       temp_case.
-       (memory_source_read) Ditto.
-       (lag_case) Add const struct ccase * member.
-       (procedure_write_case) Use trns_case instead of temp_case.
-       (clear_case) Add struct ccase * member, use instead of temp_case.
-       (exclude_this_case) Ditto.
-       (create_case_source) Add struct dictionary * parameter, use to
-       initialize source->value_cnt.
-
-       * vfm.h: (struct case_source) Add `value_cnt' member.
-       (struct case_source_class) Add struct ccase * parameter to `read'
-       member function pointer.
-       (struct case_sink_class) Make struct ccase * parameter const in
-       `write' member function pointer.
-       
-Wed Mar  3 20:44:37 2004  Ben Pfaff  <blp@gnu.org>
-
-       Fix a lot of "possibly uninitialized variable" warnings.  Some of
-       them are even real bugs.  A few of them make me wonder how the
-       code ever worked.
-
-       * aggregate.c: (parse_aggregate_functions) Initialize `function.
-
-       * ascii.c: (output_lines) Add default case to switch.
-
-       * crosstabs.q: Remove static variable `expected' and all
-       references to it.
-       (display_crosstabulation) Always calculate expected value.
-       (calc_chisq) Ditto.
-       (output_pivot_table) Initialize `cmp'.
-       (display_crosstabulation) New variable `last_row', which is
-       initialized.
-
-       * data-in.c: (parse_numeric) Always initialize sign.  How did this
-       work at all?!
-
-       * data-list.c: (repeating_data_trns_proc) Always initialize code.
-       Always set info.ofs.  (How did this work?!)
-
-       * expr-opt.c: (optimize_tree) Always initialize `m'.
-       (evaluate_tree) Always initialize `c'.  (How did this work?)
-
-       * frequencies.q: (frq_custom_variables) Always initialize min,
-       max.
-       (frq_custom_grouped) Always initialize `dl'.
-
-       * groff-font.c: (groff_read_font) Always initialize char_set.
-
-       * matrix-data.c: (nr_output_data) Initialize `split'.
-       (wr_read_splits) Remove shadowing split_cnt declaration.
-       (wr_output_data) Initialize `split'.
-
-       * output.c: (tokener) Skip add character on syntax error.
-
-       * pool.c: (pool_strndup) Always set `copy'.  (How did this work?!)
-
-       * postscript.c: (read_ps_encodings) Use line.string instead of
-       uninitialized `bp'.
-       (write_text) Add default case to switch.
-       (text) Always initialize multiple variables.  Fix bug with
-       ligatures.
-
-       * print.c: (fixed_parse_fortran) Initialize head.
-       (alloc_line) Add default case to switch.
-
-       * recode.c: (parse_dest_spec) Handle case where nothing matches.
-       (recode_trns_proc) Move variable declaration inward.  Add default
-       case to switch.
-
-       * sfm-read.c: (read_header) Initialize skip_amt.
-
-       * sysfile-info.c: (display_variables) Always initialize pc.
-
-       * vars-prs.c: Initialized `included'.
-
-Wed Mar  3 09:30:09 2004  Ben Pfaff  <blp@gnu.org>
-
-       * main.c: (main) sigaction()'s sa_flags member was uninitialized.
-       Just use signal() instead.
-
-Wed Mar  3 09:26:30 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of vfm_sink_info and vfm_source_info.
-       
-       * aggregate.c: (agr_00x_end_func) Don't increment
-       sfm_sink_info.ncases.
-
-       * sort.c: (do_internal_sort) Get case count from
-       vfm_source->class->count().
-       (struct external_sort) Add `case_size' member.
-       (do_external_sort) Initialize case_size.
-       (struct initial_run_state) Add `case_size' member.
-       (write_initial_runs) Initialize case_size.
-       (sort_sink_write) Use case_size.
-       (read_external_sort_output) Use case_size.  Get case_cnt from
-       initial_runs.
-
-       * vfm.c: (struct write_case_data) Add underscores to existing arg
-       names, all references updated.  Renamed `aux' as `func_aux', all
-       references updated.  Added new `aux' member.
-       (global var vfm_source_info) Removed.
-       (global var vfm_sink_info) Removed.
-       (struct procedure_aux_data) New.
-       (struct split_aux_data) New.
-       (procedure) Use `aux' fields for procedure_aux_data,
-       split_aux_data.
-       (process_active_file_write_case) Pass case_count + 1 to
-       transformation procedures, exclude_this_case().
-       (process_active_file_output_case) Don't increment
-       vfm_sink_info.ncases.
-       (prepare_for_writing) Don't initialize vfm_sink_info.  Don't try
-       to send data to disk early.
-       (make_temp_case) Don't use vfm_sink_info.case_size.
-       (close_active_file) Don't initialize vfm_source_info.
-       (struct disk_stream_info) New, to allow for case_cnt and case_size fields.
-       (disk_sink_create) Initialize and/or update disk_stream_info.
-       (disk_sink_write) Ditto.
-       (disk_sink_destroy) Ditto.
-       (disk_sink_make_source) Ditto.
-       (disk_source_read) Ditto.
-       (disk_source_destroy) Ditto.
-       (global var disk_source_class) Add disk_source_count().
-       (disk_source_count) New function.
-       (struct memory_sink_info) Add `case_cnt', `case_size' members.
-       (struct memory_source_info) Ditto.
-       (memory_sink_create) Deal with case_cnt, case_size.
-       (memory_sink_write) Ditto.
-       (memory_sink_make_source) Ditto.
-       (memory_source_read) Ditto.
-       (memory_source_count) New function.
-       (memory_source_class) Add memory_source_count().
-       (procedure_write_case) Don't use vfm_sink_info.ncases.  Do use
-       proc_aux->cases_written, and pass it to transformation procedures
-       and exclude_this_case ().
-       (exclude_this_case) Add case_num parameter.  Pass it to
-       expr_evaluate().
-       (SPLIT_FILE_procfunc) Use split_aux->prev_case instead of static
-       variable.
-
-       * vfm.h: (struct case_source_class) Add `count' member.
-
-       * vfmP.h: (struct stream_info) Removed.
-       (global variable vfm_source_info) Removed.
-       (global variable vfm_sink_info) Removed.
-       
-Tue Mar  2 23:38:17 2004  Ben Pfaff  <blp@gnu.org>
-
-       * var.h: (typedef trns_proc_func) New typedef.
-       (trns_free_func) New typedef.
-       (struct trns_header) Change `proc' to type trns_proc_func, `free'
-       to type trns_free_func.  This only changes the actual type of
-       trns_proc_func, adding a `case_num' parameter.  Updated all
-       implementations to use the typedefs instead.
-
-       * compute.c: (compute_num) Pass case_num to expr_evaluate().
-       (compute_num_vec) Ditto.
-       (compute_str) Ditto.
-       (compute_str_vec) Ditto.
-
-       * do-if.c: (do_if_trns_proc) Ditto.
-
-       * expr-evl.c: (expr_evaluate) Add new case_num parameter, use for
-       OP_CASENUM.
-
-       * inpt-pgm.c: (input_program_source_read) Maintain case count,
-       pass to transformation functions.
-       (reread_trns_proc) Pass case_num arg to expr_evaluate().
-
-       * loop.c: (loop_1_trns_proc) Ditto.
-       (loop_2_trns_proc) Ditto.
-       (loop_3_trns_proc) Ditto.
-
-       * print.c: (print_space_trns_proc) Ditto.
-
-       * sel-if.c: (select_if_proc) Ditto.
-
-Tue Mar  2 11:36:52 2004  Ben Pfaff  <blp@gnu.org>
-
-       * frequencies.q: (cleanup_freq_tab) Avoid memory leak by
-       destroying hash table.
-
-       * glob.c: (read_active_file) Variable not referenced, removed.
-       (cancel_input_pgm) Ditto.
-
-       * levene.c: Add #include <stdlib.h> needed to call free().
-
-       * aggregate.c: (parse_aggregate_functions) Make `function'
-       variable const.
-
-Tue Mar  2 11:30:56 2004  Ben Pfaff  <blp@gnu.org>
-
-       Start working to eliminate VFM dependence on static variables.
-
-       * command.c: (cmd_parse) Use case_source_is_class().
-
-       * data-list.c: Rewrite to eliminate use of static variables.
-
-       * dfm.c: (cmd_begin_data) Use case_source_is_class().
-
-       * file-handle.q: (fh_handle_name) Make parameter const.
-
-       * file-type.c: Rewrite to eliminate use of static variables.
-
-       * flip.c: Rewrite to eliminate use of static variables.
-
-       * format.c: (get_format_var_width) New function.
-
-       * get.c: Eliminate use of static variables.
-
-       * inpt-pgm.c: Eliminate use of static variables.
-
-       * matrix-data.c: Eliminate use of static variables.
-
-       * set.q: (set_max_workspace) New variable.
-       (cmd_set) Use SET WORKSPACE to modify set_max_workspace.
-
-       * var.h: (struct case_list) Move here from vfmP.h.
-
-       * vars-atr.c: (discard_variables) Handle new vfm_source type.
-
-       * vfm.c: (vfm_source) Change type from struct case_stream to
-       struct case_source.
-       (vfm_sink) Change type from struct case_stream to struct
-       case_sink.
-       (static var paging) Rename workspace_overflow, all references
-       updated.
-       (procedure) Use new class structures.
-       (process_active_file) Ditto.
-       (process_active_file_write_case) Ditto.
-       (prepare_for_writing) Use set_max_workspace.  Use new class
-       structures.
-       (close_active_file) Use new class structures.  Free old sink.
-       (global var disk_source_file) Removed.
-       (global var disk_sink_file) Removed.
-       (disk_stream_init) Removed.
-       (disk_stream_read) Removed.
-       (disk_stream_write) Removed.
-       (disk_stream_mode) Removed.
-       (disk_stream_destroy_source) Removed.
-       (disk_stream_destroy_sink) Removed.
-       (global var vfm_disk_stream) Removed.
-       (disk_sink_create) New function.
-       (disk_sink_write) New function.
-       (disk_sink_destroy) New function.
-       (disk_sink_make_source) New function.
-       (disk_sink_class) New static var.
-       (disk_source_read) New function.
-       (disk_source_destroy) New function.
-       (global var vfm_source_class) New var.
-       (global var memory_source_cases) Removed.
-       (global var memory_sink_cases) Removed.
-       (global var memory_sink_max_cases) Removed.
-       (struct memory_sink_info) New struct.
-       (memory_stream_init) Removed.
-       (memory_stream_read) Removed.
-       (memory_stream_write) Removed.
-       (memory_stream_mode) Removed.
-       (memory_stream_destroy_source) Removed.
-       (memory_stream_destroy_sink) Removed.
-       (global var vfm_memory_stream) Removed.
-       (page_to_disk) Renamed write_active_file_to_disk().
-       (memory_sink_create) New function.
-       (memory_sink_write) New function.
-       (memory_sink_destroy) New function.
-       (memory_sink_make_source) New function.
-       (memory_sink_class) New static var.
-       (memory_source_read) New function.
-       (memory_source_destroy) New function.
-       (memory_source_get_cases) New function.
-       (memory_source_set_cases) New function.
-       (global var vfm_source_class) New var.
-       (procedure_write_case) Use new class structures.
-       (create_case_source) New function.
-       (case_source_is_complex) New function.
-       (case_source_is_class) New function.
-       (create_case_sink) New function.
-
-       * vfm.h: (global variable reinit_sysmis) Not used, removed.
-       (global variable reinit_blanks) Not used, removed.
-       (global variable init_zero) Not used, removed.
-       (global variable init_blanks) Not used, removed.
-       (struct case_source) New struct.
-       (struct case_source_class) New struct.
-       (struct case_sink) New struct.
-       (struct case_sink_class) New struct.
-       (struct case_stream) Removed.
-
-       * vfmP.h: (struct case_list) Moved to var.h.
-
-Tue Mar  2 11:28:30 2004  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c: (count_equal) New function.
-       (count_if) New function.
-       (unique) Add assertions.
-       (partition) Add assertions.
-       (is_partitioned) New function.
-       (copy_if) Add assertions.
-       (remove_equal) Add assertions.
-       (lexicographical_compare) Rename lexicographical_compare_3way.
-       (sort) Add assertions.  Rephrase some code.
-       (is_sorted) New function.
-
-Sun Feb 29 23:24:57 2004  Ben Pfaff  <blp@gnu.org>
-
-       Rewrite SORT CASES.
-
-       * sort.c: Completely rewrite.
-
-       * sort.h: Expose interface via struct sort_cases_pgm, not via
-       global variables.
-
-       * aggregate.c: (sort) New static var.
-       (cmd_aggregate) Use sort.
-       (create_sysfile) Ditto.
-       (aggregate_single_case) Ditto.
-       (dump_aggregate_info) Ditto.
-       (agr_00x_end_func) Ditto.
-       (debug_print) Ditto.
-
-       * var.h: (enum SRT_ASCEND) Removed.
-       (enum SRT_DESCEND) Removed.
-       (struct sort_cases_proc) Removed.
-       (struct variable) Remove p.srt member.
-
-Sun Feb 29 23:22:45 2004  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of the old, crappy heap structure and replace it by a new,
-       shiny, C++ STL-like heap structure.
-       
-       * Makefile.am: (pspp_SOURCES) Remove heap.c, heap.h.
-
-       * algorithm.c: (push_heap) New function.
-       (heapify) Ditto.
-       (pop_heap) Ditto.
-       (make_heap) Ditto.
-       (sort_heap) Ditto.
-       (is_heap) Ditto.
-       
-       * heap.c: Removed.
-
-       * heap.h: Removed.
-
-Sun Feb 29 23:21:53 2004  Ben Pfaff  <blp@gnu.org>
-
-       Increase warning level.
-       
-       * Makefile.am: (AM_CFLAGS) Remove -Wnouninitialized.
-
-Sat Feb 21 17:38:58 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-        * main.c: Added a signal handler for SIGSEGV requesting a bug report.
-        
-Fri Feb 20 23:22:14 2004  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c: (dict_create_var) Fix root cause of bug worked
-       around by previous change log entry.
-       
-       * compute.c: (lvalue_finalize) Remove workaround from previous
-       change log entry.
-
-Fri Feb 20 14:37:41 WAST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * compute.c: Fixed a bug where the Format was not getting set for 
-         computed variables (thus causing a crash when SAVEing).
-
-       * Added a test to stop this bug ever coming back
-
-Wed Feb 18 22:21:35 2004  Ben Pfaff  <blp@gnu.org>
-
-       Got rid of approx.h.  In general, replaced all references to
-       approx_eq() by ==, approx_lt() by <, etc.  Other types of changes
-       noted below.
-
-       * Makefile.am: (pspp_SOURCES) Removed approx.h.
-
-       * data-out.c: (try_F) Replaced test for approx_eq(number, 0.0) by
-       test for mag < EPSILON.
-
-       * misc.h: Add definition of EPSILON.
-
-Wed Feb 18 21:32:44 2004  Ben Pfaff  <blp@gnu.org>
-
-       * vfm.c: (procedure) Add check to prevent recursive call.
-
-Wed Feb 18 21:48:54 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * Moved the declarations relating to values to their own header file
-         (val.h)
-
-       * Added levene.c and levene.h
-
-       * vars-atr.c: Changed the signature of compare_values to 
-       take const * arguments.
-               
-       * t-test.q: Changed the structure of struct t_test_proc 
-       variables now contain their own group statistics information.
-       Eventually, t_test_proc might get renamed, because it'd be 
-       applicable to other commands too.
-
-Mon Feb 16 23:15:51 2004  Ben Pfaff  <blp@gnu.org>
-
-       * data-out.c: Clean up.  Changed interface of convert_*() to take
-       either a `double' or a `const char *' instead of a `const union
-       value *'.  Update all implementations of those interfaces.
-       (data_out) Use switch statements instead of a table.
-       (convert_AHEX) Rewrite.
-
-       * format.h: Update comment.
-
-Mon Feb 16 22:14:36 2004  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c: (dump_header) Add an Emacs header line to output files
-       that makes generated .c files read-only by default, to make it
-       difficult to accidentally change generated files.
-
-Mon Feb 16 22:12:07 2004  Ben Pfaff  <blp@gnu.org>
-
-       * frequencies.q: (compare_freq_numeric_a) Compare by frequency,
-       not bogus a->v.c <=> b->v.c pointer compare.
-       (compare_freq_alpha_a) Ditto.
-       (compare_freq_numeric_d) Ditto.
-       (compare_freq_alpha_d) Ditto.
-       
-Mon Feb 16 22:00:53 2004  Ben Pfaff  <blp@gnu.org>
-
-       Changed data_out() to store string data directly into a `union
-       value''s s member, not indirectly into c.
-
-       * crosstabs.q: (output_pivot_table) Use format_short() instead of
-       data_out().
-       (table_value_missing) Ditto.
-       (float_M_suffix) Ditto.
-       (format_short) New function.
-
-       * data-in.h: (data_in_finite_line) Remove inline definition.
-
-       * data-list.c: (destroy_dls_var_spec) New function.
-       (destroy_dls) Rewrite in terms of destroy_dls_var_spec().
-       (data_list_source_destroy_source) Avoid cast.
-       (struct repeating_data_trns) New field `id_value'.  Update
-       comments.
-       (cmd_repeating_data) Initialize id_value.  Use new
-       repeating_data_trns_free() for freeing REPEATING DATA
-       transformations.
-       (rpd_parse_record) Rewrite support for record ID to be less bogus.
-       (repeating_data_trns_free) New function.
-
-       * data-out.c: (data_out) Change return type to `void' by replacing
-       error returns by writing a message into the output buffer.
-       (convert_A) Read from v->s instead of v->c.
-       (convert_AHEX) Ditto.
-
-       * expr-evl.c: Update comment.
-       (expr_evaluate) Add assertion in OP_STRING case.
-
-       * format.h: (macro MAX_FORMATTED_LEN) New macro.
-
-       * list.q: (list_cases) Update for new data_out() semantics.
-
-       * print.c: (print_trns_proc) Ditto.
-
-       * tab.c: (tab_value) Ditto.
-       (tab_float) Avoid stupid cast.
-
-       * var.h: Update comments.
-       (macro MAX_STRING) New macro.
-       (macro MAX_ELEMS_PER_VALUE) New macro.
-
-       * vars-atr.c: (compare_values) New function.
-
-       * vfm.c: (dump_splits) Update for new data_out() semantics.
-
-Mon Feb 16 21:45:47 2004  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: (struct table_entry) Rename v[] to values[].  All
-       references updated.
-       (struct crosstab) Rename v[] to vars[].  All references updated.
-       (hash_table_entry) Replace the hash algorithm and fix a bug at the
-       same time, which caused the hash value to depend only on a single
-       value, not all of the variables' values.
-       
-Mon Feb 16 12:49:53 2004  Ben Pfaff  <blp@gnu.org>
-
-       Clean up struct dictionary's value_cnt usage.
-
-       * dictionary.c: Add a function comment to each function.
-       (struct dictionary) Rename value_cnt to next_value_idx, which more
-       accurately reflects its meaning.  All references updated.
-       (dict_rename_vars) Add assertion.
-       (dict_get_value_cnt) Rename dict_get_next_value_idx().  All
-       references updated.
-       (dict_get_case_size) New function.
-
-       * aggregate.c: (create_sysfile) Use dict_get_case_size().
-
-       * get.c: (mtf_read_nonactive_records) Ditto.
-
-       * sort.c: (allocate_cases) Ditto.
-       (write_initial_runs) Ditto.
-       (merge) Ditto.
-       (merge_once) Ditto.
-
-       * vfm.c: (prepare_for_writing) Ditto.
-       (setup_lag) Ditto.
-       (lag_case) Ditto.
-
-Mon Feb 16 00:17:55 2004  Ben Pfaff  <blp@gnu.org>
-
-       Make vfm.c slightly less grotesque.
-
-       * vfm.c: (filter_var) Removed.
-       (filter_index) Removed.
-       (FILTERED macro) Removed.
-       (exclude_this_case) New function.
-       (process_active_file_write_case) Use exclude_this_case() instead
-       of FILTERED and inline tests.
-       (procedure_write_case) Ditto.
-       (setup_filter) Removed.
-       (open_active_file) Don't call setup_filter().
-       (close_active_file) Call dict_get_filter() instead of checking
-       filter_var.
-
-Mon Feb 16 00:01:53 2004  Ben Pfaff  <blp@gnu.org>
-
-       * var.h: (struct variable) Update comments.
-
-Sun Feb 15 23:14:59 2004  Ben Pfaff  <blp@gnu.org>
-
-       New functions dict_create_var_assert(), dict_lookup_var_assert().
-       Converted several dict_*_var()/assert pairs into a single
-       dict_*_var_assert().
-
-       * dictionary.c: (dict_create_var_assert) New function.
-       (dict_lookup_var_assert) New function.
-
-Sun Feb 15 23:06:08 2004  Ben Pfaff  <blp@gnu.org>
-
-       Got rid of "struct long_vec", envector(), devector(), etc.  Added
-       two members `init', `reinit' to struct variable as a substitute.
-       
-       * Makefile.am: (pspp_SOURCES) Removed cases.c, cases.h.
-       
-       * cases.c: Removed.
-
-       * cases.h: Removed.
-
-       * aggregate.c: (parse_aggregate_functions) destvar doesn't need
-       init.
-
-       * autorecode.c: (cmd_autorecode) destvars don't need init.
-
-       * compute.c: (lvalue_finalize) Set reinit.
-
-       * data-list.c: (fixed_parse_compatible) Don't need init usually.
-       (dump_fmt_list) Ditto.
-       (parse_free) Ditto.
-
-       * descript.q: (run_z_pass) Don't need init for z-scores.
-
-       * dictionary.c: (dict_create_var) Initialize `init', `reinit'
-       members.
-       (dict_clone_var) Copy `reinit' member, initialize `init' member.
-
-       * glob.c: (init_glob) Remove vec_init() calls.
-
-       * inpt-pgm.c: (cmd_end_input_program) Use `reinit', not `left'.
-       
-       * loop.c: (internal_cmd_loop) Don't need to call envector().
-
-       * numeric.c: (cmd_numeric) Ditto.
-       (cmd_string) Ditto.
-       (cmd_leave) Ditto.  Set `init', `reinit' members.
-
-       * recode.c: (cmd_recode) Don't need to call envector().
-
-       * repeat.c: (internal_cmd_do_repeat) Ditto.
-
-       * var.h: (struct variable) Remove `left'.  Add `init', `reinit'.
-       (force_create_variable) Removed prototype.
-       (force_dup_variable) Ditto.
-
-       * vector.c: (cmd_vector) Don't need to call envector().
-
-       * vfm.c: (reinit_sysmis) Removed.
-       (reinit_blanks) Removed.
-       (init_zero) Removed.
-       (init_blanks) Removed.
-       (process_active_file_write_case) No need to deal with vectors.
-       Call clear_temp_case().
-       (vector_initialization) Rewrite to use `init', `reinit'.
-       (close_active_file) No need to call vec_clear().
-       (procedure_write_case) Call clear_temp_case().
-       (clear_temp_case) New function.
-
-Sun Feb 15 20:50:36 2004  Ben Pfaff  <blp@gnu.org>
-
-       * pfm-write.c: (bufwrite) Get rid of nasty cast that also invoked
-       undefined behavior.
-
-Thu Feb 12 23:35:15 2004  Ben Pfaff  <blp@gnu.org>
-
-       Add auxiliary argument to procedure() interface.  Associated small
-       clean-ups of vfm interface.
-       
-       * Updated every caller of procedure() and process_active_file() to
-       reflect modified interface.  Simple, ordinary changes not listed
-       otherwise below.
-
-       * Updated every function that implements struct case_stream's
-       `read' function to take a write_case_func and a write_case_data.
-       Also updated every caller of write_case() to instead call them
-       through these arguments.  In some cases this meant that the extra
-       args had to be threaded through a couple of extra levels.  This
-       wasn't difficult or interesting so the details won't be given.
-
-       * data-list.c: (struct repeating_data_trns) Add members
-       `write_case', `wc_data' as kluge.
-       (read_one_set_of_repetitions) Rename repeating_data_trns_proc and
-       make non-static.
-       (repeating_data_set_write_case) New function.
-
-       * data-list.h: New file to declare repeating_data_trns_proc() and
-       repeating_data_set_write_case().
-
-       * inpt-pgm.c: (input_program_source_read) Call
-       repeating_data_set_write_case() for all the REPEATING DATA
-       transformations, so that they know where to send their cases.
-       It's a big kluge.  Also kluge in END CASE.
-       (end_case_trns_proc) Never called anymore, but we still need it,
-       so just assert(0).
-
-       * sort.c: (read_sort_output) Update to match struct case_stream
-       `read' member.
-
-       * vfm.c: (struct write_case_data) New structure.
-       (proc_func) Removed.
-       (virt_proc_func) Removed.
-       (begin_func) Removed.
-       (virt_begin_func) Removed.
-       (end_func) Removed.
-       (write_case) Removed.
-       (procedure) Added an auxiliary parameter to each function pointer
-       argument's prototype.  Added an auxiliary data parameter.
-       Rewrote.
-       (process_active_file) Ditto.
-       (process_active_file_write_case) Pass aux data along.
-       (close_active_file) Ditto.
-       (procedure_write_case) Ditto.
-       (SPLIT_FILE_procfunc) Ditto.
-
-       * vfm.h: (typedef write_case_data) New.
-       (typedef write_case_func) New.
-       (struct case_stream) Add parameters to `read' member prototype.
-       
-Thu Feb 12 19:24:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q:  Added calculations for independent samples. (But no Levene
-       test yet!)
-
-       * Makefile.am: Moved q_sources_c into own variable 
-
-Wed Feb 11 23:56:51 2004  Ben Pfaff  <blp@gnu.org>
-
-       Miscellaneous cleanups.
-       
-       * Change unused to UNUSED in many source files to reflect modified
-       pref.h.  Change use of __WIN32__, __MSDOS, __DJGPP__,
-       __CYGWIN32__, __unix__, and unix not to assume that they're
-       defined to a nonzero value.  Change use of __attribute__ to use
-       NO_RETURN or PRINTF_FORMAT instead.
-       
-       * alloc.h: Move definitions for local_alloc(), local_free() here
-       from ../pref.h.orig and simplify.
-
-       * expr-evl.c: Instead of working differently based on PAGED_STACK,
-       use a pool allocator unconditionally.
-       (CHECK_STRING_SPACE) Removed.
-       (ALLOC_STRING_SPACE) Removed.
-       (expr_evaluate) Use e->pool instead of CHECK_STRING_SPACE and
-       ALLOC_STRING_SPACE.
-
-       * expr-opt.c: (dump_expression) Allocate string pool.
-
-       * expr-prs.c: (expr_free) Free string pool.
-
-       * pool.c: (pool_destroy) This pool must be removed from its
-       parent's list of gizmos, not from its own.  Use free_all_gizmos().
-       (pool_clear) New function.
-       (free_all_gizmos) New function.
-       (pool_alloc) Use space in empty block after this one if any.
-       (pool_release) Only empty out blocks, don't actually free() them.
-
-       * print.c: Get rid of PAGED_STACK special case by always
-       dynamically allocating line buffers.
-       (struct print_trns) Always include the `line' member.
-       (internal_cmd_print) Always initialize the `line' member.
-       (alloc_line) Always allocate memory for `line'.
-       (print_trns_proc) Always initialize buf from `line' member.
-       (print_trns_free) Always free `line' memory.
-
-       * sort.c: (allocate_file_handles) Special-case MS-DOS for mkdir()
-       call.
-       
-Wed Feb 11 20:33:18 2004  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c: Fixed crash from FLIP when a numeric variable is
-         specified on NEWNAMES and a large value is used, and a couple of
-         other minor bugs besides.
-         (struct varname) Make name a 9-character fixed-size array
-         instead of a 1-character variable size array.
-         (make_new_var) Allow digits in variable names.
-         (flip_stream_write) Limit numeric values to 8 characters and
-         format system missing and very large and small values more
-         appropriately.
-
-Thu Feb  5 13:19:06 WAST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * command.c: Fixed test on command return status for the correct 
-          value,  which had been causing a crash under certain invalid input.
-
-Wed Feb  4 15:34:11 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q: Added calculations for the one sample variant of the T-TEST
-
-Tue Feb  3 20:09:54 2004  Ben Pfaff  <blp@gnu.org>
-
-       * tab.c: (render_strip) Fix bug that sometimes caused joined text
-         in joined cells to be rendered outside box boundaries.
-
-Tue Feb  3 18:56:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * random.c (rng_create): Fixed seeding so that it gets reseeded after
-       SET seed=xx has been called.
-
-Mon Jan 19 14:08:09 2004  Ben Pfaff  <blp@gnu.org> 
-
-       * random.c (rng_get_double): Fix always-returning-zero bug in my
-       preferred way, and at the same time make sure rounding doesn't
-       bite us.
-
-Thu Jan  1 23:16:41 2004  Ben Pfaff  <blp@gnu.org>
-
-       * html.c: (change_attributes) Dead code, removed.
-       (escape_string) Eliminate code to call change_attributes() that
-       never actually called it.
-       (output_tab_table) Get rid of dependence on tab_hit
-       and struct tab_joined_cell's hit member, which are abominations.
-
-       * tab.c: (tab_output_text) Don't call
-       d->class->text_set_font_by_name if it's a null pointer.
-       (macro UNROLL_LOOP) Eliminate.
-       (macro UNROLL_3_LOOPS) Eliminate.
-       (tabi_render) Rewrite not to use the above macros.
-
-Thu Jan  1 23:09:07 2004  Ben Pfaff  <blp@gnu.org>
-
-       Start working on a new output driver system, one that doesn't suck
-       so much, by adding a "device-independent" output driver.  The idea
-       is to write out only a single output stream, then use separate
-       processes to translate them into whatever formats we want.  This
-       is similar to how "groff" works with its various output drivers
-       (grops, grotty, grodvi, ...).
-       
-       * Makefile.am: (pspp_SOURCES) Add devind.c, devind.h.
-
-       * list.q: (write_all_headers) Stub out devind class.
-       (clean_up) Ditto.
-       (determine_layout) Ditto.
-       (list_cases) Ditto.
-
-       * output.c: (outp_init) Add devind class.
-
-       * devind.c: New file.
-
-       * devind.h: New file.
-
-Thu Jan  1 23:08:14 2004  Ben Pfaff  <blp@gnu.org>
-
-       * frequencies.q: (hash_value_alpha) Fixed up the previous change
-       to use the proper string length.
-
-Wed Dec 31 16:27:33 WAST 2003 John Darrington <john@darrington.wattle.id.au>
-
-       * Fixed bug where FREQ would crash on alpha values
-
-Tue Dec 30 22:42:57 2003  Ben Pfaff  <blp@gnu.org>
-
-       * Removed bletcherous alloca() workarounds for AIX from top of
-       many files.  AIX can use the alternative alloca() implementation
-       instead.
-
-Tue Dec 30 22:35:16 2003  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (ascii_option) Fix implementation of headers option.
-
-Tue Dec 30 22:32:53 2003  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: Add a "squeeze" option to the ASCII driver to squeeze
-       multiple blank lines into one.
-       (struct ascii_driver_ext) Add squeeze_blank_lines option.
-       (ascii_preopen_driver) Initialize squeeze_blank_lines.
-       (static var option_tab) Add squeeze entry.
-       (ascii_option) Set squeeze_blank_lines.
-       (output_lines) Implement squeezing blank lines.
-
-Wed Dec 31 07:19:46 WST 2003 John Darrington <john@darrington.wattle.id.au>
-
-       * Removed redundant code from output.h
-
-Sat Dec 27 22:17:52 2003  Ben Pfaff  <blp@gnu.org>
-
-       Dictionary classes: each variable is "ordinary", "system", or
-       "scratch".
-
-       * var.h: (enum dict_class) New enum.
-
-       * vars-prs.c: (dict_class_from_id) New function.
-       (dict_class_to_name) New function.
-
-Sat Dec 27 22:16:06 2003  Ben Pfaff  <blp@gnu.org>
-
-       * var.h: (struct freq_tab_set) Removed (not used).
-
-Sat Dec 27 22:15:21 2003  Ben Pfaff  <blp@gnu.org>
-
-       * value-labels.c: (val_labs_destroy) vls needs to be freed too.
-
-Sat Dec 27 22:10:49 2003  Ben Pfaff  <blp@gnu.org>
-
-       * stats.c: (hypercube) Rename pow4().  All references updated.
-
-Sat Dec 27 22:05:49 2003  Ben Pfaff  <blp@gnu.org>
-
-       * rename-vars.c: (cmd_rename_variables) Rewritten.
-       (compare_name) Removed.
-
-Sat Dec 27 22:03:51 2003  Ben Pfaff  <blp@gnu.org>
-
-       var_set feature, and code taking advantage of it.
-       
-       * crosstabs.q: (static var var_dict) Removed.
-       (static var variables) New variable.
-       (static var variables_cnt) New variable.
-       (cmd_crosstabs) Free variables instead of var_dict.
-       (internal_cmd_crosstabs) Initialize and use variables,
-       variables_cnt instead of var_dict.
-       (free_var_dict) Removed.
-       (crs_custom_tables) Use var_set instead of a copied dictionary.
-       (crs_custom_variables) Set up variables, variables_cnt instead of
-       var_dict.
-       [DEBUGGING] (debug_print) Ditto.
-
-       * means.q: (mns_custom_tables) Use var_set instead of a copied
-       dictionary.
-
-       * vars-prs.c: (parse_vs_variable) New function.
-       (parse_dict_variable) Rewritten.
-       (parse_variable) Rewritten.
-       (parse_variables) Renamed parse_var_set_vars(), rewritten.
-       (parse_variables) New function in terms of parse_var_set_vars().
-       Now requires its first argument to be non-null.  All references
-       that passed a null pointer updated to pass default_dict instead.
-       (macro id_dict) Removed.
-       (parse_DATA_LIST_vars) Add assertions.
-       (parse_mixed_vars) Ditto.
-       (struct var_set) New structure.
-       (var_set_get_cnt) New function.
-       (var_set_get_var) New function.
-       (var_set_lookup_var) New function.
-       (var_set_destroy) New function.
-       (dict_var_set_get_cnt) New function.
-       (dict_var_set_get_var) New function.
-       (dict_var_set_lookup_var) New function.
-       (dict_var_set_destroy) New function.
-       (var_set_create_from_dict) New function.
-       (struct array_var_set) New structure.
-       (array_var_set_get_cnt) New function.
-       (array_var_set_get_var) New function.
-       (array_var_set_lookup_var) New function.
-       (array_var_set_destroy) New function.
-       (var_set_create_from_array) New function.
-
-       * q2c.c: (dump_parser) Use parse_variables(default_dict, ...)
-       instead of parse_variables(NULL, ...) in output code.
-
-Sat Dec 27 21:38:53 2003  Ben Pfaff  <blp@gnu.org>
-
-       Change inp_init from a 2-bit vector to an ordinary array.
-       Initialize it all in cmd_end_input_program() instead of in
-       create_variable().
-
-       * inpt-pgm.c: (enum value_init_type) New enum.
-       (global var inp_init) Change to `enum value_init_type *', make
-       static.
-       (inp_init_size) Removed.
-       (inp_nval) Change to `size_t', make static.
-       (cmd_input_program) Don't initialize inp_init or inp_init_size.
-       (cmd_end_input_program) Initialize inp_init, inp_nval.
-       (init_case) Rewrite.
-       (clear_case) Rewrite.
-
-       * inpt-pgm.h: Removed.
-
-Sat Dec 27 21:36:38 2003  Ben Pfaff  <blp@gnu.org>
-
-       * hash.c: (hsh_hash_bytes) Use Fowler-Noll-Vo hash instead of
-       Colin Plumb hash.  It is simpler and should better resist
-       collisions.
-       (hsh_hash_string) Ditto.
-
-Sat Dec 27 21:34:57 2003  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (export_write_case_func) Remove debug printing code.
-
-Sat Dec 27 21:11:09 2003  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (cmd_save_internal) Rename parameter.  Use &t->h instead
-       of cast.
-       (save_write_case_func) Use &trns->h instead of cast.
-       (cmd_export) Use &t->h instead of cast.
-
-Sat Dec 27 20:57:42 2003  Ben Pfaff  <blp@gnu.org>
-
-       Moved vectors into the dictionary.
-
-       * var.h: (struct vector) Moved here from vector.h.  `index' member
-       renamed `idx', `v' renamed `var', `nv' renamed `cnt'.  All
-       references updated.
-       
-       * vector.h: Removed.
-
-       * vector.c: (global var vec) Removed.
-       (global var nvec) Removed.
-       (cmd_vector) Rewritten.
-       (find_vector) Removed.
-
-       * dictionary.c: (dict_create_vector) New function.
-       (dict_get_vector) New function, replaces reading global vec[]
-       array.
-       (dict_get_vector_cnt) New function, replaces reading global nvec
-       variable.
-       (dict_lookup_vector) New function, replaces find_vector().
-       (dict_clear_vectors) New function.
-
-Sat Dec 27 20:54:01 2003  Ben Pfaff  <blp@gnu.org>
-
-       Start to move away from `struct variable' p `union' member to void
-       * aux member.
-
-       * var.h: (struct variable) Add `aux' member.
-
-Sat Dec 27 20:36:25 2003  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of struct variable `foo' member.
-
-       * frequencies.q: (internal_cmd_frequencies) Use p.frq.used instead
-       of foo.
-       (frq_custom_variables) Ditto.
-       (frq_custom_grouped) Ditto.
-
-       * get.c: (struct save_trns) Change `var' member from `int *' to
-       `struct variable **'.
-       (cmd_save_internal) Use aux instead of foo.
-       (save_trns_proc) Use revised `var' member.
-       (static var mtf_seq_no) Renamed mtf_seq_num.
-       (static var mtf_seq_nums) New static var.
-       (cmd_match_files) Initialize mtf_seq_nums.
-       (mtf_free) Free mtf_seq_nums.
-       (mtf_processing) Use mtf_seq_nums instead of foo.
-       (mtf_merge_dictionary) No need to initialize mv->foo.
-       (cmd_export) Use aux instead of foo.  Use revised `var' member.
-       (mns_custom_tables) Don't use foo to check for duplicates, that's
-       what PV_NO_DUPLICATE is for.
-
-       * var.h: (struct variable) Remove `foo' member.
-       (struct frequencies_proc) New member.
-       
-Sat Dec 27 19:46:13 2003  Ben Pfaff  <blp@gnu.org>
-
-       Clean up COMPUTE and IF.
-
-       * compute.c: More or less rewrite the darn thing.
-       (struct compute_trns) Rename and reorder and add and delete
-       members.
-       (cmd_compute) Rewrite.
-       (compute_num) Make conditional on test expression.  Now used for
-       both COMPUTE and IF.
-       (compute_num_vec) Ditto.
-       (compute_str) Ditto.
-       (compute_str_vec) Ditto.
-       (cmd_if) Rewrite.
-       (if_num) Removed.
-       (if_num_vec) Removed.
-       (if_str) Removed.
-       (if_str_vec) Removed.
-       (parse_target_expression) Renamed parse_rvalue_expression(),
-       rewritten.
-       (new_trns) Renamed compute_trns_create(), rewritten.
-       (delete_trns) Removed.
-       (free_trns) Renamed compute_trns_free(), rewritten.
-       (struct lvalue) New structure.
-       (parse_var_or_vec) Renamed lvalue_parse(), rewritten.
-       (lvalue_get_type) New function.
-       (lvalue_is_vector) New function.
-       (lvalue_finalize) New function.
-       (lvalue_destroy) New function.
-       
-Sat Dec 27 19:44:14 2003  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: Disallow MODIFY VARS in input mode, so that
-       variables can't get dropped and confuse cmd_end_input_program()'s
-       attempt to fill inp_init[].
-       
-       * modify-vars.c: (static var forward_positional_ordering) New
-       variable.
-       (struct var_modification) Entirely changed.
-       (rearrange_dict) Interface changed, rewritten.
-       (cmd_modify_vars) Deal with modified struct var_modification, much
-       rewritten.
-       (struct var_renaming) New structure.
-       (compare_var_renaming_by_new_name) New function.
-       (validate_var_modification) New function.
-
-       * var.h: (struct modify_vars_proc) Removed.
-       (struct variable) Removed member p.mfv.
-
-Sat Dec 27 19:40:26 2003  Ben Pfaff  <blp@gnu.org>
-
-       Make EVALUATE a valid command whether we're debugging or not, so
-       that `make check' can succeed regardless of whether debugging is
-       turned on.
-       
-       * command.def: [GLOBAL_DEBUGGING] Drop the #if.
-
-       * compute.c: [GLOBAL_DEBUGGING] (cmd_evaluate) Drop the #if.
-
-Sat Dec 27 19:34:40 2003  Ben Pfaff  <blp@gnu.org>
-
-       * apply-dict.c: (cmd_apply_dictionary) Replace a ghastly switch
-       statement by a simple if test.
-
-       * dfm.c: (dfm_get_record) Add assertion.
-
-Sat Dec 27 17:51:26 2003  Ben Pfaff  <blp@gnu.org>
-
-       For each file x.c, move #include "x.h" to the very top of the
-       include list, to catch x.h failing to include the proper headers.
-
-Sat Dec 27 17:50:19 2003  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c: (find) New function.
-       (remove_equal) New function.
-       (set_difference) New function.
-       (adjacent_find_equal) New function.
-       [TEST_UNIQUE] Removed test case.
-       (copy_if) Find end test.
-
-Sat Dec 27 17:42:45 2003  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c: (dict_get_case_weight) New convenience function.
-
-       * aggregate.c: (accumulate_aggregate_info) Use
-       dict_get_case_weight().
-
-       * frequencies.q: (calc_general) Ditto.
-       (calc_integer) Ditto.
-       (calc) Ditto.
-
-       * t-test.q: (groups_calc) Ditto.
-       (z_calc) Ditto.
-
-Sat Dec 27 17:29:45 2003  Ben Pfaff  <blp@gnu.org>
-
-       * glob.c: (global var default_dict) Change from `struct
-       dictionary' to `struct dictionary *'.  All references changed.
-       (init_glob) Initialize default_dict with dict_create().
-
-Sat Dec 27 17:06:06 2003  Ben Pfaff  <blp@gnu.org>
-
-       struct dictionary now made opaque.  All related functions:
-
-       * get.c: (rename_variables) Removed.
-       (dict_delete_run) Removed.
-       
-       * temporary.c: (copy_variable) Removed.
-       (new_dictionary) Removed.
-       (save_dictionary) Removed.
-       (restore_dictionary) Removed.
-       (free_dictionary) Removed.
-
-       * vars-atr.c: (clear_default_dict) Removed.
-       (find_variable) Removed.
-       (find_dict_variable) Removed.
-       (create_variable) Removed.
-       (delete_variable) Removed.
-       (common_init_stuff) Removed.
-       (init_variable) Removed.  Updating of inp_init moved into
-       cmd_end_input_program().
-       (replace_variable) Removed.
-       (rename_variable) Removed.
-       (clear_variable) Removed.
-       (dup_variable) Removed.
-
-       * vars-prs.c: (is_varname) Removed.
-       (is_dict_varname) Removed.
-       (fill_all_vars) Removed.
-
-       * vector.c: (find_vector) Removed.
-
-       * weight.c: (stop_weighting) Removed.
-
-       * dictionary.c: New file.
-       (dict_create) New, replaces new_dictionary().
-       (dict_clone) New, replaces save_dictionary() and
-       restore_dictionary().
-       (dict_clear) New, replaces clear_default_dict().
-       (dict_destroy) New, replaces free_dictionary().
-       (dict_get_var_cnt) New function, replaces references to
-       dict->nvar.
-       (dict_get_var) New function, replaces references to dict->var[i].
-       (dict_get_vars) New function, replaces fill_all_vars().
-       (dict_create_var) New, replaces create_variable().  Interface
-       drops `type' parameter, using a zero `width' to designate numeric.
-       (dict_clone_var) New, replaces dup_variable().
-       (dict_rename_var) New, replaces rename_variable().
-       (dict_lookup_var) New, replaces find_variable(),
-       find_dict_variable(), is_varname().
-       (dict_contains_var) New function.
-       (compare_variable_dblptrs) New function.
-       (dict_delete_var) New function, replaces clear_variable().
-       (dict_delete_vars) New function, replaces dict_delete_run().
-       (dict_reorder_vars) New function.
-       (dict_rename_vars) New function, replaces rename_variables().
-       (dict_get_weight) New function, replaces reading dict->weight_var.
-       (dict_set_weight) New function, replaces writing dict->weight_var
-       or calling stop_weight(dict).
-       (dict_get_filter) New function, replaces reading dict->filter_var.
-       (dict_set_filter) New function, replaces writing dict->filter_var.
-       (dict_get_case_limit) New function, replaces reading dict->N.
-       (dict_set_case_limit) New function, replaces writing dict->N.
-       (dict_get_value_cnt) New function, replaces reading dict->nval.
-       (dict_compact_values) New function, replaces a loop that was
-       replicated in several places.
-       (dict_get_split_vars) New function, replaces reading dict->splits.
-       (dict_get_split_cnt) New function, replaces reading
-       dict->n_splits.
-       (dict_set_split_vars) New function, replaces writing dict->splits.
-       (dict_get_label) New function, replaces reading dict->label.
-       (dict_set_label) New function, replaces writing dict->label.
-       (dict_get_documents) New function, replaces reading
-       dict->documents.
-       (dict_set_documents) New function, replaces writing
-       dict->documents.
-       
-       All references to above functions updated.
-       
-       * aggregate.c: (cmd_aggregate) Copy file label and documents from
-       old dictionary to new by hand, because dict_create() can't do it
-       itself.  Use dict_set_documents(), dict_set_split_vars().
-
-       * temporary.c: (cancel_temporary) Also set temp_dict to NULL after
-       calling dict_destroy().
-
-       * data-list.c: (dls_var_spec) Remove `type' member, replace by
-       `width'.
-       (fixed_parse_compatible) Some slightly nontrivial changes for
-       dict_create_var().
-       (dump_fmt_list) Ditto.
-       (parse_free) Ditto.
-
-       * file-type.c: (create_col_var) Ditto.
-
-       * get.c: (cmd_get) Use dict_compact_values() instead of a loop.
-       (trim_dictionary) Use dict_delete_vars(), dict_reorder_vars().
-       (rename_variables) Use dict_rename_vars().
-       (mtf_merge_dictionary) Use dict_get_documents(),
-       dict_set_documents(), dict_compact_values().
-
-       * pfm-read.c: (read_variables) Deal with changes to weighting.
-
-       * q2c.c: (dump_parser) Use dict_lookup_var() instead of
-       is_varname() in output code.
-
-       * sfm-read.c: (read_header) Use dict_create(), dict_set_label(),
-       other dictionary functions.
-
-       * title.c: (add_document_line) Use dict_get_documents(),
-       dict_set_documents().
-
-       * vars-atr.c: (discard_variables) Use dict_clear(default_dict),
-       reset default_handle by hand.  dict_clear() will clear vectors so
-       there's no need for that by hand.
-
-       * vfm.c: (close_active_file) Move call to finish_compaction()
-       earlier, so that we can do the compaction as a single step using
-       dict_compact_values().  Use dict_clear_vectors().
-       (finish_compaction) Use dict_delete_var(), dict_compact_values().
-               
-       Some functions don't have replacements:
-
-       * vars-atr.c: (force_create_variable) Removed.  All references
-       updated to dict_create_var() followed by an assertion.
-       (force_dup_variable) Removed.  All references updated to
-       dict_clone_var() followed by an assertion.
-       
-       * weight.c: (update_weighting) Removed.  No longer necessary, so
-       all references removed.
-
-Sat Dec 27 16:43:01 2003  Ben Pfaff  <blp@gnu.org>
-
-       Clean up AGGREGATE.
-       
-       * aggregate.c: Eliminate separation of weighted and unweighted
-       case.  It made the code too obscure and I doubt it was actually
-       faster.  Instead, all code uses the "weighted" code, because
-       that's a generalization of the "unweighted" code.
-       (FWEIGHT) Removed.
-       (FOPTIONS) Ditto.
-       (parse_aggregate_functions) No need to set FWEIGHT.
-       (accumulate_aggregate_info) Get rid of FWEIGHT cases.
-       (dump_aggregate_info) Ditto.
-       (initialize_aggregate_info) No need for special plain_function
-       that gets rid of FWEIGHT option.
-
-       * aggregate.c: Get rid of approximations.
-       (accumulate_aggregate_info) Don't use approx_gt(), approx_lt(),
-       approx_in_range().
-       (aggregate_single_case) Don't use approx_ne().
-
-Sat Dec 27 16:19:36 2003  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c (ascii_line_width): Dead code, removed.
-
-       * postscript.c (ps_line_width): Ditto.
-
-       * q2c.c (xrealloc): Ditto.
-
-       * count.c (internal_cmd_count): Ditto.
-
-       * means.q (validate_dependent_endpoint): Ditto.
-
-       * set.q: (cmd_gset) Ditto.
-
-       * weight.c: [0] (weight_trns_proc) Ditto.
-
-Sat Dec 27 16:18:16 2003  Ben Pfaff  <blp@gnu.org>
-
-       Make the code -Wmissing-prototypes clean.
-
-       * Makefile.am (version.c): Add #include "version.h".
-       
-       * ascii.c: (ascii_open_global) Make static.
-       (ascii_close_page) Ditto.
-       (ascii_font_sizes) Ditto.
-       (ascii_postopen_driver) Ditto.
-       (ascii_close_driver) Ditto.
-       (ascii_option) Ditto.
-       (ascii_open_page) Ditto.
-       (ascii_line_horz) Ditto.
-       (ascii_line_vert) Ditto.
-       (ascii_line_intersection) Ditto.
-       (ascii_box) Ditto.
-       (ascii_polyline_begin) Ditto.
-       (ascii_polyline_point) Ditto.
-       (ascii_polyline_end) Ditto.
-       (ascii_text_set_font_by_name) Ditto.
-       (ascii_text_set_font_by_position) Ditto.
-       (ascii_text_set_font_by_family) Ditto.
-       (ascii_text_get_font_name) Ditto.
-       (ascii_text_get_font_family) Ditto.
-       (ascii_text_set_size) Ditto.
-       (ascii_text_get_size) Ditto.
-       (ascii_text_metrics) Ditto.
-       (ascii_text_draw) Ditto.
-       (ascii_close_page) Ditto.
-
-       * cmdline.h: New header for parse_command_line().  Used where
-       needed.
-
-       * command.c: Move prototypes for cmd_*() functions to command.h.
-
-       * command.h: Prototypes for cmd_*() functions moved here from
-       command.c.
-
-       * crosstabs.q: (gamma_int) Ditto.
-
-       * file-handle.h: Add fh_init_files() prototype.
-       
-       * getline.c: (welcome) Ditto.
-
-       * glob.h: New header for init_glob().  Used where appropriate.
-
-       * hash.c: (comparison_helper) Ditto.
-
-       * html.c: (html_open_global) Ditto.
-       (html_close_global) Ditto.
-       (html_preopen_driver) Ditto.
-       (html_postopen_driver) Ditto.
-       (html_close_driver) Ditto.
-       (html_option) Ditto.
-       (html_open_page) Ditto.
-       (html_close_page) Ditto.
-       (html_submit) Ditto.
-
-       * inpt-pgm.c: (input_program_source_read) Ditto.
-
-       * output.c: (find_defn_value) Ditto.
-       (destroy_list) Ditto.
-
-       * pfm-read.c: (read_int) Ditto.
-
-       * postscript.c: (ps_open_global) Ditto.
-       (ps_close_global) Ditto.
-       (ps_font_sizes) Ditto.
-       (ps_preopen_driver) Ditto.
-       (ps_postopen_driver) Ditto.
-       (ps_close_driver) Ditto.
-       (ps_option) Ditto.
-       (ps_open_page) Ditto.
-       (ps_close_page) Ditto.
-       (ps_line_horz) Ditto.
-       (ps_line_vert) Ditto.
-       (ps_line_intersection) Ditto.
-       (ps_box) Ditto.
-       (ps_polyline_begin) Ditto.
-       (ps_polyline_point) Ditto.
-       (ps_polyline_end) Ditto.
-       (ps_text_set_font_by_name) Ditto.
-       (ps_text_set_font_by_position) Ditto.
-       (ps_text_set_font_family) Ditto.
-       (ps_text_get_font_name) Ditto.
-       (ps_text_get_font_family) Ditto.
-       (ps_text_set_size) Ditto.
-       (ps_text_get_size) Ditto.
-       (ps_text_metrics) Ditto.
-       (ps_text_draw) Ditto.
-
-       * q2c.c: (finish_up) Ditto.
-       (xmalloc) Ditto.
-       (xstrdup) Ditto.
-       (get_buffer) Ditto.
-       (st_lower) Ditto.
-       (st_upper) Ditto.
-       (skip_ws) Ditto.
-       (get_line) Ditto.
-       (add_symbol) Ditto.
-       (find_symbol) Ditto.
-       (lex_get) Ditto.
-       (force_id) Ditto.
-       (force_string) Ditto.
-       (match_id) Ditto.
-       (match_token) Ditto.
-       (skip_token) Ditto.
-       (parse) Ditto.
-       (parse_setting) Ditto.
-       (parse_specifier) Ditto.
-       (parse_specifiers) Ditto.
-       (parse_subcommand) Ditto.
-       (dump_specifier_vars) Ditto.
-       (is_keyword) Ditto.
-       (make_identifier) Ditto.
-       (dump_declarations) Ditto.
-       (dump_specifier_init) Ditto.
-       (dump_vars_init) Ditto.
-       (make_match) Ditto.
-       (dump_specifier_parse) Ditto.
-       (dump_subcommand) Ditto.
-       (dump_parser) Ditto.
-       (dump_header) Ditto.
-       (dump_free) Ditto.
-       (recognize_directive) Ditto.
-
-       * recode.c: (string_to_long) Ditto.
-
-       * repeat.c: (find_DO_REPEAT_substitution) Ditto.
-
-       * repeat.h: New header for perform_DO_REPEAT_substitutions, used
-       where appropriate.
-
-       * sort.c: (sort_stream_read) Ditto.
-       (sort_stream_mode) Ditto.
-       
-Fri Dec 19 23:35:04 2003  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c (binary_search): Fix comparison.
-
-Fri Dec 19 23:27:45 2003  Ben Pfaff  <blp@gnu.org>
-
-       * algorithm.c: (binary_search) Fix assertion.
-
-Fri Dec 19 21:31:48 2003  Ben Pfaff  <blp@gnu.org>
-
-       * sysfile-info.c: (compare_vectors_by_name) Rewrite.
-
-Fri Dec 19 21:30:24 2003  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c: (compare_case_lists) Rewrite.
-
-Fri Dec 19 16:44:22 2003  Ben Pfaff  <blp@gnu.org>
-
-       * quicksort.c: Removed (not used).
-
-       * quicksort.h: Removed (not used).
-
-       * sort.c: Removed blp_quicksort() prototype.
-
-Fri Dec 19 16:42:13 2003  Ben Pfaff  <blp@gnu.org>
-
-       * postscript.c: (int_2_compare) Rewrite.
-       (compare_line) Rewrite.
-
-Fri Dec 19 16:38:35 2003  Ben Pfaff  <blp@gnu.org>
-
-       * matrix-data.c (compare_factors) Use lexicographical_compare()
-       algorithm.
-       (compare_doubles) New function.
-       
-       * algorithm.c: (lexicographical_compare) New algorithm.
-
-Fri Dec 19 16:23:45 2003  Ben Pfaff  <blp@gnu.org>
-
-       * matrix-data.c (compare_variables_by_mxd_vartype): Rewrite.
-
-Fri Dec 19 15:54:45 2003  Ben Pfaff  <blp@gnu.org>
-
-       * expr-prs.c: (cmp_func) Removed.
-       (parse_function) Use binary_search() algorithm.
-       (compare_functions) New function.
-       (init_func_tab) Use sort() algorithm.
-
-       * algorithm.c: (binary_search) New algorithm.
-
-Fri Dec 19 15:50:45 2003  Ben Pfaff  <blp@gnu.org>
-
-       * descript.q: (display) Use sort() algorithm instead of qsort().
-       (compare_func) Removed.
-       (descriptives_compare_variables) New function.
-
-Fri Dec 19 15:08:38 2003  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of AVL trees.  Hashes are more appropriate for everything
-       PSPP does.
-
-       * Makefile.am: (pspp_SOURCES) Remove avl.c, avl.h.
-       
-       * avl.c: Removed.
-
-       * avl.h: Removed.
-
-Fri Dec 19 14:33:31 2003  Ben Pfaff  <blp@gnu.org>
-
-       Much code can be clarified by using C++ STL-like algorithms.  Not
-       all uses of these algorithms are listed below, only the ones where
-       the change to an algorithm was the only change of interest.
-       
-       * Makefile.am: (pspp_SOURCES) Add algorithm.c, algorithm.h.
-       
-       * algorithm.c: New file.
-
-       * algorithm.h: New file.
-
-       * modify-vars.c: (static var forward) Removed.
-       (static var positional) Removed.
-       (compare_variables) Removed.
-       (struct ordering) New.
-       (cmd_modify_vars) Use sort() algorithm.
-       (compare_variables_given_ordering) New function.
-       (rearrange_dict) Use sort() algorithm.
-
-       * sysfile-info.c: (cmd_display) Use sort() algorithm.
-       (cmp_var_by_name) Removed.
-
-Fri Dec 19 14:26:17 2003  Ben Pfaff  <blp@gnu.org>
-
-       Make file handles use a hash table.
-       
-       * file-handle.q: (files) Change to hash table, make static.
-       (cmd_file_handle) Use hash table functions.
-       (fh_get_handle_by_filename) Ditto.
-       (fh_get_handle_by_name) Ditto.
-       (hash_file_handle) New function.
-       (cmp_file_handle) Rewrite.
-       (fh_init_files) Use hash table functions.
-
-Fri Dec 19 14:24:38 2003  Ben Pfaff  <blp@gnu.org>
-
-       Clean up FREQUENCIES.
-       
-       * Makefile.am: (pspp_SOURCES) Remove frequencies.g.
-
-       * frequencies.q: Remove a lot of old #if'd out code at the end.
-       (internal_cmd_frequencies) Use calc() instead of calc_no_weight()
-       or calc_weight().  Initialize percentile_values.
-       (calc) New function based on calc_weight() from frequencies.g.
-       (precalc) Use hash functions.
-       (static var comparison_func) Removed.
-       (static var comparison_param) Removed.
-       (comparison_helper) Removed.
-       (get_freq_comparator) New function.
-       (not_missing) New function.
-       (add_freq) Removed.
-       (postprocess_freq_tab) Use hash table functions, algorithms,
-       get_freq_comparator().  Rewrite.
-       (cleanup_freq_tab) Rephrase.
-       (add_percentile) Clean up spacing.
-       (hash_value_numeric) New function.
-       (hash_value_alpha) New function.
-       (compare_value_numeric_a) Rewrite.
-       (compare_value_alpha_a) Rewrite.
-       (compare_value_numeric_d) Rewrite.
-       (compare_value_alpha_d) Rewrite.
-       (compare_freq_numeric_a) Rewrite.
-       (compare_freq_alpha_a) Rewrite.
-       (compare_freq_numeric_d) Rewrite.
-       (compare_freq_alpha_d) Rewrite.
-       (calc_stats) Clean up mode, percentiles, max.
-       (dump_statistics) Clean up spacing.
-       
-       * frequencies.g: Removed.
-
-       * var.h: (struct freq_tab) Change `data' to hash table.
-
-Fri Dec 19 14:15:46 2003  Ben Pfaff  <blp@gnu.org>
-
-       * file-handle.h: Remove declaration of global variable `files',
-       which wasn't used anywhere.
-
-       * postscript.c: (add_encoding) Remove superfluous cast.
-       (line) Ditto.
-
-       * sfm-read.c: [linux] (bswap_int32) Drop ntohl() non-portable
-       version.
-
-       * temporary.c: [0] (display_tree) Removed.
-
-Fri Dec 19 14:13:04 2003  Ben Pfaff  <blp@gnu.org>
-
-       Implement a new random number generator based on the alleged RC4
-       algorithm.
-
-       * expr-evl.c: (expr_evaluate) Use rng_get_double_normal() instead
-       of rand_normal().
-
-       * random.c: [!HAVE_GOOD_RANDOM] (real_rand) Removed.
-       [!HAVE_GOOD_RANDOM] (real_srand) Removed.
-       (macro k) Removed.
-       (static var V[]) Removed.
-       (static var Y) Removed.
-       (static var X2) Removed.
-       (setup_randomize) Removed.
-       (shuffle) Removed.
-       (rand_uniform) Removed.
-       (rand_normal) Removed.
-       (struct rng) New structure.
-       (rng_create) New function.
-       (rng_destroy) New function.
-       (swap_byte) New static function.
-       (rng_seed) New function.
-       (rng_get_bytes) New function.
-       (rng_get_int) New function.
-       (rng_get_unsigned) New function.
-       (rng_get_double) New function.
-       (rng_get_double_normal) New function.
-       (pspp_rng) New function.
-
-       * random.h: Sync up to random.c.
-
-       * sample.c: (struct sample_trns) Make `frac' unsigned and a
-       fraction of UINT_MAX, not 65536.
-       (cmd_sample) Use rng_get_unsigned(), rng_get_double(), UINT_MAX
-       fraction.
-
-       * vfm.c: (open_active_file) No need to call setup_randomize() any
-       longer.
-
-Fri Dec 19 12:05:56 2003  Ben Pfaff  <blp@gnu.org>
-
-       Change dictionary name indexes to use hash tables instead of AVL
-       trees.
-
-       * crosstabs.q: (free_var_dict) Use hash tables.
-       (crs_custom_tables) Ditto.
-       (calc_general) Ditto.
-       (compare_table_entry) Rewrite.
-       (enum_var_values) Reorder parameters.  All references updated.
-       Rewrite.
-
-       * get.c: (rename_variable) Use hash tables.
-       (mtf_merge_dictionary) Ditto.
-
-       * glob.c: (init_glob) Use hash tables.
-       (cmp_variable) Removed.
-
-       * means.q: (mns_custom_tables) Use hash tables.
-
-       * modify-vars.c: (rearrange_dict) Use hash tables.
-
-       * rename-vars.c: (cmd_rename_variables) Use hash tables.
-
-       * sfm-read.c: (read_header) Use hash tables.
-       (read_variables) Ditto.
-
-       * temporary.c: (new_dictionary) Use hash tables.
-       (save_dictionary) Ditto.
-       (restore_dictionary) Ditto.
-
-       * var.h: (struct dictionary) Change AVL tree `var_by_name' into
-       hash table `name_tab'.
-
-       * vars-atr.c: [DEBUGGING] (dump_one_var_node) Removed.
-       [DEBUGGING] (dump_var_tree) Removed.
-       (find_variable) Use hash tables.
-       (find_dict_variable) Ditto.
-       (common_init_stuff) Ditto.
-       (rename_variable) Ditto.
-       (clear_variable) Ditto.  Also, remove debug code.
-       (dup_variable) Use hash tables.
-
-       * vars-prs.c: (fill_all_vars) Use hash tables.
-       (is_dict_varname) Ditto.
-       (parse_dict_variable) Ditto.
-       
-Fri Dec 19 11:46:23 2003  Ben Pfaff  <blp@gnu.org>
-
-       Change value labels to use hash tables instead of AVL trees, and
-       change value labels into an ADT.
-
-       * Makefile.am: (pspp_SOURCES) Add value-labels.c, value-labels.h.
-       
-       * value-labels.c: New file.
-
-       * value-labels.h: New file.
-
-       * apply-dict.c: (cmd_apply_dictionary) Use value label ADT.
-       Get rid of a stupid use of goto.
-
-       * autorecode.c: (compare_alpha_value) Rewrite.
-       (hash_alpha_value) Ditto.
-       (compare_numeric_value) Rewrite.
-       (hash_numeric_value) Ditto.
-
-       * frequencies.q: (dump_full) Use value label ADT.
-
-       * pfm-read.c: (read_value_label) Use value label ADT.
-
-       * pfm-write.c: (write_value_labels) Use value label ADT.
-
-       * sfm-read.c: (read_variables) Use value label ADT.
-       (read_value_labels) Rewrite.
-
-       * sfm-write.c: (write_value_labels) Rewrite.
-
-       * sysfile-info.c: (cmd_sysfile_info) Use value label ADT.
-       (display_variables) Ditto.
-       (describe_variable) Ditto.
-
-       * t-test.q: (print_t_groups) Use value label ADT.
-
-       * temporary.c: (copy_variable) Use value label ADT.
-       (free_dictionary) Ditto.
-
-       * val-labs.c: (verify_val_labs) Use value label ADT.
-       (get_label) Ditto.
-       (debug_print) Ditto.
-       (val_lab_cmp) Removed.
-       (inc_ref_count) Removed.
-       (copy_value_labels) Removed.
-
-       * var.h: (struct value_label) Removed.
-       (struct variable) Change AVL tree `val_lab' into hash table
-       `val_labs'.
-
-       * vars-atr.c: (init_variable) Use value label ADT.
-       (clear_variable) Ditto.
-       (free_value_label) Removed.
-       (free_val_lab) Removed.
-       (get_val_lab) Removed.
-       (compare_variables) New function.
-       (hash_variable) New function.
-
-       * vfm.c: (dump_splits) Use value label ADT.
-
-Fri Dec 19 11:18:11 2003  Ben Pfaff  <blp@gnu.org>
-
-       Add to the hash table interface.
-
-       * hash.c: (hsh_hash_bytes) Add assertion.
-       (hsh_hash_string) Ditto.
-       (hsh_clear) Ditto.
-       (hsh_rehash) Ditto.
-       (hsh_probe) Ditto.
-       (hsh_create) Ditto.  Also make minimum `size'.
-       (hsh_destroy) Rephrase.
-       (sort_nulls_last) Removed.
-       (not_null) New function.
-       (hsh_data) Ditto.
-       (comparison_helper) Ditto.
-       (hsh_sort) Rewritten.
-       (hsh_data_copy) New function.
-       (hsh_sort_copy) Ditto.
-       (hsh_insert) Ditto.
-       (hsh_replace) Ditto.
-       (hsh_hash_double) Ditto.
-       (hsh_delete) Fix stupid bug.
-       
-Thu Dec 18 12:27:03 WAST 2003 John Darrington <john@darrington.wattle.id.au>
-        * added a calculation of the mode to FREQUENCIES
-
-Wed Dec 17 12:53:01 WAST 2003 John Darrington <john@darrington.wattle.id.au>
-
-       * moved (un)defs of DEBUGGING to config.h
-
-Mon Dec 15 21:35:59 2003  Ben Pfaff  <blp@gnu.org>
-
-       * groff-font.c: (add_kern) Fix indentation.
-       (add_kern) Use & instead of % to take power-of-2 modulus.
-       (font_get_kern_adjust) Likewise.
-
-Fri Dec 12 23:54:37 2003  Ben Pfaff  <blp@gnu.org>
-
-       * autorecode.c: (recode) Replace stupid use of memcpy() by
-       memberwise copy.
-       (hash_alpha_value) Use hsh_hash_bytes().  Get rid of nasty casts.
-       (hash_numeric_value) Ditto.
-       (autorecode_proc_func) pool_strdup() was wrong here because the
-       source string was not null-terminated.  Use new pool_strndup()
-       instead.
-
-       * crosstabs.q: (enum_var_values) Remove superfluous and bizarre
-       use of hsh_iterator_init().
-
-       * data-in.c: (parse_N) Initialize i->v->f.
-
-       * flip.c: (cmd_flip) Use memmove(), not memcpy(), to copy
-       overlapping arrays.
-
-       * groff-font.c: Use power-of-2 hash table sizes, not prime.
-       (groff_read_font) Don't call hsh_next_prime().  Don't call
-       fclose(NULL).
-       (static var hash) Remove `size_p', `max_used' members.
-       (font_char_name_to_index) Don't call hsh_next_prime().  Use
-       hsh_hash_string() instead of hashpjw(), & instead of %.
-       (default_font) Don't call hsh_next_prime().
-
-       * pool.c: (pool_strndup) New function.
-       (pool_strdup) Reimplement in terms of pool_strndup.
-
-       * postscript.c: (hash_font_entry) Use hsh_hash_string().  Get rid
-       of nasty casts.
-       (hash_ps_encoding) Use hsh_hash_string().
-       (hash_ps_combo) Use hsh_hash_string(), hsh_hash_int().
-       (hash_filename2font) Use hsh_hash_string().
-
-       * som.c: Add #include <stdlib.h>.
-
-       * tab.c: (tab_destroy) Don't set t->container after freeing `t'
-       (by destroying its pool).
-       
-Fri Dec 12 23:18:59 2003  Ben Pfaff  <blp@gnu.org>
-
-       Miscellaneous hash table code cleanup:
-       
-       * hash.h: (struct hsh_table) Moved into hash.c.
-       (hsh_count) Ditto, and transformed into function.
-       (hsh_compare_func) New typedef, used for defining otherwise-long
-       function types here and in hash.c
-       (hsh_hash_func) Ditto.
-       (hsh_free_func) Ditto.
-       
-       * hash.c: (struct hsh_table) Renamed `n' to `used', `m' to `size',
-       `table' to `entries'.  Removed `mp'.  All references updated.
-       (hsh_clear) Don't shrink entries array; if the hash was this big
-       once, it probably will be again.
-       (hsh_rehash) Made static.
-       (force_hsh_insert) Renamed hsh_force_insert.
-       (force_hsh_find) Renamed hsh_force_find.
-
-       Made hash table sizes powers of 2, because that's fine with any
-       reasonable hash function and because taking a power-of-2 modulus
-       is faster than any other:
-       
-       (hsh_prime_tab) Removed;
-       (hsh_next_prime) Ditto.
-       (next_power_of_2) New function.
-       (hsh_create) Use next_power_of_2.
-       (hsh_rehash) Use & instead of %.
-
-       Cleaned up hsh_sort:
-       
-       (internal_comparison_fn) Removed.
-       (sort_nulls_last) New function.
-       (hsh_sort) Removed second parameter, switched to using the new
-       quicksort() function from quicksort.h to avoid using nasty need
-       for static variables with qsort().  All references updated.
-
-       Changed the hash functions offered, because there are better hash
-       functions than the ones we had, and cleaned up the names to boot:
-       
-       * hash.c: (hashpjw_d) Removed.
-       (hashpjw) Ditto.
-       (hsh_hash_bytes) New function.
-       (hsh_hash_string) New function.
-       (hsh_hash_int) New function.
-
-       Improved the hash table iteration interface:
-       
-       * hash.h: (hsh_iterator_init) Removed.
-       (struct hsh_iterator) Removed `init' member, change `next' to
-       size_t.
-
-       * hash.c: (hsh_foreach) Removed.  All references updated to use
-       hsh_first/hsh_next instead.
-       (hsh_first) New function.  Notably, unlike hsh_foreach() it does
-       not treat a null pointer as an empty hash table.
-       (hsh_next) New function.
-
-       Made deletion possible, though slow:
-
-       * hash.c: (locate_matching_entry) New function.
-       (hsh_find) Use locate_matching_entry().
-       (hsh_delete) New function also using locate_matching_entry().
-       (hsh_force_delete) New function.
-
-Fri Dec 12 23:16:10 2003  Ben Pfaff  <blp@gnu.org>
-
-       * quicksort.c: New file implementing a sort routine with a
-       interface better than qsort() because it passes a user-provided
-       parameter to the sort routine.
-
-       * Makefile.am: Add quicksort.c, quicksort.h.
-
-Fri Dec 12 13:31:58 2003  Ben Pfaff  <blp@gnu.org>
-
-       * All source files: Get rid of nasty special cases for Checker,
-       which is pretty obsolete now.
-
-Thu Dec 11 21:38:24 WST 2003 John Darrington <john@darrington.wattle.id.au>
-
-       * Fixed a bug apparent when using the FREQUENCIES command with the
-       html driver.  The html driver was incorrectly trying to display 
-       empty cells.
-
-Sun Jan  2 21:40:13 2000  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Reorganized.  Put locale dir in version.c instead
-       of passing it to each compile command.  Only put local gmp libs in
-       LD_ADD if not installed on system.  Remove `boast' target.
-
-       * All source files: struct and union typedefs eliminated.
-       `sizeof type' replaced by `sizeof object' where practical.  Moved
-       `unused' qualifiers from start to end of declarations for gcc
-       2.7.2 compatibility.  Change `while (1)' to `for (;;)'.  Made
-       assertions on pointers strictly compliant.  Removed _ prefixes on
-       some function parameter names.
-
-       * alloc.c: New source file, containing these external linkage
-       functions removed from common.c: xmalloc, xcalloc, xrealloc,
-       xstrdup.
-
-       * arena.c: Removed.
-       
-       * arena.h: Removed.
-
-       * ascii.c: Migrated from arenas to pools.
-       (struct ascii_driver_ext) ops[], box[], fonts[] changed from
-       c_string to len_string.  All references changed.
-       (ascii_option) Signature changed to comply to new output.c
-       interface.
-       (count_fancy_chars) Removed.
-       (delineate) Removed support for rich text.
-       (ascii_text_metrics) Ditto.
-       (text_draw) Ditto.
-       (output_shorts) Change `box', `off', `on' from c_string to
-       len_string.  Change `remaining' from int to size_t.
-       (ascii_close_page) Make page numbering less haphazard.
-
-       * autorecode.c: Migrate from arenas to pools.
-
-       * avl.c: Migrate from arenas to pools.  Synch from libavl 1.4.0.
-
-       * bitvector.h: New file containing these macros from misc.h:
-       SET_BIT, CLEAR_BIT, SET_BIT_TO, TEST_BIT, BIT_INDEX.
-
-       * command.c: (struct command) cmd1, cmd2, cmd3 members changed to
-       word[3].  ncmd removed.
-       (var empty_string) Removed.
-       (var cmd_table) Declaration updated.
-       (var cmdtab) Removed.
-       (cmp_command) Removed.
-       (split_words) Rewritten to use strtok_r().
-       (init_cmd_parser) Renamed cmd_init().  Rewritten.
-       (find_command) Removed.
-       (FILE_TYPE_okay) Rewritten.
-       (cmd_parse) Rewritten.  Semantics of the return value of command
-       handlers has changed: they must now return one of the new CMD_*
-       enumerals, rather than a magic value.  This meant that all
-       commands had to be modified, and they were.
-       (figure_out_command) New function.
-
-       * command.def: Add CORRELATIONS, PEARSON CORRELATIONS.  Add
-       #defines for INIT, INPU, etc.
-
-       * command.h: New CMD_* enum series.
-       (cur_proc) Make const char *, not char *.
-       (cmd_init) Prototype.
-       (cmd_parse) Ditto.
-
-       * common.c: Removed.
-
-       * common.h: Removed.
-
-       * correlations.q: New file.
-
-       * crosstabs.q: Migrate from arenas to pools.  Migrate to new-style
-       q2c.
-       (custom_tables) Renamed crs_custom_tables().
-       (custom_variables) Renamed crs_custom_variables().
-       (calc_integer) Add in some `const' qualifiers.
-       (table_value_missing) Change from a_string to len_string.
-       (float_M_suffix) Change from a_string to len_string.
-
-       * data-in.c: Rewritten.  All references to
-       parse_string_as_format() changed to data_in().
-
-       * data-in.h: New file.
-
-       * data-list.c: Change DLS_* from #define's to enums.  Move from
-       rpd_msg() to tmsg().
-       (RPD_ERR) New #define.
-       (do_reading) Change dfm_push_cust() to dfm_push(), pop_cust() to
-       dfm_pop().
-       (read_from_data_list_fixed) Change from old
-       parse_string_as_format() to new data_in().
-       (read_from_data_list_free) Ditto.
-       (read_from_data_list_list) Ditto.
-       (cmd_repeating_data) Modify approach to checking for end of
-       command.
-       (rpd_msg) Removed.
-       (rpd_parse_record) Change from old parse_string_as_format() to new
-       data_in().  Change from old convert_format_to_string() to new
-       data_out().
-       (read_one_set_of_repetitions) Change dfm_push_cust() to
-       dfm_push(), pop_cust() to dfm_pop().
-
-       * data-out.c: Rewritten.  All references to
-       convert_format_to_string() changed to data_out().
-
-       * descript.q: Migrate to new q2c.
-       (cmd_descriptives) Removed.
-       (internal_cmd_descriptives) Renamed cmd_descriptives ().
-       (custom_variables) Renamed dsc_custom_variables().
-
-       * dfm.c: (struct dfm_fhuser_ext) `ln' removed.  All references
-       removed.
-       (open_file_r) Initialize h->where.line_number.  Migrate to new
-       struct string.
-       (open_file_w) Initialize h->where.line_number.
-       (read_record) Change from ext->ln to h->where.line_number.
-       Migrate to struct string.
-       (dfm_put_record) Rephrased.
-       (dfm_push_cust) Renamed dfm_push(), rewritten.
-       (dfm_pop) New function.
-
-       * error.c: All references updated.
-       (glob var error_count) Renamed err_err_count.
-       (glob var warning_count) Renamed err_warning_count.
-       (glob var error_already_flagged) Renamed err_already_flagged.
-       (glob var verbosity) Renamed err_verbosity.
-       (glob var cust_fn) Removed.
-       (glob var cust_ln) Removed.
-       (static var file_loc) New.
-       (static var nfile_loc) New.
-       (static var mfile_loc) New.
-       (tmsg) New function.
-       (push_cust) Removed.
-       (pop_cust) Removed.
-       (msg) Rewritten.
-       (static var terminating) Removed.
-       (failure) Renamed err_failure().
-       (hcf) Renamed err_hcf().
-       (err_push_file_locator) New function.
-       (err_pop_file_locator) New function.
-       (err_location) New function.
-       (check_error_count) Renamed err_check_count().
-       (vmsg) Renamed err_vmsg().  Interface changed.
-       (verbose_msg) Removed.
-       (err_cond_fail) New function.
-       (error_break) Renamed err_break().
-
-       * error.h: All references updated.
-       (enum MSG_CLASS_COUNT) Renamed ERR_CLASS_COUNT.
-       (enum ERR_CLASS_MASK, ERR_VERBOSITY_SHIFT, ERR_VERBOSITY_MASK)
-       New.
-       (struct file_locator) New.
-       (struct error) New.
-       (macro verbose_msg) Removed.
-       (macro cond_fail) Removed.
-
-       * expr-opt.c: (evaluate_tree) sizeof(char) == 1.
-
-       * expr-prs.c: Reorganized.  All references updated.
-       (exprtypename) Renamed expr_type_name().
-       (typename) Renamed type_name().
-       (free_expression) Renamed expr_free().
-       (parse_expression) Renamed expr_parse().  Uses new type_check()
-       function.
-       (init_functab) Renamed init_func_tab().
-       (type_check) New function.
-       (parse_or) Rewritten to use new allocate_nonterminal() and
-       append_nonterminal_arg() functions.
-       (parse_and) Ditto.
-       (parse_not) Ditto.
-       (parse_rel) Ditto.  Also simplified logic.
-       (parse_add) Ditto.
-       (parse_mul) Ditto.
-       (parse_neg) Ditto.
-       (parse_exp) Ditto.
-       (SYSMIS_func) Ditto.
-       (VALUE_func) Rephrased.
-       (CONCAT_func) Fix memory leak by replacing free by free_node on
-       lossage.
-       (generic_str_func) Ditto.
-       (parse_function) Ditto.  Also rephrasings.  Uses bsearch() to find
-       function.
-       (allocate_nonterminal) New function.
-       (append_nonterminal_arg) New function.
-       (static func_tab[]) Now at file level.
-       (cmp_func) Moved.
-       (init_func_tab) Moved.  Now just uses qsort() to sort func_tab[].
-
-       * expr.h: (enum series OP_*) Moved to exprP.h.
-       (OP_* defines) Ditto.
-       (struct op_desc) Ditto.
-       (global ops[]) Ditto.
-       (struct num_con_node) Ditto.
-       (struct str_con_node) Ditto.
-       (struct var_node) Ditto.
-       (struct lag_node) Ditto.
-       (struct casenum_node) Ditto.
-       (struct nonterm_node) Ditto.
-       (union any_node) Members renamed.
-       (struct sys_node) Removed.
-       (struct val_node) Removed.
-       (operator typedef) Removed.
-       (typedef exprtype) Removed.
-       (enum series EX_*) Moved to exprP.h.
-       (struct expression) Ditto.  Also renamed a lot of the members.
-       (PXP_* defines) Changed to enums.
-       (free_node prototype) Moved to exprP.h.
-
-       * file-handle.h: (struct file_handle) New member `where'.
-
-       * file-handle.q: Migrated to new q2c format.
-       (prepend_current_directory) Removed (dead code).
-       (cmd_file_handle) Incorporated all of internal_cmd_file_handle().
-       (fh_get_handle_by_filename) Removed dead code.
-       Set new `where' member.
-
-       * file-type.c: (file_type_source_read) References to
-       parse_string_as_format() changed to data_in().
-       dfm_push_cust()/pop_cust() changed to dfm_push()/dfm_pop().
-
-       * filename.c: All references updated.
-       (init_filename) Renamed fn_init().
-       (expand_line) Removed.
-       (macro EXPAND_LINE) Removed.
-       (interp_vars) Renamed fn_interp_vars().  Now uses st_*() instead
-       of custom functions.
-       (gnu_getcwd) Renamed fn_get_cwd(), rewritten.
-       (tilde_expand) Renamed fn_tilde_expand(), uses ds_*().
-       (normalize_filename) Renamed fn_normalize().
-       (search_path) Renamed fn_search_path(), rewritten.
-       (prepend_dir) Renamed fn_prepend_dir().
-       (blp_getenv) Renamed fn_getenv().
-       (blp_dirname) Renamed fn_dirname().
-       (fn_basename) New function, not used.
-       (absolute_filename_p) Renamed fn_absolute_p().
-       (is_special_filename) Renamed fn_special_p().
-       (file_exists) Renamed fn_exists_p().
-       (readlink_malloc) Renamed fn_readlink().
-       (getenv_default) Renamed fn_getenv_default().
-       (open_file) Renamed fn_open().
-       (close_file) Renamed fn_close().
-       (open_file_ext) Renamed fn_open_ext().
-       (close_file_ext) Renamed fn_close_ext().
-
-       * font.h: Migrate from arenas to pools.
-
-       * format.c: (parse_format_specifier_name) Deal with ds_* strings.
-
-       * frequencies.g: Migrate from arenas to pools.
-
-       * frequencies.q: Migrate to new q2c version.  Migrate from arenas
-       to pools.
-
-       * getline.c: All references updated.
-       (global getl_buf) Changed from char * to struct string.
-       (static getl_include_path) Ditto.
-       (global getl_buf_len) Removed.
-       (global getl_buf_size) Removed.
-       (getl_include_path) Deal with new getl_buf, getl_include_path.
-       (getl_uninitialize) New function.
-       (getl_get_current_directory) Rewritten.
-       (getl_clear_include_path) Rewritten.
-       (getl_add_include_dir) Rewritten.
-       (getl_add_file) Assertion fixed.
-       (getl_add_virtual_file) Change initial value of `remaining_loops'
-       from 2 to 1.
-       (welcome) Rewritten.
-       (handle_line_buffer) Make static.  Change logic to make
-       getl_add_virtual_file() change sensible.  Use ds_*() strings.
-       (getl_read_line) Use ds_*() strings.  Implement SET ECHO.
-       (getl_close_file) Moved.
-       (getl_location) New function.
-
-       * getline.h: All references updated.
-       (macro curln) Removed.
-       (macro curfn) Removed.
-       (macro am_interactive) Renamed getl_am_interactive.
-       (macro am_reading_script) Renamed getl_reading_script.
-
-       * glob.c: (global fmt_parse_ignore_error) Removed.
-       (init_glob) Use locale_dir not LOCALEDIR.  Use feholdexcept() on
-       systems that support it (C99).  Turn off SET ECHO by default.  No
-       necessary julcal initialization anymore.
-
-       * groff-font.c: Migrate from arenas to pools.
-       (groff_read_font) Use err_push_file_locator().
-       (groff_read_DESC) Ditto.
-       (font_msg) Use tmsg().
-
-       * hash.c: (hsh_sort) Fix debug code.
-       [GLOBAL_DEBUGGING] Include stdio.h.
-
-       * hash.h: (macro force_hsh_insert) Rephrase.
-
-       * heap.c: Rewritten.
-       
-       * heap.h: Rewritten.
-
-       * html.c: (html_option) Change from outp_value to struct string.
-       (postopen) Change from curfn to getl_location().
-       (escape_string) Remove rich-text code.  Signature changed.
-       (output_tab_table) Switch from a_string to struct len_string.
-       Remove rich text support.
-
-       * lexer.c: All references updated.  Largely rewritten.  Major
-       changes listed below.  Removed tagged quote support.  Adapted to
-       struct string tokstr.
-       (global tokstr) Changed to struct string.
-       (global tokstr_size) Removed.
-       (global tokstr_len) Removed.
-       (global tokid) New.
-       (global tokint) Removed.
-       (global toklongstr) Removed.
-       (C* defines) Removed.
-       (static tbl[]) Removed.
-       (static id[]) Removed.
-       (static une[]) Removed.
-       (discard_line) Renamed lex_discard_line().
-       (get_entire_line) Renamed lex_entire_line().
-       (get_rest_of_line) Renamed lex_rest_of_line().
-       (get_dotted_rest_of_line) Merged into lex_rest_of_line().
-       (make_hexit) Removed.
-       (syntax_error) Renamed lex_error().  Return value removed.
-       (get_token_representation) Renamed lex_token_representation().
-       (putback) Renamed lex_put_back().
-       (putfwd) Renamed lex_put_forward().
-       (convert_negative_to_dash) Renamed lex_negative_to_dash().
-       (set_prog) Renamed lex_set_prog().
-       (init_lex) Renamed lex_init().
-       (reset_eof) Renamed lex_reset_eof().
-       (lookahead) Renamed lex_look_ahead().
-       (check_id) Rewritten.
-       (yylex) Renamed lex_get(), rewritten.
-       (lex_end_of_command) New function.  Many commands were rephrased
-       using this.
-       (lex_integer_p) New function.  Replaces compare of tokint against
-       NOT_LONG.
-       (lex_integer) New function.  Replaces tokint.
-       (match_tok) Renamed lex_match().
-       (match_id) Renamed lex_match_id().
-       (match_int) Renamed lex_match_int().
-       (force_match_id) Renamed lex_force_match_id(), added return value.
-       (force_match) Renamed lex_force_match(), added return value.
-       (force_string) Renamed lex_force_string(), added return value.
-       (force_int) Renamed lex_force_int(), added return value.
-       (lex_id_match_len) New function.
-       (id_match) Renamed lex_id_match(), rewritten.
-       (get_line) Renamed lex_get_line().
-       (preprocess_line) Renamed lex_preprocess_line().
-       (tokname) Renamed lex_token_name().
-       (bin_value_func) Removed.
-       (oct_value_func) Removed.
-       (hex_value_func) Removed.
-       (unexpected_eof) New function.
-       (convert_numeric_string_to_char_string) New function.
-       (parse_string) Rewritten, signature changed.
-       (add_tokstr_char) Removed.
-       (add_tokstr_unsigned) Removed.
-       (add_tokstr_string) Removed.
-       (parse_tagged_quote) Removed.
-       (skip_comment) Renamed lex_skip_comment().
-
-       * lexer.h: All references updated.
-       (macro is_id1) Renamed CHAR_IS_ID1.
-       (macro is_idn) Renamed CHAR_IS_IDN.
-       (token names ID, NUM, STRING, STOP, ... WITH, EXP) Renamed with
-       prefix T_: T_ID, T_NUM, T_STRING, T_STOP, ... T_WITH, T_EXP.
-       (macro get_token) Removed.
-       (macro id_match) Removed.
-       (macro force_match_id) Removed.
-       (macro force_match) Removed.
-       (macro force_string) Removed.
-       (macro force_int) Removed.
-       (macro force_num) Removed.
-       (macro force_id) Removed.
-
-       * lexerP.h: Removed.
-
-       * list.q: Migrated to new q2c format.
-       (write_line) Deal with struct len_string.
-       (write_varname) Ditto.
-       (write_fallback_headers) Ditto.
-
-       * magic.c: New file, incorporating the following global variables
-       previously in other files: endian, second_lowest_value.  And both
-       of those are conditional on #define's.
-
-       * magic.h: New file, incorporating the following global variable
-       declarations: endian, second_lowest_value, and the following macro
-       declarations: NOT_DOUBLE, NOT_LONG, NOT_INT.
-
-       * main.c: Added declarations of pgmname, finished, curdate,
-       start_interactive.
-       (main) Call new parse_script() function.
-       (parse_script) New function.
-       (execute_command) New function.
-       (dump_token) Removed.
-       (handle_error) New function.
-
-       * matrix.c: New file.
-
-       * matrix.h: New file.
-
-       * matrix-data.c: Migrated from arenas to pools.
-       (mget_token) Change from parse_string_as_format() to data_in().
-
-       * means.q: Migrate to new q2c.
-       (custom_tables) Renamed mns_custom_tables().
-       (custom_crossbreak) Renamed mns_custom_crossbreak().
-       (custom_variables) Renamed mns_custom_variables().
-
-       * mis-val.c: (static var width) Changed from `int' to `size_t'.
-       (parse_varnames) Prototype.
-       (parse_numeric) Rephrasings.
-       (parse_alpha) Adapt to new struct string tokstr.
-
-       * misc.c: (intlog10) Rewritten.
-       (spacing) Removed.
-       (ansi_rand) Renamed real_rand(), moved into random.c.
-       (ansi_srand) Renamed real_srand(), moved into random.c.
-       (setup_randomize) Moved to random.c.
-       (rand_uniform) Ditto.
-       (rand_normal) Ditto.
-       (rand_simple) Ditto.
-       (get_config_line) Removed.
-       (reverse) Removed (dead code).
-
-       * misc.h: (macro SET_BIT) Moved to bitvector.h.
-       (macro CLEAR_BIT) Ditto.
-       (macro TEST_BIT) Ditto.
-       (macro SET_BIT_TO) Ditto.
-       (macro BIT_INDEX) Ditto.
-
-       * output.c: (outp_read_devices) Move to err_push_file_locator()
-       from push_cust().  Use struct string.
-       (expand_op_tokstr) Removed.
-       (static var op_tokstr) Changed to struct string.
-       (static var op_tokstr_size) Removed.
-       (tokener) Rephrasings.  Use struct string.
-       (parse_options) Use struct string.
-       (destroy_driver) Fix assertion.
-       (outp_get_paper_size) Move to err_push_file_locator().
-       [0] Removed dead code.
-       (outp_string_width) Move to len_string.
-
-       * output.h: Comment fixes.
-       (TAG_* enum series) Removed.
-       (struct outp_value) Removed.
-       (enum OUTP_T_FANCY) Removed.
-       (struct outp_text) `s' changed from a_string to len_string.
-       (struct outp_class) `option' change arg 3 from outp_value to
-       struct string.
-
-       * pfm-read.c: (corrupt_msg) Rewritten.
-
-       * pfm-write.c: (bufwrite) Fix assertion.
-
-       * pool.c: New file, reference version.
-
-       * pool.h: New file, reference version.
-
-       * postscript.c: (ps_font_sizes) Fix assertion.
-       (ps_option) Change arg 3 from outp_value to struct string.
-       Adapt to struct string.
-       (macro output_line) Removed.
-       (macro add_string) Removed.
-       (output_encodings) Adapted to struct string.  Moved to
-       err_push_file_locator().
-       (find_encoding_file) Fix assertion.
-       (read_ps_encodings) Move to err_push_file_locator().
-       (postopen) Use getl_location() instead of curfn.
-       (out_text_plain) Move to len_string.
-       (text) Ditto.  Remove rich text support.
-
-       * print.c: (cmd_print) Remove now-unneeded resource cleanup code.
-       (cmd_print_eject) Ditto.
-       (cmd_write) Ditto.
-       (internal_cmd_print) Now cleans up after itself.  Uses
-       fh_parse_file_handle() now.
-       (cmd_print_space) Use PXP_NUMERIC to type-check.
-
-       * q2c.c: Overhauled.  Removed _("") i18n support.  All references
-       updated.  All output functions updated to handle structures rather
-       than local or static variables.  Adapt to new PSPP lex_*()
-       functions.
-       (macro _) Removed.
-       (macro N_) Removed.
-       (macro MAX_N_SBC) Removed.
-       (global bare) Removed.
-       (enum STRING) Renamed T_STRING.
-       (enum ID) Renamed T_ID.
-       (get_buffer) Buffer size increased.
-       (strlower) Renamed st_lower(), rephrased.
-       (strupper) Renamed st_upper(), rephrased.
-       (skip_ws) New function.
-       (get_line) Don't special-case any types of lines (like those
-       beginning with ! or $, for instance).
-       (get_token) Renamed lex_get().  Rephrased.
-       (static var `prefix') New.
-       (parse) New function.
-       (parse_setting) Minor rephrasing.
-       (dump_specifier_vars) Ditto.
-       (make_identifier) Put null terminator on identifier, duh.
-       (dump_vars) Renamed dump_declarations().  Never indent.  Never
-       static.  Output changed entirely.
-       (dump_specifier_init) Rephrase.
-       (dump_vars_init) No index variable needed.  Other modifications.
-       (dump_parser) Don't parse command name.  Do dump functions instead
-       of just code fragments.
-       (dump_free) Dump function instead of code fragment.
-       (recognize_directive) New function.
-       (main) Use recognize_directive().  Don't rely on magic $ line
-       beginning: instead, parse comments.  Update list of headers.
-
-       * random.c: New file, containing the following functions:
-       real_rand(), real_srand(), setup_randomize, shuffle, rand_uniform,
-       rand_normal, rand_simple.
-
-       * random.h: New file.
-
-       * recode.c: (cmd_recode) Merge internal_cmd_recode() into this
-       function.  `max_src_width', `max_dst_width' changed to size_t.
-       (internal_cmd_recode) Removed.
-       (parse_dest_spec) Merge similar cases.
-       (parse_src_spec) Add assertion.
-
-       * repeat.c: (recognize_keyword) New function.
-       (internal_cmd_do_repeat) Parse and handle PRINT keyword on END
-       REPEAT.  Improve recognition of END REPEAT (use
-       recognize_keyword()).  Move from curfn to getl_location().  Use
-       struct string.
-               
-       (perform_DO_REPEAT_substitutions) Adapt to struct string.
-
-       * set.q: Adapt to new q2c.
-       (cmd_set) Range-check some values better.
-       (custom_blanks) Renamed stc_custom_blanks().
-       (custom_length) Renamed stc_custom_length().
-       (custom_results) Renamed stc_custom_results().
-       (custom_seed) Renamed stc_custom_seed().
-       (custom_width) Renamed stc_custom_width().
-       (custom_format) Renamed stc_custom_format().
-       (custom_journal) Renamed stc_custom_journal().
-       (custom_color) Renamed stc_custom_color().
-       (custom_listing) Renamed stc_custom_listing().
-       (custom_disk) Renamed stc_custom_disk().
-       (custom_log) Renamed stc_custom_log().
-       (custom_rcolor) Renamed stc_custom_rcolor().
-       (custom_viewlength) Renamed stc_custom_viewlength().
-       (custom_workdev) Renamed stc_custom_workdev().
-
-       * settings.h: Not necessary to include format.h any longer.
-
-       * sfm-read.h: (macro bswap_int32) Moved here from sfmP.h.
-       (corrupt_msg) Rewritten.
-
-       * sort.c: Adapt to rewritten heap ADT.
-
-       * str.c: (aa_strcpy) Removed.
-       (ab_strcpy) Removed.
-       (ac_strcpy) Removed.
-       (ba_strcpy) Removed.
-       (bb_strcpy) Removed.
-       (ca_strcpy) Removed.
-       (aa_strdup) Removed.
-       (aa_strdupcpy) Removed.
-       (ba_strdup) Removed.
-       (sa_strdup) Removed.
-       (memrev) Renamed mm_reverse().
-       (memrmem) Renamed mm_find_reverse().
-       (cmp_str) Renamed st_compare_pad().
-       (strmaxcpy) Removed.
-       (strbarepadcpy) Renamed st_bare_pad_copy(), signature changed.
-       (strbarepadlencpy) Renamed st_bare_pad_len_copy(), signature
-       changed.
-       (strpadcpy) Renamed st_pad_copy(), signature changed.
-       (blpstrset) Removed.
-       (ds_create) New function.
-       (ds_init) New function.
-       (ds_replace) New function.
-       (ds_destroy) New function.
-       (ds_clear) New function.
-       (ds_extend) New function.
-       (ds_shrink) New function.
-       (ds_truncate) New function.
-       (ds_length) New function.
-       (ds_size) New function.
-       (ds_value) New function.
-       (ds_end) New function.
-       (ds_concat) New function.
-       (ds_concat_buffer) New function.
-       (ds_printf) New function.
-       (ds_putchar) New function.
-       (ds_getline) New function.
-       (ds_get_config_line) New function derived from the old
-       misc.c:get_config_line().
-       (ls_create) New function.
-       (ls_create_buffer) New function.
-       (ls_init) New function.
-       (ls_shallow_copy) New function.
-       (ls_destroy) New function.
-       (ls_null) New function.
-       (ls_null_p) New function.
-       (ls_empty_p) New function.
-       (ls_length) New function.
-       (ls_value) New function.
-       (ls_end) New function.
-
-       * str.h: Reformatted.
-       (struct a_string) Removed.
-       (struct b_string) Removed.
-       (struct c_string) Removed.
-       (struct len_string) New.
-       (struct string) New.
-       (macro as_streq) Removed.
-       (macro bs_streq) Removed.
-       (macro cs_streq) Removed.
-       (macro sa_streq) Removed.
-       (macro sb_streq) Removed.
-       [__GNUC__] (inline function ds_putchar) New function.
-       [__GNUC__] (inline function ds_length) New function.
-       [__GNUC__] (inline function ds_value) New function.
-       [__GNUC__] (inline function ds_end) New function.
-
-       * sysfile-info.c: (cmd_sysfile_info) Rephrased.
-       (display_vectors) Fix missing i18n.
-
-       * t-test.q: Migrate to new q2c.
-
-       * tab.c: Migrate from arenas to pools.
-       (tab_create) Use struct len_string.
-       (tab_realloc) Ditto.
-       (text_format) Ditto.
-       (tab_joint_text) Ditto.
-       (tab_natural_width) Remove rich text support.
-       (tab_natural_height) Ditto.
-       (tab_output_text) Handle TAT_FIX.
-       (tab_raw) Change arg from a_string to len_string.
-       (tabi_driver) Fix assertion.  Use struct len_string.
-       (render_strip) Use struct len_string.  Remove rich text support.
-       Add `const' qualifiers.
-
-       * tab.h: (enum TAB_RICH) Remove.
-       (enums TAB_COL_NONE, TAB_COL_DONE) New.  Where appropriate,
-       SOM_COL_* updated to read TAB_COL_*.
-       (struct tab_table) Change arena to pool.  Change a_string to
-       len_string.
-
-       * temporary.c: (restore_dictionary) Rewrite Checker code.
-
-       * var.h: (macros MAX_SHORT_STRING, MIN_LONG_STRING, SYSMIS,
-       LOWEST, HIGHEST) Moved here from common.h.
-       (typedef any_trns) Removed.  All references changed to `struct
-       trns_header'.
-
-       * vars-atr.c: (force_create_variable) Fix assertion.
-       (force_dup_variable) Fix assertion.
-       
-Thu Jun  3 18:40:42 1999  Ben Pfaff  <blp@gnu.org>
-
-       Using alphanumeric variables in functions under AGGREGATE
-       segfaulted.  Fixed.  Thanks to Dr. Dirk Melcher
-       <BZN-mdksh@t-online.de> for reporting this bug.
-       
-       * aggregate.c: (parse_aggregate_functions) When setting the
-       FSTRING bit, also allocate memory for the `string' member of
-       agr_next.
-       (free_aggregate_functions) Free iter->string.  Don't use the
-       non-function bits when indexing the array of functions.
-       [DEBUGGING] (debug_print) Don't use the non-function bits when
-       indexing the array of functions.        
-
-Sun May 30 00:00:54 1999  Ben Pfaff  <blp@gnu.org>
-
-       Under certain circumstances, the final case would be omitted from
-       the results of an AGGREGATE operation.  Fixed.  Thanks to Dr. Dirk
-       Melcher <BZN-mdksh@t-online.de> for reporting this bug.
-       
-       * aggregate.c (agr_00x_end_func): Increment number of cases in
-       sink before writing case.  For streams that keep track of how many
-       cases there are based on this value, this means that the last case
-       will be read in on the next stream read.
-
-Sat May 29 22:03:31 1999  Ben Pfaff  <blp@gnu.org>
-
-       Undefined behavior was invoked by referencing a freed pointer.
-       
-       * vfm.c (memory_stream_write): Free pointer *after* checking for
-       non-null status.
-
-Sat May 29 22:02:22 1999  Ben Pfaff  <blp@gnu.org>
-
-       A wrong record size was displayed when paging the active file to
-       disk.
-       
-       * vfm.c: (memory_stream_write) Fix off-by-one error.
-
-Sat May 29 21:50:26 1999  Ben Pfaff  <blp@gnu.org>
-
-       Not having enough temporary space for sorting caused a core dump.
-       Fixed.
-       
-       * sort.c: (allocate_cases) Initialize i.
-
-Sat May 29 21:40:54 1999  Ben Pfaff  <blp@gnu.org>
-
-       Syntax errors in function descriptions on AGGREGATE caused core
-       dumps.  Fixed.
-       
-       * aggregate.c (cmd_aggregate): Don't free agr_dict after calling
-       free_aggregate_functions(), since that function already frees
-       agr_dict.
-       
-Sat May 29 21:06:10 1999  Ben Pfaff  <blp@gnu.org>
-
-       A null pointer was dereferenced, causing a core dump, when
-       PERCENTILES was specified on FREQUENCIES.  This fixes the problem,
-       but PSPP still doesn't calculate percentiles.  Thanks to Regnor
-       Jernsletten <rjernsle@eunet.no> for reporting this problem.
-       
-       * arena.c: (arena_malloc) If the arena hasn't been initialized
-       already, initialize it.
-
-Sat May 29 20:47:29 1999  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.cygwin: New file supplied by Hankin <hankin@dunno.com>
-       for compilation with Cygnus Windows B20.  Not used by other
-       systems.
-
-Sat May 29 20:36:04 1999  Ben Pfaff  <blp@gnu.org>
-
-       SORT always sorted in ascending order.  Fixed.  Thanks to Dr. Dirk
-       Melcher <BZN-mdksh@t-online.de> for reporting this bug.
-
-       * sort.c: (compare_case_lists) Reverse sense of comparison if
-       sorting in descending order.
-       (compare_record) Ditto.
-
-Tue Mar  9 13:18:54 1999  Ben Pfaff  <blp@gnu.org>
-
-       SPLIT FILE with a string variable caused a core dump.  Fixed.
-
-       * vfm.c: If the variable is a string then make a temporary value
-       struct pointing to it.  The underlying problem is a lot bigger
-       than this (see TODO) but this is a stopgap for the simple case at
-       least.
-       
-Tue Mar  9 13:15:53 1999  Ben Pfaff  <blp@gnu.org>
-
-       Nested INCLUDEs didn't work.  Fixed.
-
-       * getline.c: (getl_include) Set first_line to NULL in allocated
-       structure.
-
-Tue Mar  9 13:13:46 1999  Ben Pfaff  <blp@gnu.org>
-
-       The MATCH FILES procedure set the values of variables not present
-       to 0.  It should have been SYSMIS.  This is now fixed.
-
-       * get.c: (mtf_delete_file_in_place) Replace 0.0 by SYSMIS.
-
-Tue Mar  9 12:52:23 1999  Ben Pfaff  <blp@gnu.org>
-
-       The REMARK command was too aggressive about skipping lines.  It
-       didn't like being the last command in a file.
-
-       * command.c: (cmd_remark) Call get_entire_line() instead of
-       get_line().
-
-Tue Mar  9 12:48:05 1999  Ben Pfaff  <blp@gnu.org>
-
-       Comment parsing wasn't consistent with the rest of the code in its
-       idea of where one command ends and another starts.  This meant
-       that sometimes commands would be mysteriously ignored.  Thanks to
-       Dr. Dirk Melcher <BZN-mdksh@t-online.de> for reporting this bug.
-        
-       * command.c: (parse_cmd) Hand off comment parsing to new function
-       skip_comment() in lexer.c.
-       * lexer.c: (skip_comment) New function.
-
-Wed Jan 20 20:22:07 1999  Ben Pfaff  <blp@gnu.org>
-
-       The TABLE subcommand on MATCH FILES worked only erratically at
-       best.  This fixes it.  Thanks to Dr. Dirk Melcher
-       <BZN-mdksh@t-online.de> for reporting this bug.
-
-       * get.c: (mtf_compare_BY_values) When comparing string values, a
-       difference of 1 is still a difference :-)
-       (mtf_processing) Inverted TABLE reading logic fixed.  Also don't
-       advance TABLE files automatically when matched.  Comment fixes.
-
-Tue Jan 19 22:32:31 1999  Ben Pfaff  <blp@gnu.org>
-
-       VARIABLE LABELS rejected a slash before the first variable
-       specification, contradicting the documentation.  Thanks to Walter
-       M. Gray <graywm@northernc.on.ca> for reporting this bug.
-
-       * var-labs.c: (cmd_variable_labels) Ignore a leading slash in
-       command specification.
-
-Tue Jan 19 22:29:54 1999  Ben Pfaff  <blp@gnu.org>
-
-       Because of an incorrect optimization in memory allocation,
-       CROSSTABS sometimes segfaulted when asked to output multiple
-       tables.  Thanks to Walter M. Gray <graywm@northernc.on.ca> for
-       reporting this bug.
-
-       * crosstabs.q: (postcalc) New variables maxcols, maxcells, which
-       are passed to output_pivot_table() for its use.
-       (output_pivot_table) Instead of assuming the number of columns is
-       constant, keep track with maxcols.  In general mode, use maxcells
-       to determine whether more matrix cells need to be allocated.    
-
-Tue Jan 19 22:27:46 1999  Ben Pfaff  <blp@gnu.org>
-
-       CROSSTABS didn't display value labels for column and row
-       variables.  Thanks to Walter M. Gray <graywm@northernc.on.ca> for
-       reporting this bug.
-
-       * crosstabs.q: (table_value_missing) If the specified value has a
-       value label for this variable, then show it instead of the raw
-       value.
-       (display_dimensions) Delegate display of value_labels to
-       table_value_missing.
-
-Mon Jan 18 20:04:06 1999  Ben Pfaff  <blp@gnu.org>
-
-       WRITE didn't write line ends.  Fixed.  Thanks to Dr. Dirk Melcher
-       <BZN-mdksh@t-online.de> for reporting this bug.
-
-       * print.c: (print_trns_proc) Write (CR/)LF if PRINT is used _or_
-       if the file isn't declared as binary.
-
-Mon Jan 18 19:56:45 1999  Ben Pfaff  <blp@gnu.org>
-
-       MATCH FILES corrupted memory and dumped core on some syntax
-       errors.  Fixed.
-
-       * get.c: (cmd_match_files) Set file->handle to NULL before
-       jumping to lossage.
-       (mtf_free_file) Don't free a null dictionary.   
-
-Mon Jan 18 19:27:57 1999  Ben Pfaff  <blp@gnu.org>
-
-       MATCH FILES should set numeric values not available to the
-       system-missing value, not to 0.  Thanks to Dr. Dirk Melcher
-       <BZN-mdksh@t-online.de> for reporting this bug.
-
-       * get.c: (mtf_processing) Set unused records to system-missing,
-       not 0.
-
-Mon Jan 18 15:06:46 1999  Ben Pfaff  <blp@gnu.org>
-
-       KEEP didn't work properly on the SAVE procedure.  Fixed.  Thanks
-       to Ralf Geschke <ralf@kuerbis.org> for reporting this bug.
-
-       * temporary.c: (save_dictionary) Initialize var_by_name AVL tree
-       in newly created dictionary, and add each copied variable to the
-       tree.
-Mon Jan 18 15:04:48 1999  Ben Pfaff  <blp@gnu.org>
-
-       Memory leak fix.
-       
-       * get.c: (trim_dictionary) Free variable list for KEEP after
-       finishing with it.
-
-Mon Jan 18 12:57:36 1999  Ben Pfaff  <blp@gnu.org>
-
-       Some systems didn't like the way open_file was coded.  Thanks to
-       Hankin <hankin@rogue.consultco.com> for pointing this out.
-
-       * filename.c: (open_file) Don't try to store stdin, stdout,
-       stderr as part of an array, because that doesn't always work.
-
-Mon Jan 18 12:53:27 1999  Ben Pfaff  <blp@gnu.org>
-
-       The SAVE procedure didn't save long string variables properly.
-       Fixed by this patch.  Thanks to Hankin
-       <hankin@rogue.consultco.com> for this patch.
-       
-       * sfm-write.c: (write_variable) Fix off-by-one error in writing
-       out variable pad records.
-
-Tue Jan  5 14:29:27 1999  Ben Pfaff  <blp@gnu.org>
-
-       Previously, if PRINT SPACE were given a negative argument, it
-       would report an error, then spin in an (almost) infinite loop.
-       This fixes that behavior.
-
-       * print.c: (print_space_trns_proc) After reporting a negative
-       argument, set number of lines to print to 1.
-
-Tue Jan  5 13:59:55 1999  Ben Pfaff  <blp@gnu.org>
-
-       SPSS 8.0 outputs some new record types in its system files, and it
-       allows longer value labels.  Accept these system files.
-
-       * sfm-read.c: (sfm_read_dictionary) Ignore record type 7 subtype
-       11 emitted by SPSS 8.0.
-       
-Tue Jan  5 13:55:50 1999  Ben Pfaff  <blp@gnu.org>
-
-       The LIST procedure was too conservative in allocating space for
-       buffers, which caused a bug that only showed up with very long
-       output variables.  Thanks to Hankin <hankin@dunno.com> for this
-       bug report.
-
-       * list.q: (determine_layout) Allocate 1022 bytes instead of 256.
-
-Tue Jan  5 13:34:34 1999  Ben Pfaff  <blp@gnu.org>
-
-       Typo meant string format specifiers weren't checked properly.  I
-       think that Hankin <hankin@dunno.com> sent me this report, but I'm
-       willing to be corrected on this point.
-       * format.c: (check_string_specifier) Fix obvious typo.  
-
-Tue Jan  5 12:50:42 1999  Ben Pfaff  <blp@gnu.org>
-
-       Using $CASENUM in an expression didn't work.  Here's a fix.
-       Thanks to Dirk Melcher <BZN-mdksh@t-online.de> for reporting this
-       bug.
-        
-       * expr-evl.c: (evaluate_expression) Add OP_CASENUM case.
-
-       * expr-opt.c: (dump_node) OP_CASENUM is acceptable.
-
-Tue Jan  5 12:47:48 1999  Ben Pfaff  <blp@gnu.org>
-
-       The changes in 0.2.1 to fix DATA LIST FREE parsing broke some
-       other behavior, *sigh*.  This patch hopefully fixes that.  This
-       time I've actually tested it.
-
-       Thanks to Hankin <hankin@dunno.com> for reporting this bug.
-
-       * data-list.c: (read_from_data_list_free,
-       read_from_data_list_list) Call parse_string_as_format() directly
-       without mucking around with the field width.
-
-Tue Jan  5 12:31:19 1999  Ben Pfaff  <blp@gnu.org>
-
-       Occasionally, you may encounter a script that wants to be
-       interpreted in interactive mode.  Make -i emulate this behavior to
-       allow such scripts to be executed with PSPP.
-
-       Thanks to Hankin <hankin@dunno.com> for reporting this behavior.
-
-       * cmdline.c: (pre_syntax_message[]) Update -i description.
-
-       * lexer.c: (preprocess_line) When getl_interactive is 2 (i.e.,
-       when -i is given on the command line) don't treat unindented lines
-       as starting a new command.
-
-Tue Jan  5 12:30:10 1999  Ben Pfaff  <blp@gnu.org>
-
-       In conjunction with egcs 1.1.1, Checker emits some bogus warnings,
-       mostly caused by local initialized aggregates.  After egcs is
-       fixed upstream these can be removed, but for now they're not a big
-       deal.
-       
-       * ascii.c: (ascii_postopen_driver) Checker chokes on local
-       initialized arrays.  Avoid this.
-
-       * sfm-write.c: (sfm_write_dictionary) Don't use a local
-       initialized struct.
-
-Tue Jan  5 12:07:24 1999  Ben Pfaff  <blp@gnu.org>
-
-       egcs 1.1.1 has some new warnings relative to gcc 2.8.1, which the
-       following changes avoid.  Currently I compile sources with egcs
-       1.1.1 and gcc 2.7.2.3 before sending them out.
-
-       * apply-dict.c: (apply_dict) Use new avl_traverser_init() macro.
-       
-       * ascii.c: (option_tab[]) Initialize all struct members.
-
-       * avl.h: (avl_traverser_init) New macro.
-       
-       * command.c: (DEFCMD, UNIMPL macros, cmd_table[]) Initialize all
-       struct members.
-
-       * crosstabs.q: (enum_var_values) Use new hsh_iterator_init()
-       macro.
-
-       * hash.c: Comment fix.
-
-       * hash.h: (hsh_iterator_init) New macro.
-
-       * html.c: (option_tab[]) Initialize all struct members.
-
-       * pfm-write.c: (write_value_labels) Use new avl_traverser_init()
-       macro.
-
-       * postscript.c: (option_tab[]) Initialize all struct members.
-       (output_encodings, preclose, dump_lines) Use new
-       hsh_iterator_init() macro.
-
-       * sfm-write.c: (write_value_labels) Use new avl_traverser_init()
-       macro.
-
-       * sysfile-info.c: (describe_variable) Use new avl_traverser_init()
-       macro.
-
-Thu Nov 19 12:32:45 1998  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: Examined each of the parsing functions to make sure
-       that they wouldn't dump core if they were passed a string of the
-       wrong length, since now the DATA LIST FREE/LIST routines don't
-       check for field width before passing it to the data parser.
-       (parse_RBHEX, parse_AHEX) Reject odd length input.
-       (parse_string_as_format) Reject input that's too short or too
-       long.
-
-       * data-list.c: Before, the DATA LIST FREE/LIST routines would pad
-       a field to its entire declared output width then pass it to the
-       data-in parsing routines.  This contradicted the documented
-       behavior.  This is fixed in these changes.  Thanks to Mark H. Wood
-       <mwood@IUPUI.Edu>.  In addition, this fixes a few more details of
-       free-format parsing that differed from SPSS.
-       (cut_field) Commas and spaces are treated identically.  Returns
-       the proper column instead of a fixed 1 value.
-       (parse_field) Removed.
-       (read_from_data_list_free, read_from_data_list_list) Call
-       parse_string_as_format directly instead of parse_field.
-
-       * heap.c: (heap_delete) Stylistic fixes.
-
-Sun Aug  9 11:12:13 1998  Ben Pfaff  <blp@gnu.org>
-
-       * loop.c: (loop_2_trns_proc) Formatting fix.
-
-       * sel-if.c: (cmd_filter) Set FILTER_before_TEMPORARY.
-
-       * var.h: (glob var FILTER_before_TEMPORARY) New global var.
-
-       * vfm.c: (macro FILTERED) New.
-       (static var filter_var) New.
-       (process_active_file_write_case) Use FILTERED.
-       (setup_filter) Set filter_var.
-       (close_active_file) Delete the filter if not
-       FILTER_before_TEMPORARY.
-       (procedure_write_case) Use FILTERED.
-
-Sat Aug  8 00:20:14 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: Changed /PIVOT={ON,OFF} to /FORMAT={PIVOT,NOPIVOT}.
-
-       * data-in.c: (parse_day_count) Message fix.
-       (parse_month) Style fix.
-
-       * data-list.c: (struct data_list_pgm) New member eof.
-       (cmd_data_list) Init eof to 0.
-       (do_reading) Implement the /END subcommand and read-past-eof
-       checking.
-
-       * do-if.c: Include stdio.h when debugging.
-       (cmd_else_if) Make sure the command is .-terminated.
-
-       * glob.c: (init_glob) Capitalize the command prompt.
-
-       * inpt-pgm.c: (end_case_trns_proc) Debugging message.
-       (end_file_trns_proc) Debugging message.
-
-       * loop.c: (internal_cmd_loop) Make it work when there's no loop
-       index!
-       (loop_2_trns_proc) Enable MXLOOPS (why was this disabled?)
-
-       * main.c: (dump_token) Make kwtab[] const.
-
-       * set.q: Spelling, comment fixes.
-
-       * sysfile-info.c: (cmd_display) DISPLAY VECTORS not DISPLAY
-       VECTOR.
-
-       * vars-prs.c: (fill_all_vars) Style fix.
-
-       * vfm.c: (index_to_varname) Return const.
-
-Tue Aug  4 23:49:23 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Changes in many source files for partial -ansi -pedantic and
-       no-debugging compliance: Remove trailing common in enum
-       declarations; add `unused' attributes; insert some appropriate
-       casts.
-
-       * cmdline.c: (parse_command_line) Add new --testing-mode flag.
-
-       * command.c: (shell) Make static.
-       (run_command) Make static.
-
-       * data-list.c: (dump_fixed_table) Remove use of local_strdup().
-
-       * dfm.c: (cmd_begin_data) I18n fix.
-
-       * error.c: (verbose_msg) Define if __STRICT_ANSI__.
-
-       * error.h: (macro verbose_msg) Define if __STRICT_ANSI__.
-
-       * expr-opt.c: (evaluate_tree) Don't initialize local arrays if
-       __STRICT_ANSI__.
-
-       * file-handle.q: Don't prepend the source file directory name to
-       the data file name.  (Ongoing issue.)
-       (prepend_current_directory) Comment out.
-       (internal_cmd_file_handle) Don't call prepend_current_directory().
-       (fh_get_handle_by_filename) Ditto.
-
-       * filename.c: Append zero byte to readlink() return value.
-
-       * getline.c: (getl_read_line) I18n fix.
-
-       * lexer.h: Don't use gcc features if __STRICT_ANSI__.
-
-       * misc.h: Don't use gcc features if __STRICT_ANSI__.
-
-       * pfm-write.c: (bufwrite) Don't try to increment a void * pointer
-       directly.
-
-       * postscript.c: (output_encodings) Don't use local_strdup().
-       (postopen) Ditto.
-
-       * print.c: Don't use gcc features if __STRICT_ANSI__.
-
-       * q2c.c: (dump_vars) Don't put a , at the end of the last enum.
-
-       * recode.c: (parse_src_spec) Fully brace nested if's.
-
-       * set.q: (global var set_testing_mode) New var.
-
-Wed Jul 29 22:01:44 1998  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: Add some more `unused' attributes that only come into
-       play when NDEBUG is defined.
-       (ascii_close_page) Set s_len when reallocating s.
-       
-       * crosstabs.q: (delete_missing) New function.
-       (output_pivot_table) Call delete_missing() if /MISSING=REPORT.
-       (make_summary_table) Create summary table reallocable.
-
-       * postscript.c: Add more `unused' attributes as above.
-
-       * tab.c: (tab_create) [GLOBAL_DEBUGGING] Set reallocable member.
-       (tab_realloc) [GLOBAL_DEBUGGING] Assert that table is reallocable.
-        
-       * tab.h: (struct tab_table) [GLOBAL_DEBUGGING] New `reallocable'
-       member.
-
-       * var.h: (macro force_dup_variable) [!GLOBAL_DEBUGGING] Remove
-       gratuitous space between parameter definition.
-
-       * vars-atr.c: Changed some assert(0)'s to abort()'s to prevent
-       complaints about running off the end of functions with NDEBUG
-       enabled.
-
-Sun Jul  5 00:17:25 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Several source files: Removed some PORTME notes when reflection
-       revealed that ANSI forbids that sort of breakage.  Also, added
-       lots of `unused' qualifiers here and there.
-
-       * aggregate.c: (accumulate_aggregate_info) Remove local var
-       weighting that turned out not to be used.
-
-       * avl.c: Update to version 1.1.0.  Add unused specifier.
-       (avl_destroy) Initialize ab to 0.  Comment fixes.  Cast return
-       value to void *.
-       (avl_probe) Replace some instances of 1 with +1 where appropriate.
-       (avl_find) Cast return value to void *.
-       (avl_delete) q doesn't need to be initialized at the beginning of
-       the function.  Replace some instances of 1 with +1.
-       (force_avl_delete) Renamed avl_force_delete, all references changed.
-       (compare_ints) `param' marked unused.
-       (print_int) `param' marked unused.
-       (recurse_tree) Replace some instances of 1 with +1.
-
-       * avl.h: Update to version 1.1.0.  Only declares avl function
-       types if not already declared.
-       (AVL_MAX_HEIGHT) Only define if not already defined.
-       (struct avl_node) New unused member char pad[2].
-       [GLOBAL_DEBUGGING] Change conditionalization to NDEBUG instead.
-       (force_avl_insert) Renamed avl_force_insert.
-       (force_avl_delete) Renamed avl_force_delete.
-
-       * crosstabs.q: (struct table_entry) Put `freq' into a union with
-       new member `data'.
-       (struct crosstab) Add new member `ofs'.
-       (glob var int_tab) Removed.
-       (custom_tables) In integer mode, assign v[i] properly through the
-       indirect var_dict.
-       (custom_variables) Now p.crs.max == max + 1.
-       [DEBUGGING] (debug_print) p.crs.min and p.crs.max are now ints.
-       (precalc) Implement integer mode.
-       (calc_integer) Implement integer mode.
-       (compare_table_entry) Remove unused local variable `comparing'.
-       (make_summary_table) Implement integer mode.
-       (macro ns_rows) Implemented as static variable now.
-       (several variables) Made static, from global.
-       (output_pivot_table) Use table_value_missing() for column heads.
-       Remove several unused local variables.  Implement integer mode
-       table summing.  Count up ns_rows.
-       (crosstabs_dim) Make columns wider when /MISSING=REPORT requested.
-       (find_pivot_extent) Moved into find_pivot_extent_general; now just
-       calls that function or find_pivot_extent_integer.
-       (find_pivot_extent_integer) New function.
-       (enum_var_values) Implemented for integer mode.
-       (table_value_missing) New function.
-       (display_dimensions) Call table_value_missing() for heads.
-       (float_M_suffix) New function.
-       (display_crosstabulation) Call table_value_missing() for row
-       heads.  Handle missing values in /MISSING=REPORT mode.
-       (calc_fisher) Remove unused var N.
-       (calc_r) Remove unused var fact.
-
-       * data-list.c: (dump_fixed_table) Fix table dimensioning.
-       (read_one_set_of_repetitions) Remove unused vars var_spec, column.
-
-       * data-out.c: (insert_commas) Remove unused var cp.
-       (convert_CCx) Remove unused vars save_set_decimal,
-       save_set_grouping.
-
-       * descript.q: (dump_z_table) Fix table dimensioning.
-       (pre_calc) Remove unused var j.
-       (display) Remove unused vars title, s.  Fix table dimensioning.
-
-       * expr-evl.c: Comment fixes.
-
-       * frequencies.q: (full_dim) New function.
-       (dump_full) Fix table dimensioning.
-       (condensed_dim) New function.
-       (dump_condensed) Fix table dimensioning.
-
-       * get.c: (cmd_match_files) Remove unused var n_val.  Remove unused
-       label winnage.
-
-       * html.c: (html_close_drive) Remove unused var i.
-       (postopen) Remove unused vars title, curfn_len, cp.
-       (preclose) Remove unused vars this, x.
-
-       * lexer.c: Comment fixes.
-
-       * matrix-data.c: (cmd_matrix_data) Remove unused var index.
-
-       * means.q: (custom_tables) Remove unused var m_dim.
-
-       * mis-val.c: Format fix.
-
-       * modify-vars.c: (cmd_modify_vars) Remove unused var new_dict.
-
-       * output.c: (outp_get_paper_size) Remove unused var cp.
-
-       * pfm-read.c: (read_float) Remove unused var save, unused label
-       underflow.
-       (read_variables) Remove unused vars cp, j.
-       (read_value_label) Remove unused var j.
-
-       * pfm-write.c: (bufwrite) Remove unused var i.
-
-       * postscript.c: (ps_postopen_drive) Remove unused vars dev_info,
-       fn.
-       (output_encodings) Remove unused vars char_cp, n_output.
-       (read_ps_encodings) Remove unused var ep.
-       (postopen) Remove unused var title.
-       (preclose) Remove unused var fp.
-       (ps_open_page) Remove unused vars true, false, orientation,
-       mirror_horz, mirror_vert, width, length.
-       (ps_text_metrics) Remove unused var x.
-
-       * q2c.c: (find_symbol) Remove unused var y.
-       (parse_setting) Remove unused parameter sbc, all references
-       changed.
-       (dump_parser) Remove unused var cp.
-       (dump_free) Remove unused var i.
-
-       * set.q: (static vars args, n) Removed.
-       (internal_cmd_gset) Removed.
-
-       * sfm-read.c: (sfm_read_dictionary) Removed unused var i.
-       (read_machine_flt64_info) Removed unused var file_endian.
-       (read_documents) Removed unused var i.
-       (read_compressed_data) Removed unused parameter dict, all
-       references changed.
-
-       * sfm-write.c: (bufwrite) Removed unused var i.
-       (sfm_write_case) Removed unused var i.
-
-       * sort.c: (merge_once) Remove unused var t.
-       (write_separate) #if 0 out as dead code.
-
-       * split-file.c: (cmd_split_file) Remove unused var i.
-
-       * sysfile-info.c: (sysfile_info_dim) New function.
-       (cmd_sysfile_info) Fix table dimensioning.
-       (variables_dim) New function.
-       (display_variables) Fix table dimensioning.
-       (describe_variable) Remove unused var prev_r.
-
-       * t-test.q: (z_postcalc) Removed.
-       (pairs_calc) Remove unused var bad_weight.
-       (postcalc) Remove unused vars dfn, dfd.
-
-       * tab.c: (tab_create) Set t->dim to NULL.
-       (tab_dim) Make sure t->dim is NULL first.
-       (tab_natural_width) Remove parameter `clamp'.
-       (tab_value) Remove duplicate assertion for table.
-       (tab_raw) New function.
-       (nowrap_dim) New function.
-       (wrap_dim) New function.
-       (tab_output_text) Fix table dimensioning.
-
-       * tab.h: (tab_raw) New macro.
-
-       * val-labs.c: (get_label) Remove unused var type.
-       (copy_value_labels) Remove unused var trav.
-
-       * var.h: (struct crosstab_proc) Completely changed.
-
-       * vars-prs.c: (parse_dict_variable) Remove unused var v.
-
-       * vfm.c: (open_active_file) Remove unused vars i, lp.
-
-       * weight.c: (weight_trns_proc) #if 0 out as dead code.
-       
-Tue Jun  2 23:37:21 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add apply-dict.c, flip.c.
-
-       * apply-dict.c: New file.
-       
-       * command.c: (struct command) Make cmd[] larger for CLEAR
-       TRANSFORMATIONS command name.
-       (parse_cmd) Make sure we're in a valid state before using it as an
-       index.  Discard variables and reset state on invalid transitions.
-       (cmd_clear_transformations) New function.
-
-       * command.def: Add APPLY DICTIONARY, CLEAR TRANSFORMATIONS, FLIP.
-       Add unimplemented PRESERVE, RESTORE.
-
-       * file-handle.h: Include stddef.h.
-
-       * flip.c: New file.
-       
-       * pfm-read.c: (parse_value) Pad value label values with spaces,
-       not nulls.
-
-       * sfm-read.c: (struct sfm_fhuser_ext) Add reference count.
-       (sfm_close) Decrement reference count, make sure it's zero.
-       (sfm_maybe_close) New function.
-       (sfm_read_dictionary) Handle reference counts.
-
-       * vars-atr.c: (clear_default_dict) New function.
-       (discard_variables) Use clear_default_dict().
-
-Sun May 31 00:58:05 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add pfm-write.c.
-       (LDADD) Add the libgmp2 libraries.
-
-       * command.def: Define EXPORT.
-
-       * get.c: (cmd_export) New function.
-       (export_write_case_func) New function.
-
-       * pfm-read.c: (static spss2ascii[]) Make it const.
-
-       * pfm-write.c: New file.
-
-       * sfm-write.c: Formatting, comment fixes.
-
-       * var.h: Comment fix.
-
-Fri May 29 21:44:12 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add pfm.h, pfm-read.c.
-
-       * command.def: IMPORT is now implemented.
-
-       * format.c: (glob var translate_fmt[]) New var.
-
-       * get.c: (enum GTSV_NONE) Renamed GTSV_OPT_NONE.
-       (cmd_import) New function.
-       (import_source_read) New function.
-       (glob var import_source) New var.
-
-       * pfm-read.c: New file.
-
-       * pfm.h: New file.
-       
-       * sfm-read.c: (parse_format_spec) Local variable translate_fmt[]
-       moved in format.c.
-       (dump_dictionary) Disabled printing a couple of items.
-
-Mon May 25 12:42:37 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: (postcalc) Call make_summary_table().
-       (make_summary_table) New function.
-       (insert_summary) New function.
-       (display_dimensions) Remove some unnecessary arguments, all
-       references changed.
-       (output_pivot_table) Fix lots of problems with the risk table
-       setup.
-       (submit) Don't display an empty table.
-       (display_risk) Fix order of arguments to calc_risk().
-
-       * glob.c: Always include assert.h and stdlib.h.
-
-       * output.h: (enum OUTP_T_JUST_FULL) Removed, all references
-       removed.
-
-       * tab.c: (tab_create) Cosmetic changes.
-
-       * tab.h: (enum TAB_JUSTIFY) Removed, all references removed.
-
-Sun May 24 22:39:23 1998  Ben Pfaff  <blp@gnu.org>
-
-       * tab.def: Removed.
-
-       * crosstabs.q: (output_pivot_table) Headers drawing and submission
-       code simplified, moved into new function submit().
-       (submit) New function.
-       (crosstabs_dim) New function.
-       (display_directional) Substitute variable names for %s where
-       appropriate.
-       (somers_d_v[], somers_d_ase[], somers_d_t[]) New static vars.
-       (calc_symmetric) Initialize parameters only if non-NULL.
-       Calculate Somers' d.
-       (calc_directional) Calculate Somers' d (or copy it, really).
-       Calculate eta.
-
-       * output.c: (outp_string_width) New function.
-
-       * postscript.c: (postopen) Calculate font widths based on the
-       width of the zero '0' character, not the width of the space
-       character.  Set paper-width and paper-length based on points, not
-       device units.
-       (ps_open_page) Fix page setup string for landscape mode.
-
-       * som.h: (struct som_dimension) Removed.
-       (struct som_table_class) height, width members take int * not
-       som_dimesion * now.
-
-       * tab.c: Many functions now have added parameter validation.
-       (tab_height, tab_width) These functions were removed and merged
-       into a single function tab_resize(), and all references changed.
-       (tab_dim) Rewritten since the interface changed; reduced from
-       hundreds of lines to two.  All callers were changed.  Currently
-       most of them just use tab_natural_dimensions as their callback and
-       await detailed translation of functionality.
-       (tab_natural_width) New function.
-       (tab_natural_height) New function.
-       (tab_natural_dimensions) New function.  This is a callback
-       function, not something that you'd want to call directly.
-       (tab_nat_dim) Removed.
-       (tabi_table) Allocates t->w and t->h.
-       (tabi_driver) Inlined sum_columns()'s functionality.  Calls the
-       dimensions callback.
-       (evaluate_dimensions) Removed.
-       (sum_columns) Removed.
-
-       * tab.h: (enum TAL_1THIN) Removed.
-       (enum series t_*) Removed.
-       (struct tab_table) Members trh, trv changed to unsigned char *
-       from int *.  Member dim changed to a function pointer from a
-       unsigned char *.  Member max_stack_height removed.  New members
-       hr_tot, vr_tot.
-       (macros tab_l, tab_r, tab_t, tab_b) New.
-
-Sat May 23 23:22:13 1998  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (delineate) Assign last_space_nchars before skipping
-       spaces, to fix right justification.
-
-       * crosstabs.q: (static vars risk, direct) New vars.
-       (static var pearson_r) Removed.
-       (glob var chisq_fisher) Made static.
-       (static vars row_tot[], col_tot[]) Don't include grand total
-       anymore.
-       (static var grand_total) Renamed W, all references changed.
-       (output_pivot_table) Only make `table' if num_cells != 0.  Make
-       risk and directional tables.  Deal with grand total no longer part
-       of col_tot[].  Free rows and cols after we're done with them.
-       (display_risk) New function.
-       (display_directional) New function.
-       (clac_r) Rewritten so that it stores all its results into its
-       arguments, so it can be used for Spearman's correlation too.
-       (calc_symmetric) Added a t[] argument, all references changed.
-       Calculates ASEs for tau-b, tau-c, gamma.  Calculates Spearman's r,
-       Pearson's r, Cohen's kappa.
-       (calc_risk) New function.
-       (calc_directional) New function.
-
-       * som.c: (som_submit) Improved debugging code.
-
-       * stats.c: (hypercube) New function.
-       (cube) New function.
-       (sqr) New function.
-       (normal_sig) Went back to old implementation, which actually
-       worked.
-
-       * stats.h: (macros square, cube, hypercube) Removed.  The
-       equivalent functions in stats.c are inlined here; all references
-       to square changed to sqr.
-
-Fri May 22 00:03:41 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: (N_SYMMETRIC) New define.
-       (postcalc) Disable debug printing.
-       (static vars chisq_fisher, pearson_r) New.
-       (output_pivot_table) Add support for symmetric measures.  Add
-       chi-square output of exact sigs.
-       (display_chisq) Rewritten.
-       (display_symmetric) New function.
-       (gamma_int) New function.
-       (Pr) New function.
-       (swap) New function.
-       (calc_fisher) New function.
-       (calc_chisq) Check boundary conditions better. Calculate Yates,
-       Fisher, Mantel-Haenszel tests.
-       (calc_r) New function.
-       (calc_symmetric) New function.
-
-       * stats.c: (normal_sig) Rewritten with new algorithm.  Renamed
-       from calc_normal.
-       (chisq_sig) Better boundary conditions.  Renamed from
-       calc_significance.
-
-       * tab.h: (struct tab_table) New member cf.
-
-       * tab.c: (tab_create) Set cf.
-       (tab_width) New function.
-       (tab_realloc) Handle cf.
-       (tab_vline) Handle cf.
-       (tab_hline) Handle cf.
-       (tab_box) Handle cf.
-       (tab_value) Handle cf.
-       (tab_float) Handle cf.
-       (tab_text) Handle cf.
-       (tab_joint_text) Handle cf.
-       (tab_offset) Handle cf.
-       (tab_next_row) Handle cf.
-       (evaluate_dimensions) Handle cf.
-       (render_strip) Handle cf.
-
-Wed May 20 00:03:59 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: (postcalc) New vars row_tot, col_tot, pass them to
-       output_pivot_table().
-       (output_pivot_table) Moved lots of local variables outside and
-       made them static.  Add beginnings of chi-square statistic
-       support.  Now column and row totals aren't in the main matrix.
-       Always zero out any leftover rows & columns after we're done with
-       the table entries.  Move all output stuff into
-       display_dimensions(), display_crosstabs(), display_chisq().
-       (display_dimensions) New function.
-       (display_crosstabulation) New function.
-       (display_chisq) New function.
-       (calc_chisq) Implemented Pearson and likelihood-ratio chisquares.
-
-       * frequencies.q: (dump_full, dump_condensed) Remove tab_null()
-       references, simplify logic.
-
-       * postscript.c: Remove scale, translate-x, translate-y,
-       mirror-horz, mirror-vert, rotate-180 options.
-       (struct ps_driver_ext) Remove scale, translate_x, translate_y.
-       All references deleted.
-       (macro YT) New macro.
-       (array option_tab[]) Removed options.
-       (ps_option) Removed options.
-       (ps_open_page) Write page setup explicitly to output file, without
-       using now-deleted BP function.
-       (macro dump_line) Use YT().
-       (macro dump_thick_line) Use YT().
-       (draw_headers) Use YT().
-       (switch_font) Reorder arguments to SF function.
-       (write_text) Use YT().
-
-       * sfm-read.c: (sfm_read_case) Don't attempt to read variables that
-       have get.fv == -1.
-
-       * sysfile-info.c: (describe_variables) Don't use tab_nulls().
-
-       * tab.c: (tab_create) Initialize t->ct to zeros.  Remove
-       null-debugging code.
-       (tab_realloc) Remove null-debugging code.  Initialize new regions
-       of t->ct to zeros.
-       (tab_vline) Support offsets.
-       (tab_hline) Support offsets.
-       (tab_box) Support offsets.
-       (tab_null) Removed.
-       (tab_nulls) Removed.
-       (tab_row) Removed.
-       (tab_col) Removed.
-       (evaluate_dimensions) Remove null-debugging code.  Understand
-       TAB_EMPTY attribute.  Assert that text.s.s is always non-NULL if
-       TAB_EMPTY not present.
-
-       * tab.h: New cell attribute TAB_EMPTY.
-       (macros tab_nr, tab_nc, tab_row, tab_col) New.
-
-       * vars-atr.c: (init_variable) Set get.fv to -1 so that GET doesn't
-       try to read them from system files.
-
-       * vfm.c: (dump_splits) Don't call tab_null().   
-
-Sat May 16 19:36:55 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: (struct crosstab) Added `missing' member.
-       (custom_tables) Init missing.
-       (calc_general) Handle missing values.
-       (calc_chisq) New function.
-       (output_pivot_table) Start work on chi-square output.  Update for
-       new tab offset support functions.  Shorten statistic names.
-
-       * Several files: add in more `const's to placate gcc's warnings.
-
-       * tab.h: (struct tab_table) Add col_ofs, row_ofs members.  Comment
-       fixes.
-
-       * tab.c: (tab_height, tab_realloc, tab_vline, tab_hline, tab_box,
-       tab_null, tab_nulls, tab_value, tab_float, tab_text,
-       tab_joint_text) Add col_ofs and row_ofs support.
-       (tab_offset) New function.
-       (tab_next_row) New function.
-       (tab_row) New function.
-       (tab_col) New function.
-       (tabi_table) Add col_ofs and row_ofs support.
-
-       * vars-atr.c: (is_system_missing) New function.
-
-Tue May 12 16:14:30 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: Expanded subcommand names RESID --> RESIDUAL, etc.
-       (static var no_cells) Removed.
-       (static var num_cells) New.
-       (static var expected) New.
-       (static var cells[]) New.
-       (internal_cmd_crosstabs) Deal with new variables.
-       (postcalc) Removed most of the meat and put it in new function
-       output_pivot_table().
-       (output_pivot_table) Calculates and outputs an entire pivot table.
-
-       * postscript.c: (postopen) Fix problems with free()ing addresses
-       not obtained from malloc().
-
-       * som.c: (som_submit) Add assertion.
-
-       * sysfile-info.c: (describe_variable) Use new tab_nulls()
-       function.
-
-       * tab.c: (static var tab_names[]) New.
-       (tab_realloc) -1 for nc or nr indicates no change.
-       (tab_nulls) New function.
-       (tab_dim) Use tab_names[].
-       (tabi_cumulate) Don't include bottom or right headers.  Furrfu.
-       (evaluate_dimensions) Don't terminate on uninited cells, just put
-       an X in them and emit a notice.  Use tab_names[].
-
-       * tab.h: Move bits into tab.def.
-
-       * tab.def: New.  Don't try to declare tab_table_class because then
-       som.h has to be included.       
-       
-Thu May  7 22:55:04 1998  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: New file, contains all the command definitions
-       previously included bodily in command.c.
-
-       * format.def: New file, contains all of the format definitions
-       previously split across format.h, format.c, and sfm-write.c.
-
-       * lexer.h: Renamed from tokens.h in order to match corresponding
-       .c file name.
-
-       * lexerP.h: Moved some rarely used functions exported by lexer.c
-       into here.
-
-       * Makefile.am: Commemorate renamed files.
-       (EXTRA_DIST) Add command.def, format.def.
-
-       * command.c: [0] (walk_cmdtable_func) Removed.
-
-       * crosstabs.q: (postcalc) Made it work and print out matrices
-       proving it.
-       (enum_column_values) Renamed enum_var_values, generalized for any
-       variable.
-
-       * format.h: (struct fmt_desc) New member `spss'.
-
-       * q2c.c: (main) Generated code includes lexer.h instead of
-       tokens.h.
-
-       * sfm-write.c: (write_format_spec) Use new spss member of fmt_spec
-       instead of an independent translation table.
-
-Tue May  5 13:19:03 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Lots of source files: Added const to declarations.
-
-       * aggregate.c: (parse_aggregate_function) Rename inner i to j.
-       
-       * arena.c: (arena_clear) Set prev pointer to null when done.
-
-       * ascii.c: (ascii_option) Rename index as indx.
-
-       * avl.c: This is now a separate library called libavl.
-       (xmalloc) Make static.
-       (avl_probe) Step A7 can use the cache instead of an explicit
-       compare.
-       (avl_delete) Don't maintain a q pointer because it's always
-       available in the pointer stack.  Comment fix.
-
-       * avl.h: This is now a separate library called libavl.
-
-       * command.c: (cmd_table[]) Remove spurious trailing "".
-
-       * common.h: Only include random() fix if this system needs it.
-
-       * crosstabs.q: Include alloca headers.
-       (n_sorted_tab) New global var.
-       (postcalc) Mostly rewritten.
-       (find_pivot_extent) Rewritten.
-       (enum_column_values) Rewritten.
-
-       * data-out.c: (convert_F) Rename inner n as n_spaces.
-
-       * error.c: (dump_message) Don't have an outer var i.
-
-       * file-handle.q: (static var f) Removed.  All references removed.
-       (internal_cmd_file_handle) Uses a local variable instead of f.
-
-       * get.c: (trim_dictionary) Change scope of i, i1, i2.
-       (cmd_match_files) Don't strcpy tokstr into sbc (why was this ever
-       done?)
-
-       * getline.h: Declare getl_history as extern.  Reported by
-       palme@uni-wuppertal.de (Hubert Palme).
-
-       * postscript.c: (postopen) Some large mods for constness.
-
-       * recode.c: Remove spurious copyrights since PSPP is owned by FSF
-       anyway.
-
-Fri Apr 24 12:52:47 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Rename BUILT_SOURCES to q_sources, all references
-       changed.  Add avl.c, avl.h to pspp_SOURCES.  Remove avllib from
-       LDADD.
-
-       * avl.c, avl.h: New files.  These form a clean-room
-       reimplementation of avllib.  Iterative algorithms are used in
-       place of recursive ones, so there is no resemblance in the code.
-
-       * Lots of headers: Don't include other headers by default.
-
-       * Lots of source files: Explicitly include all needed headers.
-
-       * arena.c: (arena_clear) New function.
-
-       * crosstabs.q: (ROW_VAR, COL_VAR) New enums.
-       (static var ar) Removed.
-       (staitc vars ar_tc, ar_col) New.
-       (cmd_crosstabs) Destroy the arenas.
-       (internal_cmd_crosstabs) Create the arenas.
-       (precalc) Don't need a free function for the hash.
-       (calc_general) Make sure to zero out the trailer on the key data
-       before inserting.
-       (print_table_entries) Updated.
-       (postcalc) Worked on actually implementing.
-       (find_pivot_extent) New function.
-       (compare_value) New function.
-       (enum_column_values) New function.
-
-       * data-in.c: (parse_month) Make local array `static const'.
-       
-       * data-out.c: (convert_date) Make local array `static const'.
-       (convert_WKDAY) Same.
-       (convert_MONTH) Same.
-
-       * frequencies.q: (postprocess_freq_tab) avl_walk_inorder() has
-       been renamed to avl_walk().
-       
-       * hash.c: Rewritten more efficiently.
-
-       * hash.h: Add attribute const to hsh_next_prime declaration.
-
-       * lexer.c: (id_match) Make arguments const.
-
-       * postscript.c: (ps_postopen_driver) Make default fonts the
-       Helvetica family.
-
-       * q2c.c: (main) Generated code needs stdlib.h.
-
-       * sfm-write.c: (write_value_labels) An avl_traverser needs to be
-       initialized to 0 now, not to NULL.  All other references to
-       avl_traverser were updated in the same way.
-
-       * tokens.h: Macro version of id_match updated to use const
-       properly.
-
-       * val-labs.c: (inc_ref_count) New function.
-       (copy_value_labels) Simply through use of new avl_copy() function.
-
-Wed Apr 15 13:01:58 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: Probably doesn't compile.  New PIVOT subcommand.
-       (postcalc) Worked on this.
-
-       * postscript.c: (OPO_DOUBLE_LINE) New enum.
-       (struct ps_driver_ext) New line_width_thick member.
-       (ps_preopen_drive) Init line_width_thick.
-       (option_tab[]) Add line-* options.
-       (ps_option) Parse line-* options.
-       (postopen) Add line_width_thick support.  Strip leading spaces on
-       prologue output lines.
-       (ps_open_page) Include line_width_thick in output.
-       (macro dump_thick_line) New.
-       (dump_fancy_line) Support thick lines as well as double lines.
-
-Tue Apr 14 00:50:08 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add crosstabs.c to BUILT_SOURCES.  Add crosstabs.q
-       to pspp_SOURCES.  Add crosstabs.q to EXTRA_DIST.
-
-       * Many source files: Rename `options' to `pv_opts' as appropriate.
-
-       * command.c: (static var cmd_table[]) Add CROSSTABS command.
-
-       * common.c: (xcalloc) New function.
-
-       * crosstabs.q: New file.  Not finished yet, though.
-               
-       * data-list.c: Comment fix.
-
-       * error.c: Remove some old Checker cruft.
-
-       * frequencies.q: (dump_full) Cumulate valid percent instead of
-       regular percent.
-
-       * getline.c: Comment fix.
-
-       * hash.c: Comment fixes.
-
-       * hash.h: (struct hsh_table) Make hash functions return unsigned
-       instead of int to avoid problems with taking the modulo of
-       negative return values.  All references changed.
-
-       * misc.c: (intlog10) Make its table static const instead of auto.
-
-       * sfm-read.c: (read_header) Make `prefix' static const instead of
-       auto.
-
-       * var.h: (union value) Add member `hash'.
-       (struct variable) Rename prv_index as `foo'--all references
-       changed.  Reorder.
-       (typedef pv_opts) Removed.  All references changed.
-
-       * vars-prs.c: (parse_variables) Message fixes.
-       
-Mon Mar  9 15:35:08 1998  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (cmd_match_files) Don't reverse the order of FILEs as
-       they are being inserted.  Don't check for BY variables of
-       different types.  Discard variables if the active file isn't
-       included in the merge.
-       (mtf_processing) Essentially rewritten.
-       (mtf_merge_dictionary) Check for master/slave variables of
-       different types/widths.
-
-       * vfm.c: (static var not_canceled) New var.
-       (process_active_file) Don't call vfm_source->read() if
-       there's no vfm-source.  Initialize not_canceled.
-       (process_active_file_write_case) Honor and update not_canceled.
-       (prepare_for_writing) Rollback changes from yesterday, they were
-       wrong.
-       (close_active_file) Don't destroy vfm_source unless it exists.
-       
-Mon Mar  9 00:56:16 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Lots of source files: Added { } around nested if/else constructs
-       to avoid new gcc 2.8 warnings.
-
-       * data-in.c: (parse_Z) Declare `int' type explicitly.
-       (convert_Z) Ditto.
-
-       * get.c: (struct mtf_file) Add prev, next_min, by, input members.
-       (cmd_match_files) Initialize mtf_by_values.  Manage by, input,
-       prev members.  Put TABLEs at the end of the chain and FILEs at the
-       beginning.  Don't allow the active file in STATE_INIT.  Use proper
-       `seen' value for the active file.  Fill out the by members and
-       make sure they're of consistent type.  Do the actual merge
-       operation.
-       (mtf_processing_finish) New function.
-       (var_type_description) New function.
-       (mtf_free_file) New function.
-       (mtf_free) Rewritten.
-       (mtf_delete_file_in_place) New function.
-       (mtf_read_nonactive_records) New function.
-       (mtf_compare_BY_values) New function.
-       (static var mtf_seq_no) New var.
-       (mtf_processing) New function.
-       (mtf_merge_dictionary) Assign nval members for the system file
-       dictionary.  Assign fv values for its variables.  Point each slave
-       variable to the corresponding master variable.
-
-       * hash.c: Include str.h.
-
-       * mis-val.c: (copy_missing_values) src arg is const.
-
-       * misc.c: (spacing) Make `max' var explicitly int.
-
-       * sfm-read.c: (dump_dictionary) Message reformatting.
-       (sfm_read_case) Add assertion.
-
-       * sort.c: Esthetic fixes.
-
-       * var.h: (struct match_files_proc) New struct.
-       (struct variable) Add private data match_files_proc.
-
-       * vars-atr.c: (delete_variable) Implement.  Add argument for the
-       dictionary that owning the variable.
-       (dup_variable) Add assertion.
-
-       * vfm.c: Comment fixes, hopefully the comments are correct now.
-       (process_active_file) New function.
-       (process_active_file_write_case) New function.
-       (process_active_file_output_case) New function.
-       (prepare_for_writing) Use temp_dict->nval for vfm_info, not
-       default_dict.nval.
-       (write_case) Renamed procedure_write_case().  Now write_case is a
-       pointer to a function.  Style fixes.
-       
-1998-03-05  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (q2c) Link with libmisc.
-       (version.c) Define default_config_path, include_path,
-       groff_font_path.
-
-       * ascii.c: (ascii_postopen_driver) When the default newline string
-       is requested, open file in text mode.  Suggested by
-       palme@uni-wuppertal.de (Hubert Palme).
-       (static vars line_buf, line_p) Change from char * to unsigned char
-       *.
-       (ascii_close_page) char * to unsigned char *.
-
-       * cmdline.c: (parse_command_line) Implement -r option by
-       prepending ~/.pspp/rc to the list of files to process.
-
-       * command.c: (cmd_remark) Reset getl_prompt to the standard prompt
-       before pulling in a final line.
-       (null_func, null_int_func) Removed (dead code).
-
-       * descript.q: (display) Calculate width of variable name column
-       properly.  Calculate number of valid cases properly.  Reported by
-       palme@uni-wuppertal.de (Hubert Palme).
-
-       * filename.c: (init_filename) Use default_config_path instead of
-       now obsolete CONFIG_PATH.
-
-       * getline.c: (getl_initialize) Use include_path instead of now
-       obsolete INCLUDE_PATH.
-       (getl_add_file) New argument `where'.  All references changed.
-
-       * groff.c: (find_font_file) Use groff_font_path instead of now
-       obsolete GROFF_FONT_PATH.
-       
-       * postscript.c: (find_ps_file) Use groff_font_path instead of now
-       obsolete GROFF_FONT_PATH.  Copy through temporary variable to
-       avoid problems with constness.
-
-       * str.h: (macro cs_streq) New macro.
-
-       * version.h: (glob var default_config_path, include_path,
-       groff_font_path) New vars.
-       
-1998-02-23  Ben Pfaff  <blp@gnu.org>
-
-       * Many source files: Change verbose_msg() priority levels and
-       messages.
-
-       * aggregate.c: Include debug-print.h.
-
-       * cmdline.c: (parse_command_line) Add --safer/-s and --command/-c
-       options.
-       (static var pre_syntax_message) Document --safer/-s and
-       --command/-c.
-
-       * command.c: (cmd_erase, cmd_host) Disable if set_safer is set.
-
-       * dfm.c: (open_inline_file) [__CHECKER__] Zero out ext->file,
-       because it's not used but it's still copied.
-       (open_file_r) Remove gratuitous debug message.
-
-       * filename.c: (safety_violation) New function.
-       (open_file) Remove gratuitous debug messages.  Don't allow pipe
-       files if set_safer is set.
-
-       * get.c: Turn off debugging.
-
-       * getline.c: (getl_add_virtual_file) New function.
-       (getl_read_line) Add verbose_msg() call for opening new syntax
-       file.
-       (getl_perform_delayed_reset) Add a return value describing whether
-       any action was taken.  Call reset_eof().
-
-       * getline.h: Comment fix.
-
-       * groff-font.c: (groff_read_font) Use `goto next_iteration' in
-       place of incorrect `continue'.  Use strtok_r() instead of
-       strtok().  Always check strtok_r() return value.
-       (groff_read_DESC) Use strtok_r() instead of strtok().
-
-       * lexer.c: (reset_eof) New function.
-
-       * main.c: (parse) Get a token after performing a delayed reset
-       action; allow empty syntax files.
-
-       * postscript.c: (output_encodings) Use strtok_r() instead of
-       strtok().
-
-       * q2c.c: (dump_parser) Use strtok_r() instead of strtok().
-
-       * set.q: Comment fixes.
-       (glob var set_safer) New var.
-       (internal_cmd_set) Support SAFER.
-
-       * str.h: [!HAVE_STRTOK_R] Declare strtok_r() prototype.
-
-       * temporary.c: (free_dictionary) Set d->splits to NULL after
-       freeing.
-
-       * vars-atr.c: (clear_variable) Decrement dict->n_splits if
-       variable deleted, not if it *isn't* deleted.
-
-1998-02-16  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (array cmd_table[]) Add MATCH FILES.
-
-       * common.c: Comment fixes.
-
-       * data-list.c, dfm.c, error.c, filename.c, list.q, matrix-data.c,
-       modify-vars.c, postscript.c, sfm-read.c, sfm-write.c, tab.c:
-       Include alloca.h.  Problem reported by palme@uni-wuppertal.de
-       (Hubert Palme).
-
-       * expr-opt.c: Include str.h.  Problem reported by
-       palme@uni-wuppertal.de (Hubert Palme).
-
-       * get.c: (cmd_get) [DEBUGGING] Update v->p.get to v->get.
-       (static var mtf_by) Change from char ** to variable **.
-       (static var mtf_master) New var.
-       (mtf_merge_dictionary) New function.
-       (cmd_match_files) Init mtf_master.  Parse mtf_by according to new
-       var type.  Reorder tests properly.  Initialize file->dict.  Detect
-       TABLE= without BY=.  Read file dictionaries and merge them.  Give
-       subcommand name with IN, LAST, FIRST error messages.  Create IN,
-       LAST, FIRST variables.  Comment fixes.
-       (mtf_free) Don't free default_dict.  Free mtf_master.
-
-       * getline.c: Define getl_mode.  Change getl_buf_size to size_t
-       from int.
-       (handle_line_buffer) Cast int to size_t in comparison to avoid
-       warning.
-
-       * getline.h: Declare getl_mode extern.
-
-       * groff-font.c: (groff_read_font) Type-fix calls to getline.
-       (groff_read_DESC) Make line_size a size_t.
-       (match_tok) Parenthesize name to avoid macro expansion.
-
-       * mis-val.c: (copy_missing_values) New function.
-
-       * postscript.c: (postopen) Make buf_size a size_t.
-
-       * sfm-read.c: (dump_dictionary) Make global from static.  Print
-       variable info in parts for easier debugging with Checker.
-
-       * temporary.c: (copy_variable) Use copy_value_labels().
-       (new_dictionary) New arg: whether to copy file label, documents.
-
-       * val-labs.c: (copy_value_labels) New function.
-
-       * var.h: (enums MISSING_*) Add MISSING_COUNT.
-
-       * vars-atr.c: [GLOBAL_DEBUGGING] (force_dup_variable) New
-       function.
-       (dup_variable) Set prv_index, get.fv, get.nv.
-
-Fri Feb 13 15:38:36 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (pspp_SOURCE) Add htmlP.h.
-
-       * Many source files: For ANSI-compliance, add empty statement
-       after label.  Reported by palme@uni-wuppertal.de (Hubert Palme)
-       and Micah Altman <maltman@www-vdc.fas.harvard.edu>.
-
-       * data-in.c: (parse_numeric) Some header files break on
-       -DBL_MIN_10_EXP because they get a --; add () for safety.
-       Reported by palme@uni-wuppertal.de (Hubert Palme).
-
-       * dfm.c: Idea by Dr Eberhard W Lisse <el@linux.lisse.na>.
-       (struct dfm_fhuser_ext) Change `file' from FILE * to file_ext.
-       (dfm_close) Use close_file_ext.
-       (open_inline_file) Set file.file to NULL, not file.
-       (open_file_r, open_file_w) Initialize file.file; fill in file_ext
-       struct and use open_file_ext().
-       (read_record) Use file.file.
-
-       * file-handle.q: (prepend_current_directory) Pass through special
-       filenames.
-
-       * filename.c: Only include unistd.h if HAVE_UNISTD_H.
-       (normalize_filename) Pass through special filenames.
-       (open_file, close_file) Accept pipe| and |pipe syntaxes as
-       equivalent.
-       (dirname) Rename blp_dirname() because of name conflict on some
-       OS.  All references changed.  Reported by palme@uni-wuppertal.de
-       (Hubert Palme).
-       (is_special_filename) New function.
-
-       * get.c: (GTSV_OPT*) Add GTSV_OPT_MATCH_FILES.
-       (trim_dictionary) Conditionalize some of the options on whether
-       GTSV_OPT_MATCH_FILES is in *options.
-       (rename_variables) Don't allow variables to be renamed as scratch
-       variables.
-       (MTF_*) New enum series.
-       (struct mtf_file) New struct.
-       (static vars mtf_head, mtf_tail, mtf_by, mtf_n_by, mtf_free) New
-       vars.
-       (cmd_match_files, mtf_free) New functions.
-
-       * lexer.c: (match_int) Needed parentheses around name to escape
-       macro expansion.  Reported by Micah Altman
-       <maltman@www-vdc.fas.harvard.edu>.
-
-       * print.c: Needed to include alloca.h.  Reported by Micah Altman
-       <maltman@www-vdc.fas.harvard.edu>.
-
-       * recode.c: (convert_to_double) Parenthesize -DBL_MIN_10_EXP to
-       -(DBL_MIN_10_EXP).  Reported by palme@uni-wuppertal.de (Hubert
-       Palme).
-       
-       * str.h: Include stdarg.h.  Reported by palme@uni-wuppertal.de
-       (Hubert Palme) and Micah Altman <maltman@www-vdc.fas.harvard.edu>.
-
-Thu Feb  5 00:18:21 1998  Ben Pfaff  <blp@gnu.org>
-
-       * html.c: (struct html_driver_ext) Move into htmlP.h.
-       (html_preopen_driver) Initialize cp_x, cp_y.
-       (html_submit) Implement as call to output_tab_table().
-       (change_attributes) New function.
-       (escape_string) New function.
-       (output_tab_table) New function.
-
-       * list.q: (write_all_headers) Add code for writing headers for the
-       html driver.
-       (clean_up) Write out the html close-table tag.
-       (determine_layout) Ignore html driver.
-       (list_cases) Write html data.
-
-       * som.c: (som_submit) Move more of the code into output_table().
-
-       * tab.c: (static var hit) Make a global var and rename tab_hit.
-       (static var tab_table_class) Make a global var.
-
-       * htmlP.h: New file.
-
-Tue Feb  3 16:12:18 1998  Ben Pfaff  <blp@gnu.org>
-
-       * dump-sysfile.c: Removed.
-
-       * html.c: (preclose) Change comment in emitted code.
-
-       * matrix-data.c: Debugging off by default.  Comment fixes.
-       (static var container) New var.
-       (cmd_matrix_data) Create and destroy container.  Initialize
-       is_per_factor[] to 0s.  Move code into new function
-       string_to_content_type().  Require split values to be present in
-       the data when ROWTYPE_ is explicit.  Call specific function, not
-       general read_matrices().
-       (string_to_content_type) New function.
-       (context) Exclude all whitespace, not just spaces.
-       (mget_token) A dot is a number.  Add assertion.
-       (static var data) Renamed nr_data.
-       (static var factor_values) Renamed nr_factor_values.
-       (read_matrices) Renamed read_matrices_without_rowtype().  Handle
-       only specific case.  Close data_file before exit.
-       (fill_matrix) New function.
-       (read_data_lines) Renamed nr_read_data_lines().  Remove debug
-       printing.  Style fixes.  Message fixes.  Move code into
-       fill_matrix().
-       (read_matrices_without_rowtype) Rename
-       matrix_data_read_without_rowtype().  Fix off-by-one error on
-       loops.  Allocate nr_data[] memory from arena.
-       (read_matrices_with_rowtype) Removed.
-       (read_splits) Renamed nr_read_splits().  Style fixes.
-       (read_factors) Renamed nr_read_factors().
-       (dump_cell_content) Comment fixes.  Arguments changed.  Change
-       debug printing.  All references changed.
-       (output_data) Renamed nr_output_data().
-       (static var wr_content) New var.
-       (struct factor_data) New struct.
-       (static var wr_data) New var.
-       (static var wr_current) New var.
-       (matrix_data_source_destroy_source) Removed.
-       (read_matrices_with_rowtype) New function.
-       (matrix_data_read_with_rowtype) New function.
-       (wr_read_splits) New function.
-       (compare_factors) New function.
-       (wr_output_data) New function.
-       (wr_read_rowtype) New function.
-       (wr_read_factors) New function.
-       (wr_read_indeps) New function.
-       (glob var matrix_data_source) Make destroy_source member NULL as
-       well.
-
-Fri Jan 23 00:09:08 1998  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c: (syntax_error) Give better error message when at end of
-       file.
-
-       * matrix-data.c: (var content_names[]) Fix PROX spelling.  Change
-       N_SCALAR to output as plain N.
-       (mdump_token) Change output format.
-       (context) Fix message output interaction with spaces in input.
-       (another_token) New function.
-       (force_eol) Improved error message.
-       (static var max_cell_index) New var.
-       (read_matrices) Init `cells'.  factor_values is now per-cell.
-       Init max_cell_index.
-       (read_data_lines) Replace `compare' local with new `compare' arg.
-       Debugging messages changed.  Only read factors if per_factor.
-       Propagate error return from read_factors(), force_eol().
-       Copy N_SCALAR values across the N vector.
-       (read_matrices_without_rowtype) Don't init `cells'.  Don't need to
-       check parentheses manually since we now have is_per_factor[].
-       Call read_data_lines() with new args.  Check for end of data after
-       looping, using another_token().
-       (read_factors) Arguments changed.  Use max_cell_index to determine
-       whether to read or compare factors.  Message fixes.
-       (dump_cell_content) New function.
-       (output_data) Completely rewritten because content types were
-       supported to be nested inside factor values, not vice versa.
-       
-Thu Jan 22 00:26:38 1998  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c: (syntax_error) Support formatted varargs messages.
-
-       * matrix-data.c: Turn debugging on by default.
-       (static content_type[]) New array.
-       (static content_names[]) New array.
-       (static rowtype_, varname_) New vars.
-       (static is_per_factor[]) New array.
-       (static split_values) Moved declaration.
-       (static n_continuous, first_continuous) New var.
-       (cmd_matrix_data) Don't init split_values.  Assign ROWTYPE_ to
-       rowtype_.  Simplify SPLIT code.  Init is_per_factor[].  Assign
-       VARNAME_ to varname_.  Initialize first_continuous, n_continuous.
-       Check for continuous variables.
-       [DEBUGGING] (debug_print) Remove content_names[].
-       (mdump_token) New macro.
-       (mget_token_dump) New function.
-       (mdump_token) New function.
-       (context) New function.
-       (mget_token) Fix messages.
-       (static var data, split_values, factor_values) New vars.
-       (read_matrices) Manage split_values, factor_values.
-       (read_data_lines) New function.
-       (read_matrices_without_rowtype) Implemented.
-       (read_splits) Message fixes.  Uses `just_read'.
-       (read_factors) New function.
-       (output_data) New function.
-       (matrix_data_source_destroy_source) Close the file handle.
-       (glob var matrix_source) Change name from "DATA LIST" to "MATRIX
-       DATA".
-
-       * str.c: (strpadcmp) Removed.
-
-       * vfm.c: (dump_splits) Initialize i; fix test for end of splits.
-
-Sun Jan 18 00:30:59 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Lots of source files: Add cast to unsigned character to calls to
-       tolower() and toupper().
-
-       * aggregate.c: Set default_dict.splits to NULL.
-
-       * command.c: (static variable tab[]) Add MATRIX DATA.
-
-       * data-in.c: Add debugging defines.  Formatting fixes.
-
-       * expr-opt.c: Formatting fixes.
-
-       * lexer.c: (syntax_error) Message fixes.
-
-       * matrix-data.c: New enum series.
-       (static vars fmt, section, diag, explicit_rowtype, signle_split,
-       split_values, n_factors, factors, cells, pop_n, contents,
-       n_contents) New vars.
-       (cmd_matrix_data) Finished implementation.
-       (compare_variables_by_mxd_vartype) New function.
-       [DEBUGGING] (debug_print) New function.
-       (static vars mtoken, mtokstr, mtoklen, mtokval) New vars.
-       (read_matrices) New function.
-       (read_matrices_without_rowtype) New function.
-       (read_matrices_with_rowtype) New function.
-       (read_splits) New function.
-       (mget_token) New function.
-       (force_eol) New function.
-       [0] (test_tokenizer) New function.
-       (matrix_data_source_destroy_source) New function.
-       (glob var matrix_data_source) New var.
-
-       * misc.h: Include ieeefp.h if present.
-
-       * split-file.h: (cmd_split_file) Changes corresponding to struct
-       dictionary changes.
-
-       * str.h: Fix memmem prototype.
-
-       * temporary.c: (save_dictionary, restore_dictionary,
-       free_dictionary) Changes corresponding to struct dictionary
-       changes.
-
-       * var.h: (MXD_* enums) New enum series.
-       (struct matrix_data_proc) New struct.
-       (struct split) Removed.
-       (struct dictionary) Changed `splits' member from `split *' to
-       `variable **'.
-       (macro force_create_variable) New macro.  Replaced lots of
-       create_variable()/assert() calls with calls to this macro.
-
-       * vars-atr.c: (discard_variables) Changed assertion.
-       [GLOBAL_DEBUGGING] (force_create_variable) New function
-       called by the macro of the same name.
-       (clear_variable) Changes to delete splits from the dictionary
-       corresponding to struct dictionary changes.
-
-       * vars-prs.c: (parse_variables) [GLOBAL_DEBUGGING] Check for
-       corrupted variable `index' values in the dictionary passed in
-       every time this function is called.
-
-       * vfm.c: (dump_splits, SPLIT_FILE_procfunc) Changes corresponding
-       to struct dictionary changes.
-
-Tue Jan 13 23:45:02 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (pspp_SOURCES) Add matrix-data.c.
-
-       * command.c: New includes.
-       (static array cmd_table[]) Add ERASE, HOST, NEW FILE.
-       (cmd_erase) New function.
-       [unix] (shell) New function.
-       (run_command) New function.
-       (cmd_host) New function.
-       (cmd_new_file) New function.
-
-       * expr-prs.c: (parse_primary) Message fix.
-
-       * inpt-pgm.c: Formatting fix.
-       (cmd_reread) Implement the FILE subcommand.
-
-       * matrix-data.c: New file.
-
-       * q2c.c: (dump_header) Change output commenting style.
-
-       * weight.c: Comment fix.
-
-Tue Jan 13 00:53:39 1998  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: (buf64_10x) Renamed buf64_1xx, all references
-       changed.
-       (buf_10x) Renamed buf_1xx, all references changed.
-       (cmd_aggregate) Implemented cases 010, 011, 110, and 111 (all
-       cases now implemented).
-       (create_sysfile) New function.
-       (agr_11x_func) New function.
-
-       * data-in.c: (parse_numeric) Work properly if there's an
-       explicitly coded decimal point in the data and decimal places are
-       specified on DATA LIST.  Bug reported by Dr Eberhard W Lisse
-       <el@linux.lisse.na>.
-
-       * get.c: (cmd_get, cmd_save_internal) Allow extraneous slash
-       before file specification on GET, SAVE, XSAVE.  Bug reported by Dr
-       Eberhard W Lisse <el@linux.lisse.na>.
-
-       * q2c.c: [!HAVE_STRERROR] Include misc/strerror.c, not
-       strerror.c.  Bug reported by Alexandre Oliva
-       <oliva@dcc.unicamp.br>.
-
-       * sort.c: Include sort.h.  Comment fixes.  A few esthetic fixes.
-       (static var separate_case_tab) New var.
-       (cmd_sort_cases) Cancel temporary transformations here.  Free
-       v_sort before return.
-       (sort_cases) Run an EXECUTE procedure if SEPARATE is nonzero and
-       we're reading from a sort stream.  Don't cancel temporary
-       transformations.  Offload internal sorting to do_internal_sort().
-       (do_internal_sort) New function.  Handles internal sorting even
-       when SEPARATE is nonzero.  Doesn't free v_sort.
-       (do_external_sort) Take new arg SEPARATE.  Only destroy `x' if
-       it's non-NULL.
-       (write_initial_runs) Take new arg SEPARATE.  Only destroy the old
-       sink if SEPARATE is zero.
-       (read_output_cases) Renamed read_sort_output(), all references
-       changed.  Now uses separate_case_tab when it exists.
-       (write_separate) New function.
-
-       * vfm.c: (page_to_disk) Destroy memory_source_cases, not
-       memory_sink_cases.  Don't redundantly call
-       vfm_source->destroy_source().
-       (memory_stream_mode) After switching over, set memory_sink_cases
-       to NULL.
-
-Sat Jan 10 23:35:51 1998  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: (struct agr_var) Expand dbl[] array from 2 to 3
-       elements.
-       (static var prev_case) New, moved out of aggregate_single_case()
-       local scope.
-       (static var buf64_10x, buf_10x) New.
-       (cmd_aggregate) Initialize prev_case.  Comment fixes.  Implement
-       the 000, 001, 100, and 101 cases.  Free prev_case.
-       (parse_aggregate_functions) Disallow scratch variables.
-       (free_aggregate_functions) Only free agr_dict if non-null.  Use
-       iter->function to determine numeric/string type, not
-       iter->src->type.
-       (aggregate_single_case) Don't manage prev_case.  Initialize
-       aggregate info after dumping it.
-       (accumulate_aggregate_info) Fix sum, weighted sum, mean, weighted
-       mean, stddev, weighted stddev definitions.
-       (dump_aggregate_info) Implemented.
-       (initialize_aggregate_info) Renamed from
-       initialize_aggregate_functions().  Initializes dbl[2].
-       (agr_00x_trns_proc, agr_00x_end_func, write_case_to_sfm,
-       agr_10x_trns_proc, agr_10x_trns_free, agr_10x_end_func) New.
-
-       * cases.c: (alloc_val) Removed.
-
-       * get.c: (cmd_save_internal) Initialize new `dict' member.
-
-       * sfm-write.c: (sfm_write_dictionary, write_header,
-       write_variable, write_value_labels, write_documents) Reorganize,
-       simplify for new parameter structure.
-       (write_variable) Only one variable * argument now.
-
-       * sfm.h: (struct sfm_write_info) Removed `pri', `sec', and
-       replaced by new `dict' member.
-
-       * temporary.c: (new_dictionary) Initialize n_documents.
-
-       * vars-atr.c: (dup_variable) Allocate `value's from dict into
-       v->fv manually.
-       (init_variable, replace_variable) Eliminate usage of alloc_val().
-
-       * vars-prs.c: (parse_DATA_LIST_vars) Accept PV_NO_SCRATCH option.
-
-       * vfm.c: (arrange_compaction) Allow `temporary' value of 2 to
-       signal that AGGREGATE is to be used for forming final cases.
-       (close_active_file) Call end_func before stopping lagging.  Cancel
-       temporary after finishing compaction.
-       (write_case) Comment fixes.  Cleaned up.
-       (compact_case) Let AGGREGATE handle compaction when `temporary' is
-       2.
-
-Sat Jan 10 02:10:47 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (BUILT_SOURCES) Add means.c.
-       (pspp_SOURCES) Add means.c.
-       (EXTRA_DIST) Add means.q.
-
-       * command.c: (array cmd_table[]) Add MEANS.
-
-       * common.h: Esthetic fixes.  Comment fixes.  Test for
-       MAX_SHORT_STRING greater than 8.
-       (macros LOWEST, HIGHEST) New.
-
-       * data-in.c, data-list.c, recode.c: Comment fixes.
-
-       * means.q: New file, base version.
-
-       * mis-val.c: (parse_num_or_range, parse_numeric) Replace -DBL_MAX
-       with LOWEST, DBL_MAX with HIGHEST.
-
-       * q2c.c: (dump_vars) Add an enum to array types giving the number
-       of values for the enum.
-
-       * sfm-read.c: (sfm_read_dictionary, read_machine_flt64_info)
-       Replace second_lowest_value with second_lowest_flt64.
-
-       * sfm-write.c: (write_variable, write_rec_7_34) Replace
-       second_lowest_value with second_lowest_flt64.
-
-       * t-test.q: Comment fix.
-
-       * temporary.c: (restore_dictionary) Esthetic fix.
-
-       * tokens.h: (force_match_id, force_match, force_string, force_int,
-       force_num, force_id) Replace msg() with syntax_error().
-
-       * var.h: (struct means_proc) New.
-       (struct variable) Add mns member to `p' union.
-
-       * vars-prs.c: (parse_variable, parse_dict_variable,
-       parse_variables, parse_DATA_LIST_vars) Replace msg() with
-       syntax_error().
-
-Thu Jan  8 22:28:41 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (pspp_SOURCES) Add tab.h.
-
-       * Most source files: Added a cast to unsigned char in usages of
-       the ctype is*() functions.  Replaced `end of command expected'
-       calls to msg() with calls to syntax_error().
-
-       * frequencies.q: (dump_condensed) Fix tab_dim() column reference.
-
-       * lexer.c: (hex_val) Removed (was dead code).
-       (idmatch) Parenthesize function name to avoid macro expansion.
-
-       * postscript.c: Comment fixes.
-       (ps_preopen_driver) Change default font size to 10pt.
-
-       * sfm-read.c: (read_variables) Byteswap sv.print, sv.write as
-       int32s.
-       (parse_format_spec) Change system-file format spec argument type
-       to int32.  Parse the format spec with bitwise operators.
-
-       * sfmP.h: (struct sysfile_format) Removed.
-       (struct sysfile_variable) Changed print, write members from
-       sysfile_format to int32.
-
-       * tokens.h: Esthetic fixes.
-       [__GNUC__] (macro id_match) New macro to hopefully speed up
-       identifier matching.
-       (macros match_id, match_tok, match_int) Implemented in
-       compiler-independent manner; no longer GNU C only.
-
-       * vfm.h: Include time.h.
-
-Mon Jan  5 11:06:15 1998  Ben Pfaff  <blp@gnu.org>
-
-       * data-list.c: (dump_fixed_table) Change tab_dim().
-
-       * dump-sysfile.c: (open_sysfile) Fix mmap() call.
-
-       * error.c: Include command.h.
-
-       * frequencies.g: Formatting fixes.
-
-       * frequencies.q: Add tab_dim() calls.  Make the total cell a
-       joined cell.
-
-       * glob.c: Include command.h.
-
-       * sfm-read.c: (struct sfm_fhuser_ext) New members sysmis, highest,
-       lowest.
-       (sfm_read_dictionary) Initialize sysmis, highest, lowest.
-       (sfm_read_machine_flt64_info) Update sysmis, highest, lowest.
-       (read_variables) Byteswap sv.type; byteswap sv.print, sv.write as
-       the other elements (is this right?).
-       (read_variables) Use lowest, highest members.
-       (parse_format_spec) New arg `vv' for more stringent checking.
-       (dump_dictionary) Byteswaps nonexplicit data.
-       (sfm_read_case) Byteswap numeric data.
-
-       * som.c: Initialize table_num to 1.
-       (render_segments) Remember to increment y_index after each table
-       segment.
-
-       * sysfile-info.c: (cmd_sysfile_info) Change tab_dim().  Don't call
-       avl_count() on a NULL tree.  No title for the second table.
-       (cmd_display) Handle DISPLAY VECTORS by calling display_vectors().
-       Handle AS_SCRATCH as AS_NAMES.  Warn if no variables.  Re-enable;
-       fix call to display_variables().
-       (display_variables) Default to 4 columns, not 3.  Set up headers.
-       Column title is Variable, not Name.  Fix index column.
-       Add joint text.  Add tab_dim().  Handle value labels properly.
-       Handle DISPLAY LABELS properly.  Draw boxes correctly.
-       (describe_variable) Value labels don't need titles.  Don't clear
-       nonexistent index column.
-       (compare_vectors_by_name) New function.
-       (display_vectors) New function.
-
-       * tab.c: (tab_height) Add assertion.
-       (tab_null) Add debug code.
-       (evaluate_dimensions) Add debug code.
-
-       * var.h: (struct variable) get_proc data is sometimes used
-       simultaneously with other per-procedure info, therefore it was
-       removed from the union.  All references changed.        
-
-Sun Jan  4 18:13:33 1998  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (ascii_close_page) Put title on second line of headers
-       if there is no subtitle.
-
-       * command.c: (glob var cur_proc) Move definition here, from
-       common.c.
-       (cmd_remark) Emit blank line before remarks.
-
-       * command.h: (glob var cur_proc) Move declaration here, from
-       common.h.
-
-       * data-list.c: (dump_fixed_table) Fix messages.
-       (dump_free_table) Call tab_nat_dim().
-
-       * descript.q: (dump_z_table) Modify tab_dim() call.
-
-       * frequencies.q: (dump_condensed, dump_statistics) Add tab_dim()
-       call.
-       (dump_statistics) Don't output header.
-
-       * groff-font.c: Minor format fix.
-
-       * html.c: Comment fix.
-
-       * list.q: (write_varname) Indent after advancing page.
-
-       * output.h: Minor reordering.
-
-       * postscript.c: Comment fixes.  Many places, '\n' was replaced by
-       a reference to eol[].
-       (struct ps_driver_ext) New member eol[].
-       (ps_preopen_driver) Initialize eol[].
-       (ps_postopen_driver) Fix sense of text for text_opt, line_opt
-       defaults.  Handle headers.  Fix test for minimum page length.
-       (static var option_tab[]) Add `line-ends'.
-       (ps_option) Handle line-ends to change eol[].
-       (postopen) Scale prop_em_width and fixed_width properly.  Set the
-       prologue title to outp_title if applicable.  Replace the prologue
-       line ends with eol[].  Call draw_headers() if headers are enabled.
-       (text_width) New function.
-       (out_text_plain) New function.
-       (draw_headers) New function.
-
-       * print.c: (dump_table) Call tab_nat_dim().
-
-       * som.c: (som_blank_line) Only advance a line if not at the top of
-       a page.
-       (som_submit) Move several informational table calls here.
-       Increment subtable_num if SOMF_NO_TITLE not set.
-       (output_table) Advance a line if SOMF_NO_SPACING not set.
-       (render_columns, render_segments, render_simple) Handle spacing
-       between tables.  Handle table titles.  Remove debug output.
-
-       * som.h: (SOMF_*) New enum series.
-       (struct som_table_class) New member `flags'.
-
-       * sysfile-info.c: (cmd_sysfile_info) Calls tab_nat_dim().  No
-       headers or spacing.
-       (display_variables) Calls tab_nat_dim().
-       (describe_variable) Remove restriction on number of value labels.
-       Make value labels separated by thin lines.
-
-       * tab.c: (tab_create) Default `flags' to none.
-       (tab_float) New arg `w'.  All references changed.
-       (tab_nat_dim) New function.
-       (tab_output_text) No title or spacing.
-       (tab_flags) New function.
-       (tabi_flags) New function.
-       (tabi_title) New function.
-       (strip_height) Removed.
-       (tabi_render) Skip title when necessary.
-       (static var tab_tab_class) Add tabi_flags, tabi_title.
-       (evaluate_dimensions) Disable display of column, row size.
-       (sum_columns) Add title height to top header.
-       (render_strip) Moved within file.
-
-       * tab.h: (struct tab_table) New member `flags'.
-
-       * vfm.c: (dump_splits) Calls tab_nat_dim().  No title.
-
-Sat Jan  3 16:55:44 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Most source files: Add `const' attribute in all appropriate
-       places.
-       
-       * sysfile-info.c: (cmd_sysfile_info) Add tab_dim() call, add a
-       column to the variables table for use by describe_variable().
-       (cmd_display) Disable for the present.
-       (display_documents) Don't wrap documents.
-       (display_variables) Table has four columns now.
-       (describe_variable) Table has four columns now.  Don't use a
-       subtable, use joined cells instead.
-
-       * tab.c: (tab_create) Don't set `join'.
-       (tab_realloc) ct array is not made up of a_string's.
-       Reallocate trh, hrh, h arrays, initialize trh array.  Initialize
-       cell contents on GLOBAL_DEBUGGING, not DEBUGGING.
-       (text_format) New function.
-       (tab_title) Rewritten, uses text_format().
-       (tab_text) Rewritten, uses text_format().
-       (tab_joint_text) New function.
-       (tab_join) Removed.
-       (static var hit) New variable.
-       (render_strip) New args r1, r2.  Implement joined cells that fit
-       on a single page.
-       (tabi_render) Increment hit.  Pass new args to render_strip().
-       (evaluate_dimensions) [GLOBAL_DEBUGGING] Check for uninitialized
-       cells.  For t_naw and t_nah, ignore joined cells and null cells in
-       calculations.
-       
-       * tab.h: (struct tab_join_rect) Removed.
-       (struct tab_table) Removed `join'.
-       (TAB_JOIN_MAIN) Removed.
-       (struct tab_joined_cell) New struct.
-       (TAT_NOWRAP) New enum.
-
-Fri Jan  2 01:39:58 1998  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (ascii_postopen) Replace ASCII_* macros with their
-       expansions.
-       (ascii_postopen_driver) Fix initialization of *_spacing so that
-       the TAL_0 bit doesn't count.
-
-       * data-list.c: (dump_fixed_table) Use natural width for Format
-       column.
-
-       * glob.c: (rerange) Removed.
-       (get_date) Formatting fixes.  Internationalization fix.
-
-       * html.c: (html_postopen_driver) Replace HTML_DEFAULT_OUTPUT_FILE
-       with "pspp.html".
-
-       * postscript.c: (ps_postopen_driver) Replace
-       PS_DEFAULT_OUTPUT_FILE with "pspp.ps".
-
-       * som.c: (som_submit) Don't eject page before every table.
-       (output_table) Fix order of arguments on call to area().
-       (render_columns) Fix calculation of max_len.
-       
-       * tab.c: (tabi_cumulate) Minor change to increase elegance.
-       (render_strip) New function.
-       (strip_height) New function.
-       (tabi_render) Rewrite as calls to render_strip().
-
-       * tab.h: (TAT_* enums) Removed TAT_RICH, all references removed.
-       Renumbered TAT_PRINTF, TAT_TITLE, TAT_FIX to correspond better
-       with the TAB_* and OUTP_T_* constants.
-       
-Thu Jan  1 11:53:52 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Formatting fixes.
-
-       * ascii.c: (ascii_postopen_driver) Initialize *_line_spacing[],
-       *_line_width[].
-
-       * data-list.c: (dump_fixed_table) Add tab_dim() call.
-
-       * descript.q: (dump_z_table, display) Add tab_dim() calls.
-
-       * dump-sysfile.c: (glob var length) Make type off_t.
-       (usage) Fix arguments.
-       (main) Return 0.
-
-       * output.h: (OUTP_T_*) Change constants' value to match tab.h.
-       Now right-justification is the default so many references had to
-       change.
-       (struct outp_class) Removed line_width, all references changed.
-       (OUTP_DEV_*) Add OUTP_DEV_DISABLED.
-       (struct outp_driver) Add elements horiz_line_width,
-       vert_line_width, horiz_line_spacing, vert_line_spacing.  Remove
-       som element.
-
-       * postscript.c: (outp_encodings) Formatting fixes.  Fix garbage
-       collection.
-       (postopen) Initialize all the informational members of
-       outp_driver.
-
-       * som.c: (som_blank_line) New function, renamed from blank_line(),
-       all references changed.
-       (som_submit) Disables drivers whose pages can't be opened.
-       (render_columns, render_simple, render_segments) Add debug output.
-       (render_columns) Fix loop range.
-       (render_simple) Don't try to render the headers, they're taken
-       care of automatically.  Advance cp_y past the table when done.
-       (render_segments) Fix loop ranges.
-
-       * tab.c: Initialize new members of tab_table.
-       (tab_vline) Handle trv[]; don't set style for spacing-only lines.
-       (tab_hline) Handle trh[]; don't set style for spacing-only lines.
-       (tab_box) Handle trh[], trv[]; don't set style for spacing-only
-       lines.
-       (set_expr) Removed.
-       (tab_dim) New function.
-       (tab_col_width) Removed.
-       (tab_row_height) Removed.
-       (tab_output_text) Call tab_dim().
-       (tabi_driver) Call evaluate_dimensions(), sum_columns().
-       (tabi_area) Implemented.
-       (tabi_cumulate) Implemented.
-       (tabi_render) Partially implemented, but broken.
-       (var tab_table_class) Made static.
-       (evaluate_dimensions) New function.
-       (sum_columns) New function.
-
-       * tab.h: (enum t_*) Now start at t_end.  New: t_ptw, t_nr, t_nc,
-       t_nah, t_naw, t_neg, t_xch, t_dup, t_lbl, t_jnz, t_sac, t_sar,
-       t_scr, t_srr, t_sentinel.  Removed: t_nat.
-       (struct tab_table) New: wl, wr, ht, hb, trh, hrh, trv, wrv, dim,
-       max_stack_height, w, h.  Removed: ce, re.
-       (macro blank_line) Removed.
-       (glob var zero_length) Removed.
-
-Fri Dec 26 15:44:31 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Most source files: include some of the new include files broken
-       out of var.h.
-       
-       * Makefile.am: (pspp_SOURCES) Add all the new source files to the
-       list.
-
-       * aggregate.c: (glob var outfile) Make static.
-
-       * command.c: (glob var pgm_state) Move here.
-
-       * common.c: (glob vars endian, second_lowest_value, pgmname,
-       finished, curdate, cur_proc, start_interactive, history_file) Move
-       here.
-
-       * descript.q: (structs dsc_z_score, descriptives_trns) Move here.
-
-       * file-handle.q: (glob vars files, inline_file) Move here.
-
-       * glob.c: Lost lots of glob vars, detailed in individual file
-       entries.
-       (init_glob) set_printer, set_screen were obsolete, deleted.
-       set_cprompt has fewer spaces because pspp has fewer letters than
-       fiasco.
-
-       * inpt-pgm.c: (glob vars inp_init, inp_init_size) Move here.
-       (inp_nval) Made static.
-
-       * lexer.c: (glob vars token, tokval, tokstr, tokstr_size,
-       tokstr_len, toklongstr, tokint) Move here.
-
-       * misc.c: Lost several vars and functions.
-
-       * set.q: (all the set_* variables) Move here.
-
-       * str.c: (strmaxcpy, strbarepadcpy, strbarepadlencpy, strpadcpy,
-       blpstrset, strpadcmp, memrev, memrmem, cmp_str) Move here from
-       misc.c.
-
-       * tab.c: (set_expr, tab_col_width, tab_row_height) New functions.
-
-       * tab.h: (enum series t_*) New enums.
-       (struct tab_table) Use arena struct tag.  New members ce, re.
-
-       * tokens.h: Comment fixes.
-
-       * var.h: Move lots of enums and variables and functions and
-       structures to other files.  Use and declare a lot more union and
-       struct tags.  Comment fixes.  
-
-       * vector.c: (glob vars vec, nvec) Move here.
-
-       * vfm.c: (glob vars reinit_sysmis, reinit_blanks, init_zero,
-       init_blanks, last_vfm_invocation) Move here.
-
-       * cases.h: New file.
-       (struct long_vec) Move here.
-       (vec_init, vec_clear, vec_insert, vec_delete, devector, envector)
-       Move here.
-
-       * command.h: New file.
-       (STATE_* enums) Move here.
-       (glob var pgm_state) Move here.
-
-       * format.c: New file.
-       (glob var formats) Move here.
-       (parse_format_specifier_name, fmt_to_string,
-       check_input_specifier, check_output_specifier,
-       check_string_specifier, convert_fmt_ItoO, parse_format_specifier)
-       Move here.
-
-       * format.h: New file.  Move functions now in format.c here.
-       (FMT_* enums) Move here.
-       (struct fmt_desc) Move here.
-       (FCAT_* enums) Move here.
-       (struct fmt_spec) Move here.
-       (glob vars formats, fmt_parse_ignore_error) Move here.
-
-       * inpt-pgm.h: New file.
-       (INP_* enums) Move here, make #defines into enums.
-       (glob vars inp_init, inp_init_size) Move here.
-
-       * sort.h: New file.
-       (glob vars v_sort, nv_sort) Move here.
-       (sort_cases, read_sort_output) Move here.
-
-       * vector.h: New file.
-       (struct vector) Move here, add struct tag.
-       (glob vars vec, nvec) Move here.
-       (find_vector) Move here.
-
-       * New file.
-       (glob vars last_vfm_invocation, temp_case, reinit_sysmis,
-       reinit_blanks, init_zero, init_blanks) Move here.
-       (struct case_stream) Move here.
-       (glob vars vfm_source, vfm_sink, vfm_memory_stream,
-       vfm_disk_stream, sort_stream, data_list_source,
-       input_program_source, file_type_source, get_source, n_lag) Move
-       here.
-       (procedure, write_case, lagged_case, compact_case, page_to_disk)
-       Move here.
-               
-Wed Dec 24 22:40:42 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (pspp_SOURCES) Added html.c, som.c, som.h.
-       (LDADD) Add libdcdflib.
-
-       * ascii.c: Comment and formatting fixes.  Almost every external
-       function had an assert added, checking driver_open and page_open.
-       (ascii_init_driver) Broken into ascii_preopen_driver,
-       ascii_postopen_driver, ascii_close_driver.  Manages driver_open.
-       (ascii_open_page) Sets page_open.
-       (ascii_close_page) Clears page_open.
-
-       * html.c: Comment and formatting fixes.  Almost every external
-       function had an assert added, checking driver_open and page_open.
-       (html_init_driver) Broken into html_preopen_driver,
-       html_postopen_driver, html_close_driver.  Manages driver_open.
-       (html_open_page) Sets page_open.
-       (html_close_page) Clears page_open.
-       (html_submit) Disabled.
-
-       * lexer.c: (parse_string) Remove debugging printf.
-
-       * list.q: (determine_layout) Open a page if one is not yet open.
-
-       * output.c: Comment fixes.
-       (add_class) Set the class member of the new list element.
-       (parse_options) Don't handle device type.
-       (colon_tokenize) New function.
-       (configure_driver) New four-field format with a field for device
-       type.  Now initialize driver_open, page_open, next, and prev
-       fields.  Use new colon_tokenize() function.  Don't do a memory
-       copy to replace a driver, it doesn't work; instead delete the old
-       driver and insert a new one.
-       (destroy_driver) Don't call som_destroy_driver().  Close the page
-       if it's open.  Find the class in the list of classes and decrement
-       that reference count.  Remove the driver from the global driver
-       list.
-       (outp_iterate_enabled_drivers) Renamed outp_drivers().  All
-       references changed.  Rewritten.  Don't return a driver that's not
-       enabled.
-       (outp_eject_page) All references to som_internal_eject_page()
-       changed to use this.  Sets cp_x to 0 as well as cp_y.
-
-       * output.h: (OUTP_I_* enums) Removed.
-       (struct som_submission_form) Removed.
-       (struct outp_class) init_driver broken into preopen_driver,
-       postopen_driver, and close_driver.  submit changed to take a
-       som_table argument.
-
-       * postscript.c: Comment and formatting fixes.  Almost every
-       external function had an assert added, checking driver_open and
-       page_open.
-       (ps_init_driver) Broken into ps_preopen_driver,
-       ps_postopen_driver, ps_close_driver.  Manages driver_open.
-       (ps_open_page) Sets page_open.
-       (ps_close_page) Clears page_open.
-
-       * som.c: New file, base implementation.
-       
-       * som.h: (struct som_table) Add struct tag.
-       (enum SOM_COL_ACROSS) Removed.
-       (SOM_ROWS, SOM_COLUMNS) New enums.
-       (struct som_table_class) Add member `cumulate'.  Remove `segment';
-       change `render' arguments.
-       (struct som_point, struct som_rect) Removed.
-       (som_submit_table) Fixed typo, should have been som_submit.
-
-       * sysfile-info: (describe_variable) Don't try to insert a
-       subtable; just destroy it for now.
-
-       * t-test.q: Include dcdflib/cdflib.h instead of cdflib.h.  Fix
-       references to value labels.
-
-       * tab.c: (tab_destroy) New function.
-       (tab_columns) Change argument.
-       [0] (tab_submit) Remove dead code.
-       (tab_title) Allocate string from the table's arena.
-       (tab_output_text) Only free the buffer if we allocated it.
-       (tab_submit) New function.
-       (static vars t, d) New static vars.
-       (tabi_table, tabi_driver, tabi_count, tabi_area, tabi_columns,
-       tabi_headers, tabi_cumulate, tabi_render) New functions.
-       (glob var tab_table_class) New global var.
-
-       * tab.h: (struct tab_join_rect) Don't use a som_rect; directly
-       encapsulate the rectangle.  All references changed.
-       
-Sun Dec 21 16:18:58 1997  Ben Pfaff  <blp@gnu.org>
-
-       * All header files updated to use struct tags in addition to
-       typedefs for all structures.  Don't use word `struct' in struct
-       tags.
-       
-       * Makefile.am: (pspp_SOURCES) Remove html.c.
-       (INCLUDES) Replace the lib/* includes with a single lib/ include;
-       all references updated.
-
-       * command.c: (parse_cmd) Remove call to som_check_workspace.
-       (output_line) Update to new som.
-
-       * data-in.c: (parse_numeric) A single dot is not an error; it is
-       the system-missing value.
-
-       * data-list.c: (dump_fixed_table, dump_free_table) Update to new
-       som.
-
-       * data-out.c: Added `const' as appropriate to many prototypes.
-       (convert_E, convert_F, convert_CCx) Take double argument instead
-       of value * argument.
-       (convert_format_to_string) Call changed functions appropriately.
-       Instead of modifying the caller's value for FCAT_SHIFT_DECIMAL,
-       make a local copy of the value.
-
-       * descript.q: Remove custom_variables() prototype now provided by
-       q2c.  
-       (custom_variables) Don't increment sbc_variables, the caller does
-       this.
-       (dump_z_table, display) Update to new som.
-
-       * error.c: (vmsg) Add const to prototype.  Remove code to handle
-       `too many errors' condition.
-       (check_error_count) New function.
-       (msg) Add const to prototype.
-
-       * filename.c: (open_file) Rewrite for elegance.
-
-       * frequencies.q: Remove custom_*() prototypes now provided by q2c.
-       (dump_full, dump_condensed, dump_statistics) Update for new som.
-
-       * list.q: Don't include somP.h.  Change all references to
-       som_driver_ext to refer to the new members of som_driver.  Change
-       som_internal_eject_page() references to outp_eject_page().
-
-       * main.c: (parse) Rewrite for elegance.  Add call to
-       check_error_count().
-
-       * output.c: (add_class, outp_list_classes, outp_configure_driver)
-       Rewrite or revise for new outp_driver_class_list structure.
-       (outp_iterate_enabled_drivers) Fix comparison between disabled
-       devices and current device type.
-       (outp_eject_page) New function.
-
-       * output.h: Comment fixes.
-       (struct outp_driver) New members driver_open, page_open, cp_x,
-       cp_y, font_height, prop_em_width, fixed_width.  Deleted members
-       ref_count, next.
-       (struct outp_driver_class_list) New struct.
-       (outp_class_list) Changed to type outp_driver_class_list; all
-       references updated.
-
-       * print.c: (dump_table, print_trns_proc) Updated for new som.
-
-       * q2c.c: (dump_vars) Simplify array subcommand code.  Declare
-       prototypes for custom subcommands.
-       (dump_subcommand) Always include the `else'.
-       (dump_parser) Fix comments in output code.
-
-       * set.q: Reordered functions.
-
-       * som-frnt.c, som-high.c, som-low.c, somP.h: Removed.
-       
-       * som.h: Rewritten from scratch.
-
-       * str.h: Remove dead code.
-
-       * tab.c, tab.h: New files, base implementation.
-
-       * sysfile-info.c: (cmd_sysfile_info, describe_variable) Update to
-       new som.
-
-       * t-test.q: New code from John Williams
-       <johnr.williams@stonebow.otago.ac.nz>.  Include math.h, cdflib.h.
-       Many many new static vars and defines.
-       (precalc, postcalc, g_postcalc, z_postcalc, t_pairs, t_groups,
-       groups_calc, pairs_calc, z_dev_calc, z_calc) New functions.
-       (struct value_list) New struct.
-       (variance, covariance, pooled_variance, oneway, pearson_r, f_sig,
-       t_crt, t_sig, print_t_groups) New functions.
-       (cmd_t_test) Implemented.
-
-       * temporary.c: (cancel_temporary) Only free the temp_dict if it's
-       non-NULL.
-
-       * vfm.c: (dump_splits) Update to new som.
-
-Thu Dec  4 23:02:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (fiasco_SOURCES) Add html.c.
-
-       * aggregate.c: Base source.
-
-       * ascii.c: (postopen, preclose) Reformat.
-
-       * data-out.c, expr-evl.c: Comment fixes.
-       
-       * filename.c: (open_file) When opening a file for writing, use
-       line buffering instead of full buffering for better interactive
-       performance.  Suggested by Valerio Aimale
-       <valerio@svpop.com.dist.unige.it>.  Also, recognize special file
-       names `stdin', `stdout', `stderr'.
-
-       * groff-font.c: Comment fixes.
-
-       * html.c: New file; base version.
-
-       * list.q: (write_all_headers, clean_up, determine_layout,
-       list_cases) Ignore `special' devices for now.  Needs to be fixed
-       later.
-
-       * output.c: (outp_init) Add html driver to list; reverse list
-       order.
-
-       * output.h: (struct outp_class_struct) New members `special',
-       `submit'; comment fixes.  All references changed.
-
-       * postscript.c: (ps_init_driver) Make defaults for text_opt,
-       line_opt depend on whether the OUTP_DEV_SCREEN bit is set on the
-       device.
-       (postopen) Comment fix.
-       (preclose) Comment fixes, formatting fixes.  Change x->file.file
-       references to more proper f->file.
-
-       * som-high.c: (som_submit_table) Special classes use their own
-       renderers.
-
-       * som.h: Comment fixes.
-
-       * temporary.c: (new_dictionary) Don't try to xstrdup() a NULL
-       string.
-       
-Tue Dec  2 14:36:07 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (fiasco_SOURCES) Add aggregate.c back in.
-
-       * aggregate.c: Still working on this.
-
-       * command.c: (cmd_table[]) Add AGGREGATE back in.
-       (split_words) Make '-' a legal word separator as well as ' '.
-
-       * main.c: Comment fixes.
-
-       * q2c.c: (dump_parser) Don't require the procedure's full name to
-       be present, in the generated source.
-
-       * t-test.q: Change name to `t-test' from `t test'.  Let PAIRS be
-       multiply specified and let it be default; let MISSING, CRITERIA,
-       FORMAT be multiply specified.
-       (cmd_t_test) Parse command name.  [DEBUGGING] Call debug_print().
-       (custom_groups) Fix defaults.
-       (custom_pairs) Check whether this is a PAIRS subcommand before
-       attempting to parse.  Better garbage collection.  Proper storage
-       allocation.
-       [DEBUGGING] (debug_print) New function.
-
-       * temporary.c: Comment fixes.
-       (copy_variable) Don't copy variable name and index.
-       (save_dictionary) Copy variable name and index by hand.
-
-       * vars-atr.c: Comment fixes.
-       (create_variable) New dictionary argument.  All references
-       changed.
-       (common_init_stuff) New dictionary argument.  All references
-       changed.
-       (init_variable) New dictionary argument.  All references changed.
-       (dup_variable) New function.
-
-       * vars-prs.c: (parse_variables) If there are any errors, we always
-       return 0.  Previously, it was possible for some types of errors to
-       be ignored.
-       
-Sat Nov 22 01:20:59 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (fiasco_SOURCES) For 0.1.5 release, remove
-       aggregate.c.
-
-       * command.c: (cmd_table[]) Comment out AGGREGATE; add T TEST.
-
-       * list.q, t-test.q: Remove ALL option from VARLIST declaration in
-       grammar rules.
-
-       * q2c.c: Comment fixes.
-       (SBC_* enums) Remove SBC_VARLIST_ALL; all references removed.
-       
-       * t-test.q: (cmd_list) Rename cmd_t_test.
-
-       * temporary.c: (new_dictionary) Don't declare as static.
-       
-Fri Nov 21 00:03:06 1997  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: Changes, still not finished.
-
-       * file-handle.q, frequencies.q, list.q, set.q: Comment fixes.
-
-       * q2c.c: Comment fixes.  Now its output is internationalized.
-       (get_token) Fix parsing of escapes within literal strings.
-       (main) Fix bad #line directives in output.
-
-       * t-test.q: Base implementation.
-
-       * temporary.c: (new_dictionary) New function.
-       (restore_dictionary) [__CHECKER__] Change fill character to *
-       (from @).
-       
-Sun Nov 16 01:29:57 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (BUILT_SOURCES, fiasco_SOURCES) Add t-test.c
-
-       * aggregate.c: Changes, still not finished.
-
-       * descript.q, list.q: Comment fixes.
-
-       * q2c.c: Almost completely rewritten.
-
-       * t-test.q: New file, not complete.
-
-Fri Nov 14 00:14:48 1997  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.c: Changes, still not finished.
-
-       * sort.c: (sort_cases) Call cancel_temporary() instead of doing it
-       by hand.
-
-       * temporary.c: (cancel_temporary) New function.
-
-       * vars-atr.c: (discard_variables) Call cancel_temporary() instead
-       of doing it by hand.
-
-       * vfm.c: (close_active_file) After restoring a TEMPORARY
-       dictionary, set temp_dict to NULL.  Cancel TEMPORARY through
-       cancel_temporary().
-       (SPLIT_FILE_procfunc) Comment fix.
-
-Tue Oct 28 16:08:45 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (fiasco_SOURCES) Add aggregate.c.
-
-       * aggregate.c: New file, not finished yet.
-
-       * command.c: (cmd_table) Add AGGREGATE.
-
-       * common.h: (pgm_state) Move declaration to var.h.
-
-       * lexer.c: (bin_value_func, oct_value_func, hex_value_func) i18n
-       fixes.
-       (parse_string) Message fix.
-
-       * recode.c: Comment fix.
-
-       * sfm-read.c: (read_variables) Code esthetic fixes.
-       (write_header) Default date is `Jan', not `JAN'.
-
-       * sfmP.h: (bswap_int32) [!__linux__] Fix off-by-one errors.
-
-       * sort.c: (cmd_sort_cases) Farm the work out to new function
-       parse_sort_variables().
-       (parse_sort_variables) New function.
-       (sort_cases) New function.  Cancels temporary transformations,
-       which sorting didn't do previously.
-       (cmd_sort_cases) Better garbage collection on error.  Uses
-       do_external_sort().
-       (write_initial_runs, merge_once) Improved code esthetics.
-       (sort_stream_read) Reduced to one call to read_output_cases().
-       (read_output_cases) New function.
-
-       * var-labs.c: (cmd_variable_labels) Re-enabled truncation of
-       variable labels to 120 characters.
-
-       * var.h: Comment fixes.
-       (glob var pgm_state) From common.h.
-
-       * vars-atr.c: (discard_variables) Set pgm_state to STATE_INIT.
-
-       * vars-prs.c: (parse_DATA_LIST_vars) Support PV_SINGLE in
-       options.  Set *names to NULL on error.
-
-       * vfm.c: (memory_stream_init) Assert compaction_nval != 0.
-
-Thu Oct  9 09:59:49 1997  Ben Pfaff  <blp@gnu.org>
-
-       * sfm-write.c, vfm.c: [HAVE_UNISTD] #include <unistd.h>, needed by
-       SunOS4.  From Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-Wed Oct  8 18:55:24 1997  Ben Pfaff  <blp@gnu.org>
-
-       * vfm.c: (page_to_disk) Added missing local variables.
-
-Tue Oct  7 20:23:17 1997  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: Comment fix.
-
-       * sort.c: (cmd_sort_cases) Attempt to perform internal sort if the
-       source is anything other than a disk stream, not just if it's in a
-       memory stream.  Call page_to_disk() before external sort.
-       (allocate_cases) Message fix.
-
-       * vfm.c: (prepare_for_writing) Warn user when paging workspace to
-       disk.
-       (page_to_disk) New function.
-
-Sun Oct  5 15:56:14 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (INCLUDES) Include .. instead of $(top_srcdir).
-
-       * common.h: (macro strerror) Remove.  From Alexandre Oliva
-       <oliva@dcc.unicamp.br>.
-
-       * get.c: (dict_delete_run) The number of variables to delete is
-       not necessarily the number of variables that need to be shifted
-       up.
-       (trim_dictionary) Don't set *options to 0.  Fix bug that caused
-       too many variables to be deleted.
-
-       * postscript.c: Comment fix.
-
-       * q2c.c: Include strerror.c.  From Alexandre Oliva
-       <oliva@dcc.unicamp.br>.
-
-       * set.q: #undef ON and OFF.  From Alexandre Oliva
-       <oliva@dcc.unicamp.br>.
-
-       * sfm-read.c: (sfm_read_dictionary) Don't set the file class too
-       early, otherwise errors cause a bad free().
-
-       * str.h: (macro nvsprintf) s/FORMATS/FORMAT/ typo.  From Alexandre
-       Oliva <oliva@dcc.unicamp.br>.
-
-       * temporary.c: (save_dictionary) Don't allocate memory if
-       n_documents is 0.
-
-       * vfm.c: (memory_stream_write) Message fix.
-
-Sat Oct  4 16:20:43 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (static var cmd_table[]) Define REPEATING DATA
-       command.
-
-       * common.h: Added support for broken systems that are missing
-       EXIT_SUCCESS, EXIT_FAILURE, RAND_MAX, and/or strerror().
-
-       * Many source files: Replace syntax error messages via msg() with
-       call to syntax_error().
-
-       * data-list.c: (dump_fixed_table) Add support for dumping table
-       for REPEATING DATA as well as DATA LIST FIXED.
-       (cmd_repeating_data) Allows and requires `/' between subcommands.
-       Does proper thing with allowing rpd.starts_end to stay 0.  Allows
-       CONTINUED specifications to be omitted.  Forces CONTINUED to be
-       specified if ID is.  Calculates starts_end, cont_end from logical
-       record length as reported by fhp.  Calls dump_fixed_table() if
-       requested.  Fixed length of record copied by memcpy.
-       (parse_num_or_var) Sets `num' to 0, not NOT_INT, for variables.
-       Message fix.
-       (realize_value) Returns sensible value for out-of-range variable
-       values.
-       (rpd_parse_record) New argument `ofs'.  Fixed confusion between
-       length of occurrences and length of line.  Added warning for
-       fields that exceed the line length.  Fixed infinite loop.
-       (read_one_set_of_repetitions) Numerous minor changes for more
-       complete SPSS compliance.  Message fixes.
-
-       * dfm.c: (dfm_close) If the file being closed is the inline file,
-       read all the remaining data before closing it.
-       (dfm_get_record) Don't close the file on lossage, as either it
-       has been closed already or it doesn't belong to us.
-
-       * error.c: (puts_stdout) New function.
-       (vmsg) Use puts_stdout instead of puts.
-
-       * file-handle.q: (fh_record_width) New function.
-
-       * inpt-pgm.c: (init_case) Fixed buffer overrun when inp_nval % 4
-       == 0.
-       (clear_case) Ditto.
-       (input_program_source_read) Made an old kluge an approved method.
-
-       * lexer.c: (syntax_error) New function.
-
-       * misc.c: [BROKEN_RAND] (ansi_rand, ansi_srand; static var next)
-       New.
-
-       * output.c: (oupt_get_paper_size) Message fix.
-
-       * q2c.c: Numerous fixes to formatting of generated code made to
-       conform to GNU coding standards.  Uses syntax_error() in generated
-       code.  Other miscellaneous generated message fixes.  Added support
-       for broken systems that are missing EXIT_SUCCESS, EXIT_FAILURE,
-       RAND_MAX, and/or strerror().
-
-Sat Oct  4 02:09:56 1997  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: Comment fixes.
-
-       * data-list.c: (struct repeating_data_trns) New member `id_spec'.
-       (find_variable_input_spec) New function.
-       (cmd_repeating_data) Initializes id_spec.
-       (rpd_parse_record) Implemented.
-       (read_one_set_of_repetitions) Returns -3 by default in order to
-       kluge out some potential bugs.
-
-       * data-out.c: Comment fixes.
-
-       * file-type.c: (internal_cmd_record_type) Message fix.
-
-       * inpt-pgm.c: (input_program_source_read) Special temporary kluge
-       for handling -3 return value.
-
-Sat Sep 20 23:58:15 1997  Ben Pfaff  <blp@gnu.org>
-
-       * data-list.c: Comment fixes.
-       (struct dls_var_spec) Reordered members.
-       (read_from_data_list_fixed) Restructured.
-       (struct repeating_data_trns) Reordered members.  Renamed `starts'
-       as `starts_beg', `ends' as `starts_end'.
-       (cmd_repeating_data) Calculates length of repeated data if
-       necessary and possible.
-       (parse_num_or_var) Don't allow string variables.
-       (realize_value) New function.
-       (rpd_msg) New function.
-       (rpd_parse_record) New function.  Currently stubbed out.
-       (read_one_set_of_repetitions) Implemented.
-
-       * inpt-pgm.c: (input_program_source_read) Comment fix.
-
-Thu Sep 18 21:34:57 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (cmd_end_repeat_p) Removed.
-       (init_cmd_parser) Doesn't set cmd_end_repeat_p.
-       (parse_cmd_name) Removed.
-
-       * data-list.c: Comment fixes.
-       (data_list_pgm) Removed `eof' member.
-       (static var first) New var.
-       (cmd_data_list) Sets `first'.  Ensures that DATA LIST uses the
-       FILE TYPE file inside FILE TYPE structures.
-       (append_var_spec) Appends to *first, not dls.spec.
-       (parse_fixed) Message fixes.
-       (struct rpd_num_or_var) New.
-       (struct repeating_data_trns) New.
-       (static var rpd) New.
-       (cmd_repeating_data) New function.
-       (parse_num_or_var) New function.
-       (parse_repeating_data) New function.
-       (read_one_set_of_repetitions) New function.
-
-       * file-type.c: (cmd_file_type) Message fixes.  Always
-       default_handle to FILE TYPE file handle.
-       (internal_cmd_record_type) Message fixes.
-
-Wed Aug 20 14:22:03 1997  Ben Pfaff  <blp@gnu.org>
-
-       * repeat.c: Comment fix.  Disable debugging.
-
-       * temporary.c: (restore_dictionary) Sets splits to NULL and
-       n_splits to 0 before destroying the variables because now doing
-       this tries to remove split variables.
-
-       * vars-atr.c: (discard_variables) Asserts that n_splits is 0 after
-       destroying the dictionary.
-       (clear_variable) Removes a variable from splits after destroying
-       it.
-
-Mon Aug 18 18:06:55 1997  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: (set_compat) Removed.
-       (pick_compat) Removed.
-       (parse_command_line) Removed -c option.
-       (pre_syntax_message) Removed -c option.
-       (usage) Remove compatibility code.
-
-       * common.h: (macros VER_PC, VER_WND, VER_X) Removed.
-       (glob var compat) Removed.
-
-       * compute.c: (type_check) Fixed messages about type mismatches.
-
-       * data-list.c: (cmd_data_list) Removed compatibility code.
-       (fixed_parse_compatible) Calls convert_negative_to_dash().
-       Fixed bug where it only set the variable in fx.spec if it created
-       the variable itself.
-       (dump_fmt_list) Spelling fix.
-       (cut_field) Removed compatibility code.
-
-       * dfm.c: (cmd_begin_data) Don't require a command terminator on
-       BEGIN DATA command.
-
-       * expr-evl.c: (evaluate_expression) Implement LAG.
-
-       * expr-prs.c: (parse_add) Calls convert_negative_to_dash().
-       (parse_neg) Calls convert_negative_to_dash().
-       (LAG_func) Increases n_lag to the lag requested.  Fixed assignment
-       bug.
-
-       * expr.h: (struct expression_struct) Removed member max_lag.
-
-       * file-type.c: (parse_col_spec) Calls convert_negative_to_dash().
-       (internal_cmd_record_type) Removed special handling to produce
-       negative numbers from dash tokens.
-
-       * getline.c: (static var DO_REPEAT_level) New var.
-       (getl_add_DO_REPEAT_file) Increments DO_REPEAT_level.
-       (handle_line_buffer) Copies the line into getl_buf; doesn't call
-       copy_with_DO_REPEAT_substitutions().
-       (getl_read_line) Maintains value of getl_mode.  Calls
-       perform_DO_REPEAT_substitutions() whenever DO_REPEAT_level is
-       positive.
-       (getl_close_file) Decrements DO_REPEAT_level when appropriate.
-
-       * getline.h: (getl_mode) New glob var.
-
-       * glob.c: Comment fixes.
-       (init_glob) Restructured.  Sets set_seed.
-       (init_compat_dependent) Removed.  All references removed.
-       (get_date) Format changed from MM/DD/YY to DD MMM YYYY.
-       (__htonl, __htons) Removed.  (What were these for?)
-
-       * lexer.c: (static var tbl) Dash set to class CNUM.
-       (make_hexit) New function from data-out.c.
-       (get_token_representation) Rewritten.
-       (convert_negative_to_dash) New function.
-       (lex_init_compat_dependent) Removed.
-       (yylex) A dash is parsed as part of a number if it is followed by
-       a digit.  The ASCII representation of a number is copied to
-       tokstr.  String parsing farmed out to parse_string().  Comment
-       fixes.
-       (bin_value_func, oct_value_func, hex_value_func, parse_string) New
-       functions.
-       (preprocess_line) Line processing depends on interactive/batch
-       mode, not on compatibility mode.  Removed PC+ compatibility code.
-
-       * loop.c: (loop_3_trns_proc) Comment fix.
-
-       * main.c: Remove dead code.
-       (main) Remove call to init_compat_dependent().
-
-       * misc.c: (convert_fmt_ItoO) Make E format conversion more
-       conformant.
-
-       * print.c: (parse_string_argument) Calls
-       convert_negative_to_dash().
-       (fixed_parse_compatible) Calls convert_negative_to_dash().
-
-       * repeat.c: (RPT_* defines) Removed.
-       (struct rpt_numeric) Removed.
-       (struct repeat_entry) New member type, changed `replacement' from
-       char * to char **.
-       (clean_up) Deallocation adapted to new repeat_entry.
-       (internal_cmd_do_repeat) `type' defaults to 0.  Remove lookahead()
-       usage.  Creates vars for `type' of 1.
-       (parse_ids) Sets type of 1.  Adapted to new repeat_entry.
-       (store_numeric) Rewritten, new interface.
-       (parse_numbers) Rewritten.
-       (parse_strings) Rewritten.
-       (find_DO_REPEAT_substitution) New function.
-       (perform_DO_REPEAT_substitutions) New function.
-       (copy_with_DO_REPEAT_substitutions) Removed.
-       (debug_print) Rewritten.
-
-       * set.q: Comment fix.
-       (custom_results) Removed compatibility code.
-       (internal_cmd_set) Removed SET EMULATION subcommand.  Removed
-       compatibility code.
-
-       * sysfile-info.c: (cmd_display) Removed compatibility code.
-
-       * tokens.h: Comment fixes.
-       (token types enum) Removed `toktype' typedef name for this int
-       type.  Removed SUBST.  Restructured.
-
-       * vars-atr.c: (discard_variables) Sets n_lag to 0.
-
-       * vars-prs.c: Comment fix.
-
-       * vfm.c: Comment fixes.
-       (glob var n_lag) New var.
-       (static vars lag_count, lag_head, lag_queue) New vars.
-       (procedure) Removed argument nlag.
-       (setup_lag) New function.
-       (close_active_file) Discards lagging state.
-       (lag_case) New function.
-       (lagged_case) New function.
-       (write_case) Lags a case if lagging.
-
-       * weight.c: (cmd_weight) Removed compatibility code.
-       
-Sun Aug 17 22:34:40 1997  Ben Pfaff  <blp@gnu.org>
-
-       * getline.h: (struct getl_script) New members loop_index, macros.
-
-       * getline.c: (getl_add_file) Sets first_line field to NULL.
-       (getl_add_DO_REPEAT_file) New function.
-       (handle_line_buffer) When the current line's length is negative,
-       set the filename and line number.  Increment line number after
-       reading line.  Pass the line to
-       copy_with_DO_REPEAT_substitutions() for processing.
-       (getl_close_file) Free DO REPEAT lines before freeing the
-       filename, and just set the filename to NULL when doing this,
-       because otherwise the filename gets freed twice.
-
-       * glob.c: (glob var queuing) Removed.  All references removed.
-
-       * lexer.c: Comment fixes.
-       (get_token_representation) New function.
-
-       * repeat.c: Comment fixes.
-       (struct repeat_entry) Replaced type and v union members with a
-       simple string.
-       (append_record) New function.
-       (internal_cmd_do_repeat) Started reforming it for the new
-       repeat_entry struct.  Properly records filename changes in the
-       getl_line_buf.  Fixed improper use of = for ==.  Fixed sense of
-       strncasecmp() result usage.  Uses append_record() to simplify.
-       Properly discards END REPEAT line.  Calls getl_add_DO_REPEAT_file
-       to add in the file.
-
-       (copy_with_DO_REPEAT_substitutions) Started coding.
-
-       [DEBUGGING] (debug_print_lines) New function.
-
-       * set.q: (custom_results, internal_cmd_set) s/VER_PCP40/VER_PC/;
-
-       * tokens.h: (macro is_id1, is_idn) New macros.
-
-Sat Aug 16 10:57:41 1997  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: (static var pre_syntax_message) Changed `win'
-       compatibility mode to `wnd'.
-
-       * data-list.c: (fixed_parse_spss) Renamed
-       fixed_parse_compatible().
-
-       * glob.c: (init_glob) Excise unused code for
-       program_invocation_short_name.
-
-       * lexer.c: (preprocess_line) Leading indentors are ignored in Wnd
-       as well as in X.
-
-       * print.c: (fixed_parse_spss) Renamed fixed_parse_compatible().
-
-       * set.q: `win' compatibility renamed `wnd'.
-
-Thu Aug 14 22:11:12 1997  Ben Pfaff  <blp@gnu.org>
-
-       * filename.c: [__WIN32__] Change the included Windows header files
-       (again).
-       (absolute_filename_p) [__MSDOS__] A filename with a colon as the
-       second character is absolute.
-       (dirname) Fix logic error.  Don't printf() the results.
-       (prepend_dir) Don't printf() the results.
-
-       * getline.c: (handle_line_buffer) New function.
-       (getl_read_line) Reads line with handle_line_buffer() when
-       appropriate.
-       (getl_close_file) Discard line buffer data.
-
-       * getline.h: Comment fixes.
-       (struct getl_line_list) New struct.
-       (getl_script_struct) Added line buffer members.  These are hooks
-       for use by DO REPEAT to allow it to insert virtual source code
-       into the program.
-
-       * glob.c: (init_glob) [__DJGPP__ || (__WIN32__ && __BORLANDC__)]
-       Override Borland C++ stupidity that claims Windows has a console
-       window size of 0x3.
-
-       * repeat.c: This is in the process of being restructured from
-       using a token-buffering approach to the DO REPEAT facility to
-       using the more flexible approach of a line-buffering approach in
-       conjunction with the getline module.  Comment fixes.
-       (struct tok_struct) Removed.
-       (static vars queue_index, queue_head, queue) Removed.
-       (static vars line_buf_head, line_buf_tail) New vars.
-       (internal_cmd_do_repeat) Instead of queuing tokens, queue lines.
-       Not complete.
-       (pull_queue, destroy_queue) Removed.
-       [DEBUGGING] (debug_print_tokens) Removed.
-
-Tue Aug  5 13:57:58 1997  Ben Pfaff  <blp@gnu.org>
-
-       * file-handle.q: (prepend_current_directory) New function.
-       (internal_cmd_file_handle, fh_get_handle_by_filename) Prepends
-       current directory before normalizing filename.
-
-       * filename.c: (gnu_getcwd) New function.
-       (absolute_filename_p) New function.
-       (search_path) New argument, PREPEND.  All references changed to
-       pass NULL except those explicitly mentioned.  Uses
-       absolute_filename_p().  Prepends PREPEND before trying the
-       filename.
-       (dirname, prepend_dir) New functions.
-
-       * getline.c: (getl_get_current_directory) New function.
-       (getl_include) Passes getl_get_current_directory() as PREPEND arg
-       to search_path().
-               
-Sun Aug  3 11:42:36 1997  Ben Pfaff  <blp@gnu.org>
-
-       * In several source files, the term `script' was replaced with
-       `syntax file' inside error messages.  Usage of the term `script'
-       in the sense of a syntax file is now deprecated.
-
-       * cmdline.c: (static vars pre_syntax_message, post_syntax_message)
-       Updated messages.
-
-       * dump-sysfile.c: (usage) Update message.
-
-       * getline.c: (getl_read_line) Ignore lines beginning with `#!'.
-
-       * getline.h: (glob var getl_include_path) Declare extern.
-
-       * list.q: Define EXTERN as extern before #including somP.h.
-
-       * var.h: Remove declaration of `disptype' variable.
-
-       * vfm.c: (close_active_file) After switching the data sink to a
-       data source, set vfm_sink to NULL, because it doesn't exist any
-       more.
-
-Thu Jul 17 21:41:44 1997  Ben Pfaff  <blp@gnu.org>
-
-       * glob.c: [__BORLANDC__] Include math.h.  Define _matherr() and
-       _matherrl() to ignore all math errors.
-
-       * sfm-read.c: (read_value_labels) When reading the labels from
-       disk, read the little parts separately instead of as a struct;
-       this avoids alignment problems.
-
-       * sfm-write.c: (struct sfm_fhuser_ext) New member `elem_type'.
-       (sfm_write_dictionary) Sets elem_type and frees it on lossage.
-       (write_header) Allocates and initializes elem_type.
-       (sfm_write_case) Uses elem_type to determine how to handle each
-       flt64 element.
-       (sfm_close) Frees elem_type.
-
-       * sfmP.h: Comment fix.
-       [__BORLANDC__] Uses #pragma -a to adjust structure member
-       alignment.
-       
-Thu Jul 17 01:55:12 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (fiasco_SOURCES) Remove display.c.
-
-       * common.c: Fix typo.
-
-       * dfm.c: (read_record) Remove strncasecmp() emulation and fix the
-       sense of the condition.
-
-       * expr-evl.c: (macro ALLOC_STRING_SPACE) [!PAGED_STACK] Add
-       line-continuation backslash.
-
-       * filename.c: [__WIN32__] Include <windef.h> before <winbase.h>.
-
-       * frequencies.q: (custom_grouped, add_percentile) Don't use a
-       non-constant expression as an argument to sizeof.
-
-       * glob.c: [__WIN32__ && __BORLANDC__] When including <conio.h>,
-       undefine gettext macro because that's a conio function.
-
-       * hash.h: (hsh_prime_tab declaration) Remove.
-
-       * list.q: (write_fallback_headers) Move `leader' allocation out of
-       main loop.  Change to local_alloc() allocation.
-
-       * output.h: Formatting fixes.  Put __attribute__ in right place on
-       function prototypes.
-
-       * sfm-read.c: (read_machine_flt64_info, read_variables) Change
-       incorrect `SECOND_LOWEST_VALUE' references to proper
-       `second_lowest_value'.
-
-       * som-frnt.c: (EXTERN macro) Define as `extern' instead of null
-       value.  This way 2 out of 3 of the som files define the vars
-       extern, the correct way, that actually works under BC++.
-       (som_set_float) Don't use nonconstant initializers for a struct.
-
-       * som-high.c: Add the standard alloca() header.
-       (replicate_table) Add prototype.
-
-       Merged DISPLAY routine.
-       * sysfile-info.c: (AS_*) New enum series.
-       (cmd_sysfile_info) Gutted.  Calls describe_variable() to do the
-       dirty work.
-       (cmd_display, display_macros, display_documents,
-       display_variables) Stolen from defunct display.c.
-       (describe_variable) New function.
-
-       * temporary.c: [0] (display_tree) New debug function.
-       (copy_variable) Performs shallow copy of value labels instead of
-       deep copy; i.e., just copys the AVL tree and increments the
-       reference counts.
-
-       * val-labs.c: Comment fixes.
-       (do_value_labels) Optionally skip leading forward slash.
-       (get_label) Creates only a single value label instead of many
-       copies of one, and sets the reference count.
-
-       * display.c: Removed.
-
-       * dump-sysfile.c: New file, not yet complete.
-
-Fri Jul 11 23:02:18 1997  Ben Pfaff  <blp@gnu.org>
-
-       For lots of source files I added more verbose_msg's.  These aren't
-       listed below as they have tested as being benign.  In some cases
-       these replaced debug_printf() calls.
-
-       * output.c: (outp_read_devices) Message fix.
-
-       * postscript.c: (output_encodings) Message fix.  Reports errors on
-       fclose().
-       (postopen) Message fix.
-       
-Fri Jul 11 14:09:40 1997  Ben Pfaff  <blp@gnu.org>
-
-       * dfm.c: (dfm_close) Don't call fclose() for a NULL FILE.
-
-       * filename.c: (close_file_ext) Set f->file to NULL *after* closing
-       it.
-
-       * main.c: Remove <malloc.h> #include.
-
-       * mis-val.c: (parse_numeric) Set .f member for each missing[]
-       instead of trying to just set the missing[] itself, which is a
-       gcc-specific idiom.
-
-       * sfm-read.c: (read_variables) Same.
-
-       * str.h: Add memmem() prototype.
-
-       * val-labs.c, var-labs.c: Replace <malloc.h> with <stdlib.h>.
-
-Thu Jul 10 22:13:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (q2c) Don't include any libraries in the link.
-
-       * dfm.c: (force_line_buffer_extension) New macro.
-       (count_tabs) New function.
-       (tabs_To_spaces) New function.
-       (read_record) Calls tabs_to_spaces() on the line being processed.
-
-       * q2c.c: Disabled i18n for this proglet so that libintl.a doesn't
-       have to be compiled twice (once for CC, once for LOCAL_CC).
-Sun Jul  6 19:14:33 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (INCLUDES) Add intl directory; fix directories.
-       (LDADD) Add @INTLLIBS@.
-       (q2c) Add LIBS, @INTLLIBS@ to link step.
-
-       * inpt-pgm.c: Turn off debugging.
-
-       * postscript.c: (postopen) Format fix.  local_free() blocks
-       returned by local_alloc(); don't free() them.
-
-Sat Jul  5 23:44:51 1997  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: (parse_string_as_format) Comment fix.  Fix check for
-       string length.
-
-       * data-list.c: (read_from_data_list_fixed) Pass proper value for
-       LEN arg, not simply the full string length.
-
-       * sort.c: (allocate_file_handles) Check SPSS compatible temp file
-       directories before generic temp file directories.
-
-       * vfm.c: Disable debugging.
-
-Fri Jul  4 13:26:41 1997  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: Comment fix.
-       (cmd_save_internal) Always passes GTSV_OPT_SAVE option.
-
-Wed Jun 25 22:52:28 1997  Ben Pfaff  <blp@gnu.org>
-
-       * expr-prs.c: (debug_print_postfix) Conditionally included on
-       GLOBAL_DEBUGGING.  Removed out_header() reference.
-
-       * exprP.h: Removed #undef GLOBAL_DEBUGGING.
-
-Sun Jun 22 22:00:28 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: Removed obsolete ascii_close_page() prototype.
-
-       * command.c: (output_line) Comment fix.
-
-       * data-in.c: Formatting fix.
-       (parse_string_as_format) Now the `fc' argument is used only for
-       the purpose of error messages; it is not an index into the string
-       passed.  All references changed.
-
-       * data-list.c: Comment fix.
-       (cut_field) Comment fix.  Now returns the column number of the
-       position of the field cut out on success.
-       (parse_field) Added `column' argument.  Puts the column numbers in
-       the error message.
-       (read_from_data_list_free, read_from_data_list_list) Record the
-       column number returned by cut_field(), pass it to parse_field().
-
-       * dfm.c: Comment fix.
-
-       * do-ifP.h: Comment fix.
-
-       * expr-prs.c: (SYSMIS_func) Implemented string-type arguments for
-       the SYSMIS function.
-
-       * expr.h, exprP.h: Comment fix.
-
-       * glob.c: (init_glob) Only calls setlocale() and family if
-       ENABLE_NLS set.
-
-       * hash.h: Comment fix.
-
-       * include.c: Comment fix.
-
-       * output.c: Comment fix.
-
-       * postscript.c: (ps_line_intersection) Simplified assertion.
-
-       * repeat.c: Comment fix.
-
-       * vars-atr.c: Comment fix.
-
-       * vars-prs.c: Comment fix.
-
-       * vfm.c: (vector_initialization) [DEBUGGING] Fixed undefined
-       behavior with usage of postincrement.
-       (memory_stream_read) Discards cases as it goes. 
-
-Sun Jun 15 16:45:17 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Cleans q2c, not just distcleans it.  Distcleans
-       foo.
-
-       * Most source files: Includes debug-print.h, related comment
-       fixes.
-
-       * cases.c: (alloc_val) Removed complex allocation code.  Merely
-       increments default_dict.nval and returns the former value.
-       (envector, devector) Removed references to lv member of struct
-       variable.
-
-       * common.h: (macro VME) Replaced complex definition with simple
-       one.
-
-       * data-list.c: (cmd_data_list) Sets vfm_source instead of
-       read_active_file and cancel_input_pgm.
-       (read_from_data_list, cancel_data_list) Removed.
-       (data_list_source_read, data_list_source_destroy_source) New
-       functions.
-       (glob var data_list_source) New var.
-
-       * dfm.c: (open_file_r, open_file_w) Simplified debug output.
-       (cmd_begin_data) Improved criteria for an input program accessing
-       the inline file.  Still not perfect.
-
-       * do-if.c: (do_if_trns_proc) Simplified debug output.
-
-       * expr-prs.c: Comment fixes.
-       [DEBUGGING] (debug_print_postfix) Simplified debug output.
-
-       * file-handle.q: (fh_close_handle) Simplified debug output.
-
-       * file-type.c: Comment fixes.
-       (cmd_file_type) Sets vfm_source instead of read_active_file and
-       cancel_input_pgm.
-       (cmd_end_file_type) On failure, discards variables in place of
-       just canceling the input program.
-       (read_from_file_type) Renamed file_type_source_read.
-       (cancel_file_type) Renamed file_type_source_destroy_source.
-       (glob var file_type_source) New var.
-
-       * get.c: (GTSV_* enum series) New enums GTSV_OPT_SAVE, GTSV_NONE.
-       (cmd_get) Initializes options to GTSV_NONE before passing to
-       trim_dictionary().  Removed `lv' reference.  Sets vfm_source
-       instead of read_active_file and cancel_input_pgm.
-       (cmd_save_internal) Initializes options before passing to
-       trim_dictionary().  Local var `nval' removed.
-       (dict_delete_run) Comment fixes.
-       (trim_dictionary) Comment fixes.  Disallows scratch variables if
-       GTSV_OPT_SAVE set in options.
-       (read_from_get) Renamed get_source_read.
-       (cancel_get) Renamed get_source_destroy_source.
-       (glob var get_source) New var.
-
-       * inpt-pgm.c: (cmd_input_program) Sets vfm_source instead of
-       read_active_file and cancel_input_pgm.
-       (read_from_input_program) Renamed input_program_source_read.
-       Simplified debug output.
-       (cancel_input_program) Renamed
-       input_program_source_destroy_source.
-       (glob var input_program_source) New var.
-
-       * loop.c: (loop_1_trns_proc) Simplified debug output.
-
-       * main.c: (dump_token) Made eof output more explicit.
-
-       * sfm-read.c: (read_variables, dump_dictionary) Removed `lv'
-       references.
-
-       * sort.c: (cmd_sort_cases) Disallows scratch variables.  Removed
-       code for always-memory or always-disk cases.  malloc's case-list
-       based on vfm_source_info.ncases.  Explicit support for
-       memory_stream via memory_source_cases.
-       (do_external_sort) Sets vfm_source instead of read_active_file and
-       cancel_input_pgm.
-       (allocate_file_handles) The temporary directory permissions are
-       set to 0700 instead of 0777.
-       (allocate_cases) Formatting fixes.  Simplified debug output.
-       (output_record) Compacts the case if necessary before writing it
-       out.
-       (close_handle, open_handle_w) Simplified debug output.
-       (write_initial_runs) Destroys vfm_sink, then sets it to
-       sort_stream.  Writes records to memory based on
-       vfm_sink_info.case_size.
-       (write_to_sort_cases) Renamed sort_stream_write().
-       (merge) Simplified error handling.  Simplified debug output.
-       Formatting fixes.
-       (read_from_external_sort) Renamed sort_stream_read().
-       Reads records based on vfm_source_info.case_size.
-       (sort_stream_write) Writes records to memory based on
-       vfm_sink_info.case_size.
-       (sort_stream_mode) New function.
-       (glob var sort_stream) New variable.
-
-       * temporary.c: (cmd_temporary) Simplified debug output.
-       (copy_variable) Removed references to `lv'.
-
-       * title.c: (get_title) Simplified debug output.
-
-       * var.h: Comment fixes.
-       (struct get_proc) Removed member `lv'.
-       (struct variable) Removed member `lv'.  Comment fixes.
-       (glob vars read_active_file, write_active_file, cancel_input_pgm)
-       Removed.
-       (struct case_stream) New.
-
-       * vars-atr.c: (discard_variables) Changed cancel_input_pgm,
-       read_active_file references to use vfm_source.
-       (init_variable, replace_variable) Removed references to `lv'.
-
-       * vfm.c: Comment fixes.
-       (glob var vfm_source, vfm_sink, vfm_source_info, vfm_sink_info)
-       New variables.
-       (static var queue, qh, qt, n_lag) Removed.  All references
-       removed.
-       (glob var compaction_necessary, compaction_nval, compaction_case,
-       paging) New variables.
-       (record_case) Removed.
-       (procedure) Comment fixes.  Calls vfm_source->read() instead of
-       read_active_file().
-       (lag) Removed.
-       (prepare_for_writing, arrange_compaction, make_temp_case,
-       vector_initialization, setup_filter) New function.
-       (open_active_file) Most of the code moved into the abovementioned
-       new functions.  Now sets temp_dict to &default_dict if there is no
-       temporary dictionary, for convenience.  New debug output.
-       (close_active_file) Deals with changing the sink to the source.
-       Calls finish_compaction().  Frees compaction_case.  Mostly
-       rewritten.
-       (glob vars disk_source_file, disk_sink_file) New vars.
-       (destroy_active_file, read_from_memory) Removed.
-       (disk_stream_init, disk_stream_read, disk_stream_write,
-       disk_stream_mode, disk_stream_destroy_source,
-       disk_stream_destroy_sink) New functions.
-       (glob var vfm_disk_stream) New var.
-       (glob vars memory_source_cases, memory_sink_cases,
-       memory_sink_iter, memory_sink_max_cases) New vars.
-       (memory_stream_init, memory_stream_read, memory_stream_write,
-       memory_stream_mode, memory_stream_destroy_source,
-       memory_stream_destroy_sink) New functions.
-       (glob var vfm_memory_stream) New var.
-       (write_case) Local var `i' renamed `cur_trns'; local var `retval'
-       named `more_cases'.  Simplified debug output.  Otherwise mostly
-       rewritten.
-       (record_case) Moved into the stream drivers.  Removed.
-       (transform) Removed (was dead code).
-       (SPLIT_FILE_procfunc) s/vfm_replacement/vfm_sink_info/.  In the
-       common case that the splits don't change, we don't need to copy
-       the case into prev_case again--pointless.
-       (compact_case) New function.
-       (finish_compaction) New function.
-
-       * vfmP.h: Comment fixes.
-       (DEV_* enum series) Removed. 
-       (struct storage) Renamed `stream_info'.  Removed variant record.
-       Removed `device' member.
-
-       * debug-print.h: New file.
-       
-Sun Jun  8 01:12:38 1997  Ben Pfaff  <blp@gnu.org>
-
-       * autorecode.c: Turned off debugging.
-
-       * data-list.c: (destroy_dls) Closes the associated file handle.
-
-       * descript.q: (custom_variables) Added PV_NO_SCRATCH to
-       parse_variables() options.
-
-       * dfm.c: (open_file_r) Removed gratuituous argument to msg() call.
-
-       * display.c: (display_variables) Really fixed null cell bug.
-
-       * file-handle.q: (fh_close_handle) Changed debugging message.
-
-       * frequencies.q: (custom_variables) Added PV_NO_SCRATCH to
-       parse_variables() options.
-
-       * list.q: Added PV_NO_SCRATCH in q2c varlist options.
-       (cmd_list) Fails if no variables specified.
-       (determine_layout) Writes blank lines manually.
-
-       * loop.c: (loop_1_trns_proc) Made debugging code only print
-       messages if debugging.
-
-       * q2c.c: (dump_subcommand) Appends sbc->message to SBC_VARLIST
-       parse_variables() arguments.
-       (main) Parses optional parenthesized options to varlist
-       subcommands into sbc->message.
-
-       * sfm-read.c: Format fix.
-
-       * var.h: (FV_*) New enum series.
-       (PV_*) New enum PV_NO_SCRATCH.
-
-       * vars-prs.c: (find_var) Removed.
-       (fill_all_vars) Takes FV_* enum instead of boolean third
-       argument.  Rewritten to deal with scratch as well as system
-       variables.
-       (parse_variables) Error message on scratch variable if
-       PV_NO_SCRATCH set.
-
-       * vfm.c: (static var virt_begin_func) New var.
-       (procedure) Sets up virt_begin_func.
-       (SPLIT_FILE_procfunc) For the first case, calls virt_begin_func()
-       after dump_splits().  For succeeding groups changes, calls
-       virt_begin_func() instead of begin_func().      
-
-Fri Jun  6 22:42:23 1997  Ben Pfaff  <blp@gnu.org>
-
-       * count.c, data-out.c, file-handle.q, list.q, loop.c: Turned off
-       debugging.
-
-       * dfm.c: Added some debugging messages, disabled by default.
-       (open_file_r) Fixed error message.
-       (read_record) On eof on inline_file, instead of calling
-       fh_close_handle(), simply jump to eof label like a normal file.
-       Message fixes.
-
-       * display.c: Thin lines between rows for certain kinds of
-       listing.  Fixed `null cell' bug.
-
-       * error.c: (failure) Flush stdout, stderr before failing.
-
-       * file-handle.q: (fh_close_handle) Added debugging message.
-
-       * frequencies.q: (dump_full) Bottom line extends across entire
-       table width.  Changed title formatting.
-       (dump_condensed) Changed title formatting.
-       (dump_statistics) Fixed title formatting.
-
-       * glob.c: (init_glob) Moved initialization of cur_proc out of #if.
-       Sets default value of set_format.
-
-       * list.q: (cmd_list) Calls blank_line() before determine_layout().
-       Passes write_all_headers() to procedure() as pre-group func.
-       (write_all_headers) New function.
-       (determine_layout) Removed calls to write_header().
-       Calls blank_line() before and after write_fallback_headers().
-
-       * recode.c: (recode_trns_free) Only attempts to free head->map if
-       non-NULL.
-
-       * sfm-read.c: (read_variables) Allows `#' at beginning of system
-       file variable names but gives a warning.  Sets `left' based on
-       first character being/not being `#'.  On lossage frees dict->var.
-
-       * som-high.c: (som_draw_title) Simplified title formatting.
-
-       * vfm.c: (dump_splits) Fixed and changed splits formatting.
-
-Thu Jun  5 22:51:15 1997  Ben Pfaff  <blp@gnu.org>
-
-       * autorecode.c: (cmd_autorecode) Sets h_trans to NULL at
-       beginning.  Frees v_src, v_dest on successful exit.  Frees
-       h_trans[*], h_trans on lossage.
-       (recode) Frees h_trans[*], h_trans.
-
-       * dfm.c: (dfm_close) Formatting change.
-       (open_inline_file) Now passed a dfm_fhuser_ext to initialize; no
-       longer allocates its own in inline_file.
-       (open_file_r) Passes the local dfm_fhuser_ext to
-       open_inline_file().
-       (open_file_w) Message fix. 
-       (read_record) Buffer reallocation strategy changed.  Frees
-       ext->line even in inline_file to prevent leaks.
-       (dfm_put_record) Fixed bug where `ext' was cached before the file
-       was opened and thus it would be NULL when the file really was
-       open.
-       (cmd_begin_data) Sets up inline_file basics itself, then calls
-       open_inline_file() for the dfm_fhuser_ext.  Formatting fix.
-
-       * list.q: (write_line) Formatting fix.
-       (clean_up) Minor strategy change.  Sets proportional font after
-       finishing cleanup.
-       (determine_layout) Sets fixed font before writing regular headers,
-       or after writing fallback headers.
-
-       * modify-vars.c: (cmd_modify_vars) Frees variable lists for DROP
-       and KEEP vars after using them.
-
-       * postscript.c: (ps_init_driver) Frees x->family.
-       (postopen) When loading fonts, free the temporary font name buffer
-       after using it.
-       (ps_text_set_font_by_position) Free temporary font name buffer
-       after using it.
-       (text) Fixed code that calculated `lig' so that `lig' always gets
-       initialized.  Formatting fix.
-
-       * som-low.c: (get_cell_size, som_get_table_size) `prop_height' ->
-       `font_height'.
-       [GLOBAL_DEBUGGIGN] (check_table) Use arena_alloc() to allocate
-       cells, not xmalloc(), so that the cells will get destroyed
-       automatically.
-
-       * sysfile-info.c: (cmd_sysfile_info) Frees the dictionary after
-       using it.
-
-Tue Jun  3 23:33:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (ascii_text_draw) Always sets metrics for strings that
-       are drawn.
-
-       * dfm.c: Comment fix.
-
-       * list.q: Comment fixes.  Include somP.h.  Removed static vars
-       table, n_columns, n_rows, part.  New struct list_ext.  New static
-       var line_buf.
-       (n_lines_remaining, n_chars_width, write_line) New functions.
-       (cmd_list, list_cases) Rewritten.
-       (begin_row, end_row, flush_table) Removed.
-       (write_header, clean_up, write_varname, write_fallback_headers,
-       determine_layout) New functions.
-
-       * output.c: (outp_iterate_enabled_drivers) Minor reformat.
-
-       * output.h: Comment fix.
-
-       * postscript.c: Comment fix.
-       (struct ps_driver_ext) Removed prop_size, fixed_size members;
-       added font_size.  All references changed.
-       (ps_init_driver) Initializes font_size.  Simplified space checking
-       code.
-       (static var option_tab[]) Removed prop-size, fixed-size; added
-       font-size.
-       (ps_option) Handles font_size.
-
-       * som-high.c: Moved prototypes into somP.h.
-       (som_init_driver) New function.
-       (som_submit_table) Moved some code into new function
-       som_init_driver().
-       (build_target) Moved some code into new function
-       som_internal_eject_page().
-       (som_eject_page) Uses som_internal_eject_page().
-       (som_internal_eject_page) New function.
-
-       * som-low.c: Moved prototypes into somP.h.
-
-       * som.h: Formatting fixes.
-
-       * somP.h: (struct som_driver_ext) Removed em_width;
-       added prop_em_width, fixed_width.
-
-Mon Jun  2 14:25:25 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added `localedir' definition.  Added
-       -DLOCALEDIR="..." to DEFS.  Added -I. to INCLUDES.
-
-       * ascii.c: (macro draw_line) Fixed capitalization.
-
-       * ascii.c, autorecode.c, cases.c, cmdline.c, command.c, common.c,
-       compute.c, count.c, data-in.c, data-list.c, data-out.c,
-       descript.q, dfm.c, display.c, do-if.c, error.c, expr-evl.c,
-       expr-opt.c, expr-prs.c, file-handle.q, file-type.c, filename.c,
-       formats.c, frequencies.q, get.c, getline.c, glob.c, groff-font.c,
-       hash.c, heap.c, include.c, inpt-pgm.c, lexer.c, list.q, loop.c,
-       main.c, mis-val.c, misc.c, modify-vars.c, numeric.c, output.c,
-       postscript.c, print.c, q2c.c, recode.c, rename-vars.c, repeat.c,
-       sample.c, sel-if.c, sfm-read.c, sfm-write.c, sfmP.h, som-frnt.c,
-       som-high.c, som-low.c, sort.c, split-file.c, sysfile-info.c,
-       temporary.c, title.c, tokens.h, val-labs.c, var-labs.c,
-       vars-atr.c, vars-prs.c, vector.c, vfm.c, weight.c: Marked strings
-       for internationlization.
-
-       * glob.c: [HAVE_LOCALE_H] Includes locale.h.
-
-Sun Jun  1 23:31:18 1997  Ben Pfaff  <blp@gnu.org>
-
-       * do-if.c, sort.c, val-labs.c: Comment fixes.
-
-       * glob.c: (init_glob) Uncommented, updated i18n support.
-       
-       * arena.c, ascii.c, data-in.c, descript.q, error.c, expr-evl.c,
-       expr-opt.c, expr-prs.c, filename.c, frequencies.q, groff-font.c,
-       output.c, postscript.c, sfm-read.c, som-high.c, vars-prs.c: Made
-       the declarations of macros taking arguments a lot nicer.
-
-Sun Jun  1 17:22:04 1997  Ben Pfaff  <blp@gnu.org>
-
-       * error.h: Removed CE, CW aliases for SE, SW.
-
-       * q2c.c: Removed explicit streq() definition since it's duplicated
-       in str.h.
-       
-       * approx.h, error.h, font.h, hash.h, misc.h, output.h, somP.h,
-       stats.h, str.h, tokens.h: Made the declarations of macros taking
-       arguments a lot nicer-looking of <pinard@iro.umontreal.ca>.
-       Comment fixes.
-
-Sun Jun  1 12:02:06 1997  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: Comment fixes.
-       (pick_compat) Changed return type to int.  Now, instead of setting
-       glob var `compat' to the emulation, returns the emulation.  All
-       references changed.
-       (parse_command_line) Added terminating null to end of
-       `long_options' array definition.
-       (pre_syntax_message) Fixes.
-       (usage) Shows the default emulation in the syntax message by
-       calling pick_compat().
-
-       * getline.c: (getl_add_include_dir) Separates paths with
-       PATH_DELIMITER, not DIR_SEPARATOR.
-
-       * glob.c: (init_glob) Fixed references to DEFAULT_VER_PCP40,
-       DEFAULT_VER_WIN61, DEFAULT_VER_X40.
-
-       * output.c: (outp_configure_macro) Make earlier definitions for a
-       particular key override later ones for the same key.
-       
-Fri May 30 19:40:49 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: Comment fixes.
-
-       * output.c: (outp_get_paper_size)
-       s/STAT_OUTPUT_INIT_FILE/STAT_OUTPUT_PAPERSIZE_FILE/.
-       
-Sun May 25 22:34:07 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c, postscript.c, sfm-read.c, sfm-write.c, sort.c: Include
-       <errno.h>.  GNU libc 2 enforces this!
-
-       * command.c: (parse_cmd) Fixed problem with `else' clause being
-       paired with wrong `if'.  Comment fix.
-
-Fri May  9 16:53:52 1997  Ben Pfaff  <blp@gnu.org>
-
-       * getline.c: [!HAVE_LIBREADLINE] (read_console) Changed
-       blp_getline() to getline().
-
-       * output.c: (outp_eval_dimension) Changed the fix from last time;
-       there was no variable `a'.
-
-       * q2c.c: (get_line) Fixed boundary condition overrun bug.
-
-Mon May  5 21:58:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * output.c: (outp_evaluate_dimension) Fixed handling of negative
-       numbers having fractional parts.  Added case of a fraction without
-       a whole-number part.
-
-Fri May  2 22:08:05 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (ascii_text_get_font_position) Removed.
-
-       * expr.h, exprP.h: Disabled debugging.
-
-       * groff-font.c, postscript.c: Changed `groff' to `Groff' in
-       several places.
-
-       * output.h: (struct outp_class_struct) Removed
-       text_get_font_position method.  All references deleted.
-
-       * postscript.c: Big change here.  Fontmaps were completely
-       eliminated because of a change in philosophy.  Comment fixes.
-       (struct ps_fontmap, ps2dit_map, font_family, dit2family_map)
-       Removed.
-       (struct ps_driver_ext) `position', `fontmap', `prop_name',
-       `fixed_name' members removed.  New members `prop_family',
-       `fixed_family'.  `family' member changed to type char *.
-       (static var ps_fontmaps) Removed.
-       () Removed.
-       (ps_init_driver) Removed obsolete references, updated.
-       Initializes `translate_x', `translate_y', `scale'.  Doesn't read
-       fontmap, of course.  Refers to font names through internal_name
-       rather than subversive means.  Frees proper items.
-       (static var option_tab[]) Removed `fontmap-file' option; renamed
-       `fixed-font', `prop-font'.
-       (ps_option) Corresponds to option_tab[].
-       (read_fontmap, release_fontmap, ps_to_dit, compare_ps2dit,
-       hash_ps2dit, compare_dit2family, hash_dit2family, compare_family,
-       hash_family) Removed.
-       (postopen) Generates font names from family names.  Gets
-       PostScript font name properly.  New prologue file comment `!!!'
-       style.
-       (ps_open_page) Adds translate_x, translate_y to BP prologue
-       function; gives SF argument floating-point format.
-       (ps_text_set_font_by_name) Doesn't try to map PostScript->Groff
-       font name.  Doesn't change font family.
-       (ps_text_set_font_by_position) Generates Groff font name from font
-       family name instead of through table lookup.
-       (ps_text_set_font_by_family) Renamed `ps_text_set_font_family',
-       all references changed.  Reduced to simple string assignment.
-       (ps_get_font_name) Removed.
-       (ps_get_font_family) Reduced to string return.
-       (text) Doesn't save `position' since it no longer exists.  Ugly
-       kluge to save font family--fix soon?
-       (load_font) Removed PostScript name argument.
-       
-Thu May  1 14:58:59 1997  Ben Pfaff  <blp@gnu.org>
-
-       * postscript.c: Comment fix.
-       (ps_open_page) Puts scale factor in PostScript output.
-       
-Sat Apr 26 11:49:32 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Distcleans q2c.
-
-Wed Apr 23 21:33:48 1997  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (delineate) Sets text size even if width is zero.
-
-       * command.c: Comment fix.
-       (static var cmd_table[]) Re-enabled EVALUATE command.
-       (parse_cmd) Lotsa comment fixes.  Fixed infinite loop in parsing
-       of comments in script files.  Now more liberal on criteria for
-       performing a state transition--if *anything* happened correctly,
-       not just if *everything* happened correctly.
-
-       * data-out.c: (convert_F) Comment fix.  Why in the fsck does
-       Checker segfault on formatting large numbers and why in the fsck
-       hadn't I noticed this before?
-
-       * expr.h, exprP.h: No longer turn off GLOBAL_DEBUGGING.
-
-       * list.q: (cmd_list) Commented out the actual output routine
-       because of various problems.  Probably will abandon the idea of
-       using the general `crushed tables' for the LIST procedure.
-
-       * temporary.c: (restore_dictionary) Sets var_by_name to NULL after
-       clearing it.  Allocates a new var_by_name dictionary before trying
-       to add members to it.
-
-       * vars-atr.c: [DEBUGGING] (dump_one_var_node) Removed argument
-       `sib'.  Changed type of `node' argument.
-       [DEBUGGING] (dump_var_tree) Replaced avlwalk() with
-       avl_walk_inorder().
-       (clear_variable) Only dumps the var tree if var_by_name non-NULL.
-       [DEBUGGING] Only deletes the variable from var_by_name if that var
-       non-NULL.
-
-Fri Apr 18 16:48:41 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added include files to SOURCES.  Added
-       frequencies.q to EXTRA_DIST.  Removed include/ from INCLUDES.  Now
-       includes rules for q2c.  Added `boast' target.
-
-Fri Apr 18 15:42:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Maintainer-clean Makefile.in.
-       
-       * Makefile.am: Fixed redundant EXTRA_DIST line.
-
-       * ascii.c: Comment fixes.
-       (ascii_line_vert) Fixed overly aggressive range check.
-
-       * display.c: Removed dead code.
-
-       * list.q: Turn debugging on.
-       (flush_table) New debug code.
-
-       * sfm-read.c: (read_value_labels) malloc's the structure before
-       trying to assign to its members.
-
-       * sfm-write.c: Comment fix.
-
-       * som-high.c: (som_submit_table) Sets som.t and som.d on each call
-       to output_table().
-       (output_table) No arguments anymore--gets them through `som'
-       global.  New debug code.  In crushed tables, now sets `htv' as
-       well as `hv' to avoid bad confusion later.
-       (dump_crush_page) New debug code.
-
-       * som-low.c: (som_dump_crush_page) New debug code.
-
-Thu Mar 27 01:11:29 1997  Ben Pfaff  <blp@gnu.org>
-
-       All source files: Broke long lines into multiple lines.
-       
-       * ascii.c: (ascii_close_page) Uses host_system var in place of
-       HOST_SYSTEM constant.
-
-       * cmdline.c: (var syntax_message[]) Broke into
-       pre_syntax_message[] and post_syntax_message[].
-       (usage) Outputs both parts, separated by driver list.
-
-       * error.h: Fixed broken formatting.
-
-       * expr-opt.c: (str_search, str_rsearch) New functions.
-
-       * misc.c: (blp_getdelim) Removed.  All references changed to
-       `getdelim'.
-       (str_search, str_rsearch) Removed.
-       (memrmem) New function.
-
-       * misc.h: (blp_getline) Removed.  All reference changed to
-       `getline'.
-
-       * stat.h: New file.
-
-       * filename.c: Includes "stat.h", not <sys/stat.h>.
-       (blp_getenv) Uses host_system var instead of HOST_SYSTEM constant.
-
-       * output.c: (outp_list_classes) Changed output formatting.
-
-       * sfm-write.c: (write_header) Uses host_system var instead of
-       HOST_SYSTEM constant.
-       (write_rec_7_34) Extracts version numbers from the version string.
-       Untested.
-
-       * sort.c: Includes "stat.h", not <sys/stat.h>.
-
-       * str.c: (strcasecmp) Removed.
-
-       * title.c: (cmd_document) Uses host_system var instead of
-       HOST_SYSTEM constant.
-
-       * version.c: Generated on-the-fly by the Makefile instead of being
-       static.
-
-       * str.h: Comment fixes.  Doesn't substitute for missing memmove or
-       memcpy.
-       [!HAVE_STRNCASECMP] Declares strncasecmp().
-
-       * version.h: Removed stray character.  Comment fixes.
-       (vars host_system, build_system) New vars.
-
-Mon Mar 24 21:47:31 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Most source files: Changed formatting of copyright notice; fixed
-       FSF address; reformatted to better conform to GNU standards;
-       comment fixes.  Added markups to prevent GNU indent from messing
-       up my beautiful formatting :-).
-       
-       * q2c.c: (get_line) Ignores lines that begin with `/* *INDENT' so
-       that GNU indent markups can be passed through without problems.
-
-Wed Feb 19 21:30:31 1997  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: Turned off debugging.
-
-       * glob.c: (init_glob) Turned on save-file compression by default.
-
-       * sfm-write.c: (sfm_write_case) Fixed bug which resulted in less
-       compression than was possible in save files.
-
-Sun Feb 16 20:57:20 1997  Ben Pfaff  <blp@gnu.org>
-
-       * data-out.c: (convert_F) Comment fixes.  Debug message fixes.
-
-       * frequencies.q: Removed Fiasco extensions.  Updated calculation
-       algorithms.  Polished output format. 
-       (struct frq_info_struct) Removed members `max_degree', `min_n',
-       all references removed.
-       (macro frq_extensions) Removed.
-       (static vars min_n, max_degree) Removed, all references removed.
-       (internal_cmd_frequencies) Doesn't handle extensions.  Doesn't
-       calculate `min_n', `max_degree'.
-       (postcalc) Passes new arg to dump_statistics().
-       (dump_full) Honor NOLABEL option.  Buggy?  Adds variable name
-       title.
-       (dump_condensed) Adds variable name title.
-       (sum_freqs) Removed.
-       (calc_stats) Updated calculation algorithm.
-       (dump_statistics) Removed warning for too-few observations.
-       Changed table formatting.  Adds variable name title if passed new
-       arg is nonzero.
-
-       * output.h: Comment fix.
-
-       * recode.c, sample.c, sort.c: Disabled debug code.
-
-       * som-frnt.c: (som_set_value, som_set_float, som_set_text)
-       Improved debug code.
-
-       * var.h: (enum series frq_*) Removed Fiasco extensions.
-
-Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added PROCESS IF to command table.
-
-       * Lots & lots of places, removed checks for NULLs preceding calls
-       to free_expression(), which itself checks.
-
-       * descript.q: Removed Fiasco extensions.  Removed optimizations
-       for non-weighted active files.  Implemented some options.
-       Finished polishing output format.  Comment fixes.  Merged
-       `descript.g'.
-       (static vars n_glob_miss_list, n_glob_valid, n_glob_missing,
-       max_degree, min_n) Removed.
-       (macro dsc_extensions) Removed.
-       (struct dsc_info_struct) Removed `min_n' member, all references
-       fixed.
-       (internal_cmd_descriptives) Removed calculation of min_n,
-       max_degree.  Only deals with one `calc' routine instead of two
-       flavors.
-       (precalc) Eliminated redundancy.  Updated for changes to
-       descriptives_proc structure.
-       (calc) Moved here from `descript.g'.  Rewritten to calculate
-       statistics via `moments about the mean' rather than by summing,
-       summing squares, summing cubes, and so on.
-       (postcalc) Rewritten for new-style statistical calculation.
-       (display) Removed support for displaying variables across rows.
-       No longer crushes the descriptives table.  Removed ancient code.
-       Added display of N, by variable and listwise.
-
-       * descript.g: Removed; merged into `descript.q'.
-
-       * expr-evl.c: (evaluate_expression) Now returns a double.  For
-       numeric results, it returns the result as well as storing it in
-       the passed `value' structure if non-NULL.  For string results it
-       just returns 0.0 and it must be passed non-NULL.  Many references
-       to this function were optimized by use of this change, especially
-       but not exclusively in `compute.c'.
-
-       * frequencies.g: Comment fix.
-
-       * glob.c: (glob var process_if_expr) New global var.
-
-       * postscript.c: (static var option_tab[]) Corrected entry for
-       `fixed_size'.
-       (postopen) Sets x->size to x->prop_size.
-       (ps_text_set_font_by_name) Sets font size as well as typeface for
-       PROP and FIXED fonts.
-       
-       * sel-if.c: (cmd_process_if) New function.
-
-       * sfm-write.c: (struct sfm_fhuser_ext) New member `n_cases'.
-       (sfm_write_dictionary) Sets `n_cases' to 0.
-       (sfm_write_case) Increments `n_cases'.
-       (sfm_close) Attempts to seek the system file back to the header
-       and write the number of cases in its proper slot.
-
-       * som-frnt.c: (som_insert_table) Masks off expansion options since
-       only SOPT_X_NORM seems to work sensibly.
-
-       * som-low.c: (get_cell_size) Fixed bug when a table cell was sized
-       with a `fixed' value of 2.
-
-       * sort.c: (cmd_sort_cases) Cancels PROCESS IF.
-
-       * sysfile-info.c: (cmd_sysfile_info) Doesn't display more than 10
-       value labels; uses SOPT_NONE instead of SOPT_X_BOTH.
-
-       * var.h: (enum series dsc_*) Removed Fiasco extensions.
-       (struct descriptives_proc) Removed `miss_noweight'; new members
-       `X_bar', `M2', `M3', `M4', `min', `max'.
-
-       * vars-atr.c: (discard_variables) Cancels PROCESS IF.
-
-       * vfm.c: (close_active_file) Cancels PROCESS IF.
-       (write_case) Doesn't process cases unselected by PROCESS IF.
-
-Fri Feb 14 23:32:58 1997  Ben Pfaff  <blp@gnu.org>
-
-       * glob.c: (glob var err) Removed.
-
-       * sysfile-info.c: (cmd_sysfile_info) When adjusting table size,
-       doesn't have to take into account number of value labels since
-       they're in a subtable anyway.  Also, doesn't display more than 10
-       value labels since we can't yet break pages in subtables.
-
-Tue Feb  4 15:15:50 1997  Ben Pfaff  <blp@gnu.org>
-
-       * som-frnt.c: (som_change_table_size) Simple change for elegance
-       that shouldn't change behavior.
-       (som_set_value) Comment fix.
-
-       * som-high.c: (som_submit_table) Message fix.
-
-Wed Jan 22 21:54:00 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added SYSFILE INFO to command table.
-
-       * file-handle.q: (fh_handle_filename) New function.
-
-       * get.c: (save_trns_proc) Fixed a bug in padding of output data
-       with spaces.
-
-       * main.c: (parse) New return value for command functions, -3.
-
-       * misc.h: Comment fix.
-
-       * output.h: Comment fixes.
-       (macro COMPONENTS) Removed.
-
-       * postscript.c: (write_text) Modified literal_chars[] so that `('
-       and ')' are not written to the output in strings as literals.
-
-       * sfm-read.c: (sfm_read_dictionary) New argument.
-       (read_header) New argument.  Sets the information structure's
-       values from the header information.  
-       (read_variables) [__CHECKER__] Redefines isalnum()--some sort of
-       bizarre Checker problem, I guess.
-       (read_variables) Proper cleanup on lossage.
-
-       * sfm.h: (struct sfm_read_info) New struct for use by
-       sfm_read_dictionary().
-
-       * som-frnt.c: (som_create_table) New argument CREATE_FLAGS,
-       currently used just for tables that can be dynamically resized and
-       thus have to be allocated with arena_malloc() instead of
-       arena_alloc().  All references changed.
-       (som_change_table_size) New function.
-       (som_insert_table) Bugfix: now inserts `cell', not `c'!
-
-       * som-high.c: [GLOBAL_DEBUGGING] (check_table) Moved to som-low.c.
-       (som_submit_table) [GLOBAL_DEBUGGING] Doesn't call check_table()
-       any more.
-
-       * som-low.c: (draw_cell) Calls draw_table_cell() for SCON_TABLE
-       cells.
-       (draw_intersection) Now takes an argument specifying the table in
-       question.  All references changed.
-       (draw_table_cell) New function.
-       (som_get_table_size) [GLOBAL_DEBUGGING] Calls check_table().
-       (som_get_table_size) Many nice new explanatory comments.
-       [GLOBAL_DEBUGGING] (check_table) Moved here from som-high.c.
-
-       * som.h: New enum series SOM_CREATE_* for use as create flags with
-       som_create_table().
-
-       * str.h: Moved a comment here from TODO.
-
-       * sysfile-info.c: New file.  Reference implementation.
-
-Sun Jan 19 14:22:11 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added RENAME VARIABLES to table of commands.
-
-       * data-in.c: (dls_error) Sets `cust_field'.
-       (parse_N) Message fix.
-       (parse_day_count) New function.
-       (to_roman) Never outputs VX as a `short form' of V.
-       (parse_month) Fixed parsing of Roman numerals.
-       (parse_trailer) Message fix.
-       (parse_DATE, parse_ADATE, parse_EDATE, parse_SDATE, parse_JDATE,
-       parse_QYR, parse_MOYR, parse_WKYR, parse_DTIME) Issue a message if
-       the date is invalid.
-       (parse_SDATE) Fixed swapped day, year.
-       (parse_JDATE) Fixed bug for dates in 1582.
-       (parse_DTIME) Allows days not between 1 and 31.
-       (parse_numeric) Makes local copy of f.type for easier usage.
-       FMT_DOLLAR fixed.
-
-       * data-out.c: (convert_F) When outputting as scientific, properly
-       sets f.type as fp->type.
-       (insert_commas) Fixed operator precedence problem with setting of
-       nitems.  Changed strcpy to memcpy (no null terminator). 
-       (convert_date) Fixed FMT_JDATE: added 1900 to year.
-       (convert_CCx) Essentially rewritten, but now it works.
-
-       * display.c: (cmd_display) Added DISPLAY FILE LABEL (undocumented
-       feature of Fiasco).
-       (display_documents) Implemented.
-
-       * error.c: (glob var cust_field) New var.
-       (vmsg) Displays cust_field as part of message classes DE and DW.
-
-       * formats.c: (debug_print) Fixed to compile under updated
-       dictionary format.
-
-       * get.c: (cmd_get, cmd_save_internal) Close file handle on
-       failure.
-
-       * misc.c: (parse_format_specifier) Formatting fix.
-
-       * modify-vars.c: (struct var_modification) Renamed `n_reorder' as
-       `n_rename' for clarity.
-       (cmd_modify_vars) Initializes `forward' and `positional' at
-       appropriate times.  Frees lists of vars to rename on failure.
-       Comment fix.  Frees memory on success.  
-       (rearrange_dict) Simplified `for' loop condition.
-
-       * rename-vars.c: New file (reference implementation).
-       
-       * set.q: (internal_cmd_set) Fixed `emu' test condition.
-
-       * sfm-read.c: (read_header) File label is created only if file
-       label in file is not blank.
-       (read_variables) Initializes `dict' local variable.
-       (read_documents) Proper behavior on lossage.
-
-       * sfm-write.c: (write_header) Doesn't blank out the file label
-       (why was this here to begin with?!)
-
-       * temporary.c: (save_dictionary) File label is copied only if
-       non-NULL.  Doesn't try to xstrdup() dictionary documents.
-       Adapted so as to not irritate Checker.
-       (free_dictionary) Only destroys var_by_name if non-NULL.
-
-       * title.c: (cmd_file_label) Doesn't skip FILE, LABEL tokens.
-       (cmd_document) Doesn't skip DOCUMENT token.  Adds some header
-       lines to the document, indents the document.  Also, it works now.
-       (add_document_line) New function.
-
-       * var.h: (struct dictionary) Reordering.
-
-       * vars-prs.c: (parse_variables) On lossage, only local_free()'s
-       bits if it was allocated to begin with.
-
-Thu Jan 16 13:08:57 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added MODIFY VARS to list of commands.
-
-       * configure.in: Updated custom macros for autoconf 2.12.  Removed
-       mmap reference; fixed termcap library reference.
-
-       * display.c: (display_variables) Fixed a few bugs although it's
-       still not well written.
-
-       * error.c: [!__CHECKER__] (chkr_disp_call_chain) New function.
-       (induce_segfault) Calls chkr_disp_call_chain() instead of
-       inducing an actual SIGSEGV.
-
-       * expr-opt.c: (evaluate_tree) Swapped order of arguments to
-       str_search() and str_rsearch().  Fixed tests for matches on
-       OP_INDEX and OP_RINDEX.
-
-       * filename.c: (good_getcwd) Removed as the new libc for Checker
-       doesn't contain this bug, apparently.
-
-       * misc.c: (str_search, str_rsearch) Changed order of arguments for
-       consistency with GNU memmem.
-       (blp_getdelim) Changed `len' from `int' to `size_t'.
-
-       * modify-vars.c: Reference implementation.
-
-       * som-frnt.c: (zero_length) New global var.
-       (som_create_table) Message fix.
-
-       * som.h: Added gcc attributions to som_set_text(),
-       som_output_text() prototypes.  blank_line() refers to
-       zero_length[] instead of a literal null string to suppress gcc
-       warnings.
-
-       * sort.c: (do_external_sort) Fixed fencepost error on lossage.
-       (allocate_cases) Decrements x_max so the last element of x[] can
-       be used by the algorithm.
-
-       * var.h: Changed minor details of `variable' declaration.  
-       (struct modify_vars_proc) New struct.
-       (struct variable) Added field p.mfv.
-
-       * vars-atr.c: Comment fix.
-
-       * vars-prs.c: (fill_all_vars) More optimal implementation.
-
-       * vfm.c: (dump_splits) Sets the last byte of temp_buf to a null
-       character, which it shouldn't have to do but printf() seems to
-       read the null byte even though I supply a maximum length...
-
-Fri Jan 10 20:22:08 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Removed command alias X for QUIT.
-       (parse_cmd) Fixed comment parsing.
-
-       * dfm.c: (struct dfm_fhuser_ext) Fields `len', `size' are now of
-       type size_t.
-       (read_record) Fixed references to len, size.
-       (dfm_get_record) Restructured.
-
-       * file-handle.h: (struct file_handle) Field `lrecl' now of type
-       size_t.
-
-       * file-handle.q: (internal_cmd_file_handle) Checks for nonpositive
-       record length.
-
-       * modify-vars.c: New file.  Not complete.
-       
-       * set.q: (set_ccx) Fixed operator precedence problem regarding ^
-       and ==.
-
-       * sfm-read.c: (bswap_flt64, read_header, write_variable) Fixed
-       problems caused by int/size_t differences.
-
-       * sort.c: (output_record, merge_once) Cast `size_t's to `int's in
-       appropriate spots.
-
-       * str.c: (strcasecmp) Fixed bug that cropped up when the strings
-       being compared were of equal length.
-
-Thu Jan  2 19:08:23 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added DOCUMENT, DROP DOCUMENTS, FILE LABEL.
-
-       * lexer.c: (get_dotted_rest_of_line) New function.
-
-       * sel-if.c: (cmd_filter) Cannot choose string or scratch variables
-       as filters.
-
-       * sfm-read.c: (sfm_read_dictionary) Calls read_documents() to read
-       type 6 records.  Frees the dictionary properly.
-       (read_header) Initializes the dictionary instead of letting
-       read_variables() do it.  Sets the dictionary file label from the
-       system file.
-       (read_documents) New function.
-
-       * sfm-write.c: (sfm_write_dictionary) Calls write_documents() to
-       write type 6 record if appropriate.
-       (write_header) Writes file label from dictionary.
-       (write_documents) New function.
-
-       * temporary.c: (save_dictionary, restore_dictionary,
-       free_dictionary) Properly handle new fields in dictionary struct.
-
-       * title.c: (get_title) Returns after failure().
-       (cmd_file_label, cmd_document, cmd_drop_documents) New functions
-       for new commands FILE LABEL, DOCUMENT, DROP DOCUMENTS.  Untested.
-
-       * var.h: (struct dictionary) New fields `label', `n_documents',
-       `documents'.
-
-Wed Jan  1 22:08:10 1997  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added FILTER to list of commands.
-
-       * frequencies.g: [WEIGHTING] Removed test for weighting!=-1 since
-       it's always true.
-
-       * get.c: (cmd_save_internal) Removed weighting code since it's now
-       handled by sfm-write.c.  Properly commented out debug code.
-
-       * glob.c: (glob var weighting) Removed.
-
-       * sel-if.c: Comment fixes.
-       (cmd_filter) New function.
-
-       * sfm-read.c: (struct sfm_fhuser_ext) New field `weight_index'.
-       (sfm_read_dictionary) Sets weighting variable direct in the
-       created dictionary now.  (Apparently we previously didn't support
-       weighting on GET?)
-       (read_header) Sets weight_index field in sfm_fhuser_ext from
-       header read from disk.
-
-       * sfm-write.c: (sfm_write_dictionary) Comment fix.
-       (write_header) Now sets the weighting in the header from the
-       passed primary dictionary instead of from the sfm_write_info.
-
-       * sfm.h: (struct sfm_write_info) Removed field `weight'.
-
-       * som-high.c: (dump_crush_table) Fixed a couple of assertions that
-       broke on boundary conditions.
-
-       * var.h: (struct dictionary) New fields `weight_var',
-       `weight_index', and `filter_var'.
-       (glob var weighting) Removed.  This is now part of struct
-       dictionary.  All references changed; the less mechanical changes
-       are described above.
-
-       * vars-atr.c: (find_dict_variable) New function.
-
-       * vfm.c: (static var filter_index) New variable.
-       (open_active_file) Initializes filter_index from default_dict.
-       (write_case) Calls proc_func() only if the filter variable is
-       nonzero; this implements FILTER behavior.
-
-       * weight.c: (static var weight_varname) Removed.
-       (cmd_weight) Modified default_dict instead of glob vars.
-       (update_weighting) Changed the signature to modify a dictionary
-       instead of glob vars.  Now returns the weighting variable.
-       (get_weighting_variable) Removed; its function is absorbed by
-       update_weighting().
-       (stop_weighting) Operates on a dictionary now.
-
-Wed Jan  1 17:00:59 1997  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c: Removed debugging info from messages.
-       (do_external_sort) Cleans up after itself by deleting the
-       temporary directory on failure.  (On success it is deleted by the
-       input program.)
-       (allocate_cases) Removed debug code.  Added clean up code.
-       (output_record) Removed debug code.
-       (merge) Added code to close all the input files that are currently
-       open.  This is a likely location for bugs, because I'm not sure
-       about boundary conditions.  Removed an unnecesary heap_delete().
-       (merge_once) Removed input file "optimization" that in fact
-       screwed up the rest of the code.  Message and comment fixes.
-
-Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
-
-       * error.c: [__CHECKER__] (induce_segfault) Flushes output streams.
-
-       * heap.c: (heap_delete) New argument.
-
-       * sort.c: Finished implementation of external sort.
-
-       * vfm.c: (read_from_disk) Returns after a disk error.
-
-Sun Dec 22 23:10:39 1996  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c: (static var state) Removed.
-       (static vars max_handles, tmp_basename, tmp_extname,
-       huffman_queue) New variables.
-       (do_external_sort) Moved most code to new functions.
-       Creates huffman_queue.
-       (allocate_file_handles, allocate_cases) New functions.
-       (static vars run_no, run_length, file_index, case_count) New
-       variables. 
-       (output_record) Returns success.  Now really writes to the output
-       file.
-       (begin_run, end_run) New functions.
-       (write_initial_runs) Returns success.  Initializes run_no to -1.
-       Calls begin_run(), end_run() at appropriate times.  Outputs debug
-       messages.
-       (write_to_sort_cases) Calls begin_run(), end_run() at appropriate
-       times.
-       (merge) New function.
-
-       * heap.c, heap.h: New files.  Hopefully in near-final form.
-
-Sat Dec 21 21:51:04 1996  Ben Pfaff  <blp@gnu.org>
-
-       * glob.c: Added write_active_file to global vars.
-
-       * sort.c: Several new miscellaneous static variables.
-       (cmd_sort_cases) Big comment fix.
-       (perform_case_2) Renamed `do_external_sort' and completely
-       rewritten.
-       (case_2_proc_func) Removed.
-       (output_record, write_initial_runs, write_to_sort_cases,
-       compare_record) New functions.
-
-       * vfm.c: [DEBUGGING] (index_to_varname) Excised bit rot.
-
-Tue Dec 17 18:57:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c: (perform_case_2) Changed the method for allocation of
-       lots of memory--now allocates one case at a time in hopes that
-       more cases can be allocated with heavily fragmented memory.
-
-       * var.h: (write_active_file) New global var.
-
-       * vfm.c: (procedure, close_active_file, write_case,
-       SPLIT_FILE_procfunc) Now allow beginfunc, procfunc, and endfunc
-       arguments to procedure() to be NULL.  All references to
-       procedure() that made use of dummy functions were changed to NULL
-       functions.
-       (open_active_file) If write_active_file is non-NULL, the output
-       device becomes DEV_PGM (a new enum).
-       (close_active_file) Sets write_active_file to NULL.
-       (read_from_memory) Comment fix.
-       (record_case) Calls write_active_file() when the output device is
-       DEV_PGM.
-
-Sun Dec 15 15:32:16 1996  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c: New file.
-
-       * autorecode.c: (cmd_autorecode) Fixed parsing of options.
-       Fixed checking for duplicate varnames.
-       (recode) xmalloc()'s the transformation instead of arena_alloc()'ing
-       it.
-       (autorecode_trns_free) Destroys hash tables for each recoding
-       specification.
-       (autorecode_proc_func) Compares NULL to *vpp instead of vpp.
-
-       * command.c: Added SORT CASES to cmd_table.
-       (null_func, null_int_func) Prototyped.
-
-       * descript.g: (calc_weight, calc_noweight) Computes own case
-       number now.
-       
-       * frequencies.q: (dump_statistics) Fixed problem with
-       too-few-cases warning message.
-
-       * get.c: (cmd_save_internal) Handles weighting properly.
-
-       * hash.c: (hsh_dump) Output format changed.
-       (force_hsh_insert) Actually works now, prototype changed.
-
-       * list.q: (static var case_num) New variable.
-       (cmd_list) Initializes case_num.
-       (list_cases) Increments case_num.
-
-       * var.h: Added definitions for SORT CASES.  Comment fixes.
-
-       * vfm.c: Some definitions moved to new file vfmP.h.  Comment
-       fixes.  `active' renamed vfm_active, `rep' renamed
-       vfm_replacement, all references changed.
-       (procedure) The procfunc no longer receives a case number.  All
-       references changed.
-       (write_case) Subtle reordering.
-       (SPLIT_FILE_procfunc) Counts cases differently.  Slightly less
-       redundant.
-
-       * weight.c: (get_weighting_variable) New function.
-
-       * vfmP.h: New file with definitions from vfm.c.
-
-Sat Dec 14 10:35:30 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (FILE_TYPE_okay) Commented out some tests because
-       they're clumsy and not yet needed.
-
-       * var.h: Most *_trns structures moved to their respective source
-       files.  Some were moved into a new file, do-ifP.h.  Comment fixes.
-       (union any_trns) Changed to a typedef for trns_header.
-       (struct input_program_pgm) Removed.
-
-       * vars-prs.c: (parse_variables) Only local_free()'s bits if it
-       was allocated in the first place.
-
-Fri Dec 13 21:30:53 1996  Ben Pfaff  <blp@gnu.org>
-
-       * autorecode.c: New file.
-       
-       * command.c: Added AUTORECODE to command table; re-enabled SET.
-
-       * data-out.c: (convert_F) Handles infinities and NaNs properly.
-
-       * error.c: (vmsg) Comment fixes.
-
-       * hash.c: Comment fix.
-       (hashpjw_d) New function.
-       (hashpjw) Reimplemented as call to more general function
-       hashpjw_d().
-       (internal_comparison_fn) Initializes pointers properly.
-       (hsh_sort) [GLOBAL_DEBUGGING] New debugging code.
-       (force_hsh_insert, force_hsh_find) New debugging wrapper
-       functions.
-
-       * main.c: (main) Message fix.
-
-       * output.c: (outp_read_devices) Message fix.
-
-       * set.q: Comment fixes.
-       (custom_results) Implemented Wnd/X form of subcommand.
-       (set_routing) New function.
-       (internal_cmd_set) Implemented ERRORS, MESSAGES.
-
-       * settings.h: (SET_ROUTE_*) New enum series.
-       (set_results) Renamed set_results_file, all references changed.
-       (set_messages) Removed.
-       (glob vars set_errors, set_messages, set_results) New vars.
-
-       * title.c: (get_title) Remembers to xstrdup() the result of
-       get_rest_of_line().
-
-       * var.h: (arc_item, arc_spec, autorecode_trns) New structures for
-       use by AUTORECODE.
-       (union any_trns) New element `arc'.
-
-Fri Dec  6 23:53:47 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (output_line) Removed references to set_screen.
-
-       * error.c: (static var terminating) New var.
-       (hcf) Sets terminating to 1.
-       (vmsg) If terminating is nonzero, does not attempt to call hcf().
-       This prevents an infinite loop if an error occurs within hcf().
-
-       * expr-evl.c: (evaluate_expression) [__CHECKER__] Replaced case
-       statement circumlocution with `case 42000' trick.
-       (evaluate_expression) New support for OP_STR_MIS.
-
-       * expr-opt.c: (evaluate_expression) [__CHECKER__] Replaced case
-       statement circumlocution with `case 42000' trick.
-       (dump_node) Handles OP_STR_MIS.
-
-       * expr-prs.c: (MISSING_func, SYSMIS_func) Rewrote to handle string
-       variables exceptions.
-       (parse_function) Message fix.
-       (ops[]) Added OP_STR_MIS.
-
-       * expr.h: Added OP_STR_MIS to OP_* enum.  Comment fixes.
-
-       * exprP.h: [__CHECKER__] Removed case statement circumlocution.
-
-       * glob.c: Removed set_scrnfile glob var.
-       (init_glob) set_errorbreak set to 0 by default.
-
-       * groff-font.c: Changed included files.
-       (groff_read_font) Initializes font_arena local var correctly.
-       (default_font) New function.
-
-       * output.c: Comment fixes.
-       (glob var disabled_devices) New variable.
-       [GLOBAL_DEBUGGING] (static var iterating_driver_list) New
-       variable.
-       [GLOBAL_DEBUGGING] (reentrancy) New function.
-       [GLOBAL_DEBUGGING] (outp_read_devices, outp_done, find_driver,
-       outp_iterate_enabled_drivers) Calls to reentrancy().
-       (destroy_list) New function.
-       (outp_done) Moved code to destroy_list().
-       (parse_options) Parses `listing', `screen', `printer' options
-       internally.
-       (configure_driver) Sets new `device' member of driver.
-       (outp_iterate_enabled_drivers, outp_enable_device) New functions.
-
-       * output.h: Comment fixes.  New enum series OUTP_DEV_*.
-       (struct outp_driver_struct) New member `device'.
-
-       * postscript.c: (find_encoding_file) Doesn't display its own error
-       messages.
-       (default_encoding) New function.
-       (switch_font) Calls default_encoding() if no encoding can be
-       found.
-       (text) Makes up a character metric if none exists for the desired
-       character.
-       (load_font) Properly copies a fallback filename.  Calls
-       default_font() for a font if none at all are known.
-
-       * set.q: Comment fixes.  Removed OUTPUT subcommand.
-       (custom_listing) Calls outp_enable_device() to enable/disable
-       listing device.
-       (turn_screen_on) Removed.
-       (internal_cmd_set) Calls outp_enable_device() to enable/disable
-       screen, printer devices.
-
-       * settings.h: Comment fixes.
-       (glob vars set_output, set_printer, set_screen, set_scrnfile)
-       Removed.
-
-       * som-high.c: (som_submit_table, som_eject_page) Use
-       outp_iterate_enabled_drivers() instead of iterating
-       outp_driver_list directly.
-
-Wed Dec  4 21:34:17 1996  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: (parse_EDATE, parse_SDATE) New functions.
-       (parse_string_as_format) Handles new formats.
-       (parse_numeric) Now handles DOT and PCT formats.
-
-       * data-out.c: (convert_E, convert_F, insert_commas) Handle DOT
-       format now.
-       (convert_date) Handle EDATE and SDATE formats.
-       (convert_CCx) Now if there's not room for the currency characters,
-       converts it as F format if it's positive instead of giving up
-       quickly.  Also fixed save-and-restore bug with decimal point
-       characters.  
-       (convert_format_to_string) Handles new formats.
-
-       * misc.c: (formats[]) Added new formats.
-       (convert_fmt_ItoO) Supports new formats.
-
-       * sfm-read.c: (parse_format_spec) Supports new formats.  Better
-       data checking.  New argument, all references changed.
-
-       * sfm-write.c: (write_format_spec) Supports new formats.
-
-       * var.h: New formats FMT_DOT, FMT_PCT, FMT_EDATE, FMT_SDATE.
-       Comment fixes.
-
-Sun Dec  1 17:19:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: Comment fixes.
-       (parse_command_line) Changed return type to void.
-
-       * data-in.c: (parse_string_as_format) Added FMT_CCA...FMT_CCE to
-       switch.
-       (parse_numeric) Handles international numbers (comma as decimal
-       point).  Some reformatting.
-
-       * data-list.c: (parse_free) Default output format is now
-       set_format instead of hard-coded F8.2.
-       (read_from_data_list_list) Emits error message on undefined data
-       only if set_undefined is nonzero.
-
-       * data-out.c: (convert_E) Changes decimal point from period to
-       comma if appropriate.  Restructured.  Better comments.
-       (convert_F) Changes decimal point from period to comma if
-       appropriate.
-       (insert_commas) Major bug with handling of negative values fixed.
-       Also, inserts periods instead of commas if appropriate.
-       (convert_CCx) New function.
-       (convert_format_to_string) Added FMT_CCA...FMT_CCE to switch.
-       (num_to_string) Changed `.' to set_decimal.
-
-       * dfm.c: Comment fixes.
-       (dfm_close) Frees ext->line even in inline_file.
-       (open_inline_file) New function.
-       (open_file_r) When opening the inline file: now properly
-       recognizes `BEGIN DATA.' line, and calls open_inline_file() to
-       finish up.
-       (read_record) Calls fh_close_handle() instead of dfm_close() to
-       close the inline file.  Makes a copy of the line getl_buf to avoid
-       interlock problems.
-       (dfm_get_record) Restructured.  Now checks the return value of
-       open_file_r().
-       (cmd_begin_data) Moved open code into open_inline_file().  Relaxed
-       checking for use of inline file.  No longer tries to close inline
-       file.
-
-       * error.c: (glob var error_already_flagged) New var.
-       (vmsg) Message change.  Now checks max number of errors/warnings,
-       acts on it.
-
-       * file-handle.q: (fh_handle_name) Now allows closing of
-       inline_file.
-       (fh_init_files) Reformatted.
-
-       * get.c: (trim_dictionary) Checks SCOMP option instead of COMP.
-
-       * getline.c: (getl_include) Fixed bug that popped up when called
-       when file queue was empty.
-       (read_console) Resets error_count, warning_count,
-       error_already_flagged to zero.
-
-       * glob.c: Many changes to update list of variables.
-       (init_compat_dependent) Now this function is called whenever
-       `compat' changes.  It now sets set_seed only if it hasn't
-       previously been referenced.  It now calls
-       lex_init_compat_dependent().
-
-       * include.c: (cmd_include_at) Frees temporary buffer instead of
-       line buffer.  
-       (cmd_include) Doesn't make copy of include file name.
-
-       * lexer.c: Comment fixes.
-       (init_lex) Moved some code into new function
-       lex_init_compat_dependent().
-       (lex_init_compat_dependent) New function.
-       (hex_val) Simplified.
-       (preprocess_line) Uses set_endcmd instead of hardcoding `.'.
-
-       * main.c: Comment fixes.
-       (main) Reformatted.
-
-       * misc.c: (formats[]) Added FMT_CCA...FMT_CCE.
-       (check_input_specifier) Disallows FMT_CCA...FMT_CCE.
-       (convert_fmt_ItoO) Detects FMT_CCA...FMT_CCE.
-       (setup_randomize) Sets set_seed_used.
-
-       * set.q: Comment fixes.
-       (custom_results) Conditionalizes on `compat'.
-       (custom_log) Calls custom_journal().
-       (set_ccx) New function.
-       (cmd_set) Calls init_compat_dependent() when `compat' changes.
-       Calls set_ccx() to handle CCA...CCE.  Sets set_grouping
-       when set_decimal changes.  Range-checks values for MITERATE,
-       MNEST.  Message fixes.
-
-       * settings.h: Comment fixes.
-       (struct set_cust_currency) New struct.
-       (set_cc[], set_grouping, set_seed_used) New global vars.
-
-       * var.h: (FMT_CCA...FMT_CCE) New output formats.
-       (FCAT_OUTPUT_ONLY) New FCAT_* constant.
-
-Thu Nov 28 23:14:07 1996  Ben Pfaff  <blp@gnu.org>
-
-       * glob.c: Revised variables to correspond to settings.h.
-       (init_glob) Initializes variables from settings.h properly.
-
-       * set.q: Began long-overdue major revision to correspond to new
-       philosophy.  Most code changed. 
-
-       * settings.h: Mostly changed; reorganized, reordered, large new
-       comment.
-
-Thu Nov 28 19:46:10 1996  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (cmd_save_internal) No longer forces compression off.
-
-       * sfm-read.c: (read_compressed_data) If eof is reached when
-       reading a new instruction octet, only signal error if we're in the
-       middle of a case.
-
-       * sfm-write.c: (COMPRESSION_BIAS) New #define.
-       (struct sfm_fhuser_ext) New member `end'.
-       (write_header) Refers to COMPRESSION_BIAS instead of magic 100.0.
-       (ensure_buf_space) New function.
-       (sfm_write_case) Reimplemented in order to support compression.
-       (sfm_close) Writes out the remaining contents of the compression
-       buffer if any.
-
-Wed Nov 27 23:18:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Defined SAVE and XSAVE commands in command table.
-
-       * common.h: second_lowest_value is of type flt64, not double.
-
-       * file-handle.h: Comment fix.
-
-       * get.c: Comment fixes.
-       (static var `trns') New.
-       (save_write_case_func, save_trns_proc, save_trns_free, null_func,
-       cmd_save_internal, cmd_save, cmd_xsave) New functions.
-       (dict_delete_run) Clears the variables and frees them now.
-       (trim_dictionary) Sets default for compression.
-       On KEEP subcommand, frees deleted variables as well as clearing
-       them.  Finally got the sense of the test for deleting all
-       variables correct.
-       [DEBUGGING] (dump_dict_variables) Message fix.
-
-       * glob.c: (init_glob) set_compression set to 1 by default.
-
-       * list.q: Properly #includes config.h.
-
-       * misc.h: New macro REM_RND_UP.
-
-       * settings.h: Comment fix.
-
-       * sfm-read.c: (structs sysfile_header, sysfile_format,
-       sysfile_variable; inline function bswap_int32) Moved to new file
-       sfmP.h.
-       (corrupt_msg) [__CHECKER__] No longer induces segfault.
-       (sfm_read_dictionary) Fixed bug caused by failing to initialize
-       var_by_index.
-       (read_machine_flt64_info) Fixed some problems caused by confusion
-       between flt64 and double types.
-       (read_header) Message fix.
-       (read_variables) Fixed set of cases in which we byte-swap sv.print
-       and sv.write.  Fixed confusion of flt64 and double.
-
-       * sfm.h: (struct sfm_write_info) New.
-
-       * som-high.c: (som_draw_title) Properly frees `s'.
-
-       * temporary.c: (save_dictionary) Comment fix.
-
-       * var.h: Comment fixes.  New FMT_* enum, FMT_NUMBER_OF_FORMATS.
-       (struct trns_header) Formatting fix.
-       (struct save_trns) New.
-
-       * vars-atr.c: (discard_variables) Comment fix.
-
-       * sfm-write.c: New file, baseline release.
-
-       * sfmP.h: New file, baseline release.
-
-Sun Nov 24 14:53:53 1996  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: (parse_command_line) `--version' output updated.
-       (glob var syntax_message[]) Added my e-mail address.
-
-       * file-handle.q, lexer.c, vfm.c: Changed many instances of
-       `illegal' to `invalid'.
-
-       * sfm-read.c: (struct sfm_fhuser_ext) New fields used as
-       uncompression buffer.
-       (sfm_close) Frees decompression buffer.
-       (sfm_read_dictionary) Initializes decompression buffer.
-       (buffer_input, read_compressed_data) New functions.
-       (sfm_read_case) Restructured; now calls read_compressed_data() to
-       handle compressed system file data.
-
-       * var.h: Comment fix.
-
-Mon Nov 11 15:34:09 1996  Ben Pfaff  <blp@gnu.org>
-
-       * dfm.c: (dfm_close) Does not set h->{ext,class} because the
-       caller handles it.
-        
-       * get.c: New comments.  New static var `get_file'.
-       (cmd_get) Now fully implemented.  Calls discard_variables();
-       initializes fv and lv for all variables; new debug code; sets
-       up the dictionary; sets up the input program.
-       (read_from_get, cancel_get) New functions.
-
-       * sfm-read.c: Comment fixes.
-       (sfm_close) New static function.
-       (sfm_read_dictionary) Properly sets up the class of the
-       file_handle.  No longer cares what size the data is in records of
-       type 7.  Also, on failure, properly cleans up the file_handle and
-       free()s some stuff.
-       (read_variables) No longer thinks it knows `nval' of the
-       dictionary.  Now sets p.get.fv, etc., instead of speculatively
-       setting fv itself.
-       (read_value_labels) Fixed off-by-one error in indexing of
-       var_by_index[].
-       (sfm_read_case) New function.
-       (sfm_r_class) New static var.
-
-       * var.h: (get_proc) New struct.
-       (struct variable) New member p.get.
-
-Thu Nov  7 20:52:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: Removed GTSV_OPT_MAP because of a misinterpretation of
-       the manual's meaning.
-       (rename_variables) New function.
-       (trim_variables) Doesn't try to parse MAP any more.  Removed debug
-       code.  Now properly reorders the dictionary on the KEEP keyword.
-
-       * sfm-read.c: (read_value_labels) Fixed some bugs regarding
-       garbage collection.
-
-       * vars-atr.c: (clear_variable) New argument `dictionary *'.
-       (rename_variable) New function.
-       (free_val_lab) Reformatted.
-
-Thu Nov  7 17:29:16 1996  Ben Pfaff  <blp@gnu.org>
-
-       * var.h: Reindented entire file.  Comment fixes.
-       (glob vars var, var_by_name, nvar, N, nval, n_splits, splits)
-       Removed.
-       (glob var default_dict) New.
-       (struct indirect_dictionary) Removed.
-
-       * Many other source files were changed to add `default_dict.'
-       before all references to the dictionary of the active file.
-       
-       * vars-atr.c: (make_indirect_dictionary) Removed.
-
-       * glob.c: Reindented all variable declarations.  Updated for
-       changed var.h.  Comment fixes.
-
-       * temporary.c: (restore_dictionary, save_dictionary) Simplified
-       because now we can mainly copy dictionary structs.
-
-       * vars-prs.c: (is_dict_varname, parse_dict_variable,
-       parse_variables) Takes dictionary instead of indirect_dictionary
-       first argument.
-       (parse_variables) Instead of calling make_indirect_dictionary,
-       just sets DICT to &default_dict if DICT is NULL.  Of course, lots
-       of `*dict.' references had to be changed to `dict->'.  Removed
-       debug code.
-
-Thu Nov  7 15:48:52 1996  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: Added GTSV_OPT_* series of enums.
-       (trim_dictionary, dict_delete_run) New functions.
-       [DEBUGGING] (dump_dict_variables) New function.
-       (cmd_get) Calls trim_dictionary() to get dictionary fully set-up.
-       [DEBUGGING] Calls dump_dict_variables() to display results.
-
-       * glob.c: (cmp_variable) Now a public function declared in var.h.
-
-       * sfm-read.c: Turned off debug code.  Comment fixes.
-       (read_machine_int32_info, read_machine_flt64_info) New functions
-       to parse type 7 records.
-       (sfm_read_dictionary) Properly byteswaps several fields now.
-       Calls read_machine_*_info() to parse type 7 subtypes 3 and 4
-       records.  [DEBUGGING] Dumps dictionary.
-       (read_variables) Sets `index' field of variables created properly.
-       Constructs avl tree of variables in dictionary.  [DEBUGGING] No
-       longer dumps dictionary.
-       (read_value_labels) Properly byteswaps fields.  [DEBUGGING] New
-       debug code.
-       [DEBUGGING] (dump_dictionary) No longer stubbed out.
-
-       * temporary.c: (restore_dictionary) Destroys `var_by_name' glob
-       var before destroying any variables just to save a little time.
-
-       * var.h: (struct variable) Reordered in order to make name[] the
-       first member; this makes pointers to `variable' pointers to the
-       variable name, simplifying avl trees, etc.
-       (struct indirect_dictionary) New struct.
-
-       * vars-atr.c: (find_variable) Rewritten for efficiency.
-       (make_indirect_dictionary, is_dict_varname, parse_dict_variable)
-       New functions.
-       (is_varname) Rewritten for efficiency.
-       (parse_variables) New argument, which is a `dictionary *'.  All
-       references changed.  This function now reads variable names from
-       the dictionary passed, or from the default dictionary if NULL.
-
-Tue Nov  5 18:34:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * misc.h: Added new macro DIV_RND_UP to perform integer division,
-       rounding up.  Changed many references to ROUND_UP to use this
-       instead.
-
-       * sfm-read.c: Includes avl.h.
-       (corrupt_msg) Induces a segfault under Checker.
-       (macro assertive_bufread) New.  Many references to bufread() now
-       use this instead.
-       (sfm_read_dictionary) Split up into several functions.  Added code
-       to read dictionary records following the the type 2 records.  Not
-       quite complete.  New variable `var_by_index'.
-       (read_header, read_variables) New functions extracted from
-       sfm_read_dictionary().
-       (read_value_labels) New function.
-       (bufread) Checks ferror() if fread() doesn't return the expected
-       value; if ferror() is zero it's just EOF.
-       (dump_dictionary) Stubbed out.
-
-       * BTW: The source code now exceeds 50000 lines!
-       
-Mon Nov  4 22:03:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added GET to cmd_table[].
-
-       * list.q: Removed reference to alloca headers.
-       (cmd_list) Gave prototype.
-
-       * sfm-read.c: Added DEBUGGING comments.
-       (sfm_read_dictionary) Checks bias correctly.  Sets
-       dict->var_by_name to NULL.  Calculates long_string_count
-       correctly.  realloc's dict->var[] array to minimum size.
-       [DEBUGGING] Calls dump_dictionary.
-       [DEBUGGING] (dump_dictionary) New function.
-
-       * temporary.c: (save_dictionary) Sets var_by_name to NULL.
-       (restore_dictionary) If the dictionary contains a non-NULL
-       var_by_name, uses that instead of generating one.
-       (free_dictionary) Destroys var_by_name.
-
-       * var.h: (struct dictionary) Added field `var_by_name'.
-
-       * get.c: New file, not complete.
-
-Sun Nov  3 12:24:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       * mis-val.c: New enums MV_NOR_*.  New struct num_or_range.
-       (parse_num_or_range) New function.
-       (parse_numeric) Reimplemented in order to support LOW THRU <n> and
-       <n> THRU HIGH missing values.
-
-       * output.h: [__GNUC__>1 && __OPTIMIZE__] (width, height) Made
-       __attribute__((const)).
-
-       * q2c.c: (get_token) Merged isdigit || isalpha into isalnum.
-
-       * sfm-read.c: Finished reference implementation.
-
-       * sfm.h: Includes var.h.
-
-       * var.h: Comment fixes.
-       (struct `variable') Reordered some fields.
-
-       * vars-atr.c: (is_num_user_missing) Added support for MISSING_*
-       constants added previously.
-
-Wed Oct 30 17:13:08 1996  Ben Pfaff  <blp@gnu.org>
-
-       * common.h: Comment fixes.  Added declaration of
-       `second_lowest_value' as variable or macro.  Made `compat_type',
-       `pgm_state_type' into anonymous enums.
-
-       * display.c: Comment fix.
-
-       * glob.c: [ENDIAN==UNKNOWN] Added definition for `endian' global
-       var.
-       [!defined SECOND_LOWEST_VALUE] Added definition for
-       `second_lowest_value' global var.
-       (compat, pgm_state global vars) Changed types to `int'.
-       (init_glob) Initializes `second_lowest_value'.
-
-       * sfm-read.c: Continued work, not complete.
-
-       * var.h: Added new MISSING_* constants to handle LOWEST and
-       HIGHEST.
-
-Sat Oct 26 23:06:06 1996  Ben Pfaff  <blp@gnu.org>
-
-       * sfm-read.c: New file, not complete.
-
-       * cases.c: (vec_insert) Changed vector expansion algorithm.
-       (vec_delete) Fixed bug that screwed up deletion sometimes, it was
-       mucking up the RECODE transformation in particular.
-       (envector) Harmless change in notation.
-
-       dfm is now fairly well tested again.  
-       * dfm.c: (dfm_get_record) Only returns ext->ptr if ext is
-       non-NULL--duh.
-       (cmd_begin_data) if(ext->line) replaced by if(ext && ext->line).
-
-       * recode.c: Comment fix.
-
-       * sfm.h: Interface should be fairly final now, or at least for a
-       day or so...
-
-       * vfm.c: [DEBUGGING] (index_to_varname) New function.
-       (open_active_file) [DEBUGGING] Translates ccase indices into
-       variable names now to make it easier to understand what's really
-       going on.
-
-Sat Oct 26 20:46:31 1996  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: Comment fix.
-
-       * data-list.c: Includes dfm.h.
-       (do_reading) Uses new function dfm_push_cust().
-
-       * data-out.c: (convert_time, convert_WKDAY, convert_MONTH) Added
-       `return 1;' at end.
-
-       * file-handle.h: Completely changed.  Some parts split off into
-       new file dfm.h.  Implemented in file-handle.q.
-       (enum FH_*) Removed.
-       (struct fh_ext_class) New struct.
-       (struct file_handle) Retained only these fields: name, norm_fn,
-       fn, recform, lrecl, mode.  New fields class, ext.
-       (get_handle_by_name, get_handle_by_filename, parse_file_handle,
-       close_handle, handle_name) Added `fh_' prefix to name, all
-       references changed.
-
-       * dfm.h: New file, implemented in dfm.c.
-       (get_record, put_record, fwd_record, bkwd_record, set_record,
-       get_cur_col) Functions moved from file-handle.h, now prefixed with
-       `dfm_'.
-       (dfm_push_cust) New function.
-
-       * sfm.h: New file.  Incomplete.
-
-       * dfm.c: All functions adjusted/rewritten for new dfm/fhp
-       interface.  Functions reordered, comments changed.  Not well
-       tested, probably full of bugs.
-       (struct dfm_fhuser_ext) New struct.
-       (dfm_close) New function.
-       (open_file_r) Pickier about finding `BEGIN DATA.' line.
-       (open_file_w) User messages changed.
-       (get_record) Comment fixed.
-       (read_record) Increments ext->ln even for inline_file.  Calls
-       dfm_close() for inline_file when `END DATA.' encountered.
-       (dfm_get_record) Experimental restructuring.
-       (dfm_push_cust) New function.
-       (cmd_begin_data) Detects whether the inline file was fully read by
-       checking whether it is still open; detects whether it was read at
-       all by checking whether the line number is greater than zero.
-
-       * file-handle.q: All functions adjust/rewritten for new dfm/fhp
-       interface.  Functions reordered, comments changed.  Not well
-       tested, probably full of bugs.
-       (init_file_handle) Removed initializers for obsolete fields, added
-       new fields.
-       (fh_close_handle) Much simpler, now mainly calls the class
-       function.
-       (fh_init_files) Renamed inline file internal filename.
-
-       * file-type.c: Includes dfm.h.
-       (read_from_file_type) Doesn't use dfm internal state anymore.
-
-       * inpt-pgm.c, print.c: Include dfm.h.
-
-       * recode.c: (internal_cmd_recode) Casts strlen() return value to
-       int in comparison with other int.
-
-       * som-high.c: (build_target) Fixed operator precedence problem in
-       if statement (& versus ==).
-
-Sat Oct 26 10:39:25 1996  Ben Pfaff  <blp@gnu.org>
-
-       * dfm.c: (read_record) Can now read fixed-length records; not
-       tested.
-       (put_record) Can now write fixed-length records; not tested.
-
-       * file-handle.h: FH_* defines changed to enums.  New enum series
-       FH_RF_*, FH_MD_*.
-       (struct file_handle) New members recform, lrecl, mode.
-
-       * file-handle.q: Parser changed.
-       (internal_cmd_file_handle) Added support for new /RECFORM, /MODE,
-       /LRECL subcommands.  These are compatible with Windows.
-       (init_file_handle) Initializes recform, mode fields.
-
-       * q2c.c: (get_line) When outputting `!' comment lines, now
-       increments the output file line number so that `#line' directives
-       are correct.
-       (make_identifier) New function that converts an arbitrary string
-       into a valid C identifier.
-       (dump_vars) Calls make_identifier() in two places in order to
-       suppress some errors for bad identifiers.
-       (make_match) Allows TRUE as synonym for YES and FALSE as synonym
-       for NO.  Allows numbers to be prefixed by underscores to make them
-       acceptable C identifiers but still to be parsed as numbers by the
-       Fiasco lexer.
-
-Thu Oct 24 20:13:42 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Re-enabled RECODE, SAMPLE, SELECT IF.
-       
-       * dfm.c: Comment fixes. (get_record) Gives error if file handle
-       was opened for writing.
-       (open_file_w) New function.
-       (read_record) Uses strncasecmp if available.  Improved error
-       messages, comments.
-       (put_record) New function.
-
-       * file-handle.h: Moved function comments into dfm.c and
-       file-handle.q.  Comment fixes.  Removed declarations of
-       tilde_expand() and normalize_filename().
-       (struct file_handle) Changed `open' from boolean to enumerated
-       field to allow for three states--closed, open for reading, open
-       for writing--all references changed.
-
-       * file-handle.q: Includes filename.h.
-
-       * print.c: (CMD_* enums) Renamed PRT_* and moved into var.h; all
-       references changed.
-       (alloc_line) Makes allowance for line terminator characters in
-       calculations.
-       (print_trns_proc) Now handles OUTFILE, WRITE differences.
-       (print_space_trns_proc) Handles OUTFILE differences.
-
-       * recode.c, sample.c: Comment fixes.
-
-       * var.h: (struct print_trns) Changed boolean field `eject' to
-       bitmapped field `options'; all references changed.  New enums
-       PRT_* for use with this field.
-
-       * exception.h, test-exception.c: Removed.
-
-Thu Oct 24 17:47:14 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (delineate) Turned off debug output.
-
-       * common.c: [Checker and Linux] (__assert_fail, __eprintf) Moved
-       to error.c.
-
-       * data-in.c: (parse_string_as_format) Sets the entire string value
-       to spaces, not just the short string part of it.  Is this correct
-       now? 
-
-       * data-out.c: (convert_date) Fixed DATETIME format problems with
-       decimal places, removed debug code.
-
-       * dfm.c: (open_file_r) Fixed bug where an error would occur in the
-       middle of parsing BEGIN DATA that would cause the lexer to read
-       from a wild pointer `prog'; now calls new function
-       preprocess_line() in lexer.c.
-
-       * error.c: [__CHECKER__] (hcf) Calls induce_segfault() on improper
-       termination.
-       [Checker and Linux] (__assert_fail, _eprintf) Moved from common.c.
-       Now call induce_segfault() to induce the segfault.
-       (induce_segfault) New function.
-
-       * expr-opt.c: Comment fix.
-       (parse_sysvar) New function.
-       (parse_primary) Added system variable support--calls
-       parse_sysvar().
-       (global var ops) Added OP_CASENUM operator.
-
-       * expr.h: Comment fixes.
-       (OP_* enum) added OP_CASENUM operator.
-       (struct casenum_node) New struct.
-       (union any_union_union) New member `cas' of type `casenum_node'.
-
-       * glob.c: (global var last_vfm_invocation) New var.
-       (init_glob) Initializes last_vfm_invocation.
-
-       * lexer.c: (lookahead) Fixed reversed condition on if statement.
-
-       * getline.c: (get_line) Split into get_line() and preprocess_line().
-       (preprocess_line) New function.
-
-       * var.h: Declares last_vfm_invocation.
-
-       * vfm.c: (procedure) Sets last_vfm_invocation.
-
-Wed Oct 23 21:53:43 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (parse_cmd) Fixed bad assertion related to
-       lookahead().
-
-       * data-in.c: (parse_month) Implemented to parse months according
-       to full interpretation of standard.
-       (to_roman) New function.
-       (parse_wk_delimiter) Bug fix (forgot to skip `WK' in string).
-       (parse_weekday) Bug fix (forgot to skip all the day name).
-
-       * data-list.c: (read_from_data_list_fixed) Fixed bug that screwed
-       up parsing of multirecord data items.  Also fixed user message.
-
-       * data-out.c: Comment fix.
-       (year2, year4, convert_date, convert_time, convert_WKDAY,
-       convert_MONTH) New functions to support time & date output.
-       (convert_format_to_string) Calls new time & date output routines.
-
-       * expr-prs.c: (nary_num_func) Found a bug, but didn't fix it yet.
-
-       * lexer.c: (lookahead) Noted a previously unnoticed caveat in
-       comment.
-
-       * main.c: [DEBUGGING] (dump_token) Updated to handle getline.h.
-
-       * misc.c: (global var formats) Fixed declarations of DATETIME,
-       TIME, DTIME.
-
-       * postscript.c: (text) Fixed a pair of bugs in the reallocation of
-       the output_char buffer.
-
-       * vars-prs.c: (parse_DATA_LIST_vars) Fixed a failure to free
-       memory bug.  Fixed user messages.
-
-Tue Oct 22 17:27:04 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Removed #pragma argsused from lots of places.
-       
-       * data-in.c: Implemented zoned decimal and time-date formats.
-       Untested.  This is a huge chunk of code--maybe 1000 lines and 50
-       new functions.
-
-       * data-out.c: Implemented zoned decimal format.
-
-       * expr.h: Moved yrmoda() declaration here from exprP.h.
-
-       * misc.c: (global var formats) Minor fixes--added
-       FCAT_SHIFT_DECIMAL to formats N and Z.
-       (convert_fmt_ItoO) Added support for format Z.
-
-       * som-frnt.c: (som_set_value) Fixed bug regarding string values.
-
-Mon Oct 21 20:39:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (parse_cmd) [GLOBAL_DEBUGGING] Inserted call to
-       som_check_workspace() that is activated between commands.
-
-       * data-list.c: (dump_fixed_table, dump_free_table) Finished these
-       for good, I hope.
-
-       * list.q: (begin_row) Changed title expansion style from
-       SOPT_X_VERT to SOPT_X_SHSP.
-
-       * som-frnt.c: Now includes `somP.h'.
-       (som_push_workspace, som_pop_workspace) New functions that, taken
-       together, form a solution to the recursive table building problem
-       mentioned yesterday.  Surrounded every table output routine
-       throughout the program with calls to these functions.
-       [GLOBAL_DEBUGGING] (som_check_workspace) New function.
-       (som_create_table) Checks that there's an active workspace.
-       (som_destroy_all_tables, som_crush) Removed.
-
-       * som-high.c: (global var som_preserve_tables) Removed, all
-       references deleted.
-       (som_submit_table) Checks that there's an active workspace.
-       (dump_columnated_table) Doesn't columnate tables that would have
-       just one row per column.
-       (dump_crush_page, som_dump_crush_page) Removed debugging code.
-       (som_dump_crush_page) Moved row number labels from left side of
-       tables to right side.
-       (som_get_table_size) Added support for SOPT_X_SHSP.
-
-       * som.h: New cell expansion type SOPT_X_SHSP.
-
-       * somP.h: (global vars arena_stack, n_arena_stack, m_arena_stack)
-       New vars.
-       (global var curtab_arena) Moved from som-frnt.c.
-
-Sun Oct 20 13:45:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: [GLOBAL_DEBUGGING] (SUPPRESS_WARNINGS) New debug option
-       that causes bad location warnings to be suppressed.
-       (delineate) Saves current font when calling draw_text(); fixed
-       handling of NULLs when backing up.  Also fixed line-wrapping bug.
-
-       * command.c: Re-enabled `LEAVE', `NUMERIC', `PRINT', `PRINT EJECT',
-       `PRINT FORMATS', `PRINT SPACE', `STRING', `TITLE', `WRITE'.
-
-       * common.c: Added code to cause assertion failure to dump core
-       when run under Checker.
-
-       * data-list.c: (dump_fixed_table) Fixed some inconsistencies, but
-       there are still bugs.
-
-       * glob.c: (__eprintf) Removed.
-
-       * list.q: Inserted som_preserve_tables kluge that prevents tables
-       from being thrown away due to recursive table building through
-       som_output_line being called from a transformation during the LIST
-       procedure invocation.  This is a general problem that must be
-       solved in a better way since it applies to all procedures in
-       general.
-       (begin_row) Changed title options to SOM_X_VERT from SOM_X_BOTH.
-       (flush_table) Removed SOM_TOPT_PRESERVE from submission options.
-
-       * numeric.c: Fixed several errors in the form of msg() calls.
-
-       * print.c: Updated for use of som.
-       (dump_table) Reimplemented.
-       (print_trns_proc) Calls som_eject_page() instead of eject_page().
-       Calls som_output_text() instead of outs_line().
-
-       * som-frnt.c: (som_destroy_all_tables) Sets som_preserve_tables to
-       0.
-       (som_output_text) Function moved from som-low.c.  Interface
-       changed.
-
-       * som-high.c: (som_preserve_tables) New global public variable
-       declared in som.h.
-       (som_submit_table) Destroys the tables only if som_preserve_tables
-       is 0.
-       (paginate_horizontally) Bugfix: sets som.mpw even if there's only
-       one subrow per row.  Now labels subrows if there's more than one
-       subrow per row.
-       (dump_crush_table) Added wishlist comment.
-       (som_eject_page) New public function declared in som.h.
-
-       * som-low.c: (som_dump_crush_page) Draws row labels if there's
-       more than one subrow per row.
-       (som_output_text) Moved to som-frnt.c.
-
-       * som.h: (SOM_TOPT_PRESERVE) Removed.
-
-       * title.c: (get_title) Changed interface.
-       (cmd_title) Changed `title' to `outp_title'.
-       (cmd_subtitle) Changed `subtitle' to `outp_subtitle'.
-
-Sun Oct 20 09:04:15 1996  Ben Pfaff  <blp@gnu.org>
-
-       * list.q: (flush_table) Conforms to new partial options in
-       som_submission_form.
-
-       * som-high.c: (paginate_horizontally) Changed form of subrow
-       number labels.
-       (build_target) Omits spacing before table if
-       SOM_TOPT_PARTIAL_OMIT_TOP is selected.
-       (dump_crush_page) Changed interface.  Only trims bottom rule if
-       SOM_TOPT_PARTIAL_OMIT_BTM is not selected.
-       (dump_crush_table) Handles partial tables.
-       (output_row_label) New function.
-       (som_dump_crush_page) Emits subrow number labels.  Draws vertical
-       rule on the right edge of narrow subrows.
-
-       * som.h: Changed SOM_SUB_PARTIAL_* series of submission type
-       constants to a series of SOM_TOPT_PARTIAL_* submission options.
-       All references updated.
-
-Fri Oct 18 19:46:49 1996  Ben Pfaff  <blp@gnu.org>
-
-       * misc.c: Comment fix.
-
-       * som-high.c: (examine_table) Treats crushed tables separates for
-       purpose of determining header size.
-       (paginate_horizontally) Allots space for line numbers in crushed
-       tables with lots of subrows per row.  Calculates the `maximum page
-       width', the width of the widest horizontal page.
-       (build_target) Removed trim argument; all references changed.
-       Stricter assertions.  (dump_crush_page) New function.
-       (dump_crush_table) Reimplemented.
-
-       * som-low.c: (som_dump_page) Uses new RULE_ROW &c. constants.
-       (som_dump_crush_page) Reimplemented, interface changed.
-
-       * somP.h: Many many new helper macros for use with crushed tables.
-       (global var som) Removed `tv', `cum_y' members; all references
-       removed.  New members `mpw', `digit_space'.
-
-Sun Sep 29 19:37:03 1996  Ben Pfaff  <blp@gnu.org>
-
-       * arena.c: (arena_alloc) [!DISCRETE_BLOCKS] Removed `size'
-       variable, changed to constant 1024.
-       (arena_ca_strdup) Changed `sizeof(a_string)' to
-       `sizeof(c_string)'.
-       (arena_ca_strdup) [!DISCRETE_BLOCKS] Changed bad cast from
-       `(c_string *)' to `(char *)'; this fixed some offset problems.
-
-       * filename.c: (readlink_malloc) Changed initial allocation from
-       100 bytes to 128.
-       (good_getcwd) Changed from xmalloc() to local_alloc(); removed
-       comment.
-
-       * postscript.c: (read_fontmap) Fixed leak by changing &owner to
-       &fm->owner in several places.
-
-       * som-high.c: (output_table) Changed interface to rest of world.
-       (examine_crush_table) Removed.  Crushed tables are re-broken now,
-       in preparation for rewrite.
-
-       * som.h: Comment fix.
-
-Sat Sep 28 21:28:07 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (ascii_init_driver) Disposes of x->file.filename and x
-       itself in the cleanup stage.
-
-       * descript.q: (display) At least temporarily, changed the table
-       format to a crushed table.
-
-       * list.q: (begin_row) At least temporarily, added horizontal lines
-       between cases.
-
-       * som-high.c: (examine_crush_table) Sets som.hh to the width of
-       the horizontal "headers," that is, to the width of the far left
-       and far right rules.
-       (justify_pagination) Sets som.th to the width of the widest row
-       in the crushed table.  Fixed inner loop off-by-one error.
-
-       * som-low.c: (som_dump_crush_page) Added code to draw horizontal
-       rules.
-
-       * somP.h: Comment fix.
-
-Fri Sep 27 20:08:39 1996  Ben Pfaff  <blp@gnu.org>
-
-       * filename.c: (open_file_ext) Now, doesn't set f->file to NULL
-       before closing it; also, opens the constructed filename `s'
-       instead of f->filename.
-
-       * postscript.c: Moved initialization of x->loaded, x->prop,
-       x->fixed, x->current, also the add_encoding() calls, into
-       postopen().
-       (preclose) Destroys x->combos; sets x->loaded, x->combos to NULL;
-       sets x->last_font to NULL; sets x->next_combo to zero.
-
-       * som-high.c: (crushed_row_height) Moved definition farther up.
-       (som_submit_table) Doesn't calculate line width, font size until
-       after calling open_page(), to accomodate changes to PostScript
-       driver.
-       (vert_headers) Removed; equivalent functionality moved to
-       examine_table(), examine_crush_table().
-       (justify_pagination) Replaced with different algorithm.
-       (dump_crush_table) Bugfix that caused tables to fail to be clipped
-       at the bottom of the page.
-
-Thu Sep 26 22:20:26 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Added cmd_list back into cmd_table.
-
-       * freq.c, frequencies.q, repeat.c, list.q, vars-atr.c, vfm.c:
-       Comment fix: `#define DEBUGGING' --> `#define DEBUGGING 1'.
-
-       * list.q: (flush_table) Updated to new som_submission_form format.
-
-       * som-frnt.c: Comment fix.
-
-       * som-high.c: Changed `#endif' to `#undef EXTERN'.
-       (output_table) Calls som_get_table_size() directly; handles
-       crushed tables.
-       (examine_crush_table) New function; calls vert_headers().
-       (examine_table) Moved some code into new function, vert_headers().
-       (justify_pagination) New function.
-       (dump_plain_table) Removed `static' from `cy'.
-       (dump_crush_table) New function.
-
-       * som-low.c: (som_dump_crush_page) New function.
-
-       * som.h: Comment fixes.
-       (enum SOM_TOPT_CRUSH) New.
-       (SOM_SUB_PARTIAL_BEG, SOM_SUB_PARTIAL_MID, SOM_SUB_PARTIAL_END)
-       Temporarily set to zero to make do with LIST procedure.
-
-       * somP.h: Re-ordering.
-
-Wed Sep 25 19:36:11 1996  Ben Pfaff  <blp@gnu.org>
-
-       * som.c: Split into som-frnt.c, som-high.c, som-low.c.
-
-       * somP.h: New file for use by som-high.c, som-low.c.
-
-       * q2c.c: Added definition for VME.
-       (get_line) Now dumps `!' comment lines to the output file
-       verbatim.
-
-       * crosstabs.q, descript.q, file-handle.q, frequencies.q, list.q,
-       set.q: Changed format of `!' comment lines.
-
-Tue Sep 24 18:39:09 1996  Ben Pfaff  <blp@gnu.org>
-
-       * All source files: Added copyright notice.
-
-       * common.c: (xmalloc, xrealloc, xstrdup) Cast size_t's to unsigned
-       longs in msg() calls.
-
-       * con32s.c: (xmalloc, xrealloc) Updated from common.c.
-
-       * q2c.c: (xmalloc, xrealloc, xstrdup) Updated from common.c.
-
-Sat Sep 21 23:16:31 1996  Ben Pfaff  <blp@gnu.org>
-
-       * output.c: (outp_read_devices) Changed criteria for
-       distinguishing different types of lines.
-
-Fri Sep 20 22:52:28 1996  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: Changed syntax message.
-
-       * filename.c: (good_getcwd) Bug fix (?).
-       (normalize_filename) [__BORLANDC__] Uses _fullpath() library
-       function.
-       (search_path) Appends DIR_SEPARATOR to directory name only if it
-       does not already end with one.
-
-       * glob.c: Checks STAT_PAGER envvar before PAGER.
-
-       * output.c: Checks environment variables instead of just local
-       macros.
-
-Tue Sep 10 21:39:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * arena.c: (arena_destroy) Swatted a subtle bug that cropped up
-       when the pointer passed to the function was within the arena
-       itself, so that it couldn't properly be set to NULL _after the
-       arena was freed_.
-
-       * command.c: Re-enabled DISPLAY.
-
-       * display.c: Rewritten to handle tables.  Untested.
-
-       * filename.c: (search_path) Fixed memory leak.
-
-       * frequencies.q: (cmd_frequencies) Frees v_variables.
-       (postcalc) Calls cleanup_freq_tab() after displaying statistics.
-       (cleanup_freq_tab) New function to garbage collect.
-       (dump_full) Elegantized.
-
-       * main.c: New comment.
-
-       * output.h: New tag for tagged quotes: TAG_NEWLINE.
-
-       * postscript.c: Comment fix.
-       (release_fontmap, free_font_entry) New functions.
-       (ps_init_driver) Sets free_font_entry() as the freefunc for
-       hashtable `loaded'.  Calls release_fontmap() when destroying a
-       driver; also frees the output filename; also frees the
-       ps_driver_ext block.
-       (free_ps_encoding) Frees the filename as well as the encoding
-       block.
-       (output_encodings) Frees the line buffer and pops the msg-filename
-       stack.
-       (read_fontmap) Frees the fontmap filename and the line buffer.
-       (postopen, preclose) Misc. garbage collection fixes.
-       (ps_open_page) Destroys the `combos' hash table; sets `last_font'
-       to NULL; this fixes some output problems.
-       (text) Handles TAG_NEWLINE.  Untested.
-
-       * som.c: (cell_byte_size) Merged SCON_VALUE and SCON_TEXT cases.
-       (som_set_string) Removed.  All references changed to
-       `som_set_text'.
-       (som_set_text) Rewritten.  New interface.  More general.
-
-       * som.h: Minor format changes.
-       (struct som_value_cell) Removed; all references changed to
-       `som_text_cell'.
-       (enums SOT_*) Changed.
-
-Mon Sep  9 21:43:13 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: Re-enabled SPLIT FILE.
-
-       * postscript.c: Comment fix.
-
-       * som.h: Added `SOT_NONE'.
-
-       * split-file.h: (cmd_split_file) Removed superfluous parenthesis.
-
-       * vfm.c: (dump_splits) Reimplemented.
-
-Sat Sep  7 22:35:12 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Compiled the project under gcc 2.7.2, which gave some new
-       warnings.  This led to many additions of casts from unsigned to
-       int sprinkled throughout the code.
-       
-       * arena.c: Many uses of `unsigned' changed to `size_t'.
-
-       * command.c: Added END FILE, END REPEAT to command table.
-       (var cmd_end_repeat) Renamed cmd_end_repeat_p.
-       (find_command, FILE_TYPE_okay) Not commented out anymore.
-       (parse_cmd) Calls FILE_TYPE_okay again.
-       (output_line) Added calls to som_output_text() to put the line
-       in the output files.
-
-       * common.c: (macro VME) Format changes.
-       (xstrdup) Asserts that its argument is not NULL.
-       
-       * data-list.c: Implemented dump_fixed_table().
-       
-       * inpt-pgm.c: Formatting changes.  Comment changes.
-       (end_case_proc) Renamed end_case_trns_proc.
-       (cmd_end_file, end_file_trns_proc) New functions.
-
-       * misc.c: Many uses of `int' and `unsigned' changed to `size_t'.
-
-       * misc.h: (local_strdup) New macro corresponding to strdup() but
-       allocating its data through local_alloc() if possible--that is, if
-       GNU C is in use.
-
-       * postscript.c: Comment changes.
-       (quote_ps_name, quote_ps_string, output_encodings) New functions.
-       (output_line, add_string) New macros supporting
-       output_encodings().
-       (postopen) Fixed contents of ${fixed-font} and ${prop-font}
-       substitution vars.  Calls output_encodings() when a line
-       consisting of `!encodings' is encountered.
-       (preclose) Some code moved into quote_ps_string().
-       (dump_line) Changed into macro supporting dump_fancy_line().
-       (switch_font) Now outputs DSC "%%IncludeResource: font (...)"
-       command when appropriate.
-       (write_text) Fixed `literal_char' array (I think it's fixed, at
-       least.)
-       (text) Fixed bug when width was zero.  Now exits immediately on
-       zero height_left.  Now, when executing `goto restart;', checks
-       that cp<end, so that we don't read beyond end-of-string.  Also,
-       outputs the correct code to the output file by outputting the code
-       from the metric instead of the internal metric index.
-
-       * repeat.c: (cmd_end_repeat) New function.
-
-       * som.c: (var som) `headers' renamed `options' and semantics
-       changed.  All references changed.
-       (draw_title) `if(px!=-1 || px!=-1)' --> `if(px!=-1 || py!=-1)'.
-       (build_target) Only inserts spacing if SOM_TOPT_SPACING not
-       selected.
-       (som_text_table) Removed.
-       (som_output_text) New function.
-
-       * som.h: (struct som_submission_form) Removed `header', `reuse',
-       replaced with bitmapped field `options'.
-       (SOM_TOPT_*) New enum set for som_submission_form.options.
-       (SOT_*) New enum set for som_output_text().
-
-       * temporary.c: (copy_variable) When copying the var label, only
-       calls xstrdup() if it's non-NULL.
-
-       * var.h: (enum type `vartype') Removed; all references changed to
-       `int'.
-
-       * vars-atr.c: (init_variable) Changed local var `nbytes' from
-       `int' to `size_t'.
-
-Thu Sep  5 22:05:56 1996  Ben Pfaff  <blp@gnu.org>
-
-       * font.h: Comment changes.
-
-       * groff-font.c: (groff_read_font) Initializes `name' field to
-       NULL.  Handles `encoding' field.
-
-       * hash.c: (hsh_dump) [GLOBAL_DEBUGGING] Output formatting changes.
-
-       * postscript.c: (struct font_entry) Removed `position' field.
-       (struct ps_font_combo) New struct.
-       (struct ps_driver_ext) Removed field `next_position'.  New fields
-       `combos', `next_combo'.  `last_font' field changed from
-       `font_entry *' to `ps_font_combo *'.
-       (ps_init_driver) Reformatted; handles new fields.  When
-       OPO_AUTO_ENCODE is set, adds the two default fonts' encodings to
-       the encoding list.
-       (get_encoding, find_encoding_file) New functions.
-       (add_encoding) Some code moved out into find_encoding_file().
-       (postopen) Changed value for ${title}.
-       (preclose) Sets `loaded' field to NULL after destroying the hash
-       table.
-       (ps_open_page) Added comment.  Inits the `combos' and `next_combo'
-       fields.
-       (ps_text_set_font_by_position) Figures out the current family if
-       not known.
-       (compare_ps_combo, hash_ps_combo, free_ps_combo) New functions.
-       (switch_font) Implemented.
-       (write_text) Calls switch_font() more often.  Format changes.
-       #undefs its macros after they're no longer useful.
-       (text) Changed `continue' at one point to a jump to the top of the
-       loop because we don't want `separate' reset to 0 at that point.
-       (load_font) No longer sets `position' in the font_entry created.
-
-Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * font.h: (struct font_desc) New member `encoding', which is not
-       properly handled yet.
-
-       * glob.c: (init_glob) Some new i18n code, which is probably
-       screwed up.
-
-       * output.c: (outp_read_devices, outp_get_paper_size) Changed
-       `size' local from `int' to `size_t'.
-
-       * postscript.c: New driver configuration parameter `auto-encode'.
-       New enums OPO_AUTO_ENCODE, ODA_COUNT.
-       (struct font_entry) New member `position'.
-       (struct ps_driver_ext) Reordered.  New hash table member
-       `encodings'; new members `next_position', `next_encoding',
-       `last_font'.  Members `current', `prop', `fixed' changed from type
-       `font_desc *' to `font_entry *'; all references changed.
-       (struct ps_encoding) New struct.
-       (read_ps_encodings, compare_ps_encoding, hash_ps_encoding,
-       free_ps_encoding, add_encoding) New functions.
-       (ps_init_driver) Added OPO_AUTO_ENCODE to default
-       x->output_options.  Initializes new members of ps_driver_ext.
-       Changed default value for prologue_fn, encoding_fn.  Calls
-       read_ps_encodings after loading default fonts.
-       (option_tab[], ps_option) Handle new configuration parameter.
-       (switch_font) New function.
-       (struct output_char) `font' member changed from `font_desc *' to
-       `font_entry *'.  New member `separate'.
-       (read_fontmap) Changed `size' from `int' to `size_t'.
-       (output_line, put_number) New macros for write_text().
-       (write_text) Optimizes text output by consolidating multiple
-       calls to PostScript `show' operator.
-       (text) Keeps track of when text arguments can't be consolidated by
-       write_text(), and marks those spots in the output stream.
-       (load_font) Sets `position' of the allocated font_entry to -1, cuz
-       the font hasn't been switched to by switch_font(), which is where
-       the position is important--the PostScript is what cares about the
-       position.
-
-Sat Aug 31 23:52:38 1996  Ben Pfaff  <blp@gnu.org>
-
-       * hash.c: (hsh_destroy) Ignores NULL argument.  Doesn't try to
-       call a NULL free_func.
-       (hsh_rehash) Elegantized.
-       (hsh_probe) Fix bug that manifested when the table was expanded
-       and thus had to change location in memory.  Good thing
-       too--otherwise could have been much more subtle.
-       (hsh_find) [GLOBAL_DEBUGGING] Not stubbed out anymore.
-       (hsh_foreach) New function for hash table iteration.
-
-       * hash.h: (struct hsh_iterator) New.
-
-       * lexer.c: (parse_tagged_quote) Font and family name strings in
-       tags are now null-terminated.
-
-       * output.c: (outp_evaluate_dimension) Fixed over-aggressive unit
-       parsing.
-       (internal_get_paper_size, outp_get_paper_size) Fixed; now work as
-       documented.  (Never before tested?)
-
-       * output.h: Comment changes.
-
-       * postscript.c: New driver options `optimize-text-size',
-       `optimize-line-size', `max-fonts-simult'.  New enum set for
-       specing cached line types.  Comment fixes.
-       (struct line_form) New struct.
-       (struct ps_driver_struct) New members `text_opt', `line_opt',
-       `max_fonts', `lines'.
-       (ps_init_driver) Initializes new members of ps_driver_struct.
-       (user option type enum set) New member `nonneg_int_arg'.
-       (static var option_tab[]) Supports new options.
-       (ps_option) Handles new options.
-       (find_ps_file) Made static.  No longer calls hsh_dump().
-       (ps_get_var) Made static.
-       (preclose) Dumps out proper DSC trailer.
-       (ps_open_page) Elegantized.
-       (ps_close_page) Calls dump_lines() if appropriate.
-       (ps_line_horz, ps_line_vert, ps_line_intersection) Reduced to
-       wrappers around line().
-       (int_2_compare, compare_line, dump_line, dump_fancy_line,
-       dump_lines, hash_line, free_line, line) New functions for support
-       of line caching.
-       (write_text, text) Made static.
-       (text) Added to font support, not finished.
-
-Thu Aug 29 21:36:41 1996  Ben Pfaff  <blp@gnu.org>
-
-       * font.h: (struct font_desc) New members ascent, descent.
-
-       * groff-font.c: (groff_read_font) Calculates font ascent and
-       descent from the ascent and descent of the `d' and `p' characters,
-       respectively, as per a suggestion on comp.fonts.
-
-       * postscript.c: (ps_open_page, ps_close_page, ps_line_horz,
-       ps_line_vert, ps_line_intersection) Rewritten to deal with changed
-       prologue.
-       (write_text) Handles text right-justification and centering (not
-       full justification).  Still very inefficient.  (One output line
-       per character?!)
-       (struct output_char) Added fields for font and font size.
-       (text) Many bugfixes.
-
-Sat Aug 24 23:26:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * cmdline.c: (usage) Calls outp_list_classes().
-
-       * font.h: Comment fix.
-
-       * groff-font.c: New exported global var `space_index'.
-       (groff_init) New function to initialize `space_index'.
-       (hash_kern) Casts result to unsigned.
-       (font_name_to_index) Renamed font_char_name_to_index.  All
-       references changed.  Also, now returns the value of `space_index'
-       when passed an ASCII space character as an argument.  Fixed
-       handling of nulls.
-       (font_get_kern_adjust) Changed i from `int' to `unsigned'.
-       Handles passed NULL pointers properly.
-
-       * lexer.c: (parse_tagged_quote) Comment fix.  Better range
-       checking.
-
-       * output.c: (outp_list_drivers) Removed.  Removed all references.
-       
-       * output.h: Comment fixes.
-
-       * postscript.c: (ps_open_global) Calls groff_init().
-       (output_char) New structure.
-       (write_text) New function.
-       (text) No longer stubbed out!  Now the output is correct--with a
-       few exceptions, one of them being that the page has to be held
-       upside down into a mirror.
-
-Sun Aug 11 21:31:22 1996  Ben Pfaff  <blp@gnu.org>
-
-       * font.h: Comment fix.
-       
-       * font.c: (name_to_index) Renamed font_name_to_index, made extern.
-       All callers changed.
-       (number_to_index) Renamed font_number_to_index, made extern.  All
-       callers changed.
-       (font_get_kern_adjust, font_get_char_metrics) New functions.
-
-       * output.h: New constant OUTP_T_INTERNAL_DRAW.
-
-       * postscript.c: Changed default line width back to 1/2 point.
-       (ps_line_horz, ps_line_vert, ps_line_intersection) Now lines are
-       in the center of the space allotted for them, not just a fixed
-       offset from the edge of the space; this fixes some bugs.
-       (ps_line_intersection) Now supports all command line styles.
-       (ps_text_get_size) Bug fix in computation of em width.
-       (text) New function, the meat behind ps_text_metrics and
-       ps_text_draw.  Not complete.
-       (ps_text_metrics, ps_text_draw) Removed the stub taken from
-       ascii.c; call text().
-
-Sat Aug 10 23:28:17 1996  Ben Pfaff  <blp@gnu.org>
-
-       * arena.c: (arena_free) Assert that the argument is non-NULL.
-       
-       * groff-font.c: (add_kern) Calls arena_free() for old_kern if and
-       only if old_kern is non-NULL.
-
-       * postscript.c: (ps_init_driver) Changed default line width to 1
-       point.
-       (postopen) New prologue variables.
-       (ps_line_horz, ps_line_vert, ps_line_intersection) Implements some
-       more of the common line styles properly, but not all.
-       (ps_text_metrics) Fixed problem with this stubbed out version that
-       kept it from taking font sizes into account.
-
-Thu Aug  8 22:31:11 1996  Ben Pfaff  <blp@gnu.org>
-
-       * arena.c: (arena_malloc) Bug fix.
-       (arena_dump) [GLOBAL_DEBUGGING] New function.
-
-       * ascii.c: Comment fix.
-       (count_fancy_chars, delineate) Now static functions.
-       
-       * filename.c: (interp_vars) Bug fixes.
-
-       * font.h: Comment fixes.
-
-       * glob.c: (init_glob) Sets set_viewwidth, set_viewlength at
-       beginning in case we have an error message to display before
-       initializing the display.
-
-       * groff-font.c: Comment fix.  Changed rehash threshold from 2/3
-       full to 1/2 full.
-       (groff_read_font) Bug fixes.
-       (name_to_index) Increments hash.used.  Sets `name' field of hash
-       entry properly.
-       (add_kern) Sets kern_max_used after rehashing.  Other bug fixes.
-
-       * hash.c: Return type changed.
-
-       * postscript.c: Continued development.  Now marks lines on the
-       paper, but very buggy.
-
-Sat Aug  3 20:50:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Changed comments in many source files from `/* xxx /* yyy */' to
-       `/* xxx */ /* yyy */' for cleanliness.
-
-       * arena.c: (arena_sd_strdup) New function.
-       
-       * ascii.c: (struct ascii_driver_ext) New member `file'.
-       (ascii_init_driver) Fills out member `file' for initing; uses
-       close_file_ext for closing drivers.
-       (ascii_option) Changed %.*s back to %s because the a_string's are
-       always null-terminated.
-       (postopen, preclose) New functions.
-       (ascii_open_page) Uses new style of open_file_ext.
-       (ascii_option, commit_line_buf, output_lines) Use ext->file.file
-       instead of this->output.
-       (__assert_fail) Removed.
-
-       * cmdline.c: Changed syntax_message[].
-
-       * error.c: #include's <readline/history.h> only if the history
-       library is available, not if just the readline library is
-       available.
-
-       * filename.c: (expand_line) Removed alloca() support.
-       (interp_vars) No longer tilde-expands argument.  Limit on output
-       length removed.
-       (tilde_expand) Now treats argument as path rather than filename.
-       [!unix] Now is a no-op function.
-       (search_path) Better verbose message formatting.
-       (open_file, close_file) Comment fixes.
-       (close_file) [!unix] Doesn't bother with pipes.
-       (open_file_ext) Completely rewritten, interface revamped.
-       (close_file_ext) New function.
-
-       * font.h: Comment changes.
-
-       * frequencies.q: Removed AIX alloca support since it doesn't use
-       alloca.
-
-       * hash.c: Comment changes & additions.
-       (hsh_create) Initializes entire table instead of first M entries.
-       (hsh_probe) Stupid bug fixed.  Now it works.
-       (hsh_dump) [GLOBAL_DEBUGGING] New function.
-
-       * main.c: (parse) Detects EOF properly in token-eating loop.
-       Should the STOP token have its value changed to 0?
-
-       * misc.c: (blp_getdelim) [HAVE_GETDELIM] Now it's a macro.
-       (blp_getline) Now it's a macro.
-
-       * output.h: (struct outp_driver) Removed members output, filename.
-       
-       * output.c: (outp_init) [!NO_POSTSCRIPT] Installs PostScript
-       drivers in driver table.
-       (outp_read_devices) Frees buf.  Warns if there are no active
-       output drivers.
-       (outp_configure_clear) Sets outp_configure_vec to NULL after
-       deleting its elements.
-       (configure_driver, destroy_driver) Removed references to output,
-       filename members of outp_driver.
-       (outp_evaluate_dimension, internal_get_paper_size,
-       outp_get_paper_size) New functions.
-
-       * postscript.c: Continued development.  Now links but doesn't make
-       any marks on the page.  Lotsa bugs I suppose.
-
-       * str.c: (strcasecmp) [!HAVE_STRCASECMP] New function.
-
-       * str.h: Comment changes.
-
-Sat Jul 27 22:32:38 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Removed dependencies on non-nested comments in several files.
-       Also removed references to (unix || __unix__) in #if's since
-       prefh.orig makes those two equivalent.
-       
-       * ascii.c: (ascii_open_global) Creates ascii_arena.
-       (ascii_close_global) Destroys ascii_arena.
-       (ascii_init_driver) Doesn't create ascii_arena.
-       (ascii_copy_driver) Removed.
-       (ascii_option) Possible bugfix regarding %s vs. %.*s with a_string's.
-       (outp_class ascii_class) Removed ascii_copy_driver reference.
-
-       * frequencies.q: Now can display all statistics except median.
-       Still not finished.
-
-       * output.c: Handles outp_class.ref_count so output class
-       destructors are called properly.
-       (add_class) Sets ref_count to 0.
-       (configure_driver) Initializes class if ref_count++ is 0.
-       (destroy_driver) Destructs class if --ref_count is 0.  Frees the
-       class output file name.
-       
-       * output.h: (struct outp_class) Removed copy_driver, inited.
-       Added ref_count.
-
-       * postscript.c: Completely replaced but not finished.
-       
-Tue Jul 23 21:48:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       * approx.h: #includes <float.h>.
-
-       * arena.h, arena.c: Many functions changed to take an arena **
-       instead of an arena *, for consistency.  All callers changed.
-       (arena_alloc) Now creates a new arena if passed *A that is NULL.
-       (arena_destroy) Sets *A to NULL.
-       
-       * ascii.c: (delineate) Implements OUTP_T_VERT correctly.  Removed
-       assertion that `width' be positive.
-
-       * command.c: Removed #if's from cmd_table.
-       (walk_cmdtable_func) [0] New function (debug code).
-       (init_cmd_parser) [0] Dumps out cmd_table (debug code).
-       (parse_cmd) Doesn't return failure for unimplemented commands.
-
-       * common.h: (SYSMIS) Changed from DBL_MAX to -DBL_MAX.
-       (SYSCODE) New constant macro.
-
-       * descript.q: Checks for positive n_variables before performing
-       analysis.
-
-       * file-handle.q: (get_handle_by_filename) Bug fix: passes &f to
-       avl_find instead of &fp as arg 2.
-
-       * frequencies.g, frequencies.q: Continued updating; now compiles &
-       works again, but not complete.
-
-       * main.c: Changes to user messages.
-
-       * misc.c: (reverse) [0] New function.
-
-       * settings.h: Comment removed.  #includes "common.h".
-
-       * som.c: (som_set_null) New function.
-       (som_set_value, som_set_string, som_set_text) More detailing
-       assertions.
-       (som_set_float) Implemented function.
-       (dump_columnated_table) Bug fix regarding page breaks.
-       (draw_cell) Bug fix regarding text that spilled out of a cell.
-       (draw_intersection, draw_horz_rule, draw_vert_rule) No longer draw
-       null lines.
-       (get_cell_size) Support SCON_EMPTY cells.
-       (get_table_size) When calculating rules' widths and heights, mask
-       out SLIN_SPACING bit.  Added SOPT_X_HLTL support.
-       
-       * som.h: (som_any_cell) New option SOPT_X_HTLT.  Removed
-       SOPT_X_SHADE.
-       (struct som_submission_form) New member `header'; all users
-       changed.
-
-       * val-labs.c: (get_label) User messages changed.
-
-       * var.h: Changed FREQUENCIES structures.
-
-       * vars-atr.c: (is_num_user_missing, is_str_user_missing) Made
-       inline.
-       
-Fri Jul 19 19:11:13 1996  Ben Pfaff  <blp@gnu.org>
-
-       * approx.h: Definition of EPSILON now depends on system's
-       DBL_EPSILON.  Removed GNU C specific code.
-       (cmpapx) Renamed approx_compare.
-
-       * frequencies.g, frequencies.q: Continued updating; still doesn't
-       compile.
-
-       * groff-font.c: (name_to_index) Fix bug that kept it from
-       compiling.
-
-       * hash.c, hash.h: Completed work.
-
-       * var.h: Changes to freq_tab, frequencies_proc.
-       
-Wed Jul 17 21:23:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       New hashing code.
-       * hash.c, hash.h: New files.  Not completed.
-       * Makefile.am: Added hash.c to source file list.
-       * font.h: (struct font_desc) New member kern_size_p.
-       * groff-font.c: Uses hash.h.
-       (hashpjw) Moved to hash.c.
-       (next_prime_power) Rewrote, renamed hsh_next_prime, moved to
-       hash.c.
-       (static var hash) New member size_p.
-       * var.h: Includes hash.h.
-       (struct freq_tab) Changed AVL_TREE to hash_tab.
-
-       * vars-prs.c: Comment, formatting fixes.
-
-       * frequencies.g, frequencies.q: Continued updating.  Not yet
-       working.
-
-       * formats.c: Bug fix.
-
-Tue Jul 16 22:10:04 1996  Ben Pfaff  <blp@gnu.org>
-
-       Increasing parallelism between DESCRIPTIVES and FREQUENCIES.
-       * descript.g: Comment fixes.
-       * descript.q: Comment fixes.  Moved some declarations into var.h.
-       Made dsc_info a static table.  Updated FIXMEs.
-       (internal_cmd_descriptives) Beautified.
-       
-       * frequencies.q: Started updating into working order.
-       * frequencies.g: New file analogous to descript.g.
-       * var.h: Comment fixes.  Added structures for FREQUENCIES.
-       
-       * som.c: Removed vestiges of crushing and partial table support.
-
-Sun Jul 14 15:45:31 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Many more changes to som.c especially, but these will not be
-       documented as I have resolved to remove them.  This patchlevel is
-       being released solely so that I can fall back to it if I decide
-       that removing the changes is not a good idea.
-
-Sat Jul 13 09:58:44 1996  Ben Pfaff  <blp@gnu.org>
-
-       * som.c: (global var som) New member `cum_y'.
-       (build_target) Properly handles titles for partial tables.
-       (dump_partial_beg, dump_partial_mid, dump_partial_end)
-       Merged into single new function dump_partial().  Fixed problem
-       with titles on partial tables.
-       (dump_table) Calls dump_partial() for all parts of partial tables.
-       (dump_page) Criteria for drawing title changed.
-       
-Fri Jul 12 22:03:36 1996  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (cmd_table) Added LIST, WEIGHT.
-
-       * command.c: (cmd_remark) No longer frees `s' since it's not
-       dynamically allocated.
-       
-       * data-out.c: (convert_f) Now correctly handles the case where
-       abs(v->f)<1 but v->f rounds to a value of 1.00 given the specified
-       number of decimals.
-       (som_destroy_all_tables) Removed argument.  All callers changed.
-       (som_vline, som_hline) Argument validity checking corrected.
-       (som_set_value) Implemented half-heartedly.
-       (replicate_table) Copies tables piece-by-piece when using Checker.
-
-       * som.h: New line style SLIN_1THIN, currently equivalent to
-       SLIN_0.  New enum set SOM_SUB_*.
-       (struct som_submission_form) Removed `seq_no'.  Added `type'.
-       
-       * list.q: Newly working file; uses partial tables.
-       
-       * som.c: (som_reduce_table) Renamed som_set_table_height().
-       (som_crush) Removed argument `group'.
-       (global var som) Removed `nt', `seq_no'.  Added `type'.
-       (som_submit_table) Arguments changed.
-       (output_table) Removed partial table code.
-       (build_target) New arg; partial table support added.  All callers
-       changed.
-       (dump_plain_table) Removed partial table code.
-       (dump_partial_beg, dump_partial_mid, dump_partial_end) New functions.
-       (dump_table) Supports partial tables.
-       (dump_page) New argument to allow not drawing top and/or bottom
-       headers.  All callers changed.  Supports partial tables.
-
-Sat Jul  6 22:22:25 1996  Ben Pfaff  <blp@gnu.org>
-
-       * data-out.c: Changed `#include <approx.h>' to `#include
-       "approx.h".
-       (convert_F) Comment fix.  Now won't print `-.000', etc.
-
-       * descript.q: Now Z-scores work, although there appears to
-       be a bug (which might actually be in data-out.c:convert_F()).
-       (descriptives_trns_proc, descriptives_trns_free) New functions.
-       (run_z_pass) Implemented.
-       
-       * var.h: Comment fixes.
-       (dsc_z_score, descriptives_trns) New structs.
-       (descriptives_trns) Added to any_trns as `dsc'.
-
-       * error.c, error.h: New error class, IS (Installation Script
-       error), used in those instances where the error is in the
-       installation, but there is a script file or installation file that
-       can be usefully referred to.
-       
-       * output.c: Change many IE classes to IS classes.
-
-       * cases.c, command.c, common.c, crosstabs.q, expr-evl.c,
-       frequencies.q, list.q, vars-prs.c, vfm.c: Removed reference to
-       HAVE_MALLOC_H because Borland C++ alloca() is broken, so why
-       include the corresponding header?
-       
-       * glob.c: (init_glob) Don't malloc term_buffer under Checker.
-       Don't bail out if termcap can't be read.
-
-       * som.c: (som_destroy_table) Removed.
-       (som_reduce_table, som_destroy_all_tables) New functions.
-       (som_crush) New function, not implemented.
-       
-       * som.h: New table option STAB_CRUSH.  Comment fix.  New struct
-       som_submission_form.  Function prototypes revised.
-
-       Outputting huge tables (1000s of rows) a few rows at a time
-       is supported, though untested.  May even break everything.
-       Actually, the code doesn't even compile right now.
-       * som.c: (struct som) New fields htv, nt, seq_no.
-       (som_submit_table) Multiple arguments changed to a single
-       pointer to struct submission_form.  Only increments subtable_num
-       if seq_no is zero.  Only destroys table if it's not going to
-       be reused.
-       (replicate_table) New function.
-       (output_table) Comment fix.
-       (examine_table) Changed inline code to code calling
-       replicate_table().  Calculates htv.  Supports partial tables.
-       (draw_title) Removed comment.
-       (build_target) Only allows for title on first part of partial
-       tables.
-       (dump_plain_table) Only resets table chunk number on first part
-       of partial tables; FIXME: doesn't work quite right.  Supports
-       partial tables.
-       (dump_page) Titles only on first part of partial tables.
-
-Fri Jul  5 20:16:19 1996  Ben Pfaff  <blp@gnu.org>
-
-       * Thanks to an unreliable IDE hard drive, I have spent the last
-       day reconstructing my Debian GNU/Linux installation and redoing
-       the previous day's changes--somehow I managed to save every file
-       except for output.c and output.h.  So the following changes could
-       really be considered independent of the output.c, output.h changes
-       from Jul 4.
-
-       * output.h, output.c: Moved the outp_configure_vec global var,
-       outp_names struct, and enum set OUTP_S_* from output.h to output.c.
-       outp_configure_vec is now static.
-       
-Thu Jul  4 20:20:24 1996  Ben Pfaff  <blp@gnu.org>
-
-       * The entire philosophy behind configuration of the output drivers
-       changed.  Now there is a termcap-type configuration where drivers
-       to be read are determined beforehand, rather than parsing the
-       entire output init file and storing it in memory & deciding what
-       to actually use later.  Faster & more memory-efficient at the same
-       time, cool.
-       
-       * output.c: Comment fix.  Removed outp_init_drivers global var.
-       Removed all references to synonyms.  New structure outp_defn.  New
-       global vars outp_macros, outp_configure_vec.
-       (search_name, delete_name, add_name, check_configure_vec,
-       expand_name, find_defn_value) New static functions.
-       (outp_configure_clear, outp_configure_add, outp_configure_macro,
-       outp_read_devices) New extern functions.
-       (outp_init) Much functionality moved into outp_read_devices.
-       (outp_read_devices) Format of output init file changed; name of
-       file is `devices' rather than `output' to avoid Makefile
-       conflicts.
-       (outp_clear) Renamed outp_done.
-       (outp_list_classes) Bug fix, cleaned up.
-       (outp_list_drivers) Not implemented anymore.
-       (outp_configure_driver) Now a static function; simplified; now
-       interpolates macros; supports new structure.
-       (outp_enable_driver, match_synonym) Removed; all references
-       removed.
-       (find_driver) First argument removed.
-       
-       * output.h: Global var outp_init_drivers removed; new structure
-       outp_names; new enum set OUTP_S_*; new global var
-       outp_configure_vec; function prototypes for output.c exports
-       updated.
-       
-       * main.c: (main) Calls outp_read_devices() after parsing the
-       command line.
-       
-       * cmdline.c: (parse_command_line) New option -v --verbose;
-       --version changed to -V.  --device option changed syntax to just
-       take a single device name.  Accepts key=value declaration of
-       output init file macros.  Syntax message updated.
-
-       * filename.c: (expand_line) New function.
-       (interp_environ_vars) Renamed interp_vars; no longer uses
-       fixed-size buffer.
-       (blp_getenv) Allows $ARCH and $VER pseudo-environment-vars to be
-       overridden by real environment vars.
-       (search_path) Uses verbose_msg() instead of #ifdef'd printf().
-       * filename.h: interp_environ_vars() renamed interp_vars().
-       
-       * error.c, error.h: Added extern variable `verbosity', message
-       class MM.
-       
-       * error.c: (vmsg) Support message class MM.
-       (verbose_msg) New function.
-
-       * descript.q: (generate_z_varname) Bug fix in generation of
-       Z-score varnames.
-       (dump_z_table) Bug fix in column headers.
-       
-       * ascii.c: (ascii_init_driver) Changed minimum number of lines per
-       page from 29 to 15.  Don't set a default for ops[OPS_INIT,
-       OPS_DONE].  Writes the uninit string when the driver is closed.
-       (ascii_open_page) Write the init string before the first page.
-       (output_shorts) Form of main loop changed from `while' to `for'.
-       Bug fix with overstrikes: the character is printed *after* the
-       backspace.  Eliminated a lot of `& 0xff' modifiers.
-       (advance_to_left_margin) New function.
-       (return_carriage, output_lines) Handle left margin.
-
-Thu Jul  4 00:35:59 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: New option `carriage-return-style'.
-
-       * ascii.c: (count_fancy_chars) New function.
-       (delineate, text_metrics) Use new function; bug fixes regarding
-       rich text strings.
-       (text_draw) Bug fix with rich text.
-       (output_string, output_shorts) Reordered.
-       (output_shorts) Now handles boxchars and some overstrike font
-       changes.
-       (output_char, return_carriage) New functions.
-       (output_lines) Now handles overstriking and font changes properly;
-       some code moved to output_shorts.
-
-Tue Jul  2 22:13:23 1996  Ben Pfaff  <blp@gnu.org>
-
-       [GLOBAL_DEBUGGING]
-       * ascii.c: New member `debug' in ascii_driver_ext.
-       (ascii_init_driver, delineate) Uses new member.
-
-       Now you can set a vertical height on writing text.
-       * ascii.c: (delineate) Keeps track of vertical position.
-       (text_draw) No longer considers fully justified text an internal
-       error.
-       
-       * output.h: New flag OUTP_T_VERT; other OUTP_T_ values changed.
-
-       Tables' titles are drawn; they can have variable height.
-       * som.c: `som' struct has new member, title_height.
-       (draw_title) New argument.  Moved within file.  All caller
-       changed.
-       (build_target) New argument, amount of space needed for first row.
-       Calculates height of title, takes that into account.  All callers
-       changed.
-       (dump_plain_table, dump_columnated_table) Took calculation of y1,
-       y2 out of loop.
-       (dump_columnated_table) [GLOBAL_DEBUGGING] Debugging code
-       improved.
-       (dump_columnated_table) Organized for readability.
-       (dump_page) Makes use of som.title_height.
-
-       * som.c: Many comment bug fixes.
-
-       * descript.q: (try_name, generate_z_name) Bug fix regarding
-       generation of Z-score variable names.
-       * var.h: Removed num from descriptives_proc; all referents removed.
-
-Mon Jul  1 22:13:39 1996  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c: (ascii_line_horz, ascii_line_vert,
-       ascii_line_intersection) Added debugging code.
-
-       Added a descriptive line above each table to describe it.
-       * command.c: (parse_cmd) Calls som_new_series.
-       
-       * som.c: New static vars table_num, subtable_num.  New `som'
-       member `title'.
-       (dump_page) New arguments.
-       (som_submit_table) Handle new variables.
-       
-       * som.c, som.h: (som_submit_table) New arguments.  All callers
-       changed.
-       (som_new_series) New function.
-       (build_target) Makes room for extra line.
-       (draw_title) New function.
-       (dump_page) Calls draw_title.  Bug fix: doesn't always set
-       som.ext->cp to 0.
-       
-       Columnation of tables support.
-       * som.h: Deleted fr, lr, ri from som_table.  Reorganized.
-       
-       * som.c: Deleted references to fr, lr, ri.
-       (som_columnate) Bux fix: sets group member of table.
-       (som_add_options) Function removed.
-       (dump_table) Split into three functions; extensively reworked.
-       
-       * descript.q: (dump_z_table) Better output table formatting; added
-       title support to correspond to som.h changes.
-       (display) Title support.
-
-       * output.h: Added OUTP_T_NONE.
-       
-Mon Jul  1 13:00:00 1996  Ben Pfaff  <blp@gnu.org>
-
-       * descript.q: Improved handling of Z scores; still not perfect.
-       
-       * output.h, ascii.c: Added hook for getting em width of current
-       font.
-       
-       * som.c: Uses new em-width hook.  Added debugging code to
-       several functions.
-       (som_columnate) New argument.
-       (som_add_options) Removed.
-
-Jun 29 17:40:47 1996  Ben Pfaff  <blp@gnu.org>
-
-       * som.h, som.c, output.c, output.h, ascii.c: Updated to work with
-       rules as a property of the table instead of as a property of the
-       cells.
-       
-       * ascii.c: Added `header' to table of options.
-       
-       * descript.q: Added even shorter statistic names; modified to work
-       with new som interface.
-       
-       * misc.c (blp_getdelim): Bug fix.
-       
-       * version.c: includes 'conf.h'.
-       
-----------------------------------------------------------------------
-Local Variables:
-mode: change-log
-version-control: never
-End:
diff --git a/src/OChangeLog b/src/OChangeLog
new file mode 100644 (file)
index 0000000..bba2afa
--- /dev/null
@@ -0,0 +1,14204 @@
+2007-11-03 John Darrington <john@darrington.wattle.id.au>
+
+       * gnumeric-reader.c gnumeric-reader.h: New files.
+
+Thu May  4 21:47:48 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, move
+       procedure.c and procedure.h from src to src/data.  Update
+       makefiles and #includes accordingly.
+
+       * automake.mk: Remove special rule for src/procedure.o.
+
+       * procedure.c: Moved to src/data.
+
+       * procedure.h: Moved to src/data.
+
+Wed May  3 22:24:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       many global variables, consolidating procedure execution in
+       procedure.c.  Encapsulate transformations in new "struct
+       trns_chain".  Also, change implementation of N OF CASES, FILTER,
+       and PROCESS IF from special cases to transformations.
+        
+       * procedure.c: (global var vfm_source) Make static.  Changed
+       external references to use in_input_program(), proc_set_source(),
+       or proc_capture_output() instead.
+       (global var vfm_sink) Make static.  Changed external references to
+       use proc_set_sink() instead.
+       (global var default_dict) Move here from data/dictionary.c.
+       (static var permanent_trns_chain) New var.
+       (static var temp_dict) Renamed permanent_dict, updated references.
+       (static var temporary_trns_chain) New var.
+       (static var cur_trns_chain) New var.
+       (static var in_procedure) Removed.
+       (global var t_trns) Removed.
+       (global var n_trns) Removed.
+       (global var m_trns) Removed.
+       (global var f_trns) Removed.
+       (procedure) Even if there's "nothing to do" we need to clear
+       PROCESS IF, N OF CASES, vector state.  (This should be
+       abstracted.)
+       (multipass_callback) New function.
+       (multipass_procedure) New function.
+       (open_active_file) Add N OF CASES, FILTER, PROCESS IF
+       transformations.  Finalize transformations.  No need to call
+       ctl_stack_clear() anymore because finalizers will do that.
+       (write_case) Simplify and rewrite.
+       (execute_transformations) Removed.
+       (filter_case) Removed.
+       (close_active_file) Use proc_cancel_temporary_transformations().
+       No need to clear PROCESS IF, N OF CASES here anymore because
+       helpers do that.
+       (multipass_procedure_with_splits) Keep track of success.
+       (multipass_split_callback) Ditto.
+       (multipass_split_output) Ditto.
+       (discard_variables) No need to call ctl_stack_clear() anymore
+       because finalizers will do that.
+       (proc_capture_transformations) New function.
+       (add_transformation) Rewrite in terms of trns_chain_append().
+       (add_transformation_with_finalizer) New function.
+       (next_transformation) Rewrite in terms of trns_chain_next().
+       (proc_in_temporary_transformations) New function.
+       (proc_start_temporary_transformations) New function.
+       (proc_make_temporary_transformations_permanent) New function.
+       (proc_cancel_temporary_transformations) New function.
+       (cancel_transformations) Rename proc_cancel_all_transformations(),
+       rewrite in terms of trns_chain_destroy().
+       (proc_init) New function.
+       (proc_done) New function.
+       (proc_set_sink) New function.
+       (proc_set_source) New function.
+       (proc_has_source) New function.
+       (proc_capture_output) New function.
+       (add_case_limit_trns) New function.
+       (case_limit_trns_proc) New function.
+       (case_limit_trns_free) New function.
+       (add_filter_trns) New function.
+       (filter_trns_proc) New function.
+       (add_process_if_trns) New function.
+       (process_if_trns_proc) New function.
+       (process_if_trns_free) New function.
+
+Wed Apr 26 20:00:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * procedure.c (create_trns_case): Fix inverted decision on whether
+       numeric values should be initialized to 0 or SYSMIS.
+
+Wed Apr 26 19:48:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, assert
+       that add_transformation() is not called during procedure
+       execution.  Thanks to John Darrington for the suggestion.
+       
+       * procedure.c: (static var in_procedure) New var.
+       (internal_procedure) Get rid of recursive_call local var and
+       logic.
+       (open_active_file) Set in_procedure and make sure it wasn't
+       already set.
+       (close_active_file) Reset in_procedure and make sure it was
+       already set.
+       (add_transformation) Make sure we're not in a procedure.
+
+Wed Apr 26 19:33:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, break
+       procedure.c into multiple files.
+       
+       * procedure.c (vfm_last_invocation): Rename
+       time_of_last_procedure().  Update all references.
+       (struct storage_stream_info) Move to data/storage-stream.c.
+       (storage_sink_open) Ditto.
+       (destroy_storage_stream_info) Ditto.
+       (storage_sink_write) Ditto.
+       (storage_sink_destroy) Ditto.
+       (storage_sink_make_source) Ditto.
+       (var storage_sink_class) Ditto.
+       (storage_source_count) Ditto.
+       (storage_source_read) Ditto.
+       (storage_source_destroy) Ditto.
+       (storage_source_class) Ditto.
+       (storage_source_get_casefile) Ditto.
+       (storage_source_create) Ditto.
+       (null_sink_class) Move to data/case-sink.c.
+       (create_case_source) Move to data/case-source.c.
+       (free_case_source) Ditto.
+       (case_source_is_class) Ditto.
+       (create_case_sink) Move to data/case-sink.c.
+       (free_case_sink) Ditto.
+
+       * procedure.h: (struct case_source) Move to data/case-source.h.
+       (struct case_source_class) Ditto.
+       (struct case_sink) Move to data/case-sink.h.
+       (struct case_sink_class) Ditto.
+
+Thu Apr 27 09:28:25 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * automake.mk: Removed explicit dependencies for message.o, since
+       that module no longer exists.
+
+Wed Apr 26 15:29:45 2006  Ben Pfaff  <blp@gnu.org>
+
+       Start reforming procedure execution.  In this phase, get rid of
+       function prototypes for never-defined functions.
+       
+       * procedure.h: Get rid of function prototypes for never-defined
+       functions.
+
+Wed Apr 26 12:58:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       Improve the way we handle the various parsing "states".  Until now
+       we've hard-coded the state transitions in the command definition
+       file, but that's error-prone and, worse, it's redundant--we can
+       figure out what state we're in anyhow.  We can cleanly handle
+       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
+       
+       * procedure.c (case_source_is_complex): Removed.
+       (discard_variables) No need to set pgm_state anymore.
+
+Tue Apr 25 11:06:49 2006  Ben Pfaff  <blp@gnu.org>
+
+       Finish reforming error message support.  In this phase, move
+       message.c into libpspp.
+       
+       * message.c: Move to libpspp.
+
+Tue Apr 25 10:47:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, drop
+       actual message printing from core code, substituting a callback,
+       and add the callback to each UI.  Also, move verbose_msg() into
+       its own module.
+
+       * message.c: (var err_error_count) Renamed error_count and moved
+       to ui/terminal/msg-ui.c.
+       (var err_warning_count) Renamed warning_count and moved to
+       ui/terminal/msg-ui.c.
+       (err_check_count) Renamed check_msg_count() and moved to
+       ui/terminal/msg-ui.c.
+       (dump_message) Rewrote to take stream instead of function pointer
+       and moved to ui/terminal/msg-ui.c.
+       (msg_emit) Moved its guts to ui/terminal/msg-ui.c as handle_msg()
+       and rewrote to just pass message to callback.
+       
+       (var err_verbosity) Renamed "verbosity" and moved to
+       libpspp/verbose-msg.c.
+       (verbose_msg) Moved to libpspp/verbose-msg.c.
+       
+       (var err_already_flagged) Removed.
+       (puts_stdout) Removed.
+       
+       (var msg_handler) New static variable.
+       (msg_init) New function.
+       (msg_get_command_name) New function.
+       
+Mon Apr 24 17:40:08 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, rename
+       all the message functions and types to start with "msg", except
+       for the ones that will be moving to other modules anyway.
+
+       All references to the identifiers below were updated likewise.
+       
+       * message.c: (err_done) Renamed msg_done().
+       (err_push_file_locator) Renamed msg_push_msg_locator().
+       (err_pop_file_locator) Renamed msg_pop_msg_locator().
+       (err_location) Renamed msg_location().
+       (err_set_command_name) Renamed msg_set_command_name().
+
+Mon Apr 24 14:11:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       * message.c: Use exit.h from gnulib instead of checking for and
+       defining EXIT_SUCCESS and EXIT_FAILURE by hand.
+
+Sun Apr 23 22:00:23 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, get rid
+       of message "titles" and put the message text in `struct error'.
+       Now `struct error' encapsulates a message more properly.
+
+       * message.c: (tmsg) Removed.
+       (msg) Use err_msg() instead of err_vmsg().  Format message
+       ourselves.
+       (err_vmsg) Renamed err_msg().  Changed interface, dropping message
+       and va_list args which are now in the error struct.
+               
+Sun Apr 23 20:35:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.
+
+       * message.c: Use linebreak module from gnulib instead of home-brew
+       line breaking.
+       (puts_stdout) Rewrote.
+       (dump_message) Rewrote.  Changed interface and updated all callers.
+       (compulsory_break) Removed.
+       (char_is_break) Removed.
+       (break_before) Removed.
+       (break_after) Removed.
+       (macro BREAK_LONG_WORD) Removed.
+
+Sun Apr 16 20:41:10 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, we
+       divide the classification of messages along "category" and
+       "severity" axes.
+
+       * message.c: (err_vmsg) Rewrite to deal with categories and
+       severities in a straightforward manner instead of mixing them into
+       classes.
+       [0] (puts_stderr) Removed (dead code).
+       (msg) Changed first argument from `int' to `enum msg_class'.
+       (tmsg) Ditto.
+
+Sun Apr 16 18:53:12 2006  Ben Pfaff  <blp@gnu.org>
+
+       GNU standards require "file name" instead of "filename" in
+       documentation.  It's nice for our code to follow the convention
+       too.
+
+       Basically did search and replace in the whole source tree.  Major
+       changes in function names or struct member names have their own
+       change log entries.
+
+Sun Apr 16 15:58:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, we get
+       rid of VM() and the other msg() support for "verbosity", replacing
+       it by a new function verbose_msg().
+
+       * message.c: (verbose_msg) New function.
+       (err_vmsg) Remove support for verbosity levels.
+
+Sun Apr 16 11:46:51 2006  Ben Pfaff  <blp@gnu.org>
+
+       Start reforming error message support.  In this phase, we get rid
+       of "installation errors" and change all uses of msg() in the
+       output drivers to uses of error() or error_at_line().
+
+       * message.c: (err_vmsg) Get rid of IE, IS support.
+
+Sat Mar 11 14:17:47 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * automake.mk: Changed the pattern specific AM_CPPFLAGS to two target 
+         specific ones. Eventually there will be none at all.
+
+       * automake.mk: Moved the pspp binary to ui/terminal
+
+Sat Mar  4 12:59:08 2006  Ben Pfaff  <blp@gnu.org>
+
+       * In many source files, #include "compiler.h" to get GCC attribute
+       definitions.
+
+Sat Mar  4 12:28:09 2006  Ben Pfaff  <blp@gnu.org>
+
+       * In many source files, replace INT_DIGITS by
+       INT_STRLEN_BOUND(int) and include intprops.h.
+
+John Darrington:
+       
+       * Replaced '_' with '-' in most filenames.
+
+       * Renamed files as follows:
+               vfm.[ch] to procedure.[ch]
+               error.[ch] to message.[ch]
+               getl.[ch] to line-buffer.[ch]
+               mkfile.[ch] to make-file.[ch]
+               pfm-write.h to por-file-writer.h
+               pfm-write.c to por-file-writer.c
+               sfmP.h to sfm-private.h
+               lex-def.c to identifier.c
+               lex-def.h to identifier.h
+               sfm-read.c to sys-file-reader.c
+               sfm-read.h to sys-file-reader.h
+               sfm-write.h to sys-file-writer.h
+               sfm-write.c to sys-file-writer.c
+               chart.[ch] to chart-geometry.[ch]
+               val.h to value.h
+               var.h to variable.h
+               vars-atr.c to variable.c
+               ctl-stack.c to control-stack.c
+               ctl-stack.h to control-stack.h
+               dfm-read.c to data-reader.c
+               dfm-write.c to data-writer.c
+               dfm-write.h to data-writer.h
+               dfm-read.h to data-reader.h
+               apply-dict.c to apply-dictionary.c
+               mis-val.c to missing-values.c
+               sysfile-info.c to sys-file-info.c
+               modify-vars.c to modifiy-variables.c
+               rename-vars.c to rename-variables.c
+               val-labs.c to value-labels.c
+               var-display.c to variable-display.c
+               var-labs.c to variable-label.c
+               format-prs.c to format-parser.c
+               range-prs.c to range-parser.c
+               range-prs.h to range-parser.h
+               subclist.c to subcommand-list.c
+               subclist.h to subcommand-list.h
+               vars-prs.c to variable-parser.c
+               descript.c to descriptives.c
+               sort-prs.c to sort-criteria.c/sort-cases.c
+               sort-prs.h to sort-criteria.h
+               sel-if.c to select-if.c
+               algorithm.c to array.c
+               algorithm.h to array.h
+               bitvector.h to bit-vector.h
+               som.c to manager.c
+               som.h to manager.h
+               tab.h to table.h
+               tab.c to table.c
+               readln.c to read-line.c
+               readln.h to read-line.h
+               cmdline.c to command-line.c
+               cmdline.h to command-line.h
+
+
+Sat Feb 11 22:35:20 2006  Ben Pfaff  <blp@gnu.org>
+
+       General clean-ups and minor bug fixes.
+
+       * filename.h: Move DIR_SEPARATOR, PATH_SEPARATOR here from
+       pref.h.orig.
+
+       * lex-def.h: (macro CHAR_IS_ID1) Removed.  All references changed
+       to lex_is_id1().
+       (macro CHAR_IS_IDN) Removed.  All references changed to
+       lex_is_idn().
+       
+       * lex-def.c: (lex_is_id1) New function.
+       (lex_is_idn) New function.
+       (lex_skip_identifier) New function.
+       (lex_id_match_len) Return bool instead of int.
+       (lex_id_match) Ditto.
+
+       * command.c: (parse_command_name) Convert parsed words to
+       uppercase to make error messages easier to read.
+       (cmd_host) Fix return value.
+
+       * dfm-read.c: (read_inline_record) Use tokens to check for BEGIN
+       DATA, not specialized lexical analysis.
+
+       * print.c: (print_space_trns_proc) Count of lines should be `int',
+       otherwise we might never finish.
+       (print_space_trns_free) Close writer.
+
+       * lexer.c: (enum string_type) New enum.
+       (lex_get) Remove essentially unused local variable `cp'.
+       Use enum string_type values.  Use parse_id().
+       (parse_id) New function.
+       (lex_look_ahead) Recognize octal strings too.
+       (strip_comments) New function.
+       (lex_get_line) Rewrite.
+       (lex_preprocess_line) Removed.
+       (convert_numeric_string_to_char_string) Use enum string_type.
+       (parse_string) Ditto.
+
+       * autorecode.c: (recode) Clone correct number of bytes based on
+       source string width.
+
+Sat Feb 11 22:34:38 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reduce dependencies on getl, and of getl.
+
+       * data-in.c: (vdls_error) Don't output different message depending
+       on whether we're interactive.
+
+       * getl.h: (struct getl_line_list) Removed.
+       (struct getl_script) Removed.
+       (GETL_PRPT_*) Removed.
+       (GETL_MODE_*) Removed.
+       (GETL_PROMPT_FIRST, GETL_PROMPT_LATER, GETL_PROMPT_DATA,
+       GETL_PROMPT_CNT) New enums.
+
+       * settings.c: (static var prompt) Removed.
+       (static var cprompt) Removed.
+       (static var dprompt) Removed.
+       (settings_done) Don't initialize prompt, cprompt, dprompt.
+       (get_prompt) Removed.
+       (set_prompt) Removed.
+       (get_dprompt) Removed.
+       (set_dprompt) Removed.
+       (get_cprompt) Removed.
+       (set_cprompt) Removed.
+
+       * pfm-read.c: (corrupt_msg) Don't show filename and line number,
+       to get rid of getl_location().
+
+       * sfm-read.c: (corrupt_msg) Ditto.
+
+       * getl.c: (struct getl_source) New.
+       (static var cur_source) New.
+       (static var last_source) New.
+       (static var DO_REPEAT_level) Removed.
+       (global var getl_head) Removed.
+       (global var getl_tail) Removed.
+       (getl_initialize) Call init_prompts().
+       (getl_add_file) Removed.
+       (getl_include) Removed.
+       (getl_add_DO_REPEAT_file) Removed.
+       (getl_handle_line_buffer) Removed.
+       (getl_close_file) Removed.
+       (getl_close_all) Removed.
+       (getl_is_separate) Removed.
+       (getl_set_separate) Removed.
+       (getl_reading_script) Removed.
+       (append_source) New function.
+       (include_source) New function.
+       (create_source) New function.
+       (create_syntax_file_source) New function.
+       (create_filter_source) New function.
+       (create_function_source) New function.
+       (create_interactive_source) New function.
+       (getl_append_syntax_file) New function.
+       (getl_include_syntax_file) New function.
+       (getl_include_filter) New function.
+       (getl_include_function) New function.
+       (getl_append_interactive) New function.
+       (getl_abort_noninteractive) New function.
+       (getl_is_interactive) New function.
+       (close_source) New function.
+       (getl_location) Use new `cur_source' var.
+       (getl_uninitialize) Use close_source().  Call uninit_prompts().
+       (read_syntax_file) New function.
+       (read_line_from_source) New function.
+       (do_read_line) New function.
+       (getl_read_line) Rewrite.
+       (static var prompts) New.
+       (static var current_style) New.
+       (init_prompts) New function.
+       (uninit_prompts) New function.
+       (getl_get_prompt) New function.
+       (getl_set_prompt) New function.
+       (getl_set_prompt_style) New function.
+       (get_prompt) New function.
+
+       * command.c: Merge the EXIT (aka Q, aka QUIT) and FINISH commands,
+       and make EXIT undocumented.  EXIT was a PSPP extension that never
+       really entirely made sense.
+       (cmd_exit) Removed.
+       (cmd_finish) Return CMD_EOF unconditionally.
+       (cmd_clear_transformations) Drop requirement of interactivity.
+
+       * command.def: Merge the EXIT (aka Q, aka QUIT) and FINISH
+       commands.
+
+       * repeat.c: Major changes to match getl revision.
+       (struct line_list) New struct.
+       (enum repeat_entry_type) New.
+       (struct repeat_entry) Made `type' an enum repeat_entry_type.
+       (struct repeat_block) New.
+       (static var repeat_tab) Removed.
+       (static var count) Removed.
+       (static var line_buf_head) Removed.
+       (static var line_buf_tail) Removed.
+       (cmd_do_repeat) Rewritten.
+       (clean_up) Removed.
+       (append_record) Removed.
+       (recognize_keyword) New function.
+       (internal_cmd_do_repeat) Removed.
+       (parse_specification) New function.
+       (skip_indentor) New function.
+       (recognize_do_repeat) New function.
+       (recognize_end_repeat) New function.
+       (parse_lines) New function.
+       (create_vars) New function.
+       (parse_ids) Use enum repeat_entry_type.
+       (parse_strings) Ditto.
+       (find_DO_REPEAT_substitution) Renamed find_substitution(),
+       rewrote.
+       (perform_DO_REPEAT_substitutions) Renamed do_repeat_filter(),
+       rewrote.
+       (do_repeat_read) New function.
+       (do_repeat_close) New function.
+
+       * data-list.c: Don't need to keep track of eof from getl anymore,
+       because getl can tell us now.
+       (struct data_list_pgm) Removed `eof' member.
+       (cmd_data_list) Don't assign to `eof'.
+       (get_data_list_read_func) Renamed read_from_data_list(), changed
+       interface.
+       (read_from_data_list_fixed) Changed interface.
+       (read_from_data_list_free) Changed interface.
+       (read_from_data_list_list) Changed interface.
+       (data_list_trns_proc) Rewrote based on dfm_eof() and
+       dfm_reader_error().
+       (data_list_source_read) Check for dfm reader errors.
+
+       * dfm-read.c: (enum dfm_reader_flags) Removed DFM_EOF in favor of
+       new `eof_cnt' member in struct dfm_reader.
+       (struct dfm_reader) New `eof_cnt' member.
+       (dfm_close_reader) Check `eof_cnt', not DFM_EOF.
+       (dfm_open_reader) Initialize `eof_cnt'.
+       (read_inline_record) Set prompt style with
+       getl_set_prompt_style().  
+       (read_record) Rewrite.
+       (cmd_begin_data) Set prompt style with getl_set_prompt_style().
+
+       * include.c: (cmd_include) Use getl_include_syntax_file().
+
+       * set.q: (cmd_set) Use getl_set_prompt().
+
+       * html.c: (postopen) Remove "source-file" expansion variable, to
+       avoid use of getl_location().
+
+       * postscript.c: (postopen) Remove "source-file" expansion
+       variable, to avoid use of getl_location().
+
+       * cmdline.c: (parse_command_line) Drop -c command line option,
+       because it wasn't very useful.  -i command line option now calls
+       getl_append_interactive().  Use new getl function interfaces.
+       Drop support for clearing dictionary between syntax files and thus
+       the "+" command line syntax.
+       (static var pre_syntax_message) Remove description of now-gone -c
+       option.  Remove "+" command line syntax.
+
+       * main.c: (main) Only call handle_error() if the return value is
+       an error.
+       (execute_command) Use getl_set_prompt_style().  Drop support for
+       clearing dictionary between syntax files.
+       (handle_error) Handle CMD_CASCADING_FAILURE.  Don't call err_break().
+
+       * readln.c: Drop lots of #ifdefs.  Now that the Autoconf tests are
+       pickier, we can just use HAVE_READLINE.
+       (static var welcomed) Move into welcome().
+       (welcome) Make `welcomed' a local static var.  Check for and read
+       history file here.
+       (global var getl_mode) Removed.
+       (global var getl_interactive) Removed.
+       (global var getl_prompt) Removed.
+       (getl_read_line) removed.
+       (readln_read) New function.
+       (read_console) Removed.
+       
+
+Sat Feb 11 22:16:21 2006  Ben Pfaff  <blp@gnu.org>
+
+       Try to reduce some of the nastier dependencies on the error
+       module, and at the same time make PSPP nicer to deal with, by
+       getting rid of fatal errors.  All the existing calls to msg (FE,
+       ...) or err_cond_fail() or err_failure() have been replaced by
+       propagating an error upward to the command-dispatch layer.
+       Unfortunately this propagation took a fair bit of extra mechanism,
+       because now a lot of functions can fail that couldn't before.
+
+       New command return value CMD_CASCADING_FAILURE which indicates to
+       the command processor that syntax file processing should be
+       abandoned.  Many commands were modified to return
+       CMD_CASCADING_FAILURE.  When this modification was trivial it
+       isn't mentioned in detail below.
+
+       Transformation procedures (trns_proc_func) and free functions
+       (trns_free_func) now have a `bool' return type, which is normally
+       true, but false when an I/O or other serious error occurs.  All
+       transformation functions were modified to have this return type.
+       When this modification was trivial it isn't mentioned in detail
+       below.
+
+       * pspp-error.h: (FE) Removed this error class.
+
+       * error.c: (err_failure) Removed.
+       (err_cond_fail) Removed.
+       (err_break) Removed (it was unused).
+       (err_check_count) Don't cause a fatal error--instead, stop reading
+       the syntax file.
+       (err_vmsg) Don't have FE anymore, so no need to call terminate().
+
+       * any-reader.c: (any_reader_error) New function.
+
+       * any-writer.c: (any_writer_write) Propagate
+       scratch_writer_write_case()'s new return value.
+       (any_writer_error) New function.
+       (any_writer_close) Propagate underlying function's new return
+       value.
+
+       * casefile.c: Add an "error state" to a casefile.  A casefile that
+       encounters an I/O error enters the error state, and afterward
+       reading and writing cases fails.
+       (struct casefile) Add `ok' member.
+       (casefile_create) Set `ok' to true.
+       (casefile_destroy) Use io_error().
+       (casefile_error) New function.
+       (casefile_sleep) Now returns bool to indicate success.
+       (casefile_append) Ditto.
+       (casefile_append_xfer) Ditto.
+       (casefile_to_disk) Ditto.
+       (write_case_to_disk) Don't do anything in error state.
+       (flush_buffer) Don't do anything in error state.  Use io_error().
+       (reader_open_file) Ditto.
+       (fill_buffer) Ditto.
+       (casereader_read) Don't do anything in error state.  Handle
+       errors.
+       (casereader_read_xfer_assert) Removed, because now an I/O error
+       can occur even if the caller knows a case exists.
+       (io_error) New function.
+
+       * mkfile.c: (make_temp_file) Make failure non-fatal.
+       (make_unique_file_stream) Ditto.
+
+       * pfm-read.c: Add an error state.
+       (struct pfm_reader) Add `ok' member to indicate error state.
+       (error) Set `ok' to false.
+       (pfm_open_reader) Set `ok' to true.  Make failure non-fatal.
+       (pfm_read_case) Don't do anything in error state.
+       (pfm_read_error) New function.
+
+       * pfm-write.c: Postpone most error checking in favor of checking
+       ferror() afterward.
+       (pfm_open_writer) Make failure non-fatal.  Check for write error
+       after writing header.
+       (buf_write) Don't do anything if error has occurred.  Postpone
+       error checking.  Change return type to void.
+       (write_float) Postpone error checking.  Change return type to
+       void.
+       (write_int) Ditto.
+       (write_string) Ditto.
+       (write_header) Ditto.
+       (write_version_data) Ditto.
+       (write_format) Ditto.
+       (write_value) Ditto.
+       (write_variables) Ditto.
+       (write_value_labels) Ditto.
+       (pfm_write_case) Don't do anything if error has occurred.
+       (pfm_write_error) New function.
+       (pfm_close_writer) Change return type to bool.  Return false if an
+       I/O error occurred.
+
+       * scratch-reader.c: (scratch_reader_error) New function.
+
+       * scratch-writer.c: (scratch_writer_write_case) Change return type
+       to bool.  Propagate casefile error return.
+       (scratch_writer_error) New function.
+       (scratch_writer_close) Change return type to bool.  Propagate
+       casefile error return.
+
+       * sfm-read.c: Add an error state.
+       (struct sfm_reader) Add `ok' member.
+       (sfm_open_reader) Initialize `ok'.  Make errors non-fatal.
+       (buf_read) Set `ok' to false on error.
+       (buffer_input) Do nothing in error state.  Set `ok' to false on
+       error.
+       (read_compressed_data) Set `ok' false on error.
+       (sfm_read_case) Return false in error state.
+       (fread_ok) Set `ok' false on error.
+       (sfm_read_error) New function.
+
+       * sfm-write.c: Postpone most error checking in favor of checking
+       ferror() afterward.
+       (sfm_open_writer) Make failure non-fatal.  Check for write error
+       after writing header.
+       (write_header) Postpone error checking.  Change return type to
+       void.
+       (write_variable) Ditto.
+       (write_value_labels) Ditto.
+       (write_documents) Ditto.
+       (write_variable_display_parameters) Ditto.
+       (write_longvar_table) Ditto.
+       (write_rec_7_34) Ditto.
+       (buf_write) Ditto.
+       (ensure_buf_space) Ditto.
+       (sfm_write_case) Do nothing if write error has occurred.
+       (sfm_write_error) New function.
+       (pfm_close_writer) Change return type to bool.  Return false if an
+       I/O error occurred.
+
+       * var.h: Introduced a new return value for trns_proc_func that
+       means "a serious error has occurred, so abort the procedure
+       entirely".  Because the hard-coded values of -1, -2, etc. were
+       becoming even a worse idea now, also introduced some macros for
+       them: TRNS_CONTINUE, TRNS_DROP_CASE, TRNS_ERROR, TRNS_NEXT_CASE,
+       TRNS_END_FILE.  Also replaced all references to the hard-coded
+       values by uses of the macros.
+       
+       * command.h: New command return value CMD_CASCADING_FAILURE which
+       indicates to the command processor that syntax file processing
+       should be abandoned.
+
+       * dfm-read.c: (dfm_open_reader) Make failure non-fatal.
+       (dfm_reader_error) New function.
+       (read_inline_record) Make unexpected end of file nonfatal.
+       (read_file_record) Make read error nonfatal.
+       (dfm_eof) Make second unexpected end of file nonfatal.
+       (cmd_begin_data) Make errors nonfatal.  
+       
+       * dfm-write.c: (dfm_open_writer) Make failure non-fatal.
+       (dfm_write_error) New function.
+       (dfm_put_record) Do nothing in error state.  Now return error
+       state.
+       (dfm_close_reader) Now return `bool' indicating error state.
+
+       * file-type.c: (file_type_source_read) Now return `bool'
+       indicating error state.
+
+       * get.c: (case_reader_source_read) Now return `bool' indicating
+       write error.
+       (case_writer_destroy) Ditto.
+       (case_writer_write_case) Ditto.
+       (struct mtf_proc) New member `ok' indicating error state.
+       (cmd_match_files) Initialize and deal with `ok'.
+       (mtf_processing_finish) Now return `bool' indicating I/O error.
+       (mtf_free_file) Renamed mtf_close_file().  Now return `bool'
+       indicating I/O error.
+       (mtf_free) Now return `bool' indicating I/O error.
+       (mtf_delete_file_in_place) Ditto.
+       (mtf_read_nonactive_records) Ditto.
+       (mtf_processing) Ditto.
+
+       * inpt-pgm.c: (input_program_source_read) Now return `bool'
+       indicating I/O error.  Handle new TRNS_ERROR transformation return
+       value.
+
+       * matrix-data.c: Introduce error state.
+       (cmd_matrix_data) Check error return values.
+       (read_matrices_without_rowtype) Now return `bool' indicating I/O
+       error.
+       (matrix_data_read_without_rowtype) Ditto.
+       (dump_cell_content) Ditto.
+       (nr_output_data) Ditto.
+       (read_matrices_with_rowtype) Ditto.
+       (matrix_data_read_with_rowtype) Ditto.
+       (wr_output_data) Ditto.
+
+       * lexer.c: (lex_init) Make unexpected eof non-fatal.
+       (lex_get) Ditto.
+       (lex_look_ahead) Ditto.
+       (unexpected_eof) Removed.
+       (convert_numeric_string_to_char_string) Make unexpected eof
+       non-fatal.
+       (parse_string) Ditto.
+
+       * flip.c: Make I/O errors non-fatal.
+       (struct flip_pgm) Add `pool', `output_buf' members.
+       (cmd_flip) Create and use pool.  Propagate errors.
+       (destroy_flip_pgm) Rewrite, using pool.
+       (struct flip_sink_info) Removed.
+       (flip_sink_create) Use pool.  Make errors non-fatal.
+       (flip_sink_write) Make errors non-fatal.
+       (flip_file) Make errors non-fatal.  Make `bool' return type to
+       indicate failure.
+       (flip_sink_destroy) Remove.
+       (static var flip_sink_class) Use NULL as destroy func, not
+       flip_sink_destroy().
+
+       * sort.c: Make I/O errors non-fatal.  Propagate errors.
+       (sort_active_file_in_place) Propagate errors.
+       (sort_active_file_to_casefile) Ditto.
+       (do_internal_sort) Ditto.
+       (do_external_sort) Ditto.
+       (write_runs) Ditto.
+       (destroy_initial_run_state) Propagate errors via new `bool' return
+       type.
+       (merge) Propagate errors.
+       (merge_once) Ditto.
+
+       * output.c: [GLOBAL_DEBUGGING] Remove reentrancy detection,
+       because it used msg (FE, ...) and wasn't very useful.
+
+       * main.c: (handle_error) Handle CMD_CASCADING_FAILURE.
+
+       * vfm.c: (struct write_case_data) Change `proc_func' return type
+       to bool.
+       (procedure) Add `bool' return type to indicate I/O error.
+       Propagate errors.
+       (internal_procedure) Ditto.
+       (write_case) Ditto.
+       (execute_transformations) If a transformation returns TRNS_ERROR,
+       propagate the error.
+       (close_active_file) Add `bool' return type to indicate I/O error.
+       Propagate errors.
+       (cancel_transformations) Add `bool' return type to indicate I/O
+       error.  Propagate errors.
+       (struct split_aux_data) Change `proc_func' return type to bool.
+       (procedure_with_splits) Change `proc_func' return type to bool.
+       Add `bool' return type to indicate I/O error.
+       (multipass_procedure_with_splits) Change `split_func' return type
+       to bool.  Add `bool' return type to indicate I/O error.
+       (multipass_split_callback) Add `bool' return type to indicate I/O
+       error.  Propagate errors.
+
+       * vfm.h: (struct case_source_class) Change `read' return type from
+       void to bool to allow reporting I/O errors.  Updated all
+       implementations to do so.
+       (struct case_sink_class) Change `write' return type from void to
+       bool to allow reporting I/O errors.  Updated all implementations
+       to do so.
+
+Sun Feb 12 18:12:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * pool.c: Useful new functions.
+       (pool_tmpfile) New function.
+       (pool_attach_file) New function.
+       (pool_detach_file) New function.
+       (pool_fopen) Reimplement in terms of pool_attach_file().
+       (pool_fclose) Reimplement in terms of pool_detach_file().  Fix
+       double-free.
+
+       * str.c: Useful new functions.
+       (ds_swap) New function.
+       (ds_rtrim_spaces) New function.
+       (ds_chomp) New function.
+       (ds_is_empty) New function.
+       (ds_first) New function.
+       (ds_last) New function.
+
+Sat Feb 11 21:51:21 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of finished, start_interactive globals.
+
+       * command.c: (cmd_exit) Instead of setting `finished', return
+       CMD_EOF.
+       (cmd_finish) Ditto.
+
+       * command.h: New enum CMD_EOF.
+
+       * main.c: (global var finished) Removed.
+       (global var start_interactive) Removed.
+       (main) Execute commands until CMD_EOF is the return value.
+       If parse_command_line() returns false, don't execute any commands
+       at all.
+
+       * cmdline.c: (parse_command_line) If the command line indicates we
+       shouldn't execute syntax files, return false instead of
+       terminating.
+       (usage) Don't terminate.
+
+Sat Feb 11 21:48:31 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of cur_proc global.  Replace by functions in err and tab
+       modules, which were the users.
+
+       * error.c: (static var command_name) New static var.
+       (err_vmsg) Use command_name.
+       (err_set_command_name) New function.
+
+       * tab.c: (static var command_name) New static var.
+       (tabi_title) Use command_name.
+       (tab_set_command_name) New function.
+
+       * command.c: (global var cur_proc) Removed.
+       (cmd_parse) Call err_set_command_name(), tab_set_command_name()
+       around executing command to set and clear command name.
+
+Sat Feb 11 21:44:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of glob.c, glob.h.
+
+       * Makefile.am: (pspp_SOURCES) Remove glob.c, glob.h.
+       
+       * dictionary.c: Move default_dict definition here.
+
+       * glob.c: Removed.
+       (global var FILTER_before_TEMPORARY) Variable removed.  All
+       references deleted.  The info in this var was redundant with
+       temp_dict, so they were changed to use temp_dict where needed.
+
+       * glob.h: Removed.
+
+       * start-date.c: New file. Moved get_start_date() here.
+
+       * start-date.h: New file.
+
+Fri Feb  3 20:34:52 2006  Ben Pfaff  <blp@gnu.org>
+       * font.h: (struct font_set) Removed, because unused.
+Sat Jan 28 17:45:36 2006  Ben Pfaff  <blp@gnu.org>
+
+       Cleaner (faster?) way to compact cases.
+
+       * dictionary.c: (dict_compact_case) Removed.
+       (dict_needs_compaction) New function.
+       (struct copy_map) New structure.
+       (struct dict_compactor) New structure.
+       (dict_make_compactor) New function.
+       (dict_compactor_compact) New function.
+       (dict_compactor_destroy) New function.
+       
+Sat Jan 28 17:24:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       Cleanups.
+
+       * data-list.c: Make data_list_source_class static.
+       (dump_fixed_table) Use fh_get_name() to describe source of data.
+       (dump_free_table) Ditto.
+       (cmd_repeating_data) Eliminate special cases for inline file.
+
+       * dictionary.c: (dict_contains_var) Change return value from int to
+       bool.
+       (dict_rename_vars) Ditto.
+       (dict_create_vector) Ditto.
+
+Sat Jan 28 17:20:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       Add scratch file handles.
+
+       Now a file handle can refer to a disk file, to an in-memory
+       structure, or to the "inline" file, instead of just to a disk
+       file.  The introduction of new categories means that special cases
+       for the inline file in a few places could be eliminated, but it
+       also means that code that assumed that a handle refers to a file
+       has to check for that.
+
+       Also, now file handles can be freed, so code now must be sure not
+       to access a handle after closing it (with fh_close()).
+
+       * Makefile.am: Add any-reader.c, any-reader.h, any-writer.c,
+       any-writer.h, scratch-handle.c, scratch-handle.h,
+       scratch-reader.c, scratch-reader.h, scratch-writer.c,
+       scratch-writer.h to pspp_SOURCES.
+
+       * any-reader.c: New file.
+       
+       * any-reader.h: New file.
+       
+       * any-writer.c: New file.
+       
+       * any-writer.h: New file.
+
+       * scratch-handle.c: New file.
+       
+       * scratch-handle.h: New file.
+
+       * scratch-reader.c: New file.
+       
+       * scratch-reader.h: New file.
+
+       * scratch-writer.c: New file.
+       
+       * scratch-writer.h: New file.
+
+       * aggregate.c: Use an any_writer instead of an sfm_writer, to add
+       flexibility.
+
+       * apply-dict.c: Use an any_reader instead of an sfm_reader, to add
+       flexibility.
+
+       * command.def: Add CLOSE FILE HANDLE command.
+
+       * dfm-reader.c: Now fewer special cases for inline file.
+       (static var inline_open_cnt) Removed.
+       (static var inline_file) Removed.
+       (dfm_close_reader) Eliminate a special case for inline file.
+       Reorganize to avoid access-after-free.
+       (dfm_open_reader) Eliminate a special case for inline file.
+       (read_inline_record) Use bool instead of int.  No need to
+       increment line number.
+       (read_file_record) Use bool instead of int.
+       (read_record) Check whether file handle is inline file, instead of
+       for null pointer.
+       (dfm_eof) Ditto.
+       (dfm_expand_tabs) Ditto.
+       (dfm_push) Ditto.
+       (dfm_pop) Ditto.
+       (cmd_begin_data) Fix inaccurate check for whether the inline file
+       is in use--now we can tell by checking whether the inline file's
+       open count is positive.
+       
+       * file-handle-def.c: (struct file_handle) Reorder members.  Add
+       `deleted' member.  Add `referent' member.  Add `sh' member.
+       (static var default_handle) New variable.
+       (static var inline_file) New variable.
+       (fh_init) Initialize inline file.
+       (free_handle) New function.
+       (fh_done) Rewrite.
+       (fh_from_name) Don't return deleted handles.
+       (fh_from_filename) Ditto.
+       (fh_create) Removed.
+       (create_handle) New function.
+       (fh_create_file) New function.
+       (fh_create_scratch) New function.
+       (fh_inline_file) New function.
+       (fh_free) Rewrite.
+       (fh_open) Now requires a referent type mask and verifies it.  All
+       references updated.
+       (fh_close) If open_cnt goes to 0 on a deleted handle, free it.
+       (fh_is_open) New function.
+       (fh_get_referent) New function.
+       (fh_get_filename) Limit to handles that refer to files.
+       (fh_get_mode) Ditto.
+       (fh_get_record_width) Limit to handles that refer to files or the
+       inline file.
+       (fh_get_tab_width) Ditto.
+       (fh_get_scratch_handle) New function.
+       (fh_set_scratch_handle) New function.
+       (fh_get_default_handle) New function.
+       (fh_set_default_handle) New function.
+
+       * file-handle.h: (enum fh_referent) New type.
+       (enum fh_mode) Rename MODE_TEXT to FH_MODE_TEXT, MODE_BINARY to
+       FH_MODE_BINARY, and update all usages.
+
+       * file-handle.q: Add "scratch" as a possible mode.
+       (cmd_file_handle) Mention CLOSE FILE HANDLE in error message.
+       Use lex_end_of_command(), lex_sbc_missing().  Support creating
+       scratch handles.
+       (cmd_close_file_handle) New function.
+       (referent_name) New function.
+       (fh_parse) Now takes a referent type mask to specify handles that
+       can be accepted.  Updated all references.
+       
+       * filename.c: (fn_extension) New function.
+
+       * get.c: Use any_reader and any_writer and thereby merge code that
+       has been duplicated for each kind of file.  Also, we had something
+       here called `any_writer' before, so its name had to be changed to
+       `case_writer'.
+       (enum operation) Removed, because unused.
+       (struct get_pgm) Removed.
+       (get_pgm_free) Removed.
+       (get_source_destroy) Removed.
+       (get_source_read) Removed.
+       (global var get_source_class) Removed.
+       (static var case_reader_source_class) Removed.
+       (enum reader_command) New enum.
+       (struct case_reader_pgm) New struct.
+       (parse_read_command) New function.
+       (case_reader_pgm_free) New function.
+       (case_reader_source_destroy) New function.
+       (case_Reader_source_Read) New function.
+       (cmd_get) Rewrote as a call to parse_read_command().
+       (cmd_import) Ditto.
+       (struct any_writer) Rename to case_writer.  Drop `writer_type',
+       `writer' members in favor of an `any_writer' member named
+       `writer'.
+       (any_writer_destroy) Rename case_writer_destroy.  Use
+       any_writer_close().
+       (parse_write_command) Allow scratch files.  Use any_writer.
+       (any_writer_write_case) Rename case_writer_write_case().  Use
+       any_writer_write().
+`      (struct mtf_file) Use any_reader.
+       (cmd_match_files) Allow scratch files.  Use any_reader.
+       (mtf_free_file) Use any_reader_close().
+       (mtf_read_nonactive_records) Use any_reader_read().
+       (mtf_processing) Use any_reader_read().
+       (struct import_pgm) Removed.
+       (import_pgm_free) Removed.
+       (import_source_destroy) Removed.
+       (import_source_read) Removed.
+       (global var import_source_class) Removed.
+
+       * glob.c: (global var default_handle) Removed.  Replaced all
+       references by fh_get_default_handle() or fh_set_default_handle().
+
+       * pfm-read.c: (static var portable_to_local) Moved from inside
+       read_header() to top level.
+       (pfm_detect) New function.
+
+       * pfm-write.c: (pfm_write_case) Make case argument const.
+       Reorganize to avoid access-after-free.
+
+       * print.c: (dump_table) Use fh_get_name() to describe source of
+       data.
+
+       * sfm-read.c: (sfm_close_reader) Reorganize to avoid
+       access-after-free.
+       (sfm_detect) New function.
+
+       * str.c: (str_lowercase) New function.
+
+       * vfm.c: Use new compaction interface.
+       (static var compaction_necessary) Removed.
+       (static var compactor) New variable.
+       (open_active_file) Initialize compactor.
+       (write_case) Use compactor.
+       (close_active_file) Free compactor.
+       
+Wed Jan 11 19:28:39 2006  Ben Pfaff  <blp@gnu.org>
+
+       Clean up file handle code in preparation to add scratch file
+       handles.
+       
+       * file-handle-def.c: Lots of formatting cleanup.  Added function
+       comments.
+       (struct file_handle) Renamed `length' member
+       to `record_width'.  All references updated.
+       (fh_init) New function.  Moved here from file-handle.q.
+       (fh_done) New function.  Moved here from file-handle.q and
+       rewrote.
+       (get_handle_with_name) Renamed fh_from_name().
+       (get_handle_for_filename) Renamed fh_from_filename().
+       (create_file_handle) Renamed fh_create().  Changed to take a
+       `struct fh_properties' instead of discrete values.  Updated all
+       references.
+       (create_file_handle_with_defaults) Removed.  Updated all
+       references to use fh_create() with fh_default_properties().
+       (fh_default_properties) New function.
+       (destroy_file_handle) Removed.  The code is now in fh_done().
+       (handle_get_name) Renamed fh_get_name().
+       (handle_get_filename) Renamed fh_get_filename().
+       (handle_get_record_width) Renamed fh_get_record_width().
+       (handle_get_tab_width) Renamed fh_get_tab_width().
+
+       * file-handle-def.h: Formatting, comment fixes.
+       (enum file_handle_mode) Renamed struct fh_mode.
+       (struct fh_properties) New structure.
+       (fh_init) Move prototype here from file-handle.h.
+       (fh_done) Ditto.
+       (fh_close) Ditto.
+
+       * file-handle.q: (static var handle_list) Removed.
+       (fh_parse) Don't add handle to handle_list, because
+       file-handle-def.c has its own list.
+       (fh_init) Moved to file-handle-def.c.
+       (fh_done) Ditto.
+
+Sun Jan 9 01:09  Jason Stover  <jason@sakla.net>
+
+       * regression.q: (run_regression) Moved coefficient initialization
+       to the linreg library. Altered other functions accordingly.
+
+Sat Jan  7 13:30:54 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+        * command.c data-in.c main.c: Fixed bug which crept in when 
+          separating getl from readline.
+
+        * vars-atr.c value-labels.h: Fixed constness of  val_labs_count.
+
+Fri Dec 23 20:59:01 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * getl.c error.c: Separated file_loc functionality from error.c
+
+Mon Dec 19 14:01:56 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * format.c: Additional error checking.
+       * getl.[ch]: Separated into getl.c and readln.c
+       * settings.[ch]: Made CC_CNT public
+
+Fri Dec 16 09:11:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q: Fixed buglet when cleaning up at end of procedure.
+
+Tue Dec 13 22:34:42 2005  Ben Pfaff  <blp@gnu.org>
+
+       Move global initialization and cleanup code into main.c.
+       Remove vestigial log infrastructure.
+       Minor related cleanups.
+       
+       * command.c: (shell) When execl() fails, use _exit(), not
+       err_hcf().
+
+       * error.c: (err_hcf) Move into main.c, rename terminate().  All
+       callers updated.
+       (err_done) New function with just the error.c-specific code for
+       err_hcf().  Called by terminate().
+
+       * glob.c: Removed all Borland C, DJGPP cruft.
+       (init_glob) Merged into main().
+       (done_glob) Merged into terminate().
+       (get_date) Removed.
+       (get_start_date) New function.  All users of curdate updated to call
+       this function instead.
+
+       * lexer.c: (lex_init) Moved initialization of tokstr here, from
+       init_glob().
+       (lex_done) Moved destruction of tokstr here, from done_glob().
+
+       * main.c: (global var pgmname) Removed.  Changed all references to
+       program_name, which is defined by gnulib.
+       (global var curdate) Removed.
+       (main) Moved init_glob() code here.  Merged parse_script() in
+       here.
+       (parse_script) Removed.
+       (terminate) Moved err_hcf() here from error.c and renamed
+       terminate().  Merged done_glob() code in here.  Call err_done().
+       All callers updated.
+       (i18n_init) New function.
+       (fpu_init) New function.
+
+       * output.c: (outp_init) Make void.
+       (init_default_drivers) New function.
+       (outp_read_devices) If no drivers are initialized successfully,
+       call init_default_drivers() to initialize a default driver.
+       (outp_done) Make void.
+       (static var prog) Make const.
+       (parse_options) Make parameter const.
+       (colon_tokenize) Make return value const.
+       (configure_driver) Change prototype to take a broken-down driver
+       configuration instead of a line of text.
+       (configure_driver_line) New function that does what
+       configure_driver() did before.
+
+       * q2c.c: (global var pgmname) Rename program_name.
+
+       * settings.c: (settings_init) Renamed from init_settings().
+       (settings_done) Renamed from done_settings().
+
+       * vfm.c: (global var last_vfm_invocation) Make static.
+       (vfm_last_invocation) New function.  All references to
+       last_vfm_invocation update to call this.
+       (procedure) Call update_last_vfm_invocation().
+       (internal_procedure) Ditto.
+       (update_last_vfm_invocation) New function.
+       
+Sat Dec 10 23:30:19 2005  Ben Pfaff  <blp@gnu.org>
+
+       Separate random numbers from other settings because of GSL
+       dependency.
+
+       * Makefile.am: Add random.c, random.h to sources.
+
+       * glob.c: (init_glob) Call random_init().
+       (done_glob) Call random_done().
+
+       * settings.c: (static var rng) Move to random.c.
+       (done_settings) Move freeing of RNG to random_done().
+       (get_rng) Move to random.c
+       (set_rng) Ditto.
+
+       * random.c: New file.
+
+       * random.h: New file.
+
+Sat Dec 10 18:13:36 2005  Ben Pfaff  <blp@gnu.org>
+
+       Separate settings and the SET command, for modularity.
+       
+       * Makefile.am: Add settings.c to sources.
+
+       * glob.c: (global variable test_mode) Removed.
+
+       * set.q: Remove all the set_* variables.  Remove a lot of obsolete
+       SPSS/PC+ settings.  Remove the aux_*() routines.  Moved the
+       get_*() functions into settings.c.  Rewrite the settings code and
+       functions to call the new set_*() functions.  Rewrite custom
+       currency parsing.  Write new by-hand cmd_show().
+
+       * esttings.c: New file.  Moved the get_*() functions here from
+       set.q.  Created new set_*() functions to correspond with them.
+       Regularized the names and types of some functions and updated
+       their callers.  Added static, file-scope variables to support the
+       settings.
+
+       * q2c.c: Remove "aux" support, which was only needed by set.q.
+       
+Sun Nov 27 06:43:46 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * data-out.c format.h: Added return value to data_out function.
+
+       * value-labels.c: Fixed bug in val_labs_remove.
+
+Sat Nov  5 18:37:26 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Remove devind.c, devind.h from list of source
+       files.
+
+       * devind.c: Removed.
+
+       * devind.h: Removed.
+
+       * list.q: Removed "support" for devind.
+
+       * output.c: Don't add devind class.
+
+Sat Nov  5 18:21:00 2005  Ben Pfaff  <blp@gnu.org>
+
+       * var.h: (struct variable) Make `init', `reinit' bool values.
+       Rearrange fields.
+
+Fri Nov  4 19:43:01 2005  Ben Pfaff  <blp@gnu.org>
+
+       * recode.c: Rewrote whole file, as clean-up.
+
+Fri Nov  4 19:37:50 2005  Ben Pfaff  <blp@gnu.org>
+
+       * pool.c: Don't make alignment exception for x86.
+       (pool_alloc) Return null for 0-size blocks.
+       (pool_alloc_unaligned) New function.
+       (pool_strndup) Removed.  Changed callers to use pool_clone_unaligned().
+       (pool_clone_unaligned) New function.
+       (pool_strdup) Use pool_clone_unaligned().
+
+       * var.h: (enum var_type) Give the NUMERIC, ALPHA enum this name.
+       (struct variable) Use `enum var_type' for `type'.
+
+       * vars-atr.c: (var_type_adj) New function.
+       (var_type_noun) New function.
+
+       * vars-prs: (parse_mixed_vars) Fix freeing code.
+       (parse_mixed_vars_pool) New function.
+
+Wed Nov  2 21:24:48 2005  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle-def.c: Needed another #include, to avoid missing
+       prototype warning.
+
+       * file-handle.q: (cmd_file_handle) Declarations must precede
+       statements.  Free parse data on success as well as on failure, to
+       avoid memory leak.
+
+       * get.c: (parse_write_command) Destroy dict on success, to avoid
+       memory leak.
+       
+       * data-list.c: (cmd_repeating_data) Fix usage of saw_occurs,
+       saw_length, saw_continued, saw_id, which were boolean but
+       incorrectly treated as bitmaps as result of a previous
+       half-finished cleanup.
+
+       * weight.c: (struct weight_trns) Unused, so removed.
+
+       * Makefile.am: Add range-prs.h to sources.
+
+Wed Nov  2 21:24:15 2005  Ben Pfaff  <blp@gnu.org>
+
+       DO IF, LOOP cleanup.
+
+       * Makefile.am: Add ctl-stack.c, ctl-stack.h to source files.
+       Reformat source file list to list one file per file, so that
+       patches for future changes will be easier to read.
+
+       * ctl-stack.c, ctl-stack.h: New files.
+
+       * do-if.c: Rewrote whole file.
+
+       * do-ifP.h: Removed.
+
+       * loop.c: Rewrote whole file.
+
+       * glob.c: (global var ctl_stack) Move into ctl-stack.c.
+
+       * temporary.c: (cmd_temporary) Use ctl_stack_is_empty().
+
+       * vfm.c: (open_active_file) Use ctl_stack_clear().
+
+Wed Nov  2 21:18:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       New pool functions.
+       
+       * pool.c: (pool_create_at_offset) New function.
+       (pool_add_subpool) New function.
+
+       * pool.h: (pool_create_container) New macro.
+       
+       * expressions/parse.c: (expr_parse_pool) New function.
+       
+       * autorecode.c: (recode) Use pool_create_container().
+
+       * count.c: (cmd_count) Ditto.
+
+Wed Nov  2 19:59:32 2005  Ben Pfaff  <blp@gnu.org>
+
+       Clean up transformations, by getting rid of `struct trns_header',
+       replacing it by `struct transformation' that has a void *
+       `private' member.  Updated all uses of transformations to match,
+       which was a lot of code.  Only major related changes listed below.
+
+       * compute.c: (cmd_if) Use get_proc_func().
+       (cmd_compute) Use get_proc_func().
+       (get_proc_func) New function.
+
+       * glob.c: (global var m_trns) Change type to size_t.
+       (global var n_trns) Ditto.
+       (global var f_trns) Ditto.
+       (global var t_trns) Change type to struct transformation *.
+
+       * var.h: (struct trns_header) Removed.
+       (struct transformation) New.
+       (typedef trns_proc_func) Takes a void * instead of a struct
+       trns_header *.
+       (typedef trns_free_func) Ditto.
+
+       * vfm.c: (execute_transformations) Takes an array of
+       transformations instead of trns_headers.
+       (add_transformation) Change prototype from (trns_header *) to
+       (trns_proc_func *, trns_free_func *, void *).
+       (next_transformation) New function.
+
+Sat Oct 29 16:25:36 2005  Ben Pfaff  <blp@gnu.org>
+
+       * count.c: Major cleanups.  Rename practically everything.
+       Rewrite much of the code.  Use pools for memory management.  Use
+       the new parse_num_range().
+
+       * mis-val.c: (cmd_missing_values) Use the new parse_num_range().
+       (parse_number) Removed.
+
+       * missing-values.c: (mv_add_num_range) Don't add out-of-order
+       ranges, e.g. where low > high.
+
+       * pool.c: (pool_2nrealloc) New function.
+
+       * range-prs.c: New file.
+       (parse_num_range) New function.
+       (parse_number) New function.
+       
+Fri Oct 28 22:47:48 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix up potential overflows in size calculations by replacing
+       instances of pool_alloc(p, x * sizeof *y) by pool_malloc(p, x,
+       sizeof *y) everywhere I could find them.  Similarly by
+       pool_malloc(), pool_realloc().
+       (Order is important: pool_alloc(p, sizeof *y, x) will divide by 0
+       if x is 0.)
+
+       * pool.c: (pool_nalloc) New function.
+       (pool_nmalloc) New function.
+       (pool_nrealloc) New function.
+
+Thu Oct 27 11:16:53 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       Separated the definition of a file handle object from the stuff 
+       pertaining to the FILE HANDLE command.
+
+       * file-handle-def.[ch]: New files.
+
+       * dfm-read.c file-handle.h file-handle.q
+       
+Tue Oct 25 21:56:23 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix up potential overflows in size calculations by replacing
+       instances of xmalloc(x * sizeof *y) by xnmalloc(x, sizeof *y)
+       everywhere I could find them.  Similarly by xrealloc(), malloc().
+       (Order is important: xnmalloc(sizeof *y, x) will divide by 0 if x
+       is 0.)
+
+       * alloc.c: (nmalloc) New function.
+       (out_of_memory) Removed.  Replaced references by xalloc_die().
+
+       * sort.c: (allocate_cases) Fix segfault if memory allocation
+       fails.
+
+       * subclist.c: (subc_list_double_create) Use xnmalloc() instead of
+       malloc().
+       (subc_list_double_push) Use xnrealloc() instead of realloc().
+
+Wed Oct 26 08:43:51 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       Dictionary abstraction part #2
+
+       * algorithm.c format.c str.c sysfile-info.c val.h var.h vars-atr.c:
+         Removed unnecessary #include directives
+
+Mon Oct 24 21:35:08 2005  Ben Pfaff  <blp@gnu.org>
+
+       * groff-font.c (font_msg): Use err_vmsg() instead of incorrectly
+       trying to pass a va_list to tmsg().  Thanks to Jason Stover for
+       reporting this bug.
+
+Mon Oct 24 21:24:15 2005  Ben Pfaff  <blp@gnu.org>
+
+       Work to get rid of GCC 4.0 warnings, part 2.
+
+       In many files, change `unsigned char' to `char'.  This often
+       requires adding casts to <ctype.h> functions.
+
+       * data-in.c: (parse_A) Use buf_copy_rpad().
+
+       * str.c: (str_copy_buf_trunc) New function.
+
+       * value-labels.c: (value_to_string) Fix mistaken use of strncpy(),
+       by rewriting.
+
+Mon Oct 24 13:42:32 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       Moved some definitions to make it easier to abstract a dictionary 
+       from the rest of PSPP.
+
+       * format-prs.c lex-def.[ch]:  New files.
+
+       * Makefile.am lexer.[ch] dictionary.c vars-atr.c vfm.c algorithm.c 
+         format.c:  Moved some functions between modules.
+       
+Sun Oct 23 19:28:08 2005  Ben Pfaff  <blp@gnu.org>
+
+       Work to get rid of GCC 4.0 warnings, part 1.
+       
+       In many files, change count parameters to parse_variables(),
+       etc. from `int' to `size_t'.  Also change related variables and
+       struct members.  Also change messages as needed (e.g. %d to %u
+       with cast to unsigned).  Also change arithmetic as necessary
+       (e.g. n >= m - 1 to n + 1 >= m). 
+
+       * crosstabs.q: (crs_custom_tables) Check for size_t overflow in
+       multiplication.
+
+       * q2c.c: (dump_declarations) Generate code for size_t instead of
+       int.
+       
+Thu Oct 20 18:18:40 2005  Ben Pfaff  <blp@gnu.org>
+
+       * output.c: (outp_read_devices) Fix message.
+
+Sat Sep 17 11:13:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       * matrix-data.c: (cmd_matrix_data) Change type of variable whose
+       address is passed to dict_get_vars() from size_t to int to match
+       John's change below.
+
+       * modify-vars.c: (validate_var_modification) Ditto.
+
+Mon Sep 12 19:26:06 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.[ch]  Changed cnt from size_t* to int* since that's
+       what it's called as, and on  x86_64 machines they're different sizes.
+       
+       * str.c: (ds_vprintf) Copied va_list args so they can be re-used
+       
+Sun Aug 21 00:12:24 2005  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c: (lex_sbc_only_once) New function.
+       (lex_sbc_missing) New function.
+
+Sun Aug 21 00:00:47 2005  Ben Pfaff  <blp@gnu.org>
+
+       * case.h: (case_str) Make it return `unsigned char'.
+
+Sat Aug 20 23:56:14 2005  Ben Pfaff  <blp@gnu.org>
+
+       Revamp SAVE, XSAVE, EXPORT.  Add (or at least parse) all the
+       subcommands that we didn't support.  Fix bug 13911.  Fix bug
+       reported by Adam Pierson (COMPRESSED and other subcommands didn't
+       work on SAVE).  Refactor all related code.
+       
+       * command.def: Add XEXPORT command.
+
+       * dictionary.c: (dict_delete_scratch_vars) New function.
+
+       * get.c: (cmd_get) Fix parsing.
+       (struct save_trns) Removed.
+       (cmd_save_internal) Removed.
+       (cmd_save) Removed.
+       (do_write_case) Removed.
+       (save_write_case_func) Removed.
+       (save_trns_proc) Removed.
+       (save_trns_free) Removed.
+       (trim_dictionary) Removed.
+       (struct export_proc) Removed.
+       (cmd_export) Rewrote.
+       (export_write_case_func) Removed.
+       (export_proc_free) Removed.
+       (enum writer_type) New enum.
+       (enum command_type) New enum.
+       (struct any_writer) New struct.
+       (any_writer_destroy) New function.
+       (parse_write_command) New function.
+       (any_writer_write_case) New function.
+       (parse_output_proc) New function.
+       (output_proc) New function.
+       (cmd_save) Rewrote.
+       (cmd_xsave) Rewrote.
+       (struct output_trns) New struct.
+       (parse_output_trns) New function.
+       (output_trns_proc) New function.
+       (output_trns_free) New function.
+       (cmd_xsave) Rewrote.
+       (cmd_xexport) New function.
+       (parse_dict_trim) New function.
+       (struct mtf_proc) Change `by_cnt' member type to `int'.
+       (cmd_import) Rewrote.
+
+       * pfm-write.c: (struct pfm_writer) Add `digits' member.
+       (pfm_writer_default_options) New function.
+       (pfm_open_writer) Add `opts' argument and handle options.
+       (write_float) Write only as many digits as `digits' member says.
+       (format_trig_double) Limit base-10 precision to LDBL_DIG.
+
+       * pfm-write.h: (enum pfm_type) Moved here from pfm-read.h.
+       (struct pfm_write_options) New struct.
+
+       * sfm-write.c: (sfm_writer_default_options) New function.
+       (sfm_open_writer) Remove `compress', `omit_long_names' args.  Add
+       `opts' argument.  Implement options.
+
+       * sfm-write.h: (struct sfm_write_options) New struct.
+
+       * expressions/helpers.c: (copy_string) Make `old' arg `unsigned
+       char *' instead of `char *'.
+       
+Sat Aug  6 21:29:15 2005  Ben Pfaff  <blp@gnu.org>
+
+       * factor_stats.c: Needed <config.h> included earlier.
+
+       * percentiles.c: Needed to include <config.h>.
+
+       * val.h: Don't include "config.h".
+
+Sat Aug  6 21:26:27 2005  Ben Pfaff  <blp@gnu.org>
+
+       Clean up treatment of missing values by moving all the code into
+       one place.  All references to the missing value function were
+       updated, but only major changes are detailed below.
+
+       * Makefile.am: Add missing-values.c, missing-values.h to sources.
+
+       * apply-dict.c: (cmd_apply_dictionary) Use mv_resize().
+
+       * dictionary.c: (dict_create_var) Initialize `miss' member with
+       mv_init().
+       (dict_clone_var) Copy `miss' member with mv_copy().
+       
+       * get.c: (mtf_merge_dictionary) Use mv_copy().
+
+       * missing-values.c: New file.
+       
+       * missing-values.h: New file.
+
+       * mis-val.c: Rewrite.  New version implements updated semantics.
+
+       * pfm-read.c: (read_variables) Rewrite missing value handling.
+
+       * pfm-write.c: (write_variables) Rewrite missing value handling.
+
+       * sfm-read.c: (read_variables) Rewrite missing value handling.
+
+       * sfm-write.c: (write_variable) Rewrite missing value handling.
+
+       * sfmP.h: Include "magic.h" to get definition of
+       second_lowest_value.
+
+       * sysfile-info.c: (describe_variable) Rewrite missing value
+       handling.
+
+       * val.h: Include "magic.h" to get definition of
+       second_lowest_value.
+
+       * var.h: Include "missing-values.h".  Drop MISSING_* enums.
+       (struct variable) Remove `miss_type', `missing'.  Add `miss'.
+
+       * vars-atr.c: (is_num_user_missing) Removed--use
+       mv_is_num_user_missing().
+       (is_str_user_missing) Removed--use mv_is_str_user_missing().
+       (is_system_missing) Removed--use mv_is_value_system_missing().
+       (is_missing) Removed--use mv_is_value_missing().
+       (is_user_missing) Removed--use mv_is_value_user_missing().
+       
+Sun Jul 31 14:09:57 2005  Ben Pfaff  <blp@gnu.org>
+
+       Adopt use of gnulib for portability.
+
+       * Make.build: Add $(top_srcdir)/gl and $(top_builddir)/gl to
+       include path.
+
+       * Makefile.am: Remove bool.h, stat.h and change getline.[ch] to
+       getl.[ch] in pspp_SOURCES.  Remove libmisc, add libgl in
+       pspp_LDADD.
+
+       * In many source files, added an explicit inclusion of gettext.h
+       and definition of _ macro.  These are no longer in pref.h because
+       it interfered with definitions in a few gnulib source files.
+
+       * In many source files, changed #include "bool.h" to #include
+       <stdbool.h>, which is provided by gnulib.
+
+       * alloc.c: Removed functions defined in gnulib:
+       (xmalloc) Removed.
+       (xcalloc) Removed.
+       (xrealloc) Removed.
+       (xstrdup) Removed.
+       (out_of_memory) Redefined as wrapper for xalloc_die().
+
+       * alloc.h: Replace prototypes by #include "xalloc.h".
+
+       * casefile.c: Use full_read() and full_write() from gnulib instead
+       of our home-grown versions.
+       (full_read) Removed.
+       (full_write) Removed.
+
+       * getline.c: Renamed getl.c.
+
+       * getline.h: Renamed getl.h, updated all references.
+
+       * filename.c: (fn_readlink) Change to wrapper around xreadlink()
+       from gnulib.
+
+       * glob.c: Just #include <time.h> instead of the crazy rigmarole
+       here before.
+       (init_glob) Call set_program_name() to initial gnulib progname
+       module.
+
+       * html.c: (postopen) Use getlogin_r(), gethostname() from gnulib.
+
+       * permissions.c: Use "stat-macros.h" from gnulib.
+
+       * postscript.c: Just #include <time.h> instead of the crazy
+       rigmarole here before.
+
+       * q2c.c: (main) Make generated code #include "gettext.h".
+
+       * str.h: Get rid of most explicit declarations of standard
+       functions, in favor of including gnulib header files.
+
+       * expressions/evaluate.c: Ditto.
+
+       * expressions/operations.h.pl: Make generated code #include
+       <stdbool.h>, not "bool.h".
+
+Sat Jul 30 23:13:17 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/parse.c: (validate_function_args) Fix two msg() bugs
+       found by -Wformat.
+
+Sat Jul 30 23:10:01 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/evaluate.c: (expr_debug_print_postfix) Don't pass
+       null pointer to printf for %.*s.
+
+Sat Jul 30 23:05:33 2005  Ben Pfaff  <blp@gnu.org>
+
+       * vars-atr.c: (var_is_valid_name) Fix three msg() bugs found by
+       -Wformat.
+
+Sat Jul 30 22:58:33 2005  Ben Pfaff  <blp@gnu.org>
+
+       * rank.q: (parse_rank_function) Fix msg() bug found by -Wformat.
+
+Sat Jul 30 22:56:12 2005  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: (postopen) Cast `char' to `unsigned char' before
+       passing to isspace().
+
+Sat Jul 30 22:52:09 2005  Ben Pfaff  <blp@gnu.org>
+
+       * pfm-read.c: (read_variables) Fix msg() bug found by -Wformat.
+
+Sat Jul 30 22:50:57 2005  Ben Pfaff  <blp@gnu.org>
+
+       * histogram.c: Include <config.h>.
+
+Sat Jul 30 22:48:50 2005  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (cmd_match_files) Fix msg() bug found by -Wformat.
+
+Sat Jul 30 22:46:10 2005  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: (check_common_specifier) Fix msg() bug found by
+       -Wformat.
+       (check_output_specifier) Ditto.
+
+Sat Jul 30 22:43:57 2005  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.q: (cmd_file_handle) Fix msg() bug found by
+       -Wformat.
+
+Sat Jul 30 22:41:44 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: (parse_Z) [WORDS_BIGENDIAN] Don't declare buf[], to
+       avoid "unused variable" warning.
+
+Sat Jul 30 22:38:46 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (find_word) Cast `char' to `unsigned char' before
+       passing to isspace().
+
+Sat Jul 30 22:36:29 2005  Ben Pfaff  <blp@gnu.org>
+
+       * case.c: (case_compare) Implement as delegating to
+       case_compare_2dict().
+
+Sat Jul 30 22:34:18 2005  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: Inclusion of <alloca.h> is unneeded.
+
+Sat Jul 30 22:01:32 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Make.build: Don't append -ansi to AM_CFLAGS for GCC.  Using
+       -ansi changes the behavior of header files significantly.  It
+       causes __STRICT_ANSI__ to be defined, and some headers interpret
+       that as cause to e.g. not use `long long' or __attribute__.  The
+       former example is bad when off_t is supposed to be `long long',
+       and the latter prevents -Wformat from working.
+
+Sun Jul 24 20:26:59 2005  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of dependency on libgmp by writing our own routine for
+       floating-point base conversion.
+
+       * pfm-write.c: (write_float) Rewrote.
+       (write_int) Rewrote.
+       (pow30_nonnegative) New function.
+       (pow30) New function.
+       (trig_to_char) New function.
+       (format_trig_digits) New function.
+       (recurse_format_trig_int) New function.
+       (format_trig_int) New function.
+       (should_round_up) New function.
+       (try_round_up) New function.
+       (format_trig_double) New function.
+
+Sun Jul 24 18:49:20 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: (parse_numeric) Allow "1+23" even for F format, for
+       compatibility.
+
+Sun Jul 24 18:47:37 2005  Ben Pfaff  <blp@gnu.org>
+
+       * pfm-read.c: (read_version_data) Read and ignore author field.
+
+Wed Jul  6 20:44:27 2005  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (mtf_processing) Don't assume that
+       mtf_compare_BY_values() always returns -1, 0, or 1.  Actually, it
+       returns a negative, zero, or positive result.  Fixes MATCH FILES
+       bug on Mac OS X reported by "Marshall DeBerry" <mdb@radix.net>.
+
+Mon Jul  4 18:01:15 2005  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c: [HAVE_SYS_TYPES_H] Really include <sys/types.h>.  The
+       preprocessor test for sys/types.h was accidentally inverted.  This
+       was bug 12789.
+
+Sun Jul  3 22:47:39 2005  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (cmd_match_files) Fix memory leak on `by' and on
+       `vfm_source'.
+
+       * getline.c: [HAVE_LIBREADLINE] (read_console) Fix memory leak on
+       `line'.
+
+       * vfm.c: (close_active_file) Remove unnecessary test.
+
+Sun Jul  3 21:45:32 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix NDEBUG compile errors.
+
+       * hash.h: Needed explicit #include <assert.h>.
+
+       * linked-list.c: (ll_next) First arg is UNUSED when NDEBUG is
+       defined.
+
+Sun Jun 12 23:44:38 2005  Ben Pfaff  <blp@gnu.org>
+
+       Implement embedding for PostScript driver.  Fixes bug 12970.
+
+       * ascii.c: Fix compiler warnings.
+
+       * html.c: Ditto.
+
+       * chart.h: Add `file' member.
+
+       * output.h: (struct outp_class) initialise_chart, finalise_chart
+       should take outp_driver *, not outp_class *.  Update all
+       references.
+
+       * plot-chart.c: (chart_create) Fix segfault when there are no
+       output drivers at all.
+       (chart_submit) Call d->class->finalise_chart.
+
+       * postscript.c: (ps_open_page) Set cp_y to 0.
+       (ps_submit) New function.
+       (ps_chart_initialise) Implement.
+       (ps_chart_finalise) Implement.
+       (static var postscript_class) Add ps_submit.
+       (static var epsf_class) Add ps_submit.
+       
+
+Sun Jun 12 14:54:40 2005  Ben Pfaff  <blp@gnu.org>
+
+       Did some more work on bug 12859 and then realized that a *good*
+       solution would require some fundamental restructuring.  For now,
+       I'm marking REPEATING DATA unimplemented, and then we can revisit
+       it post-0.4.0.
+       
+       * command.def: Make REPEATING DATA unimplemented.
+
+       * data-list.c: (cmd_repeating_data) Assume inline file is 80
+       characters wide.
+       (realize_value) Revert previous changes; no longer needed.
+       Updated all callers.
+
+       * error.c: (err_hcf) Set nfile_loc, mfile_loc to 0 after freeing
+       file_loc, to avoid bad references later.
+
+       * str.c: Fix typo.
+
+Tue Jun  7 00:14:09 2005  Ben Pfaff  <blp@gnu.org>
+
+       Make some code tolerant of reentry.  Should not be needed if other
+       code is correct but it is good to be generally tolerant.
+       
+       * error.c: (err_hcf) Set file_loc to null after free().
+
+       * output.c: (outp_done) Similar changes.
+
+       * str.c: (ds_destroy) Ditto.
+       
+Tue Jun  7 00:10:20 2005  Ben Pfaff  <blp@gnu.org>
+
+       Continue work on bug 12859, plus some code cleanup.
+       
+       * data-list.c: (cmd_repeating_data) Replace `seen' bitmap by
+       boolean variables.  Don't try to compute starts_end, cont_end for
+       inline file.  Calculate length only after parsing variable
+       specifications.  Add proper transformation to list.
+       (realize_value) If the rpd_num_or_var has no value, return new
+       DEFAULT_MEMBER argument (for use with inline file).
+       (repeating_data_trns_proc) Pass default values.
+
+       * dfm-read.c: (dfm_close_reader) Only skip data if *not* still
+       open, and only if we actually started reading data.
+
+Sun Jun  5 18:39:36 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug 11894.
+       
+       * output.c: (outp_read_devices) Fix message.
+
+Fri May 27 12:34:43 WST 2005 John Darrington <john@darrington.wattle.id.au>
+       
+       * sort-prs.[ch] (newfiles), aggregate.c, sort.[ch]: Separated the guts 
+       of the sort algorithm from the parser for the SORT command.
+       
+       * rank.q: Added the parser for the RANK command.
+       
+Thu May 26 12:29:21 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug 13192.
+
+       * sort.c: (sort_parse_criteria) Only set *saw_direction if
+       saw_direction is non-null.  Thanks to John Darrington for
+       reporting this bug.
+
+Tue May 24 21:52:55 2005  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (mtf_processing) Handle case of a lookup table as the
+       active file.  Thanks to John Darrington for reporting this bug.
+
+Wed May 25 10:27:02 WST 2005 John Darrington <john@darrington.wattle.id.au>
+       
+       * alloc.c alloc.h: (xcalloc) changed signature to imitate the
+       POSIX  calloc function.
+       
+       * crosstabs.q get.c vars-prs.c: Updated calls to xcalloc to
+       reflect new signature.
+
+       * sfm-read.c: Now much more robust in the face of badly formed
+       system files.
+
+Mon May 23 11:57:31 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       *sfm-read.c: Fixed some bugs regarding long string continuation
+       records, which the previous fix uncovered.
+
+Sat May 21 12:48:34 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * sfm-read.c, sfmP.h:  Allow reading of system files when the 
+       case_size value in the header is -1.  Also changed some Errors to 
+       Warnings when reading system files.
+
+Tue May 17 21:00:57 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-list.c: (data_list_trns_free) Don't free the argument
+       because cancel_transformations() will do that itself.
+       (data_list_source_destroy) Destroy the argument to
+       data_list_trns_free(), because it no longer does so itself.
+
+Tue May 17 18:29:35 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c: (format_and_round) Don't output leading `-' if value
+       rounds to zero.
+
+Tue May 17 00:06:43 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug 11119.
+
+       * som.c: (output_encodings) If some cell in the table won't fit
+       with the horizontal or vertical headers, cancel those headers.
+
+       * som.h: (struct som_table_class) Add fits_width, fits_length,
+       set_headers members.
+
+       * tab.c: (tabi_fits_width) New function.
+       (tabi_fits_length) New function.
+       (tabi_set_headers) New function.
+       (global var tab_table_class) Add the new functions as appropriate
+       members.
+       
+Mon May 16 22:34:06 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix rest of bug 13054.
+
+       * format.def: Fix EDATE, SDATE, ADATE, JDATE, QYR, MOYR, WKYR,
+       DATETIME, TIME system/portable file values.
+
+Mon May 16 22:31:15 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-list.c: (parse_free) Use make_input_format().
+       
+       * data-out.c: (num_to_string) Use make_output_format().
+
+       * dictionary.c: (dict_create_var) Ditto.
+
+       * format.c: (global var f8_2) New var.
+       (make_input_format) New function.
+       (make_output_format) New function.
+
+       * get.c: (cmd_match_files) Use make_output_format().
+
+       * list.q: (cmd_list) Ditto.
+
+       * matrix-data.c: Ditto.
+
+       * sfm-read.c: (parse_format_spec) Check output specifier
+       thoroughly.
+
+       * tab.c: (tab_float) Use make_output_format().
+
+Sun May 15 23:38:10 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix more of bug 13054.
+       
+       * format.def: FMT_A should allow 255-character output.  FMT_AHEX
+       should allow 510-character input and output.
+
+       * data-out.c: (num_to_string) Get rid of NEW_STYLE option.
+       (convert_E) Handle non-finite values.
+       (try_F) Rewrite.
+       (format_and_round) New function.
+       (convert_infinite) New function used by try_F() and convert_E().
+
+Sun May 15 23:36:55 2005  Ben Pfaff  <blp@gnu.org>
+
+       Regularize string and buffer function names so that they make some
+       kind of sense.
+
+       * str.c: (mm_reverse) Rename buf_reverse().  Update all
+       references.
+       (mm_find_reverse) Rename buf_find_reverse().  Update all
+       references.
+       (mm_case_compare) Rename buf_compare_case().  Update all
+       references.
+       (st_compare_pad) Rename buf_compare_rpad().  Update all
+       references.
+       (str_compare_rpad) New function.
+       (st_bare_pad_copy) Rename buf_copy_str_rpad().  Update all
+       references.
+       (buf_copy_str_lpad) New function.
+       (st_bare_pad_len_copy) Rename buf_copy_rpad().  Update all
+       references.
+       (st_pad_copy) Rename str_copy_rpad().  Update all references.
+       (st_trim_copy) Rename str_copy_trunc().  Update all references.
+       (st_uppercase) Renamed str_uppercase().  Update all references.
+       
+Sat May 14 08:22:26 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * dfm-read.c: Fixed polarity of test in dfm-close-reader.  Closes 
+       Bug #13082
+
+Tue May 10 20:08:18 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: (data_in) Add assertion to check input specifier.
+
+       * data-out.c: (data_out) Add assertion to check output specifier.
+
+Tue May 10 19:56:35 2005  Ben Pfaff  <blp@gnu.org>
+
+       Start to fix bug 13054.
+
+       * format.c: (check_input_specifier) Improve error message.
+       (check_input_specifier) Check F, COMMA, and DOLLAR formats for
+       valid decimal places.
+       (check_output_specifier) Ditto (but different criteria).
+       (convert_fmt_ItoO) Assert valid input and output specifiers.
+       Also, if input specifier has *any* decimal places, make the output
+       specifier 1 place wider.
+
+Mon May  9 07:14:29 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * sysfile-info.c: Fixed bug [# 13024 ]
+
+Sun May  8 13:52:12 2005  Ben Pfaff  <blp@gnu.org>
+
+       "Fix" bug 13021 by disabling FILE TYPE.  Eventually, we should
+       actually implement it.
+
+       * command.c: (FILE_TYPE_okay) Always return 1.
+
+       * command.def: Change FILE TYPE, END FILE TYPE into UNIMPL.
+
+       * file-type.c: Add prototypes to get rid of warnings.
+
+Sun May  8 08:08:07 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * barchart.c box-whisker.c cartesian.c piechart.c plot-hist.c: Fixed 
+        more ISO/IEC 9899:1990 conformance issues.
+
+Wed May  4 23:54:02 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug 12948.  See also new test in
+       tests/bugs/match-file-scratch.sh.
+       
+       * get.c: (mtf_merge_dictionary) Don't compact dictionary because
+       that deletes scratch variables that someone else might be using,
+       and because we can't reassign our sources' value indexes.
+       Instead, simply don't copy scratch variables into the master
+       dictionary.
+
+       * dictionary.c: (dict_compact_values) Delete variables from the
+       dictionary passed in, not from default_dict (!).
+
+Tue May  3 22:25:17 2005  Ben Pfaff  <blp@gnu.org>
+
+       Improve hash.c comments, error-checking.
+       
+       * hash.c: (struct hsh_table) [NDEBUG] Add hash_ordered member.
+       (hsh_create) size == 0 should *not* return NULL!  Set
+       hash_ordered.
+       (hsh_clear) Set hash_ordered.
+       (locate_matching_entry) Check hash_ordered.
+       (hsh_rehash) Rename rehash().  Add assertion.  Set hash_ordered.
+       (hsh_data) Set hash_ordered.  Add const-ness to return value and
+       update all callers.
+       (hsh_sort) Ditto.       
+
+Wed May  4 08:50:11 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile.c: Removed unnecessary #include <valgrind/valgrind.h>
+
+Tue May  3 19:14:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * copyleft.c: Updated copyright date.
+
+       * Makefile.am: Removed erroneous explicit "-lplot"
+
+       * examine.q oneway.q: Made these files conform to ISO/IEC 9899:1990
+
+Tue May  3 16:20:31 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * command.c command.def: Added description string for unimplemented commands.
+
+       * oneway.q: Sorted the hash tables before shipping out the results. Closes 
+       bug [#12931].
+
+Mon May  2 23:45:01 2005  Ben Pfaff  <blp@gnu.org>
+
+       Code improvements.
+       
+       * data-list.c:  (parse_fixed) Use lex_end_of_command().
+       (parse_free) Ditto.
+       (cmd_repeating_data) Set cont_end.num in right situations.
+       (parse_repeating_data) Remove redundant test.
+
+Mon May  2 23:37:19 2005  Ben Pfaff  <blp@gnu.org>
+
+       Partial fix for bug 12859.
+       
+       * data-list.c: (cmd_data_list) Add transformation properly in
+       vfm_source == NULL case.
+
+Mon May  2 23:27:28 2005  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c: (lex_error) Improve error messages.
+
+Mon May  2 22:28:17 2005  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (cmd_match_files) Check token type before trying to match
+       tokid.  Fixes bug 12923.
+
+Mon May  2 22:16:51 2005  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c: [HAVE_SYS_TYPES_H] Include <sys/types.h>.  Fixes bug
+       12789.
+
+Mon May  2 22:02:52 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/generate.pl: (get_token) Make use of /g
+       backward-compatible with Perl 5.6.1.
+
+Sun May  1 23:00:19 2005  Ben Pfaff  <blp@gnu.org>
+
+       * var-display.c: (cmd_variable_alignment) Fix memory leak.
+       (cmd_variable_level) Ditto.
+
+Sun May  1 22:49:04 2005  Ben Pfaff  <blp@gnu.org>
+
+       Hash table had buggy deletion function.  The fix required changing
+       other functions to do probing in the required order.
+
+       * hash.c: (locate_matching_entry) Rewrite and change interface.
+       (hsh_rehash) Rewrite to use locate_matching_entry().
+       (hsh_probe) Ditto.
+       (hsh_find) Ditto.
+       (hsh_delete) Ditto.  Also, fix stupid bugs.
+
+Sun May  1 22:24:58 2005  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c: (dict_clone) Properly copy vectors.
+
+Sun May  1 22:07:58 2005  Ben Pfaff  <blp@gnu.org>
+
+       New implementation of long variable names.  Each variable has a
+       "normal" name, which may be up to 64 bytes long and which is used
+       for all normal operations.  Variables may have a "short" name,
+       which is limited to 8 bytes and used only for system and portable
+       file input and output.
+       
+       Make tokid case-preserving.  Update most uses of tokid to treat it
+       case-insensitively.
+
+       Update many commands to deal with long variable names.
+
+       * autorecode.c: (cmd_autorecode) Use strcasecmp() instead of strcmp().
+
+       * command.c: (cmd_parse) Ditto.
+       (match_strings) Use toupper() before comparing characters.
+       (conflicting_3char_prefixes) Use mm_case_compare() instead of
+       memcmp().
+       (cmd_match_words) Ditto.
+
+       * compute.c: (lvalue_parse) Use st_trim_copy() instead of
+       strncpy().
+
+       * count.c: (struct cnt_var_info) Change n[] to fit long var name.
+       Use st_trim_copy() instead of strcpy().
+
+       * data-in.c: (parse_enum) Use mm_case_compare() instead of
+       memcmp().
+
+       * data-list.c: (struct dls_var_spec) Change name[] to fit long var
+       name.
+       (parse_free) Use st_trim_copy() instead of strcpy().
+
+       * descript.c: (struct dsc_var) Change z_name[] to fit long var
+       name.
+       (try_name) Use strcasecmp() instead of strcmp().
+       (generate_z_varname) Use st_trim_copy() instead of strcpy().
+       (descriptives_compare_dsc_vars) Use strcasecmp() instead of
+       strcmp().
+
+       * dictionary.c: (struct dictionary) Removed `long_name_tab'
+       member.
+       (compare_long_names) Removed.
+       (hash_long_name) Removed.
+       (dict_create) Don't initialize `long_name_tab' member.
+       (dict_clone) Copy short names into new dictionary. 
+       (dict_clear) Don't clear `long_name_tab' member.
+       (dict_get_varname_block) Removed.
+       (dict_add_longvar_entry) Removed.
+       (free_nte) Removed.
+       (dict_destroy) Don't destroy `long_name_tab' member.
+       (dict_create_var_from_short) Removed.
+       (dict_create_var_x) Removed.
+       (dict_create_var) Get rid of longname handling.
+       Clear short name.
+       (dict_clone_var) Get rid of longname parameter and longname
+       handling.
+       (dict_lookup_var) Get rid of longname handling.
+       (dict_reorder_var) New function.
+       (dict_rename_var) Clear short name.
+       (dict_rename_vars) Get rid of longname handling.  Clear short
+       names.
+       (dict_create_vector) Support long vector names.
+       (dict_lookup_vector) Use strcasecmp() instead of strcmp().
+       (quasi_base27) Removed.
+       (make_short_name) Removed.
+       (compare_strings) New function.
+       (hash_string) New function.
+       (dict_assign_short_names) New function.
+
+       * file-handle.q: (get_handle_with_name) Use strcasecmp() instead
+       of strcmp().
+       (get_handle_for_filename) Support long handle names.
+
+       * file-type.c: (struct col_spec) Make `name' fit long var names.
+       (cmd_file_type) Use strcasecmp() instead of strcmp().
+
+       * flip.c: (make_new_var) Rewrite.
+       (flip_sink_write) Use st_trim_copy() instead of strncpy().
+
+       * format.c: (parse_format_specifier_name) Use mm_case_compare()
+       instead of memcmp().
+
+       * get.c: (cmd_save_internal) Rephrase.
+       (rename_variables) Drop test for identical variable name.
+       (struct mtf_proc) Change `first', `last' to fit long var name.
+
+       * hash.c: (hsh_hash_case_string) New function for case-insensitive
+       string hashing.
+
+       * lexer.c: (restore_token) Use st_trim_copy() instead of
+       strncpy().
+       (lex_get) Don't uppercase string when copying into tokid.
+       (lex_put_back_id) Use st_trim_copy() instead of
+       strncpy().
+
+       * list.q: (determine_layout) Consider length of variable names in
+       choosing vertical layout.
+
+       * matrix-data.c: (cmd_matrix_data) Use strcasecmp() instead of
+       strcmp().
+       (string_to_content_type) Ditto.
+
+       * modify-vars.c: (compare_variables_given_ordering) Ditto.
+       (struct var_renaming) Change `new_name' to fit long var name.
+       (compare_var_renaming_by_new_name) Use strcasecmp() instead of
+       strcmp().
+
+       * pfm-read.c: (read_variables) Disallow system variables in system
+       files.
+       (write_variables) Call dict_assign_short_names() and use
+       short_name[] members.
+
+       * repeat.c: (internal_cmd_do_repeat) Use strcasecmp() instead of
+       strcmp().
+
+       * sfm-read.c: (sfm_open_reader) Rewrite code for long variable
+       map.  Reorder variables into same order as long variable map.
+       (read_variables) Set short name.
+
+       * sfm-write.c: (sfm_open_writer) Call dict_assign_short_names().
+       (write_variable) Use st_bare_pad_copy().
+       (write_longvar_table) Rewrite.
+
+       * str.c: (mm_case_compare) New function.
+
+       * sysfile-info.c: (compare_vectors_by_name) Use strcasecmp()
+       instead of strcmp().
+
+       * t-test.q: (tts_custom_groups) Remove redundant test.
+       (tts_custom_pairs) Ditto.
+
+       * var.h: (struct variable) Change `name' to fit long var names.
+       Remove `longname'.  Add `short_name' member.  Reorder some
+       variables.
+       (struct name_table_entry) Removed.
+       (struct vector) Change `name' to fit long vector names.
+
+       * vars-atr.c: (var_is_valid_name) Allow long var names.
+       (compare_var_names) Use strcasecmp() instead of strcmp().
+       (compare_var_ptr_names) Ditto.
+       (hash_var_name) Use hsh_hash_case_string().
+       (hash_var_ptr_name) Ditto.
+       (var_set_short_name) New function.
+       (var_clear_short_name) New function.
+       (var_set_short_name_suffix) New function.
+
+       * vars-prs.c: (parse_DATA_LIST_vars) Support long names.
+       Use strcasecmp() instead of strcmp().
+       (struct array_var_set) Removed `longname_tab'.
+       (array_var_set_lookup_var_idx) Drop longname_tab support.
+       (array_var_set_destroy) Don't destroy `longname_tab'.
+       (var_set_create_from_array) Don't create `longname_tab'.
+
+       * vector.c: (cmd_vector) Use strcasecmp() instead of strcmp().
+       Support long names.
+
+       * expressions/parse.c: (word_matches) Use mm_case_compare()
+       instead of memcmp().
+       (compare_strings) New function.
+       (lookup_function) Use compare_strings() instead of strcmp().
+       
+Sun May  1 22:07:43 2005  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: (move_element) New function.
+
+Sun May  1 22:05:35 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (parse_aggregate_functions) Always initialize
+       destvar.
+
+Sun May  1 22:03:47 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (cmd_aggregate) Use dict_clone_var_assert().
+
+       * dictionary.c: (dict_clone) Ditto.
+       (dict_clone_var_assert) New function.
+
+       * get.c: (mtf_merge_dictionary) Use dict_clone_var_assert().
+
+Sun May  1 15:05:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * error.c: Added a string for the compiler version to the
+       request_bug_report_and_abort function.
+
+       * groff_font.c, font.c: Removed manpage(1) style references from 
+       comments, because RMS frowns upon them.
+
+Thu Apr 28 18:52:06 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/parse.c: Improve previous fix for bug 12858 (LAG).
+
+Fri Apr 29 09:28:00 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * expressions/parse.c: Added handler for OP_LAG_Vn and OP_LAG_Vs.  
+       Fixed bug [#12858] .
+
+Wed Apr 27 12:42:34 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * loop.c recode.c repeat.c: Fixed a couple of instances of SHORT_NAME_LEN 
+       which should be LONG_NAME_LEN
+
+Wed Apr 27 07:43:50 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * command.def echo.c:  Added the ECHO command.
+
+Mon Apr 25 22:55:59 2005  Ben Pfaff  <blp@gnu.org>
+
+       Finish fixing MATCH FILES (bug 11677).
+
+       * get.c: (trim_dictionary) Rewrite in terms of drop_variables(),
+       keep_variables(), rename_variables().
+       (drop_variables) New function.
+       (keep_variables) New function.
+       (struct mtf_file) Rename `in' to `in_name'.  Add `in_var'.
+       (cmd_match_files) Deal with in_var.  Use drop_variables(),
+       keep_variables().  When IN is specified, require BY.  Set master
+       variables after master dictionary is complete.  Add IN variables
+       after master dictionary is complete.
+       (mtf_free_file) Free `in_name'.
+       (mtf_delete_file_in_place) Set in_var value to 0.
+       (mtf_read_nonactive_records)  Rephrase.
+       (mtf_processing) Support IN.  Rephrase.  Fix bugs.
+       (mtf_merge_dictionary) Don't set master variables; we do that
+       later now.
+       (get_master) Don't insist that there's a master variable.
+       
+Mon Apr 25 22:55:22 2005  Ben Pfaff  <blp@gnu.org>
+
+       Kluge to make some variable renaming sort of work.
+       Needs real fix.
+
+       * dictionary.c: (dict_rename_var) Call dict_add_longvar_entry().
+
+Mon Apr 25 22:52:28 2005  Ben Pfaff  <blp@gnu.org>
+
+       Add functions for comparing sets of variables between cases.
+       Use the functions.
+
+       * case.c: (case_compare) New function.
+       (case_compare_2dict) New function.
+       
+       * aggregate.c: (struct agr_proc) Remove `prev_break' member.  Add
+       `break_case'.
+       (cmd_aggregate) Nullify break_case.  Don't call
+       initialize_aggregate_info().
+       (agr_destroy) Destroy break_case.
+       (aggregate_single_case) Rewrite.  Use case_compare().
+       (dump_aggregate_info) Copy from break_case into output.
+       (initialize_aggregate_info) Copy break_case from input.
+
+       * get.c: (mtf_compare_BY_values) Use case_compare_2dict().
+
+       * vfm.c: (equal_splits) Use case_compare().
+
+Sat Apr 23 17:01:04 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c vars-prs.c sfm-write.c: Fixed some memory leaks
+
+Sun Apr 17 23:08:15 2005  Ben Pfaff  <blp@gnu.org>
+
+       Start work on fixing MATCH FILES.
+
+       * get.c: (enum operation) Remove OP_MATCH.
+       (trim_dictionary) Change return value to bool.  Don't support
+       OP_MATCH.
+       (struct mtf_file) Remove `first', `last' members.
+       (struct mtf_proc) Add `first', `last' members.  Change mtf_case
+       from `struct ccase *' to `struct ccase'.  Remove `by' member.
+       (cmd_match_files) Essentially rewrite.
+       (mtf_free) Don't free `by' member.  Destroy `mtf_case' member.
+       (mtf_read_nonactive_records) mtf_ parameter is not unused.
+       (mtf_processing) Ditto.  Also rephrase some code.
+       (mtf_merge_dictionary) Rewrite for easy comprehension.  
+
+Sun Apr 17 23:06:00 2005  Ben Pfaff  <blp@gnu.org>
+
+       * matrix-data.c: (wr_output_data) [DEBUGGING] Fix compilation
+       error.
+
+       * q2c.c: (dump_token) [DEBUGGING] Fix compilation error.
+       
+Thu Apr 14 2005 John Darrington
+
+        * var-display.c: New file.
+
+       * format.h var.h sfm-read.c sfm-write.c dictionary.c :  Added 
+         display_width, measure and alignment parameters to variables.
+
+       * aggregate.c command.def compute.c count.c data-list.c descript.c
+         dictionary.c dictionary.h expr-prs.c file-type.c flip.c get.c 
+         lexer.c lexer.h loop.c modify-vars.c pfm-read.c recode.c repeat.c 
+         sfm-read.c sfm-write.c sfm-write.h sfmP.h val-labs.c val.h var.h 
+         vars-prs.c vector.c :  
+             - Replaced literal constants representing maximum variable name 
+               length with macro definitions. 
+             - Added support for long variable names.
+             - Changed lexer such that it no longer makes tokens upper
+               case, but relies upon case insensitive behaviour of commands.
+
+Mon Apr  4 22:27:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (parse_aggregate_functions) If dict_create_var()
+       fails, don't dereference the resulting null pointer (bug 12427).
+       Also, fix double free error.
+
+Sat Mar 19 23:06:02 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (parse_aggregate_functions) Fix N_NO_VARS format.
+       (accumulate_aggregate_info) Set int1 to 1 for SUM.
+       (dump_aggregate_info) Only make SUM non-missing if there was at
+       least one variate.
+
+Sat Mar 19 14:48:19 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (dump_aggregate_info) Properly test whether the
+       destination variable is numeric, when making the result
+       system-missing for columnwise missing values.
+
+Mon Mar 14 21:52:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * misc.h: Remove GCC specializations.
+
+Mon Mar 14 21:07:23 2005  Ben Pfaff  <blp@gnu.org>
+
+       Make sort stable (bug 12313).
+       
+       * sort.c: Don't need to include some headers anymore.
+       (static var min_buffers) New variable.
+       (static var max_buffers) New variable.
+       (static var allow_internal_sort) New variable.
+       (cmd_sort_cases) Add test mode.
+       (sort_execute) Rephrase.
+       (do_internal_sort) Don't try internal sorting if
+       allow_internal_sort is set.
+       (struct external_sort) Renamed `initial_runs' to `runs' and
+       updated all references.
+       (macro MIN_BUFFER_TOTAL_SIZE_RECS) Removed.
+       (macro MIN_BUFFER_SIZE_BYTES) Removed.
+       (macro MIN_BUFFER_SIZE_RECS) Removed.
+       (compare_initial_runs) Removed.
+       (struct record_run) Add member `idx'.
+       (write_initial_runs) Pass increasing values to process_case() as
+       index.
+       (process_case) Add `idx' parameter and use it to initialize new
+       `idx' member.
+       (allocate_cases) Limit allocated buffers to max_buffers.
+       (compare_record_run) Use new `idx' member for last resort
+       comparison, for stability.
+       (end_run) Call casefile_sleep() on irs->casefile, to prevent
+       running out of file descriptors.
+       (struct merge_state) Removed.
+       (merge) Don't need to allocate cases.  Always use MAX_MERGE_ORDER
+       unless we have fewer runs left.  Always merge consecutive runs,
+       for stability.  Return the final run.
+       (mod) Removed.
+       (choose_merge) New function.
+       (merge_once) Rewritten.
+
+Mon Mar 14 21:05:42 2005  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: (static var testing_mode) Move into
+       parse_command_line().
+       
+Mon Mar 14 21:05:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: (remove_range) New function.
+       (remove_element) New function.
+
+       * dictionary.c: (dict_delete_var) Use remove_element().
+
+       * flip.c: (cmd_flip) Ditto.
+
+Sun Mar 13 22:52:05 2005  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.q: (struct file_handle) `open_mode' should not be
+       const.
+       
+Sun Mar 13 22:40:54 2005  Ben Pfaff  <blp@gnu.org>
+
+       First phase of making SORT CASES stable (bug 12313).
+
+       * sort.c: (struct indexed_case) New structure.
+       (do_internal_sort) Rewrite to make internal sorting stable.
+       (compare_case_dblptrs) Removed.
+       (compare_indexed_cases) New function.
+
+Sun Mar 13 22:38:40 2005  Ben Pfaff  <blp@gnu.org>
+
+       Clean-ups.
+
+       * casefile.c: (casereader_read_xfer_assert) New function.
+
+       * dictionary.c: (dict_compact_case) New function.
+
+       * flip.c: (struct flip_pgm) New member idx_to_fv.
+       (cmd_flip) Initialize idx_to_fv member.
+       (destroy_flip_pgm) Free idx_to_fv member.
+       (flip_sink_write) Use struct flip_pgm member instead of case_sink
+       member.
+       (flip_sink_write) Ditto.
+
+       * vfm.c: (write_case) Use dict_compact_case() instead of
+       compact_case().
+       (compact_case) Removed.
+       (storage_source_create) Removed `dict' parameter.  All references
+       updated.
+
+       * vfm.h: (struct case_source) Removed `value_cnt' member.  All
+       references removed.
+       (struct case_sink) Removed `dict', `idx_to_fv' members.  All
+       references removed.
+
+Sun Mar 13 22:35:55 2005  Ben Pfaff  <blp@gnu.org>
+
+       More AGGREGATE fixes.
+
+       * aggregate.c: (accumulate_aggregate_info) Implement NMISS and
+       NUMISS for strings.  Fix FOUT, POUT, FGT, FLT, FIN, FOUT for
+       strings.
+       (initialize_aggregate_info) Fix initialization for MIN, MAX for
+       strings.
+
+Sat Mar 12 23:26:21 2005  Ben Pfaff  <blp@gnu.org>
+
+       Start work on testing and debugging AGGREGATE.
+
+       * aggregate.c: (cmd_aggregate) Use discrete bool variables instead
+       of a bit-map.  Require proper subcommand ordering.  Make OUTFILE
+       subcommand mandatory.
+       (parse_aggregate_functions) Check that PIN, POUT, FIN, FOUT
+       functions' arguments are in the correct order and swap them if
+       not.
+       (accumulate_aggregate_info) Make SUM include weights.  Add various
+       string functions.
+       (dump_aggregate_info) Add various string functions.
+       (initialize_aggregate_info) Initialize int1 for MIN, MAX.
+
+       * sort.c: (sort_parse_criteria) Add parameter for returning
+       whether any directions were specified.  All callers updated.
+
+Sun Mar 13 14:54:27 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q: Fixed erroneous logic in compare_group_binary.
+
+Sat Mar 12 13:29:21 2005  Ben Pfaff  <blp@gnu.org>
+
+       * split-file.c: (cmd_split_file) Ignore LAYERED and SEPARATE
+       keywords (bug 11628).
+
+Sat Mar 12 13:17:12 2005  Ben Pfaff  <blp@gnu.org>
+
+       * vfm.c: (procedure_with_splits) Fix bug 11492: end_func() must be
+       called *before* close_active_file().
+
+Sat Mar 12 12:20:57 2005  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.q: (struct file_handle) Change open_mode from
+       character pointer to 3-char array, for safety.  Updated all
+       references.
+
+Sat Mar 12 12:15:49 2005  Ben Pfaff  <blp@gnu.org>
+
+       Thanks to Ben Kujala <bkujala@oregonchildcare.org> for reporting
+       these bugs.
+       
+       * pfm-read.c: (read_header) Improve error message for many cases
+       in which the input is not actually a portable file.
+
+       * file-handle.q: (fh_open) When we give an error message, actually
+       return NULL.
+
+Fri Mar 11 11:50:30 2005  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: (check_common_specifier) New function for checks
+       common to check_input_specifier() and check_output_specifier().
+       (check_input_specifier) Use check_common_specifier().
+       (check_output_specifier) Use check_common_specifier().
+       (check_string_specifier) Removed.
+       (check_specifier_type) New function.
+       (check_specifier_width) New function.
+       (get_format_var_width) Fix bug.
+
+       * formats.c: (internal_cmd_formats) Only accept numeric variables.
+
+       * lexer.c: (check_id) Rename lex_id_to_token(), make public,
+       update all references.  Make case-insensitive.
+
+       * pfm-read.c: Essentially rewrite the whole file.  Now much
+       cleaner.
+
+       * print.c: (check_string_width) New function.
+       (fixed_parse_compatible) Use check_string_width(),
+       check_specifier_type().
+       (dump_fmt_list) Ditto.
+
+       * str.c: (st_trim_copy) New function.
+       (st_uppercase) New function.
+
+       * vars-atr.c: (var_is_valid_name) New function.
+       
+       * expressions/parse.c: (type_coercion_core) Use
+       check_specifier_type().
+       
+Fri Mar 11 11:31:24 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/evaluate.c: (cmd_debug_evaluate) Fix memory leaks.
+
+       * expressions/parse.c: (no_match) Ditto.
+
+Wed Mar  9 09:54:27 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pspp_LDADD) Add libgsl-extras.a.
+
+       * expressions/helpers.c: (struct func_params) Removed.
+       (generalized_idf) Removed.
+       (cdf_beta) Removed.
+       (idf_beta) Removed.
+       (idf_fdist) Use gslextras_cdf_beta_Pinv() instead of idf_beta().
+
+       * expressions/operations.def: Implement IDF.BETA, CDF.BINOM,
+       CDF.GEOM, CDF.HYPER, CDF.NEGBIN, CDF.POISSON using gsl-extras.
+       Implement SIG.F, which I had overlooked previously.
+
+Tue Mar  8 12:47:53 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * command.c command.def glob.[ch] cmdline.c: Made DEBUG cmds
+       available only in testing mode.
+
+Sun Mar  6 23:25:40 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: Use `bool' throughout, where relevant.
+
+Sun Mar  6 19:52:22 2005  Ben Pfaff  <blp@gnu.org>
+
+       DATA LIST with free-field formats should not have implied decimal
+       places (bug 12035).  Also clean up data-in.c a bit.
+
+       * data-in.h: (enum) Add DI_IMPLIED_DECIMALS.
+
+       * data-in.c: (apply_implied_decimals) New function.
+       (parse_numeric) Don't adjust exponent if DI_IMPLIED_DECIMALS not
+       set.  Also, get rid of gotos.
+       (parse_Z) Use apply_implied_decimals() if the field doesn't
+       contain a decimal point.
+       (parse_N) Use apply_implied_decimals().
+       (parse_IB) Ditto.
+       (parse_PIB) Ditto.
+       (parse_P) Ditto.
+       (parse_PK) Ditto.
+       (to_roman) Removed.
+       (parse_enum) New function.
+       (macro CHAR_IS_ROMAN) Removed.
+       (macro ROMAN_VALUE) Removed.
+       (parse_month) Use parse_enum().
+       (parse_weekday) Use parse_enum().
+       (parse_DATETIME) Use long for weekday.
+
+       * data-list.c: (read_from_data_list_fixed) Use
+       DI_IMPLIED_DECIMALS.
+
+Sun Mar  6 17:07:20 2005  Ben Pfaff  <blp@gnu.org>
+
+       When the lexer sees something like `-5' in the input, it has to
+       decide whether it's a negative numeric constant token or a '-'
+       token followed by a positive numeric constant token.  It always
+       decides on the former, and then the parser can call
+       lex_negative_to_dash() if it wants the latter.  However, this
+       doesn't work for the case of `-0', because negative zero is
+       (portably) indistinguishable from positive zero.  So now we divide
+       T_NUM into two tokens, T_POS_NUM and T_NEG_NUM, to make the
+       distinction clear.  This requires a little bit of extra effort,
+       because there were several references to T_NUM in the code base.
+       
+       * lexer.c: (lex_get) Use T_NEG_NUM and T_POS_NUM to distinguish
+       positive and negative numeric constants.
+       (lex_double_p) Renamed lex_is_number().  Changed return type to
+       bool.  Updated all relevant references to T_NUM to instead use
+       this function.
+       (lex_double) Renamed lex_number().  All references updated.
+       (lex_integer_p) Renamed lex_is_integer().  Changed return type to
+       bool.  All references updated.
+       (lex_token_representation) Understand T_NEG_NUM and T_POS_NUM.
+       (lex_negative_to_dash) Ditto.
+       (dump_token) Ditto.
+       
+       * lexer.h: (enum) Add T_POS_NUM, T_NEG_NUM.  Remove T_NUM.
+
+Sun Mar  6 22:09:20 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/operations.def: (NUMBER) Use DI_IMPLIED_DECIMALS.
+
+Sun Mar  6 19:33:24 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/operations.def: (VEC_ELEM_NUM) Treat user-missing
+       values as system-missing.
+
+       * expressions/parse.c: (parse_vector_element) Fix order of
+       arguments in call to expr_allocate_binary().
+
+Sun Mar  6 17:51:05 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/optimize.c: (optimize_tree) Fix optimization bug for
+       x**2.
+
+       * expressions/parse.c: (type_coercion_core) Set *node to NULL on
+       failure, as indicated by function comment.
+       (parse_binary_operators) Always return NULL on type_coercion()
+       failure.  Should have been doing this anyway, but bug in
+       type_coercion_core() filtered through.
+       (parse_add) Fix typo in user message.
+       (parse_primary) Understand T_NEG_NUM and T_POS_NUM.
+
+Sun Mar  6 10:47:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/operations.def: Add VALUE function.
+
+       * expressions/parse.c: (parse_function) Need an unary composite
+       node for variables in A TO B, not a variable node.  Use
+       allocate_unary_variable().
+       (parse_primary) Use allocate_unary_variable().
+       (allocate_unary_variable) New function.
+
+Thu Mar  3 23:53:32 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/PSPP_expressions.pm: Renamed it back to generate.pl
+       but fixed the real problem that was preventing the build from a
+       separate directory.  I liked it my way better ;-)
+       
+Thu Mar  3 23:17:51 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/parse.c: (expr_parse) Fix parameter type.  Thanks to
+       John Darrington <john@darrington.wattle.id.au> for reporting this
+       bug.
+
+Thu Mar  3 22:10:25 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * expressions/Makefile.am expressions/evaluate.h.pl
+         expressions/evaluate.inc.pl expressions/operations.h.pl
+         expressions/optimize.inc.pl expressions/parse.inc.p:
+
+         Renamed generate.pl to PSPP_expressions.pm and adjusted *.pl
+         to suit. 
+
+         Fixed everything so that it can be built from an arbitrary
+         directory.
+       
+Thu Mar  3 22:08:35 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * Makefile.am : Fixed up CLEANFILES target.
+
+Mon Feb 28 23:49:56 2005  Ben Pfaff  <blp@gnu.org>
+
+       * str.h: Changed `struct len_string' to `struct fixed_string', a
+       more accurate name.  Updated all references.
+
+Mon Feb 28 23:35:30 2005  Ben Pfaff  <blp@gnu.org>
+
+       Redo calendar support.  Should now be bug-for-bug compatible.
+       
+       * calendar.c: New file.
+
+       * calendar.h: New file.
+
+       * data-in.c: Use new calendar functions.
+       (parse_sign) Change sense of return value.
+       (calendar_error) New function.
+       (ymd_to_ofs) New function.
+       (ymd_to_date) New function.
+       (parse_DATE) Use new function.
+       (parse_ADATE) Ditto.
+       (parse_EDATE) Ditto.
+       (parse_SDATE) Ditto.
+       (parse_JDATE) Ditto.
+       (parse_QYR) Ditto.
+       (parse_MOYR) Ditto.
+       (parse_WKYR) Ditto.
+       (parse_TIME) Ditto.
+       (parse_DTIME) Ditto.
+       (parse_DATETIME) Ditto.
+
+       * data-out.c: (convert_date) Use new calendar functions.
+
+       * error.c: (err_vmsg) Changed interface to be more sensible.
+       Updated all callers.
+       (dump_message) Don't double new-lines (why did we do this
+       anyway?).
+
+Mon Feb 28 23:30:25 2005  Ben Pfaff  <blp@gnu.org>
+
+       * sfmP.h: (macro flt64) Moved here from pref.h.orig.
+       (macro FLT64_MAX) Moved here from pref.h.orig.
+
+Mon Feb 28 23:28:01 2005  Ben Pfaff  <blp@gnu.org>
+
+       * set.q: Support SET EPOCH.
+       (static var set_epoch) New var.
+       (aux_stc_custom_epoch) New function.
+       (stc_custom_epoch) New function.
+       (get_epoch) New function.
+       (stc_custom_pager) [USE_INTERNAL_PAGER] Fix bug.
+
+       * format.c: Make it possible just to check whether a specifier is
+       valid without emitting an error message.
+       (parse_format_specifier_name) Change interface, update all
+       callers.
+       (check_input_specifier) Ditto.
+       (check_output_specifier) Ditto.
+       (parse_format_specifier) Ditto.
+
+Mon Feb 28 23:24:08 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Add DEBUG POOL.
+
+       * pool.c: (pool_destroy) Fix bug in deleting this pool from its
+       parent.
+       (pool_clear) Properly account for size of pool gizmo.
+       (pool_realloc) Ditto.
+       (pool_clone) New function.
+
+       * pool.h: Mark our allocation functions MALLOC_LIKE.
+
+Mon Feb 28 23:21:26 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Move many definitions into new top-level
+       Make.build.  Add expressions to SUBDIRS.  Add calendar.c,
+       calendar.h.  Remove expr-evl.c, expr-opt.c expr-prs.c, expr.h,
+       exprP.h, expr.def.
+
+       * case.c: (case_resize) New function.
+       (case_swap) New function.
+
+       * casefile.c: Include mkfile.h.
+
+Fri Feb 25 21:11:35 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * sfm-read.c: Fixed a buglet which caused a crash when trying
+       to read a non-existent file.
+
+Sun Feb 13 16:11:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug 11955.
+
+       * aggregate.c: (parse_aggregate_functions) Code cleanup.
+       Important part: get rid of spurious copying of function->format to
+       destvar->print and destvar->write.
+
+Fri Feb 11 00:08:36 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug 11916, which was confusing a variable's `index' member
+       with the variable's position in a var_set.  Although these are
+       usually the same, they are not for array `var_set's.
+       
+       Took advantage of this bug as an opportunity to clean up and
+       rewrite parse_var_set_vars().
+
+       * vars-prs.c: (parse_vs_variable_idx) New function.
+       (parse_vs_variable) Reimplement in terms of
+       parse_vs_variable_idx().
+       (parse_var_idx_class) New function.
+       (add_variable) New function.
+       (add_variables) New function.
+       (parse_var_set_vars) Rewritten.
+       (struct var_set) Change `lookup_var' member that returns a
+       variable into `lookup_var_idx' member that returns an int.
+       Updated the var set implementations in obvious corresponding ways.
+       Used compare_var_ptr_names(), hash_var_ptr_name() just added.
+       
+Fri Feb 11 00:06:03 2005  Ben Pfaff  <blp@gnu.org>
+
+       Use our global variable compare & hash functions and give them
+       better names.  Add similar functions for dealing with double
+       pointers to variables.
+       
+       * vars-atr.c: (compare_variables) Renamed compare_var_names().
+       (hash_variable) Renamed hash_var_name().
+       (compare_var_ptr_names) New function.
+       (hash_var_ptr_name) New function.
+       
+       * t-test.q: (cmd_t_test) Use global compare_var_names(),
+       hash_var_name().
+       (compare_var_name) Removed.
+       (hash_var_name) Removed.
+
+Fri Feb 11 00:04:39 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix dictionary bug.
+       
+       * dictionary.c: (compare_variable_dblptrs) Rename
+       compare_var_ptrs() and fix it to properly dereference the double
+       pointers.
+
+Mon Feb  7 09:58:15 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       crosstabs.q examine.q oneway.q q2c.c:  Added a q2c feature to 
+       declare subcommands as mandatory.  Closed bug #11843
+
+Sat Feb  5 20:35:10 WST 2005 John Darrington <john@darrington.wattle.id.au>
+       
+       * getline.c command.[ch] command.def:  Added (very rudimentary)
+       support for line  completion when in interactive mode.  Partially 
+       addresses bug #11693
+       
+Mon Jan 31 09:52:51 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q factor_stats.c oneway.q output.c pfm-read.c: Fixed some
+       problems revealed by valgrind.
+
+
+Wed Jan 26 11:44:11 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * set.q: Affixed a fix to the previous fix such that we'll be OK now
+       whether or not PAGER is set.
+
+Wed Jan 26 09:25:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * set.q: Copied the string produced by getenv("PAGER") thus avoiding
+       "invalid free" errors.  Hopefully fixes bug #11722
+
+       * compute.c expr-prs.c: Check that lvalues are populated before 
+       attempting to destroy them.  Closes bug #11676
+
+Tue Jan 25 21:01:43 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * aggregate.c: Initialised the complete agr_proc structure.
+       Closes bug #11675
+
+
+Sun Jan 23 23:02:21 2005  Ben Pfaff  <blp@gnu.org>
+
+       * print.c: (print_trns_free) Close the dfm writer if there is one,
+       fixing a memory leak.
+
+Mon Jan 24 12:24:36 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * glob.c oneway.q q2c.c t-test.q vfm.c: Still *more* memory leaks 
+       fixed.
+
+
+Fri Jan 21 19:54:14 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * linked-list.[ch] Added
+
+       * examine.q file-handle.[hq] font.h glob.c groff-font.c postscript.c 
+         set.q:    Yet more memory leaks
+
+Tue Jan 18 23:12:40 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q examine.q : More memory leaks fixed.
+
+Tue Jan 18 19:26:59 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q  factor_stats.[ch] get.c pfm-read.c: Plugged numerous
+       memory leaks.
+
+Mon Jan 10 14:43:45 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * ascii.c cartesian.c casefile.c chart.h devind.c 
+         examine.q frequencies.q
+         html.c output.h piechart.c plot-chart.c plot-hist.c
+
+         Integrated the chart rendering into the output stream
+         (currently only works for html).
+         
+         Removed gratuitous use of ifndef NO_CHARTS, and replaced with
+         dummy-chart.c for compiling without charts.
+
+       * mkfile.[ch] Created.  
+
+       * som.[ch] tab.[ch]: Changed name of som_table to som_entity
+       Added type element so we can tell if it's a chart or a table.
+
+       * chart.h examine.q piechart.c plot-chart.c plot-hist.c: changed the 
+       API of charts to be more like that of tables.
+
+Thu Jan 13 21:00:02 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile.c main.c: Moved the SIGINT handler from casefile.c to
+       main.c. Removed the handler for SIGQUIT.
+
+Mon Jan 10 14:43:45 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile.c: Added a signal handler to delete temp files on 
+       SIGINT and SIGQUIT
+
+       * permissions.c Inhibited the PERMISSIONS command when SAFER is on.
+
+       * command.def Added a lot more unimplemented commands.
+
+       * copyleft.[ch] cmdline.c Moved legal information to copyleft.c
+
+Sat Jan  8 23:58:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: (compare_initial_runs) Needed additional level of
+       dereferencing.
+       (merge_once) Fix plenty of stupid mistakes.
+
+Sat Jan  8 23:55:27 2005  Ben Pfaff  <blp@gnu.org>
+
+       * casefile.c: (casefile_sleep) Need to flush_buffer() after
+       calling casefile_to_disk() or we will lose the last block in the
+       file if the casefile started out as disk-based.
+       (casefile_get_reader) Initialize reader->destructive to 0.
+       (cmd_debug_casefile) Add new test pattern.
+       (test_casefile) Define new test pattern to make sure
+       casefile_sleep() works properly.
+
+Fri Jan  7 08:00:05 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * Makefile.am chart.[ch]  histogram.[ch] piechart.c (Modified);
+          plot-hist.c plot-chart.c (Added) Reorganised these files in an
+          attempt to seperate the creation and processing of charts from their
+          actuall renedering.
+
+        * examine.q frequencies.q generated charts conditional upon the NO_CHARTS
+          macro.
+
+Thu Jan  6 18:48:58 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * main.c Added a signal handler for SIGFPE
+
+       * sort.c Somewhat more robust fix to the previous entry.
+
+Wed Jan  5 21:23:31 2005  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: (merge) Fix assertion for proper Huffman merge pattern:
+       0 == 1 modulo 1.  See Knuth 5.4.9 (vol. 3, 2nd ed.,
+       pp. 361).  Thanks to John Darrington <john@cellform.com.au> for
+       reporting the bug.
+
+Wed Jan  5 22:42:26 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * case.h Fixed bug # 11307
+       
+Wed Jan  5 08:30:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * val-labs.c Fixed bug which caused a crash if VALUE LABELS had
+       a trailing slash.
+
+Mon Jan  3 17:44:37 2005  Ben Pfaff  <blp@gnu.org>
+
+       * pfm-read.c: (read_variables) Remove direct manipulation of
+       v->aux, which is no longer needed.  Fixes bug 11483.
+
+Sat Jan  1 19:01:16 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * data-list.c Fixed a bug in parsing delimiters.
+
+       * group.c vars-atr.c Fixed buglet in hash/compare functions for alpha
+       values.
+
+       * percentiles.c Properly handled calculation of Tukey hinges where
+       the number of data is small.
+
+       * oneway.q Used the generic value_to_string function for independent
+       variable instead of trying to do it ourselves.
+
+       * box-whisker.c Fixed a buglet which caused a crash if the number of
+       data was zero
+
+
+Fri Dec 31 16:47:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q box-whisker.c chart.h Implemented boxplots in EXAMINE
+
+       * percentiles.c Fixed some bugs when calculating percentiles when
+       there's a small number of cases.
+
+Wed Dec 29 08:18:08 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * percentiles.[ch] Added. Calculates percentiles and Tukey hinges
+
+       * examine.q factor_stats.[ch]  Added calculation of percentiles
+
+Fri Dec 24 15:09:11 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q Fixed bug #11227 Made t-test work when the independent
+       variable is alpha
+
+Sat Dec 11 11:43:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * factor_stats.c Fixed calculation of trimmed mean under various
+       special conditions.
+
+Sat Dec  4 17:14:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * histogram.c chart.[ch] factor_stats.c frequencies.q
+
+       Added code to calculate sensible histogram ranges and limits.
+
+Thu Dec  2 13:37:43 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * chart.h Updated to reflect many API changes.
+
+       * cartesian.c chart.c Moved the definitions of chart_write_{xy}scale from 
+       cartesian.c and into chart.c
+
+       * factorstats.[ch] Added the histogram calculations
+
+       * casefile.c Removed an unused variable.
+
+       * frequencies.q examine.q histogram.c  Reworked the API for 
+       histograms.
+
+       * piechart.c  Revised the API for piecharts.
+
+       * var.h  Moved the definitions of freq_tab and freq out of var.h
+       and into frequencies.q where they belong.
+       
+Tue Nov 30 21:10:20 2004  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c: (flip_file) Check for off_t separately from fseeko(),
+       using AC_TYPE_OFF_T.
+
+Tue Nov 30 08:47:41 2004  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c: (flip_file) If fseeko() is not available, use long int
+       for off_t.  Thanks to "Marshall DeBerry" <mdb@radix.net> for
+       reporting the problem.
+
+Mon Nov 29 12:20:59 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q factor_stats.[ch] Changed stderr to se_mean to avoid
+       conflict with stdio.
+
+Sun Nov 21 10:32:41 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * var-labs.c (var_to_string) Now returns null if the variable is null
+
+       * value-labels.c (value_to_string) Made it return null if either the 
+       value or the variable is null.
+
+       * hash.c (hsh_clear) Fixed a buglet.
+
+       * examine.q  factor_stats.[ch] Largely  rewrote, because I'd started 
+       with  the wrong model.
+
+       * casefile.[ch] Added a function to return the casereader.case_idx 
+       member
+
+       * examine.q  Implemented the extreme values results.
+
+John Darrington <john@darrington.wattle.id.au>
+
+       * settings.h set.c glob.[ch] frequencies.q q2c.c error.c lexer.[ch] 
+          output.[ch] getline.c 
+
+          Plugged some memory leaks
+
+Mon Nov 15 23:47:40 2004  Ben Pfaff  <blp@gnu.org>
+
+       Adopt GSL random number generators, paving the way for providing
+       the complete suite of random number generators on expressions.
+       
+       * Makefile.am: Remove random.c, random.h.
+
+       * random.c: Removed.
+
+       * random.h: Removed.
+
+       * algorithm.c: (algo_default_random) Use GSL functions.
+
+       * casefile.c: (test_casefile) Use GSL RNG functions.
+
+       * expr-evl.c: (expr_evaluate) Use GSL RNG functions for OP_NORMAL,
+       OP_UNIFORM.
+
+       * sample.c: (cmd_sample) Use GSL RNG functions.
+       (sample_trns_proc) Ditto.
+
+       * set.q: (static var set_seed) Removed.
+       (static var seed_flag) Removed.
+       (static var rng) New variable.
+       (aux_stc_custom_seed) No seed value anymore, don't print anything.
+       (stc_custom_seed) Use new seed functions.
+       (seed_is_set) Removed.
+       (get_rng) New function that composes the entire external
+       interface.
+       (set_rng) New function.
+       (random_seed) New function.
+
+Mon Nov 15 22:08:25 2004  Ben Pfaff  <blp@gnu.org>
+
+       * expr-evl.c: (expr_evaluate) Fix XDATE.JDAY formula.  Thanks to
+       John Darrington <john@darrington.wattle.id.au> for reporting this
+       bug.
+
+Tue Nov 16 13:19:18 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * permissions.c command.def Added the PERMISSIONS command
+
+Mon Nov 15 01:33:32 2004  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c: (dump_header) Don't try to emit #includes at very top of
+       output file because that will precede #include <config.h>, which
+       is bad.
+       (main) Add needed headers to /* (header) */ code.
+
+Mon Nov 15 01:21:36 2004  Ben Pfaff  <blp@gnu.org>
+
+       Instead of making system or portable file readers responsible for
+       dropping and reordering variables, make them read full cases and
+       let the caller take care of any changes.
+
+       * get.c: New "case map" structure to handle this.  Use for GET,
+       IMPORT, MATCH FILES.  Essentially rewrite the whole file.
+
+       * pfm-read.c: (pfm_read_case) Read into provided case.  Signature
+       changed appropriately.
+
+       * sfm-read.c: (sfm_read_case) Ditto.
+
+Mon Nov 15 00:47:45 2004  Ben Pfaff  <blp@gnu.org>
+
+       Decided that case_serialize() and case_unserialize() were too
+       abstract.  Also we need a couple more functions to avoid excessive
+       copying for data in/out fast paths.
+
+       * case.c: (case_serial_size) Removed.
+       (case_serialize) Rename case_to_values() and make its argument
+       explicitly an array of union values.
+       (case_unserialize) Rename case_from_values() and make its argument
+       explicitly an array of union values.
+       (case_data_all) New function.
+       (case_data_all_rw) New function.
+
+       * casefile.c: (struct casefile) Change buffer from array of
+       unsigned char to array of union value for better accuracy.
+       Redefine buffer_used and buffer_size in terms of values, not
+       bytes.  Remove case_size because it is now redundant with
+       value_cnt.  Fix up all references to these members.
+
+Mon Nov 15 00:45:46 2004  Ben Pfaff  <blp@gnu.org>
+
+       * barchart.c: (struct subcat) Make `label' member const to silence
+       GCC warning with -Wwrite-strings.
+
+       * cartesian.c: (struct dataset) Ditto.
+
+       * case.c: Don't re-define NDEBUG if already defined.
+       Add lots of comments.
+
+       * str.c: Fix includes.
+
+       * crosstabs.q: Fix includes.
+
+       * examine.q: Fix includes.  Fix GCC warning about unused
+       variables.
+       
+       * frequencies.q: (stat macro) Removed and replaced where used by
+       its expansion.
+
+       * list.q: Fix includes.
+
+       * oneway.q: Fix includes.
+
+       * piechart.c: Fix includes.  Only define M_PI if not already
+       defined.
+
+       * sfm-read.c: (bswap) New function.
+       (bswap_int32) Write in terms of bswap.
+       (bswap_flt64) Ditto.
+
+       * str.c: (ds_data) Add external definition here, needed because
+       str.h has only an `extern inline' version.
+
+       * value-labels.c: Fix includes.
+
+Mon Nov 15 00:40:55 2004  Ben Pfaff  <blp@gnu.org>
+
+       Instead of providing a system or portable file writer with a raw
+       case in the format needed for output, provide it with a regular
+       case.  The writer takes care of any needed translation.
+
+       * aggregate.c: Adopt new scheme for AGGREGATE.
+       (struct agr_proc) sfm_agr_case member removed.
+       (write_case_to_sfm) Removed because the new interface is easier to
+       use.
+
+       * get.c: Adopt new scheme for SAVE, XSAVE, EXPORT.
+
+       * pfm-write.c: Implement new scheme.
+
+       * sfm-write.c: Ditto.
+
+Mon Nov 15 00:32:24 2004  Ben Pfaff  <blp@gnu.org>
+
+       Instead of treating `struct file_handle' as a class to subclass
+       into data files, system files, and portable files, instead use it
+       as a helper that coordinates access.  Now it is opaque, too.
+
+       This means that most references to a struct file_handle are now
+       changed into references to one of struct dfm_reader, struct
+       dfm_writer, struct sfm_reader, struct sfm_writer, struct
+       pfm_reader, or struct pfm_writer, according to what's being read
+       or written.
+
+       Most related changes are only worth summarizing briefly.
+
+       * dictionary.c: (dict_clear) Destroy aux data in deleted
+       variables.
+       (dict_clear_aux) New function.
+       (dict_create_var) Initialize aux, aux_dtor.
+       (dict_delete_var) Destroy aux data in deleted variable.
+
+       * file-handle.h: (struct fh_ext_class) Removed.
+       (struct file_handle) Removed.
+       (fh_init_files) Removed.
+
+       * file-handle.q: Changed references to a handle's `private' member
+       to direct references.
+       (struct private_file_handle) Renamed file_handle.
+       Add next, open_cnt, type, open_mode, aux members.
+       (struct file_handle_list) Removed.
+       (extern var inline_file) Removed.
+       (static var file_handles) Changed from file_handle_list * to
+       file_handle *.
+       (create_file_handle) Initialize new members.
+       (fh_close_handle) Removed.
+       (mode_name) New function.
+       (fh_open) New function.
+       (fh_close) New function.
+       (fh_parse_file_handle) Renamed fh_parse().
+
+       * glob.c: (init_glob) Remove fh_init_files() call.
+       
+       * aggregate.c: use sfm_writer.
+       (create_sysfile) Removed because the new interface is simpler.
+       
+       * apply-dict.c: Use sfm_reader.
+
+       * data-list.c: Use dfm_reader.
+
+       * file-type.c: Use dfm_reader.
+
+       * get.c: Use sfm_reader, sfm_writer, pfm_reader, pfm_writer.
+
+       * inpt-pgm.c: Use dfm_reader.
+
+       * print.c: Use dfm_writer.
+
+       * sysfile-info: Use sfm_reader.
+
+       * dfm-read.c: Adopt new file handle infrastructure.
+
+       * dfm-write.c: Ditto.
+
+       * pfm-read.c: Ditto.
+       
+       * pfm-write.c: Ditto.
+
+       * sfm-read.c: Ditto.
+
+       * sfm-write.c: Ditto.
+       
+Mon Nov 15 00:31:44 2004  Ben Pfaff  <blp@gnu.org>
+
+       Break dictionary functions into separate header file.
+
+       * dictionary.h: New file.
+
+       * var.h: Moved dict_*() functions to dictionary.h.
+
+Mon Nov 15 00:30:33 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of procedure-specific union in struct variable, using
+       instead a void * pointer and a destructor function.
+
+       Most related changes are only worth brief summaries.
+
+       * crosstabs.q: Fix includes.  Use new struct var_range in lieu of
+       old p.crs member in struct variable.
+       
+       * frequencies.q: Fix includes.  Use new struct var_freqs in lieu
+       of old p.frq member in struct variable.
+
+       * histogram.c: (draw_histogram) Takes new freq_tab arg because
+       it's no longer possible to grab this from var->p.frq.
+
+       * piechart.c: (draw_piechart) Ditto.
+
+       * group.c: (group_proc_get) New function.
+
+       * levene.c: Use group_proc_get() in lieu of old p.grp_data member
+       in struct variable.
+
+       * oneway.q: Ditto.
+
+       * t-test.q: Ditto.
+
+       * main.c: (execute_command) Clear aux data in default_dict after
+       each command.  (It's debatable whether this should be done.)
+
+       * matrix-data.c: Use new struct mxd_var in lieu of old p.mxd
+       member in struct variable.
+
+       * means.q: Get rid of integer mode, which is not included in
+       recent SPSS and was the only code that wanted per-variable private
+       data.
+
+       * var.h: (struct crosstab_proc) Removed.
+       (struct frequencies_proc) Removed.
+       (struct list_proc) Removed.
+       (struct get_proc) Removed.
+       (struct means_proc) Removed.
+       (struct matrix_data_proc) Removed.
+       (struct match_files_proc) Removed.
+       (lots of enums) Removed.
+       (struct variable) Removed members `p', `get'.  Add member
+       `aux_dtor'.
+
+       * vars-atr.c: (var_attach_aux) New function.
+       (var_detach_aux) New function.
+       (var_clear_aux) New function.
+       (var_dtor_free) New function.
+       (discard_variables) Use NULL instead of inline_file.
+
+Fri Nov 12 10:07:11 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * value-labs.c  Fixed the implmentation of value_to_string, so 
+       that it properly handles alpha values.
+
+       * oneway.q  Changed instances where labels were being probed manually, 
+       to use the canonical {var,value}_to_string functions
+
+Thu Nov 11 21:01:31 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q cartesian.c chart.[ch]   Added normal and detrended normal
+       plots.  Changed the API of the cartesian plot to be a much lower level
+       thing.
+
+Sun Nov  7 17:25:04 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q Added some of the parametric calculations
+
+       * factor_stats.[ch]  Created
+       
+Sat Nov  6 21:24:31 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q  Changed the definition of factors to be a composite, and
+       dealt with the consequences.
+
+Sat Nov  6 20:40:38 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q Fixed problem where examine wasn't dealing properly with 
+       splits
+
+Sat Nov  6 14:49:47 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * oneway.q Fixed problem where oneway wasn't dealing properly with 
+       splits
+
+Thu Nov  4 11:09:01 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * q2c.c examine.q  Fixed a bug (feature?) whereby arrays in the
+       command which had settings didn't get the appropriate code
+       generated.
+
+       * val.h value-labels.[ch] var-labs.c Added v*to_string functions
+       to convert variables/values to strings.
+
+       * examine.q  Added framework for the EXAMINE command.
+
+Mon Nov  1 12:46:17 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * q2c.c frequencies.q set.q t-test.q  Fixed the q2c parsing of DBL 
+       subcommand types.  Changed frequencies.q to use it rather then the 
+       custom parser.  Dealt with the consequences.  Added a test for NTILES
+       subcommand of frequencies.
+
+Sat Oct 30 09:16:29 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * oneway.q   Fixed up the behaviour when given missing values
+
+       * levene.c oneway.q Fixed a buglet with the levene statistic and
+       incorporated the levene test into the oneway command.
+
+        * group.h  t-test.q  Moved the CMP_EQ and CMP_LE symbols out of 
+       global scope, since they're only relevant to T-TEST
+
+Fri Oct 29 17:39:03 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+        * group.c group.h group_proc.h levene.c oneway.q t-test.q
+
+       Made the t-test more consistent
+       with the way it handles groups.  That is, it now uses a hash instead
+       of an array of 2.  Also, made the levene.c file independent of the 
+       implementation of the t-test.  So now levene should be fine for both
+       t-test and anova.
+
+       * Added an oneway.q file for one way anova
+
+Wed Jun  2 22:08:02 2004  Ben Pfaff  <blp@gnu.org>
+
+       * descript.c: (cmd_descriptives) Remove harmless but bogus test in
+       STATISTICS parsing.
+
+Mon May 31 20:45:24 2004  Ben Pfaff  <blp@gnu.org>
+
+       Fix memory leaks.
+
+       * data-list.c: (cmd_data_list) Free dls->delims on lossage.
+       (data_list_trns_free) Free dls->delims.
+
+       * t-test.q: (tts_custom_pairs) Free vars.
+       (ssbox_one_sample_init) Fix tab_vline() argument.
+       (ssbox_independent_samples_init) Ditto.
+       (trbox_paired_init) Ditto.
+       (trbox_one_sample_init) Ditto.
+
+Mon May 31 17:19:27 2004  Ben Pfaff  <blp@gnu.org>
+
+       Generalize casefiles to the extent that we can use them for
+       sorting and other kinds of data transformations.  Change cases to
+       be copy-on-write to improve memory efficiency in common cases.
+       Every access to a member of a `struct ccase' was changed to be a
+       call to a case_*() function, especially case_data(), case_num(),
+       case_str(), or case_data_rw().  Many instances of a local variable
+       named "case_num" were changed to "case_idx" as a consequence.
+       Many `struct ccase *' were changed to actual `struct ccase'
+       because of copying semantics of cases.  In several places there
+       was a choice between updating debug code to work with the new ADTs
+       or just deleting it because it was useless; I chose to delete it.
+       * Makefile.am: (pspp_SOURCES) Add case.c, case.h.
+
+       * case.c: New file.
+
+       * case.h: New file.
+
+       * aggregate.c: (struct agr_proc) Change type of `sort' to
+       sort_criteria *.  Add `break_vars', `break_var_cnt' members.
+       Rename `vars' to `agr_vars', all references updated.  Change
+       `agr_case' to type `struct ccase'.
+       (cmd_aggregate) Deal with new members.  Use case_create(),
+       sort_active_file_in_place(), sort_active_file_to_casefile().
+       (agr_destroy) Deal with new members.
+       (aggregate_single_case) Ditto.
+       (dump_aggregate_info) Ditto.
+       (initialize_aggregate_info) Ditto.
+       (agr_to_active_file) Ditto.
+       (presorted_agr_to_sysfile) Ditto.
+       (sort_agr_to_sysfile) Removed.
+
+       * alloc.c: (out_of_memory) Make non-static.
+
+       * alloc.h: Prototype out_of_memory().
+
+       * casefile.c: Switched from a linked list in-memory representation
+       to a two-level array-style representation.  The linked list was
+       appropriate when we could stick a header onto cases, but that's no
+       longer the case.  Also, the two-level array will allow for random
+       in-memory access in case that's ever wanted.  Also added the
+       concept of a `destructive casereader', one that destroys cases in
+       the underlying casefile as they are read out.
+       (macro CASES_PER_BLOCK) New macro.
+       (struct casefile) New members `value_cnt', `case_list_size',
+       `case_acct_size', `being_destroyed', `cases'.  Removed `head',
+       `tail'.
+       (struct casereader) Removed `cur'.  Added `destructive', `c'.
+       (global var casefiles) Made static.
+       (static var case_bytes) New var.
+       (casefile_create) Takes a value count, not a case size in bytes,
+       to conform to the case interface.  All callers updated.  Deal with
+       new and removed members.
+       (casefile_destroy) Deal with new and removed members.
+       (casefile_sleep) New function.
+       (casefile_get_case_size) Removed.
+       (casefile_get_value_cnt) New function.
+       (casefile_append) Rewritten to deal with new and removed members.
+       (casefile_append_xfer) New function.
+       (write_case_to_disk) Use case_serialize().
+       (call_posix_fadvise) Removed because posix_fadvise64 segfaults.
+       Couldn't figure out why.
+       (casefile_to_disk) Don't call call_posix_fadvise.  Rewritten to
+       deal with new and removed members.
+       (merge) Removed.
+       (merge_sort) Removed.
+       (casefile_sort) Removed.
+       (casefile_get_reader) Deal with new and removed members.
+       (casefile_get_destructive_reader) New function.
+       (reader_open_file) Make code more readable.  Create case for
+       reader.
+       (casereader_get_casefile) New function.
+       (casereader_read) Deal with new and removed members.  Now returns
+       a copy of the case, so that the caller is responsible for
+       destroying the returned case.
+       (casereader_read_xfer) New function.
+       (casereader_destroy) Destroy reader's case.
+       (test_casefile) Second arg is now a value count, all callers
+       updated.  Now tests destructive readers too.
+       (get_random_case) Deal with new case ADT.
+       (write_random_case) Ditto.
+       (read_and_verify_random_case) Ditto.
+
+       * crosstabs.q: Remove debug code.
+
+       * descript.q: (calc_descriptives) Deal with new case, casefile
+       ADTs.
+
+       * dfm.c: (cmd_begin_data) There's no storage_source_class anymore.
+
+       * do-if.c: Remove unneeded header inclusion.
+
+       * expr-prs.c: Remove debug code.
+
+       * exprP.h: Remove debug code.
+
+       * flip.c: (flip_file) Use fseeko() if available.
+
+       * formats.c: Remove debug code.
+
+       * get.c: Remove debug code.
+       (struct mtf_file) Change `input' from `union value *' to `struct
+       ccase', all references updated.
+
+       * levene.c: (levene) Deal with new case, casefile ADTs.
+
+       * list.q: Remove debug code.
+
+       * loop.c: Remove debug code.
+       
+       * matrix-data.c: Remove debug code.
+
+       * means.q: Remove debug code.
+
+       * mis-val.c: Remove debug code.
+
+       * pfm-read.c: Remove debug code.
+       (pfm_read_code) Change second arg from `union value *' to `struct
+       ccase *', all references updated.
+
+       * recode.c: (string_to_long) Make first arg const.
+       (convert_to_double) Ditto.
+
+       * repeat.c: Remove debug code.
+
+       * sample.c: Remove debug code.
+
+       * sfm-read.c: Remove debug code.
+       (sfm_read_case) Change second arg from `union value *' to `struct
+       ccase *'.
+
+       * sort.c: Redone in terms of casefiles.
+       (enum sort_direction) Moved here from sort.h.
+       (struct sort_criterion) New structure.
+       (struct sort_criteria) New structure.
+       (cmd_sort_cases) Rewritten.
+       (prepare_to_sort_active_file) New function.
+       (sort_active_file_in_place) New function.
+       (sort_active_file_to_casefile) New function.
+       (parse_sort) Renamed sort_parse_criteria(), rewritten & interface
+       changed, all callers updated.
+       (destroy_sort_cases_pgm) Renamed sort_destroy_criteria(),
+       rewritten & interface changed, all callers updated.
+       (sort_cases) Renamed sort_execute(), rewritten & interface
+       changed, all callers updated.
+       (struct internal_sort) Removed.
+       (do_internal_sort) Rewritten, interface changed.
+       (destroy_internal_sort) Removed.
+       (compare_case_dblptrs) Use sort_criteria instead of sort_case_pgm.
+       (struct initial_run) Removed; an initial run is now just a
+       casefile.
+       (compare_initial_runs) Rewritten.
+       (struct external_sort) Changed almost completely.
+       (do_external_sort) Rewritten, interface changed.
+       (destroy_external_sort) Rewritten.
+       [HAVE_MKDTEMP] (make_temp_dir) Removed.
+       [!HAVE_MKDTEMP] (do_mkdir) Removed.
+       [!HAVE_MKDTEMP] (make_temp_dir) Removed.
+       (init_external_sort) Removed.
+       (simulate_error) Removed.
+       (rmdir_temp_dir) Removed.
+       (get_temp_file_name) Removed.
+       (open_temp_file) Removed.
+       (close_temp_file) Removed.
+       (remove_temp_file) Removed.
+       (write_temp_file) Removed.
+       (read_temp_file) Removed.
+       (struct record_run) Change `record' from `struct case_lit *' to
+       `struct ccase'.
+       (struct initial_run_state) Remove `idx_to_fv', `free_list',
+       `file_idx', `output_file'.  Add `run', casefile'.  Change
+       `last_output' from `struct case_list *' to `struct ccase'.
+       (write_initial_runs) Change interface, rewrite.
+       (sort_sink_write) Renamed process_case(), changed interfaced,
+       rewrote.
+       (destroy_initial_run_state) Rewritten.
+       (allocate_cases) Rewritten.
+       (compare_record) Interface changed, rewritten.
+       (start_run) Rewritten.
+       (end_run) Rewritten.
+       (output_record) Rewritten.
+       (grab_case) Removed.
+       (release_case) Removed.
+       (struct merge_case) Change `cases' from double pointer to single
+       pointer.
+       (merge) Deal with new case and casefile ADTs.
+       (struct run) Removed.
+       (merge_once) Rewritten, interface changed.
+       (fill_run_buffer) Removed.
+       (sort_sink_make_source) Removed.
+       (sort_sink_class) Removed.
+       (struct sort_source_aux) Removed.
+       (sort_source_read_helper) Removed.
+       (sort_source_read) Removed.
+       (read_sort_output) Removed.
+       (read_internal_sort_output) Removed.
+       (read_external_sort_output) Removed.
+       (sort_source_destroy) Removed.
+       (sort_source_class) Removed.
+
+       * sort.h: (struct sort_cases_pgm) Removed.
+       (enum sort_direction) Moved to sort.c.
+
+       * t-test.q: (calculate) Deal with new case, casefile ADTs.
+
+       * tab.c: Remove debug code.
+
+       * var-labs.c: Remove debug code.
+
+       * var.h: (struct ccase) Removed.
+       (struct case_list) Removed.
+
+       * vars-atr.c: (discard_variables) Use free_case_source().
+
+       * vars-prs.c: (parse_vs_variable) Make arg const.
+       (parse_dict_variable) Ditto.
+       (parse_variables) Make struct dictionary * arg const.
+       (parse_var_set_vars) Make struct var_set * arg const.
+       (struct var_set) Add const to some of the function pointers' args.
+       (var_set_get_cnt) Make arg const.
+       (var_set_get_var) Make first arg const.
+       (var_set_lookup_var) Make first arg const.
+       (dict_var_set_get_cnt) Make arg const.
+       (dict_var_set_get_var) Make first arg const.
+       (dict_var_set_lookup_var) Make first arg const.
+       (var_set_create_from_dict) Make arg const.  Add cast to aux
+       assignment.
+       (struct array_var_set) Add const to var member.
+       (array_var_set_get_cnt) Make arg const.
+       (array_var_set_get_var) Make first arg const.
+       (array_var_set_lookup_var) Make first arg const.
+       (var_set_create_from_array) Make first arg const.  Insert cast.
+
+       * vfm.c: (struct write_case_data) Change trns_case, sink_case
+       members from `struct ccase *' to `struct ccase'.
+       (static var lag_queue) Change from double to single pointer.
+       (procedure) Optimize trivial case.
+       (internal_procedure) Deal with changed case, case_source ADTs.
+       (create_trns_case) Changed interface, rewrote.
+       (open_active_interface) Initialize modified lag queue.
+       (write_case) Deal with changed case ADT.
+       (lag_case) Deal with modified lag queue.
+       (close_active_file) Destroy modified lag queue.
+       Deal with changed case_source, case_sink ADTs.
+       (destroy_storage_stream_info) Make null arg into no-op.
+       (storage_sink_make_source) Set aux in created source.
+       (storage_source_read) Deal with changed case, casefile ADTs.
+       (storage_source_create) New function.
+       (lagged_case) Rewrite.
+       (free_case_source) New function.
+       (free_case_sink) Rewrite.
+       (struct split_aux_data) Changed prev_case from `struct ccase *' to
+       `struct ccase'.
+       (procedure_with_splits) Deal with changed prev_case.
+       (procedure_with_splits_callback) Ditto.
+       (multipass_split_aux_data) Changed prev_case from `struct ccase *' to
+       `struct ccase'.
+       (multipass_procedure_with_splits) Deal with changed prev_case.
+       (multipass_split_callback) Ditto.
+       
+       
+Mon May 31 17:19:06 2004  Ben Pfaff  <blp@gnu.org>
+
+       The workspace idea didn't work out.
+
+       * Makefile.am: (pspp_SOURCES) Remove workspace.c, workspace.h.
+       
+       * workspace.c: Removed.
+
+       * workspace.h: Removed.
+
+Sun May 30 18:35:19 2004  Ben Pfaff  <blp@gnu.org>
+
+       Fully implement arbitrary delimiters on DATA LIST, extending the
+       half implementation that was already there.
+
+       * data-list.c: (struct data_list_pgm) Remove `delim', add
+       `delims', `delim_cnt'.
+       (cmd_data_list) Initialize new members.  Parse delimiters and
+       clean up code a bit.
+       (cut_field) Extract fields with arbitrary delimiters.  Also, fix
+       handling of leading commas.
+       (read_from_data_list_fixed) Expand tabs.  Adapt to new DFM
+       interfaces.
+       (read_from_data_list_free) Adapt to new DFM interfaces.
+       (read_from_data_list_list) Ditto.
+       (repeating_data_trns_proc) Ditto.
+
+       * dfm.c: Split up reader and writer into separate code, because
+       they do different things.  Use struct string instead of explicit
+       allocation code, for clarity.
+       (enum dfm_reader_flags) New enum.
+       (struct dfm_fhuser_ext) Removed.
+       (struct dfm_reader_ext) New.
+       (get_reader) New function, used by just about all the reader
+       functions.
+       (dfm_close) Removed.
+       (close_reader) New function.
+       (dfm_open_for_reading) Rewrite initialization of dfm_fhuser_ext.
+       (dfm_open_for_writing) Ditto.
+       (macro force_line_buffer_expansion) Removed.
+       (count_tabs) Removed.
+       (tabs_to_spaces) Removed.
+       (read_record) Deal with new dfm_reader_ext.  Use struct string
+       functions.  Don't convert tabs to spaces.
+       (dfm_eof) New function.
+       (dfm_get_record) Changed interface, rewrote.
+       (dfm_expand_tabs) New function.
+       (dfm_fwd_record) Renamed dfm_forward_record(), updated to new
+       dfm_reader_ext, rewritten.
+       (dfm_bkwd_record) Renamed dfm_reread_record(), updated to new
+       dfm_reader_ext, rewritten.
+       (dfm_set_record) Removed in favor of dfm_forward_columns().
+       (dfm_forward_columns) New function.
+       (dfm_get_cur_col) Renamed dfm_column_start, updated to new
+       dfm_reader_ext, rewritten.
+       (static var dfm_r_class) Use close_reader for the destructor.
+       (struct dfm_writer_ext) New.
+       (dfm_put_record) Updated to new dfm_writer_ext, rewritten.  Uses
+       bounce buffer now instead of local allocation.
+       (close_writer) New function.
+       (static var dfm_writer_ext) Use close_writer for destructor.
+       (cmd_begin_data) Adapt to new dfm_reader_ext.
+
+       * file-handle.q: Add support for per-file tab width.
+       (struct private_file_handle) Add tab_width member.
+       (q2c specifications) Add tabwidth subcommand.
+       (cmd_file_handle) Put parsed tab width into private_file_handle.
+       (create_file_handle) Set default tab width.
+       (handle_get_tab_width) New function.
+
+       * file-type.c: (file_type_source_read) Adapt to new DFM interface.
+
+       * inpt-pgm.c: (reread_trns_proc) Ditto.
+
+       * matrix-data.c: (context) Ditto.
+       (another_token) Ditto.
+       (mget_token) Ditto.
+       (force_eol) Ditto.
+
+Sun May 30 18:33:59 2004  Ben Pfaff  <blp@gnu.org>
+
+       * casefile.c: (casefile_destroy) Fix memory leak by freeing
+       cf->filename.
+       (casereader_destroy) Don't close file descriptor -1.
+
+       * recode.c: (cmd_recode) Fix memory leak.
+
+       * set.q: (q2c specifications) Fix typo in user message.
+
+       * str.c: (st_bare_pad_len_copy) Change memcpy to memmove to avoid
+       undefined behavior for overlapping arguments.
+
+Sun May 30 18:31:48 2004  Ben Pfaff  <blp@gnu.org>
+
+       * casefile.c: valgrind doesn't implement posix_fadvise() yet, so
+       don't call it when we're running under valgrind.
+       (call_posix_fadvise) New function.
+       (casefile_to_disk) Use call_posix_fadvise().
+       (reader_open_file) Ditto.
+       
+Sun May 30 18:20:12 2004  Ben Pfaff  <blp@gnu.org>
+
+       Update our string ADTs, struct string and struct len_string.  Get
+       rid of pool support, which was largely unused.  Rename lots of
+       functions to have more obvious or consistent names.
+       
+       * ascii.c: Get rid of ascii_pool.  It was only used for string
+       allocations.
+       (ascii_open_global) Don't create ascii_pool.
+       (ascii_close_driver) Don't destroy ascii_pool.
+       (ascii_postopen_driver) Don't use pool.
+       (ascii_close_driver) Destroy strings manually.
+
+       * str.c: (ds_create) Remove pool argument, all references updated.
+       (ds_init) Ditto.
+       (ds_replace) Remove pool support, make more efficient when we
+       don't need to reallocate.
+       (ds_destroy) Remove pool support.
+       (ds_rpad) New function.
+       (ds_size) Renamed ds_capacity(), all references updated.
+       (ds_value) Renamed ds_c_str(), all references updated.
+       (ds_concat) Renamed ds_puts(), all references updated.
+       (ds_concat_buffer) Renamed ds_concat(), all references updated.
+       (ds_putchar) Renamed ds_putc(), all references updated.
+       (ds_getline) Renamed ds_gets(), all references updated.
+       (ls_create) Remove pool argument, all references updated.
+       (ls_create_buffer) Ditto.
+       (ls_destroy) Removed pool support.
+       (ls_value) Renamed ls_c_str(), all references updated.
+
+       * str.h: (ls_length) [__GNUC__] Add inline version.
+       (ls_c_str) [__GNUC__] Add inline version.
+       (ls_end) [__GNUC__] Add inline version.
+       (struct string) Remove pool member.  Rename `size' to `capacity',
+       all references updated.
+
+       * tab.c: (text_format) Instead of using pool argument to
+       ls_create_buffer(), call pool_register() on allocated data.
+
+Mon Apr 26 22:40:07 2004  Ben Pfaff  <blp@gnu.org>
+
+       We're abusing the current ASCII driver by telling it to allocate a
+       9999-line, 9999-character page in the tests.  This causes some
+       systems to curl up and die because it allocates 20 MB of
+       contiguous RAM.  This change alleviates at least part of the
+       problem.  It is mostly a stop-gap until the new output system is
+       ready.
+       
+       * ascii.c: (struct line) New structure.
+       (struct ascii_driver_ext) Remove `page', `page_size', `line_len',
+       `line_len_size', `n_output' members.  Add `lines', `lines_cap'.
+       (ascii_preopen_driver) Initialize new members, not old ones.
+       (ascii_close_driver) Destroy new members, not old ones.
+       (ascii_open_page) Allocate new members, not old ones.
+       (expand_line) Allocate room in line.
+       (draw_line) Use new members.
+       (ascii_line_horz) Ditto.
+       (ascii_line_vert) Ditto.
+       (ascii_line_intersection) Ditto.
+       (text_draw) Ditto.
+       (output_lines) Ditto.
+       (ascii_close_page) Ditto.
+
+Sun Apr 25 23:40:15 2004  Ben Pfaff  <blp@gnu.org>
+
+       * matrix.c: Dead code.  Removed.
+
+       * matrix.h: Dead code.  Removed.
+
+Fri Apr 16 23:59:51 2004  Ben Pfaff  <blp@gnu.org>
+
+       Contrary to what I'd always understood, there is an efficient
+       algorithm for deletion from a hash table populated via linear
+       probing.  This change implements it.
+       
+       * hash.c: (hsh_rehash) Probe in increasing order.
+       (hsh_probe) Ditto.
+       (locate_matching_entry) Ditto.
+       (hsh_delete) Use Knuth's Algorithm 6.4R for deletion.
+
+Tue Apr 13 19:24:15 2004  Ben Pfaff  <blp@gnu.org>
+
+       * moments.c (calc_moments): Adjust calculation of kurtosis to
+       avoid subtracting huge numbers from huge numbers, on Michael
+       Kiefte's advice.
+
+Sun Apr 11 14:22:12 2004  Ben Pfaff  <blp@gnu.org>
+
+       Rework moments routines for improved numerical stability based on
+       Michael Kiefte's advice.  Any bugs or remaining numerical problems
+       are still mine though.
+
+       There is now a struct moments1 for use with one-pass moments.  It
+       uses a provisional means algorithm as an attempt to improve
+       accuracy of higher moments.  The older struct moments now only
+       handles two-pass moments.
+       
+       * aggregate.c: Use moments1 instead moments.
+
+       * descript.c: Revert previous change, which is no longer needed
+       due to the moments revision.
+
+       * moments.c: (calc_moments) New function for calculating variance,
+       skewness, kurtosis.
+       (moments_pass_one) Only accumulate weights bigger than zero.
+       (moments_calculate) Allow calculating the mean on pass one, others
+       require pass two.  Implement in terms of calc_moments().
+       (struct moments1) New structure.
+       (init_moments1) New function.
+       (moments1_clear) Ditto.
+       (moments1_create) Ditto.
+       (moments1_add) Ditto.
+       (moments1_calculate) Ditto.
+       (moments1_destroy) Ditto.
+       (cmd_debug_moments) Deal with `struct moments' or `struct
+       moments1' as requested by user.
+
+Sun Apr 11 14:21:55 2004  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am (pspp_SOURCES): Remove debug.c.
+
+       * debug.c: Removed.  It was empty anyway.
+
+Fri Apr  9 20:04:49 2004  Ben Pfaff  <blp@gnu.org>
+
+       * descript.c (calc_descriptives): Fix assert failure when only
+       MOMENT_MEAN is needed.
+
+2004-04-09  Michael Kiefte  <mkiefte@dal.ca>
+
+       * descript.c: 
+
+       fixed problem with parsing in match_statistic() causing
+       "DESCRIPTIVE STAT=MEAN." to barf.
+
+       "MEAN" is now default if "SORT" given without specification.
+
+       Fixed infinite loop with "DESCRIPT GIBBERISH=ALL."  Parsing is
+       generally less forgiving of syntax errors: better to have it do
+       nothing and type it in again then to not know what it actually did
+       instead.  
+
+       z-score transformation now checks score for user-missing values
+       and checks std_dev for SYSMIS.
+
+2004-04-06  Michael Kiefte  <mkiefte@dal.ca>
+
+       * aggregate.c, crosstabs.q, descript.c, dictionary.c, frequencies.q, levene.c, t-test.q, var.h: 
+       Changed dict_get_case_weight() to accept an additional int * flag
+       to complain about system-missing, user-missing, zero, or negative
+       weights and updated existing functions to pass int * to
+       dict_get_case_weight().
+
+2004-04-05  jmd  <jmd@gnu.org>
+
+       * main.c: Fixed configuration problems with gsl
+
+       * t-test.q: Fixed some problems encountered when compiling under Cygwin
+
+2004-04-03  blp  <blp@gnu.org>
+
+       * lexer.c, ChangeLog:
+       Fix infinite loop on comment at end of file, add test.
+
+2004-04-03  jmd  <jmd@gnu.org>
+
+       * settings.h, var.h, ChangeLog, Makefile.am, cmdline.c, command.c, command.h, error.h, filename.c, frequencies.q, lexer.h, main.c, q2c.c, set.q:
+       Fixed the calculation of percentiles and added --syntax and --algorithm options
+
+Sat Apr  3 11:43:37 2004  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c: (lex_skip_comment) Handle end-of-file correctly (I
+       hope).
+
+Sat Apr  3 15:00:18 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+        * frequencies.q:  Fixed the calculation of percentiles
+
+       * Makefile.am:  Added the --ansi flag and dealt with the
+       consequences.  Added some entries to PSPP_sources so that
+       make distcheck would pass
+
+       * cmdline.c:   Added the --syntax and --algorithm options
+
+       * q2c.c:  Added an implicit /ALGORITHM subcommand to everything.
+
+Fri Apr  2 11:25:22 WAST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q, levene.c, levene.h  Converted t-test (incl levene) to 
+       use the new multipass_split_... mechanism.
+
+Wed Mar 31 22:36:22 2004  Ben Pfaff  <blp@gnu.org>
+
+       * frequencies.q: (calc_stats) Use moments data structure and
+       calc_seskew(), calc_sekurt() functions.
+
+       * set.q main.c settings.h Added support for --syntax and --algorithm 
+       options
+
+Tue Mar 30 22:04:19 2004  Ben Pfaff  <blp@gnu.org>
+
+       * vfm.c: Had to get last call to multipass_split_output() inside
+       open_active_file()/close_active_file() pairing, so introduce new
+       function.
+       (internal_procedure) Move procedure() code here, except for calls
+       to open_active_file() and close_active_file().
+       (procedure) Wrap open_active_file() and close_active_file() around
+       internal_procedure().
+       (multipass_procedure_with_splits) Wrap open_active_file() and
+       close_active_file() around internal_procedure().
+
+Tue Mar 30 22:01:57 2004  Ben Pfaff  <blp@gnu.org>
+
+       * descript.c: (cmd_descriptives) Free `vars' to avoid memory leak.
+
+Mon Mar 29 16:26:40 2004  Ben Pfaff  <blp@gnu.org>
+
+       * debug.c: Removed.  Moved cmd_debug_evaluate() into expr-evl.c.
+
+       * expr-evl.c: (cmd_debug_evaluate) Moved here from debug.c.
+
+Mon Mar 29 16:03:08 2004  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: By default turn off some of the more expensive
+       assertions.
+       (expensive_assert) New macro which expands to assert if
+       EXTRA_CHECKS is defined, to nothing otherwise.
+       (unique) Use expensive_assert().
+       (binary_search) Ditto.
+       (push_heap) Ditto.
+       (pop_heap) Ditto.
+       (make_heap) Ditto.
+       (sort_heap) Ditto.
+
+       * command.c: (conflicting_3char_prefixes) Words that are the same
+       don't cause conflicts when they are abbreviated to the first three
+       letters.
+
+       * expr-evl.c: (CONCAT_func) Fix memory leak by incrementing struct
+       nonterm_node's n earlier.
+       (generic_str_func) Ditto.
+       
+Mon Mar 29 15:32:17 2004  Ben Pfaff  <blp@gnu.org>
+
+       Add support for multipass procedures.  Rewrite DESCRIPTIVES to
+       test multipass support, take advantage of new moments
+       calculation, and to not be such crappy code.  Get rid of q2c
+       processing for DESCRIPTIVES.
+
+       * vfm.c: (struct multipass_split_aux_data) New structure.
+       (multipass_procedure_with_splits) New function.
+       (multipass_split_callback) New function.
+       (multipass_split_output) New function.
+       * descript.q: Removed.
+
+       * descript.c: New file.
+
+       * var.h: Removed descriptives enums.
+       (struct descriptives_proc) Removed.
+       (struct variable) Removed p.dsc.
+
+       * Makefile.am: (q_sources_c) Remove descript.c.
+       (q_sources_q) Removed descript.q.
+       
+Mon Mar 29 15:31:55 2004  Ben Pfaff  <blp@gnu.org>
+
+       New manager for keeping track of used workspace.
+       
+       * workspace.c: New file.
+
+       * workspace.h: New file.
+
+       * Makefile.am: (pspp_SOURCES) Add workspace.c, workspace.h.
+
+       * sort.c: (do_internal_sort) Use workspace_malloc().
+       (destroy_internal_sort) Use workspace_free().
+
+Mon Mar 29 15:31:08 2004  Ben Pfaff  <blp@gnu.org>
+
+       New `struct casefile' for managing sets of cases.
+
+       * casefile.c: New file.
+
+       * casefile.h: New file.
+
+       * command.def: Add DEBUG CASEFILE command.
+
+       * Makefile.am: (pspp_SOURCES) Add casefile.c, casefile.h.
+
+       * sort.c: (sort_cases) Move logic for sending storage file to disk
+       into do_external_sort().
+       (struct internal_sort) Use an array of ccase pointers instead of a
+       case_list.
+       (do_internal_sort) Rewrite to handle casefiles.
+       (compare_case_list) Removed.
+       (compare_cases) New function.
+       (compare_case_dblptrs) New function.
+       (read_internal_sort_output) Deal with new struct internal_sort.
+
+       * vfm.c: (static var workspace_overflow) Removed.
+       (struct storage_stream_info) Removed all the members.  Added
+       struct casefile * member.
+       (storage_sink_open) Use casefile.
+       (open_storage_file) Removed.
+       (write_storage_file) Removed.
+       (storage_to_disk) Removed.
+       (destroy_storage_stream_info) Use casefile.
+       (storage_sink_write) Use casefile.
+       (storage_sink_make_source) Use casefile.
+       (storage_source_count) Use casefile.
+       (storage_source_read) Use casefile.
+       (storage_source_on_disk) Removed.
+       (storage_source_get_cases) Removed.
+       (storage_source_set_cases) Removed.
+       (storage_source_get_casefile) New function.
+       
+Mon Mar 29 15:30:09 2004  Ben Pfaff  <blp@gnu.org>
+
+       New `struct moments' for calculating moments.
+
+       * stats.c: Removed.
+
+       * stats.h: Removed.
+
+       * moments.c: New file.
+
+       * moments.h: New file.
+
+       * command.def: Add DEBUG MOMENTS command.
+
+       * Makefile.am: (pspp_SOURCES) Add moments.c, moments.h.  Remove
+       stats.c, stats.h.
+
+       * aggregate.c: Modify AGGREGATE to use the new moments
+       calculation, even if not in such a great way.
+       (struct agr_var) Add `moments' member.
+       (parse_aggregate_functions) Set `moments' member to null.
+       (agr_destroy) Destroy `moments' member.
+       (accumulate_aggregate_info) Use `moments' for standard deviation.
+       (dump_aggregate_info) Ditto.
+       (initialize_aggregate_info) Create or clear `moments'.
+
+       * misc.h: Add pow2(), pow3(), pow4() functions in place of sqr(),
+       cube(), pow4() that were in stats.h.  All references updated.
+
+       * crosstabs.q: stats.h had chi-square significance functions.  Use
+       GSL instead.
+       (display_chisq) Use gsl_cdf_chisq_Q() instead of chisq_sig().
+
+       * expr-evl.c: (expr_evaluate) Use moments_of_values() for
+       OP_CFVAR, OP_MEAN, OP_SD, OP_VARIANCE.
+               
+Fri Mar 26 14:21:23 2004  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c: (dict_compact_values) Compacted values need to
+       start off from 0.
+
+Fri Mar 26 00:54:57 2004  Ben Pfaff  <blp@gnu.org>
+
+       * var-labs.c: (cmd_variable_labels) For compatibility, don't allow
+       `/' at start.  Check return value of parse_variables() for error
+       return.
+
+Fri Mar 26 00:19:27 2004  Ben Pfaff  <blp@gnu.org>
+
+       Revamp expressions: make the code a little nicer, and fix bugs
+       found in testing.
+       
+       * expr-evl.c: (expr_evaluate) Make expression argument const.
+       Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL.
+       OP_POW is missing for arg 2 <= 0.  OP_LOG is natural log, not
+       base-10 log.  Fix OP_ANY, OP_ANY_STRING, OP_RANGE, OP_RANGE_STRING
+       off-by-ones.  Add OP_MAX_STRING, OP_MIN_STRING.  Fix OP_TIME_HMS,
+       OP_DATE_WKYR boundary conditions.  Add OP_CTIME_DAYS,
+       OP_CTIME_HOURS, OP_CTIME_MINUTES, OP_CTIME_DAYS, OP_CTIME_SECONDS.
+       Support OP_INDEX_2, OP_INDEX_3, OP_RINDEX_2, OP_RINDEX_3 instead
+       of OP_INDEX, OP_INDEX_OPT, OP_RINDEX, OP_RINDEX_OPT.  Merge
+       OP_LPAD_OPT into OP_LPAD, OP_RPAD_OPT into OP_RPAD, OP_LTRIM_OPT
+       into OP_LTRIM, OP_RTRIM_OPT into OP_RTRIM, OP_NUMBER_OPT into
+       OP_NUMBER.  Fix OP_RTRIM fragility.  Support OP_SUBSTR_2,
+       OP_SUBSTR_3 instead of OP_SUBSTR, OP_SUBSTR_OPT.  Remove OP_INV.
+       Simplify OP_SYSMIS.  Remove OP_STR_MIS.
+
+       * expr-opt.c: (optimize_expression) Rewrite.
+       (macro n0) Removed.
+       (macro n1) Removed.
+       (macro n2) Removed.
+       (macro s0) Removed.
+       (macro s0l) Removed.
+       (macro s1) Removed.
+       (macro s1l) Removed.
+       (macro s2) Removed.
+       (macro s2l) Removed.
+       (macro s) Removed.
+       (macro sl) Removed.
+       (eq_num_con) New function.
+       (optimize_tree) New function.
+       (macro rnc) Removed.
+       (macro frnc) Removed.
+       (str_search) Add const to string params.
+       (str_rsearch) Ditto.
+       (evaluate_tree_no_missing) Renamed from evaluate_tree.  Add num[],
+       str[], str_len[] locals to substitute for most of removed macros.
+       Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL.
+       Removed support for missing values because we're never called with
+       missing values.  Use set_number() or set_number_errno() instead of
+       rnc or frnc.  Removed any stuff that caused trouble in testing.
+       We can re-add it later if it really slows anything.  Fix some
+       random problems.
+       (evaluate_tree_with_missing) Not yet supported.  To be added later
+       if it's important.
+       (repl_num_con) Removed.
+       (collapse_node) New function.
+       (force_repl_num_con) Removed.
+       (set_number) New function.
+       (set_number_errno) New function.
+       (repl_str_con) Removed.
+       (set_string) New function.
+       (yrmoda) Tighten boundary conditions.  Adopt 2030 cut-off for
+       2-digit years.
+       (dump_node) No special case for OP_AND, OP_OR.
+
+       * expr-prs.c: (expr_prs) Honor EXPR_NO_OPTIMIZE bit.  Rewrite.
+       (expr_get_type) New function.
+       (type_check) Rewrite.
+       (type_coercion) New function.
+       (struct operator) New structure.
+       (match_operator New function.
+       (parse_binary_operators) New function.
+       (parse_inverting_unary_operator) New function.
+       (parse_or) Rewritten.
+       (parse_and) Rewritten.
+       (parse_not) Rewritten.
+       (parse_rel) Rewritten.
+       (parse_add) Rewritten.
+       (parse_mul) Rewritten.
+       (parse_neg) Rewritten.
+       (parse_exp) Rewritten.
+       (parse_sysvar) Add $TRUE, $FALSE system variables.
+       Get $LENGTH, $WIDTH from get_viewlength(), get_viewwidth().
+       (parse_primary) Use allocate_var_node(), allocate_num_con(),
+       allocate_str_con().
+       (struct function) Remove desc, change `func' prototype.
+       (unary_func) Remove special cases.
+       (MISSING_func) Reduce to unary_func() that just returns a boolean.
+       (SYSMIS_func) Handle SYSMIS((x)) like SYSMIS(x).
+       (VALUE_func) Use allocate_var_node().
+       (nary_num_func) Allow MIN and MAX for strings.
+       Use allocate_var_node().  Properly clean up.
+       Fix return type.
+       (generic_str_func) Use local table instead of removed `desc'
+       member.  Mostly rewrite.
+       (get_num_args) Revise error message.
+       (parse_function) Return EXPR_ERROR, not 0 on error.
+       (macro op) Removed.
+       (macro varies) Removed.
+       (ops[]) Use expr.def.
+       (free_node) Do nothing if node is null.
+       (allocate_num_con) New function.
+       (allocate_str_con) New function.
+       (allocate_var_node) New function.
+       (allocate_binary_nonterminal) New function.
+       (append_nonterminal_arg) Removed.
+       (static var func_tab[]) Revised.
+       (expr_debug_print_postfix) Make parameter const.
+       Use printf() instead of debug_printf().
+
+       * expr.def: New file.
+       
+       * expr.h: Change PXP_* to EXPR_*, all references updated.  Also
+       use named enum instead of unnamed, all references updated.  Add
+       EXPR_ANY, EXPR_NO_OPTIMIZE.
+
+       * exprP.h: Remove EX_*.  Add DEFINE_OPERATOR.  Use expr.def
+       instead of defining OP_* directly.
+       (macro IS_TERMINAL) New macro.
+       (macro IS_NONTERMINAL) New macro.
+       (enum OP_NO_FLAGS) New.
+       
+Fri Mar 26 00:18:01 2004  Ben Pfaff  <blp@gnu.org>
+
+       * error.c: (err_assert_fail) msg variable needs to be non-const.
+
+Fri Mar 26 00:17:24 2004  Ben Pfaff  <blp@gnu.org>
+
+       * debug.c: (cmd_debug_evaluate) Rewrite.
+
+Fri Mar 26 00:15:13 2004  Ben Pfaff  <blp@gnu.org>
+
+       Fix some CROSSTABS bit rot stupidity.
+
+       * crosstabs.q: Reorder the CELLS subcommands for compatibility.
+       (internal_cmd_crosstabs) Initializes cells[] correctly.
+       (float_M_suffix) Rename format_cell_entry(), change prototype,
+       rewrite.
+       (display_crosstabulation) Fix cell formatting.
+
+Fri Mar 26 00:14:09 2004  Ben Pfaff  <blp@gnu.org>
+
+       Make lex_rest_of_line(), lex_entire_end() not discard lines.  Have
+       to call lex_discard_line() to do that.
+
+       * command.c: (run_command) Call lex_discard_line() after
+       lex_rest_of_line().
+
+       * lexer.c: (lex_entire_end) Change behavior.
+       (lex_rest_of_line) Change behavior.  Return const char *.
+       (lex_discard_line) Don't clear getl_buf, don't emit message.
+
+       * main.c: (handle_error) Emit message here.
+
+       * repeat.c: (internal_cmd_do_repeat) Use lex_discard_line()
+       instead of lex_entire_line().
+
+       * str.c: (mm_find_reverse) Make length params size_t.  Rewrite.
+
+       * title.c: (get_title) Call lex_discard_line() after
+       lex_rest_of_line().
+       (cmd_file_label) Ditto.
+       (cmd_document) Deal with const char * return value.
+
+Fri Mar 26 00:10:16 2004  Ben Pfaff  <blp@gnu.org>
+
+       Removed REMARK command.
+
+       * command.c: (extract_prefix) Removed.
+       (output_line) Removed.
+       (cmd_remark) Removed.
+
+       * command.def: Remove REMARK.
+
+Fri Mar 26 00:08:38 2004  Ben Pfaff  <blp@gnu.org>
+
+       Added abort() after lots of assert(0) invocations to avoid some
+       compiler warnings.  We really need a NOT_REACHED macro.
+
+Tue Mar 23 08:00:42 WAST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * sort.c: Added missing call to temp_file_close.  Changed error 
+       messages to warnings.
+
+       * set.q: Improved setting of set_view{length,width} to be more tolerant
+       of buggy OSes.
+
+Sun Mar 21 10:11:14 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+        * val-labs.c: Fixed a bug where PSPP would crash, if VALUE LABELS was
+       used with incorrect syntax.
+
+       * error.c, error.h et al:  Overridden definition of assert for a
+       custom one.
+
+       * test-q.c: Fixed a buglet where it would crash if no /VARIABLES
+       subcommand was given when it ought to have been.
+
+Sat Mar 20 22:19:08 2004  Ben Pfaff  <blp@gnu.org>
+
+       * tab.c: (tab_vline) Fix assertions to respect row_ofs and
+       col_ofs.
+       (tab_hline) Ditto.
+       (tab_box) Ditto.
+       (tab_joint_text) Ditto.
+
+Sat Mar 20 17:57:23 2004  Ben Pfaff  <blp@gnu.org>
+
+       * levene.c: Add #include.
+
+       * set.q: (set_viewport) Add `int' argument to make its prototype
+       correct for signal().
+
+Sat Mar 20 15:35:17 2004  Ben Pfaff  <blp@gnu.org>
+
+       * expr-evl.c: (expr_evaluate) Assert that `c' is nonzero before
+       using it.
+
+Sat Mar 20 15:18:16 2004  Ben Pfaff  <blp@gnu.org>
+
+       Changed DFM from open-at-first-access to explicit-open.  Before,
+       calling dfm_get_record() or dfm_put_record() would automatically
+       open the file.  Now, you have to call dfm_open_for_reading() or
+       dfm_open_for_writing() explicitly.  This makes it possible to
+       check permissions, file existence, etc. earlier.
+
+       Also made struct file_handle more opaque, and clean up in general.
+
+       * data-list.c: (cmd_data_list) Open handle for reading.
+
+       * dfm.c: (struct dfm_fhuser_ext) Add `where', `saw_begin_data'
+       members.
+       (open_file_r) Renamed dfm_open_for_reading(), rewrote.
+       (open_file_w) Renamed dfm_open_for_writing(), rewrote.
+       (open_inline_file) Removed.
+       (read_record) For inline_file, if we haven't seen BEGIN DATA, read
+       it.  Deal with line_number in extension record instead of file
+       handle.
+       (dfm_get_record) Rewrote.
+       (dfm_put_record) Rewrote.
+       (dfm_push) Assert file is open and one of ours.  Deal with
+       line_number in extension record instead of file handle.
+       (dfm_pop) Assert file is open and one of ours.  Deal with
+       line_number in extension record instead of file handle.
+       (cmd_begin_data) Use dfm_open_for_reading().  Mark that we saw
+       BEGIN DATA.     
+
+       * file-handle.h: (enum constants RH_RF_*) Removed.
+       (enum constants FH_MD_*) Removed.
+       (struct file_handle) Removed `name', `norm_fn', `fn', `where',
+       `recform', `lrecl', `mode' members.  Public references to
+       `recform' changed to use handle_get_mode(), references to `lrecl'
+       changed to use handle_get_record_width().  Added `private' member.
+       (enum file_handle_mode) New.
+
+       * file-handle.q: (struct private_file_handle) New structure.
+       (struct file_handle_list) New structure.
+       (static var files) New.
+       (static var file_handles) Removed.
+       (init_file_handle) Removed.
+       (create_file_handle) Removed.
+       (get_handle_with_name) New function.
+       (get_handle_for_filename) New function.
+       (cmd_file_handle) Rewritten.
+       (hash_file_handle) Removed.
+       (cmp_file_handle) Removed.
+       (fh_init_files) Rewritten.
+       (fh_parse_file_handle) Rewritten.  Allows identifiers as
+       filenames.
+       (fh_get_handle_by_name) Renamed handle_get_name(), all references
+       updated.  Rewritten.
+       (fh_get_handle_by_filename) Renamed handle_get_filename(), all
+       references updated.  Rewritten.
+       (fh_record_width) Renamed handle_get_record_width(), all
+       references updated.  Rewritten.
+       (handle_get_mode) New function.
+
+       * file-type.c: (cmd_file_type) Open handle for reading.
+
+       * filename.c: [unix] (struct file_identity) New structure.
+       [unix] (fn_get_identity) New function.
+       [unix] (fn_free_identity) New function.
+       [unix] (fn_compare_file_identities) New function.
+       [!unix] (struct file_identity) New structure.
+       [!unix] (fn_get_identity) New function.
+       [!unix] (fn_free_identity) New function.
+       [!unix] (fn_compare_file_identities) New function.
+
+       * lexer.c: (static var put) Renamed put_token, all references
+       updated.
+       (static var put_tokstr) New.
+       (static var put_tokval) New.
+       (lex_init) Initialize put_tokstr().
+       (restore_token) New function.
+       (save_token) New function.
+       (lex_get) Use restore_token().
+       (lex_put_back) Use save_token().
+       (lex_put_back_id) New function.
+       (lex_put_forward) Removed.
+       (lex_preprocess_line) Set put_token instead of using
+       lex_put_forward().
+       (lex_negative_to_dash) Use save_token(), set put_token directly.
+       (dump_token) Use stderr instead of stdout.
+
+       * main.c: (main) Remove call to cmd_init().
+       
+       * matrix-data.c: (cmd_matrix_data) Open file for reading.
+
+       * pfm-read.c: Use handle_get_filename() instead of trying to use
+       h->fn directly, all over.
+
+       * pfm-write.c: Ditto.
+
+       * print.c: (internal_cmd_print) Open handle for writing.
+       (dump_table) Use handle_get_filename().
+       (print_trns_proc) Use handle_get_mode().
+       (cmd_print_space) Use fh_parse_file_handle().
+       Open handle for writing.
+       [0] (debug_print) Removed.
+
+       * sfm-read.c: Use handle_get_filename() instead of trying to use
+       h->fn directly, all over.
+
+       * sfm-write.c: Ditto.
+
+Sat Mar 20 14:35:48 2004  Ben Pfaff  <blp@gnu.org>
+
+       Fix memory leaks.
+       
+       * autorecode.c: (arc_free) Free arc->src_values.
+
+       * error.c: (msg) Free buf.
+
+       * val-labs.c: (do_value_labels) Always free vars.
+
+       * vfm.c: (close_active_file) If sink has no make_source then call
+       its destroy function.
+
+Sat Mar 20 14:00:24 2004  Ben Pfaff  <blp@gnu.org>
+
+       Fixed cmd_parse() so that it always skips past a full command
+       name.  A few special commands for which this would be bad get
+       special treatment.  This lets us drop code for skipping past the
+       end of a command name in most cmd_*() functions.  It's not worth
+       listing all the commands affected.
+
+       * command.c: (struct command) Remove `cmd' member, replace by
+       `name' member, all references updated.  Remove `word', `next',
+       `skip_entire_name' members.
+       (macro DEFCMD) Deal with revised `struct command'.
+       (macro UNIMPL) Ditto.
+       (macro SPCCMD) New macro for commands whose last word shouldn't be
+       skipped.
+       (static array cmd_table[]) Make const, rename `commands', remove
+       sentinel element.
+       (macro COMMAND_CNT) New macro.
+       (split_words) Removed.
+       (cmd_init) Removed.
+       (FILE_TYPE_okay) Make parameter const.
+       (cmd_parse) Improve error messages.
+       (match_strings) New function.
+       (next_word) New function.
+       (enum command_match) New enum.
+       (conflicting_3char_prefixes) New function.
+       (conflicting_3char_prefix_command) New function.
+       (cmd_match_words) New function.
+       (count_matching_commands) New function.
+       (get_command_name) New function.
+       (free_words) New function.
+       (unknown_command_error) New function.
+       (figure_out_command) Renamed parse_command_name(), rewritten.
+
+       * command.def: Removed @ command.  Marked BEGIN DATA, DOCUMENT,
+       FILE LABEL, REMARK, SUBTITLE, TITLE as special.  Renamed EVALUATE
+       to DEBUG EVALUATE.  Added N alias for N OF CASES, SORT alias for
+       SORT CASES.
+
+       * command.h: (macro SPCCMD) New.
+
+       * include.c: (cmd_include_at) Removed.
+       (cmd_include) Allow identifier to be used as filename.
+
+       * inpt-pgm.c: (cmd_reread) Use fh_parse_file_handle().
+
+       * t-test.q: (cmd_t_test) Command name is now parsed for us.
+       
+
+Sat Mar 20 13:56:00 2004  Ben Pfaff  <blp@gnu.org>
+
+       Start work on better test framework.
+       
+       * Makefile.am: (pspp_sources) Add debug.c.
+       
+       * debug.c: New file.
+
+       * compute.c: (cmd_evaluate) Moved to debug.c, renamed
+       cmd_debug_evaluate().
+
+       * expr-prs.c: (expr_parse) Remove PXP_DUMP support.
+
+       * expr.h: (enum constant PXP_DUMP) Removed.
+
+Sat Mar 20 00:05:42 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * set.q:  Implemented the SHOW command, and synced it to the existing 
+       SET cmd.
+
+       Added a handler for SIGWINCH so that viewlength and viewwidth follow
+       changes as the window size is changed.
+
+       Added fallback to set viewlength and viewwidth from LINES and COLUMS
+       environment variables if other methods are not available.
+
+       glob.c: Removed a lot of global variables from glob.c and encapsulated 
+       them in set.q
+
+       random.c: Tidied up the way the random seed is set.
+
+       str.c: Added a ds_vprintf function.
+
+       error.c: Extended dump_message so that messages are always broken at
+       '\n' characters.
+       
+Thu Mar 18 11:07:14 2004  Ben Pfaff  <blp@gnu.org>
+
+       * pfm-write.c: (bufwrite) Write out the correct element for string
+       variables.  From Andreas Streichardt <streichardt@globalpark.de>.
+
+Mon Mar 15 20:48:03 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of static and global (!) vars in matrix-data.c.
+
+       * matrix-data.c: (static var nr_data) Removed.
+       (static var nr_factor_values) Removed.
+       (static var max_cell_index) Removed.
+       (static var split_values) Removed.
+       (struct nr_aux_data) New structure.
+       (read_matrices_without_rowtype) Use a local struct nr_aux_data in
+       place of static vars, pass to create_case_source() and procedure()
+       as aux data.
+       (nr_read_data_lines) Use struct nr_aux_data * parameter instead of
+       struct matrix_data_pgm *.
+       (nr_read_splits) Ditto.
+       (nr_read_factors) Ditto.
+       (nr_output_data) Ditto.
+       (static var wr_content) Removed.
+       (global var wr_data) Removed.
+       (global var wr_current) Removed.
+       (struct wr_aux_data) New structure.
+       (read_matrices_with_rowtype) Use a local struct wr_aux_data in
+       place of static vars, pass to create_case_source() and procedure()
+       as aux data.
+       (matrix_data_read_with_rowtype) Use struct wr_aux_data * parameter
+       instead of matrix_data_pgm *.
+       (wr_read_splits) Ditto.
+       (wr_output_data) Ditto.
+       (wr_read_rowtype) Ditto.
+       (wr_read_factors) Ditto.
+       (wr_read_indeps) Ditto.
+       
+Mon Mar 15 20:07:29 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of static vars in autorecode.c.
+
+       * autorecode.c: (struct autorecode_trns) Rename `arc' to `specs',
+       `n_arc' to `spec_cnt'.  All references updated.
+       (static var v_src) Removed.
+       (static var v_dest) Removed.
+       (static var h_trns) Removed.
+       (static var nv_src) Removed.
+       (static var descend) Removed.
+       (static var print) Removed.
+       (enum direction) New enum.
+       (struct autorecode_pgm) New structure.
+       (cmd_autorecode) Use struct autorecode_pgm instead of static vars.
+       Move n_dest local var into struct autorecode_pgm for ease of
+       clean-up.  Use arc_free().
+       (arc_free) New function.
+       (recode) Modify to take struct autorecode_pgm * parameter instead
+       of using statics.  Let the caller clean up.
+       (autorecode_proc_func) Use struct autorecode_pgm * auxiliary data
+       instead of statics.  Rearrange code a little.
+
+Mon Mar 15 00:25:02 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of static, global vars in recode.c.  Remove debug code.
+
+       * recode.c: (static var head) Removed.
+       (global var v) Removed.
+       (global var nv) Removed.
+       (cmd_recode) New local variables head, v, nv.  Initialize and free
+       v.  Don't call debug_print().
+       [DEBUGGING] (dump_dest) Removed.
+       [DEBUGGING] (debug_print) Removed.
+
+Mon Mar 15 00:14:49 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of static vars in expr-opt.c.
+
+       * expr-opt.c: (static var e) Removed.
+       (static var nop) Removed.
+       (static var mop) Removed.
+       (static var ndbl) Removed.
+       (static var mdbl) Removed.
+       (static var nstr) Removed.
+       (static var mstr) Removed.
+       (static var nvars) Removed.
+       (static var mvars) Removed.
+       (struct expr_dump_state) New structure.
+       (dump_expression) Use new struct expr_dump_state instead of static
+       vars and pass to functions we call.
+       (dump_node) Use struct expr_dump_state * parameter.
+       (emit) Ditto.
+       (emit_num_con) Ditto.
+       (emit_str_con) Ditto.
+       (emit_var) Ditto.
+       
+Mon Mar 15 00:03:51 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of static var in COUNT.
+
+       * count.c: (static var head) Move into cmd_count().
+       (cmd_count) [DEBUGGING] Don't call debug_print.
+       [DEBUGGING] (debug_print) Removed.
+
+Sun Mar 14 23:56:09 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of static vars in VALUE LABELS, ADD VALUE LABELS.
+
+       * val-labs.c: (static var v) Removed.
+       (static var nv) Removed.
+       [DEBUGGING] (debug_print) Removed.
+       (verify_val_labs) Add struct variable **, int parameters.
+       (get_label) Ditto.  Improve error messages, streamline.
+       (erase_labels) New function for erasing value labels, taking over
+       part of verify_val_labs()'s function.
+       (init) Removed.
+       (done) Removed.
+       (cmd_value_labels) No need to call init() or done() anymore.
+       (cmd_add_value_labels) Ditto.
+       (do_value_labels) Add vars, var_cnt local variables.  Clean up
+       after them internally.  Call erase_labels() if we should.  Don't
+       call debug_print().
+
+Sun Mar 14 23:33:53 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of static vars in MATCH FILES.
+       
+       * get.c: (static var mtf_head) Removed.
+       (static var mtf_tail) Removed.
+       (static var mtf_by) Removed.
+       (static var mtf_n_by) Removed.
+       (static var mtf_master) Removed.
+       (static var mtf_seq_num) Removed.
+       (static var mtf_seq_nums) Removed.
+       (static var mtf_sink) Removed.
+       (static var mtf_case) Removed.
+       (struct mtf_proc) New structure.
+       (cmd_match_files) Use struct mtf_proc instead of static vars.
+       (mtf_processing_finish) Ditto.
+       (mtf_free) Ditto.
+       (mtf_delete_file_in_place) Ditto.
+       (mtf_read_nonactive_records) Ditto.
+       (mtf_compare_BY_values) Ditto.
+       (mtf_processing) Ditto.
+       (mtf_merge_dictionary) Ditto.
+
+Sun Mar 14 22:48:12 2004  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Add CASESTOVARS, VARSTOCASES unimplemented commands.
+
+       * dictionary.c: (dict_rename_var) Add assertion.
+       (dict_contains_var) Check by index instead of name.
+
+Sun Mar 14 22:01:02 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of compaction_necessary, compaction_nval, compaction_case.
+       Redo VFM interface.  Replace disk_sink and memory_sink by
+       storage_sink, disk_source and memory_source by storage_source.
+
+       * vfm.h: (struct case_sink) Add `dict', `idx_to_fv', `value_cnt'
+       members.
+
+       * vfm.c: 
+       (struct write_case_data) Remove `begin_func', `end_func',
+       `func_aux' members.  Add `aux', `trns_case', `sink_case',
+       `cases_written', `cases_analyzed' members.
+       (global var compaction_necessary) Make static.
+       (global var compaction_nval) Removed.
+       (global var compaction_case) Removed.
+       (static var case_count) Removed.
+       (struct procedure_aux_data) Removed.
+       (struct split_aux_data) Removed.
+       (procedure) Remove begin_func, end_func parameters.  Rewrite.
+       (static var not_canceled) Removed.
+       (process_active_file) Removed.
+       (process_active_file_write_case) Removed.
+       (process_active_file_output_case) Removed.
+       (prepare_for_writing) Moved into open_active_file().
+       (arrange_compaction) Ditto.
+       (setup_lag) Ditto.
+       (open_active_file) Rewrote.
+       (write_case) New function.
+       [DEBUGGING] (index_to_varname) Removed.
+       (execute_transformations) New function.
+       (exclude_this_case) Renamed filter_case(), changed interface.
+       (clear_case) Added struct ccase * parameter to interface.
+       (close_active_file) Added struct write_case_data * parameter,
+       rewrote.
+       (disk_sink_create) Removed.
+       (disk_sink_destroy) Removed.
+       (disk_sink_make_source) Removed.
+       (disk_sink_write) Removed.
+       (disk_source_count) Removed.
+       (disk_source_destroy) Removed.
+       (disk_source_read) Removed.
+       (global var disk_sink_class) Removed.
+       (global var disk_source_class) Removed.
+       (global var memory_sink_class) Removed.
+       (global var memory_source_class) Removed.
+       (memory_sink_create) Removed.
+       (memory_sink_destroy) Removed.
+       (memory_sink_make_source) Removed.
+       (memory_sink_write) Removed.
+       (memory_source_count) Removed.
+       (memory_source_destroy) Removed.
+       (memory_source_get_cases) Removed.
+       (memory_source_read) Removed.
+       (memory_source_set_cases) Removed.
+       (struct disk_stream_info) Removed.
+       (struct memory_sink_info) Removed.
+       (struct memory_source_info) Removed.
+       (write_active_file_to_disk) Removed.
+       (destroy_storage_stream_info) New function.
+       (global var null_sink_class) New var.
+       (global var storage_sink_class) New var.
+       (global var storage_source_class) New var.
+       (open_storage_file) New function.
+       (storage_sink_destroy) New function.
+       (storage_sink_make_source) New function.
+       (storage_sink_open) New function.
+       (storage_sink_write) New function.
+       (storage_source_count) New function.
+       (storage_source_destroy) New function.
+       (storage_source_get_cases) New function.
+       (storage_source_on_disk) New function.
+       (storage_source_read) New function.
+       (storage_source_set_cases) New function.
+       (storage_source_to_disk) New function.
+       (storage_to_disk) New function.
+       (struct storage_stream_info) New structure.
+       (write_storage_file) New function.
+       (procedure_write_case) Removed.
+       (create_case_source) Add `struct dictionary *' parameter, all
+       references updated.
+       (create_case_sink) Ditto.
+       (free_case_sink) New function.
+       (struct split_aux_data) New structure.
+       (procedure_with_splits) New function implementing what procedure()
+       used to.
+       (SPLIT_FILE_proc_func) Removed.
+       (procedure_with_splits_callback) New function.
+       (equal_splits) New function.
+       
+       * aggregate.c: Pass around a struct instead of using statics.
+       (static var outfile) Remove.
+       (enum type) Give it tag `missing_treatment'.
+       (static var missing) Remove.
+       (static var sort) Remove.
+       (static var agr_first) Remove.
+       (static var agr_next) Remove.
+       (static var case_count) Remove.
+       (static var prev_case) Remove.
+       (static var buf64_1xx) Remove.
+       (static var buf_1xx) Remove.
+       (struct agr_proc) New structure incorporating the above.
+       (cmd_aggregate) Use new struct.  Clean up error handling using
+       agr_destroy().  Completely rewrite actual implementation of
+       aggregation.
+       (create_sysfile) Add struct agr_proc * parameter, modify
+       accordingly.
+       (parse_aggregate_functions) Ditto.
+       (free_aggregate_functions) Ditto.  Rename agr_destroy().
+       (aggregate_single_case) Add struct agr_proc * parameter, modify
+       accordingly.
+       (accumulate_aggregate_info) Ditto.
+       (dump_aggregate_info) Ditto.
+       (initialize_aggregate_info) Ditto.
+       (agr_00x_trns_proc) Removed.
+       (agr_00x_end_func) Removed.
+       (agr_10x_trns_proc) Removed.
+       (agr_10x_trns_free) Removed.
+       (agr_10x_end_func) Removed.
+       (agr_11x_read) Removed.
+       (agr_11x_finish) Removed.
+       [DEBUGGING] (debug_print) Removed.
+       (write_case_to_sfm) Add struct agr_proc * parameter, modify
+       accordingly.
+       (agr_to_active_file) New function.
+       (presorted_agr_to_sysfile) New function.
+       (sort_agr_to_sysfile) New function.
+
+       * autorecode.c: (cmd_autorecode) Use procedure_with_splits().
+
+       * crosstabs.q: (internal_cmd_crosstabs) Ditto.
+
+       * descript.q: (cmd_descriptives) Ditto.
+
+       * dfm.c: (cmd_begin_data) Check for storage_source_class.  Adapt
+       to new procedure() interface.
+
+       * command.c: (cmd_execute) Adapt to new procedure() interface.
+
+       * dictionary.c: (dict_compact_values) Also delete scratch
+       variables.
+       (dict_get_compacted_value_cnt) New function.
+       (dict_get_compacted_idx_to_fv) New function.
+
+       * flip.c: (cmd_flip) Warn about and cancel TEMPORARY.
+       (cmd_flip) Adapt to new procedure() interface.
+       (flip_sink_write) Use sink->idx_to_fv.
+
+       * frequencies.q: (internal_cmd_frequencies) Use
+       procedure_with_splits().
+
+       * get.c: (cmd_save_internal) Adapt to new procedure() interface.
+       (static var mtf_sink) New static var.
+       (static var mtf_case) New static var.
+       (cmd_match_files) Warn about and cancel TEMPORARY.  Redo the way
+       we actually implement the matching.
+       (mtf_delete_file_in_place) Use mtf_case.
+       (mtf_processing) Use mtf_case and mtf_sink.
+       (cmd_export) Adapt to new procedure() interface.
+
+       * levene.c: (levene) Use procedure_with_splits().
+
+       * list.q: (cmd_list) Use procedure_with_splits().
+
+       * matrix-data.c: (read_matrices_without_rowtype) Adapt to new
+       procedure() interface.
+       (read_matrices_with_rowtype) Ditto.
+
+       * modify-vars.c; (cmd_modify_vars) Warn about and cancel
+       TEMPORARY.  Adapt to new procedure() interface.
+
+       * rename-vars.c: Warn about and cancel TEMPORARY.
+
+       * sort.c: (cmd_sort_cases) Warn about TEMPORARY.
+       (sort_cases) Use dict_get_compacted_value_cnt() instead of
+       compaction_nval.  Adapt to new procedure() interface.  Use
+       storage_source_to_disk().
+       (do_internal_sort) Don't try to dump the cases to memory.
+       (compare_case_lists) Pass null idx_to_fv.
+       (struct initial_run_state) Add `idx_to_fv' member.  Remove
+       `case_size' member.
+       (write_initial_runs) Don't initialize irs->case_size.  Adapt to
+       new procedure() interface.  Reset irs->idx_to_fv after calling
+       procedure().
+       (sort_sink_write) Set irs->idx_to_fv.  Use case_size from struct
+       sort_cases_pgm.  Pass irs, not struct sort_cases_pgm to
+       push_heap().
+       (destroy_initial_run_state) Don't dereference irs after freeing
+       it.
+       (allocate_cases) Don't calculate case_size locally.
+       (compare_record) Add idx_to_fv parameter.
+       (compare_record_run) Change parameter from struct sort_cases_pgm *
+       to struct initial_run_state *.  Pass irs->idx_to_fv to
+       compare_record().
+       (compare_record_run) Third parameter now a struct
+       initial_run_state *.
+       (output_record) No need for out_case anymore.  Pass irs, not
+       struct sort_cases_pgm to pop_heap().  Use case_size from struct
+       sort_cases_pgm.
+       (merge) Use case_size from struct sort_cases_pgm.
+       (merge_once) Use case_size from struct sort_cases_pgm.
+       Pass null pointer to compare_record() as idx_to_fv.
+       (global var sort_sink_class) Make static.
+
+       * t-test.q: (cmd_t_test) Use procedure_with_splits().
+
+       * temporary.c: Remove debugging crap.
+
+Sat Mar 13 14:19:52 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q, levene.c: Fixed up the handling of MISSING values
+       int the T-TEST
+
+Fri Mar 12 16:23:35 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q, levene.c: Added support for T-TEST /GROUP where only 
+       one value is given.
+
+Wed Mar 10 23:25:13 2004  Ben Pfaff  <blp@gnu.org>
+
+       Change explicit variable name checks into use of
+       dict_class_from_id().
+
+       * dictionary.c: (dict_create_var)  Change explicit variable name
+       check into use of dict_class_from_id().
+
+       * get.c: (trim_dictionary) Ditto.
+
+       * sel-if.c: (cmd_filter) Ditto.
+
+       * sysfile-info.c: (cmd_display) Ditto.
+
+       * vars-prs.c: (parse_DATA_LIST_vars) Ditto.
+
+       * vfm.c: (arrange_compaction) Ditto.
+
+       * weight.c: (cmd_weight) Ditto.
+
+Wed Mar 10 21:16:34 2004  Ben Pfaff  <blp@gnu.org>
+
+       * temporary.c: (cmd_temporary) When TEMPORARY was the first
+       transformation following the input program, if any, for some
+       reason we special-cased f_trns.  That's just wrong.  It should
+       always be set to n_trns.
+
+Tue Mar  9 23:44:40 2004  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: (parse_format_specifier_name) Fix brown-bag bug
+       introduced in last check-in.
+
+Tue Mar  9 23:10:41 2004  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: (global array translate_fmt[]) Removed.
+       (translate_fmt) New function as replacement.
+       (parse_format_specifier_name) Rewrite.
+
+       * pfm-read.c: (convert_format) Use translate_fmt() instead of
+       translate_fmt[].
+
+       * sfm-read.c: (parse_format_spec) Ditto.
+
+       * postscript.c: (text) Fix handling of fonts with missing
+       ligatures.
+
+       * sort.c: (struct external_sort) Add temp_name member.
+       (destroy_external_sort) Free temp_dir, temp_name members.
+       (init_external_sort) Allocate temp_name.
+       (get_temp_file_name) Change prototype.
+       (open_temp_file) Deal with change to get_temp_file_name().
+       (close_temp_file) Ditto.
+       (remove_temp_file) Ditto.
+       (write_temp_file) Ditto.
+       (read_temp_file) Ditto.
+       (sort_sink_destroy) Removed.
+       (sort_sink_class) Change destroy member to null.
+
+Tue Mar  9 22:36:34 2004  Ben Pfaff  <blp@gnu.org>
+
+       Eliminate temp_case.
+
+       * aggregate.c: (cmd_aggregate) No need to save/restore temp_case
+       anymore.  Use agr_11x_finish().
+       (aggregate_single_case) Make first param const.
+       (accumulate_aggregate_info) Ditto.
+       (agr_00x_end_func) Use compaction_case, not temp_case.
+       (agr_11x_func) Break into agr_11x_read(), agr_11x_finish().
+
+       * data-list.c: (struct data_list_pgm) Add `case_size' member.
+       (cmd_data_list) Initialize case_size.
+       (read_from_data_list_fixed) Add struct ccase * param, use instead
+       of temp_case.
+       (read_from_data_list_free) Ditto.
+       (read_from_data_list_list) Ditto.
+       (read_one_case) Rename data_list_trns_proc(), all references
+       updated.  Add argument in calling above functions.  Use c
+       argument instead of temp_case.
+       (destroy_dls) Rename data_list_trns_free(), all references
+       updated.
+
+       * expr-evl.c: (expr_evaluate) Make second parameter const.
+
+       * file-type.c: (struct file_type_pgm) Add `case_size' member.
+       (cmd_end_file_type) Initialize `case_size'.
+       (file_type_source_read) Add struct ccase * parameter.  Use instead
+       of temp_case.
+
+       * flip.c: Rewritten.
+
+       * get.c: (struct get_pgm) New structure to keep track of
+       case_size.
+       (cmd_get) Initialize case_size.
+       (cmd_import) Ditto.
+       (get_source) Deal with struct get_pgm.
+       (get_source_read) Add struct ccase * parameter, use instead of
+       temp_case.
+       (import_source_read) Ditto.
+
+       * get.c: Use a null pointer instead of temp_case to represent the
+       "current case" in a struct mtf_file's input member.
+       (mtf_processing_finish) Pass null to mtf_processing(), not
+       temp_case.
+       (mtf_read_nonactive_records) Don't set iter->input to temp_case.
+       (mtf_compare_BY_values) Add extra arg, use instead of null input
+       members.
+       (mtf_processing) Use c parameter instead of temp_case.  Pass
+       compaction_case to process_active_file_output_case().
+       
+       * glob.c: (global variable temp_case) Removed.
+
+       * inpt-pgm.c: (struct input_program_pgm) Add `case_size' member.
+       (cmd_input_program) Initialize case_size.  Set
+       vfm_source->value_cnt.
+       (init_case) Add struct ccase * parameter, use instead of
+       temp_case.
+       (clear_case) Ditto.
+       (input_program_source_read) Ditto.
+
+       * matrix-data.c: (matrix_data_read_without_rowtype) Ditto.
+       (dump_cell_content) Ditto.
+       (nr_output_data) Ditto.
+       (read_matrices_without_rowtype) Ditto.
+       (matrix_data_read_with_rowtype) Ditto.
+       (wr_read_splits) Ditto.
+       (wr_output_data) Ditto.
+
+       * sort.h: (struct sort_cases_pgm) New member `case_size'.
+       
+       * sort.c: (sort_cases) Initialize scp->case_size.
+       (struct external_sort) Remove `case_size' member.
+       (write_initial_runs) Only call vfm_sink->class_destroy if
+       non-null.
+       (struct sort_source_aux) New structure.
+       (sort_source_read_helper) New function.
+       (sort_source_read) Use sort_source_read_helper().
+       (read_sort_output) Change interface to be more reasonable.
+       (read_internal_sort_output) Ditto.
+       (read_external_sort_output) Ditto.
+
+       * vars-prs.c: (dict_class_to_name) Pass return value through
+       gettext.
+
+       * vfm.c: (struct procedure_aux_data) Add `trns_case' member.
+       (procedure) Initialize trns_case.
+       (procedure) Pass trns_case to vfm_source->class->read().
+       Free trns_case.
+       (process_active_file) Start using struct procedure_aux_data.
+       (process_active_file_write_case) Pass trns_case to
+       transformations, lag_case(), clear_case().
+       (process_active_file_output_case) Add struct ccase * parameter.
+       (create_trns_case) New function.
+       (make_temp_case) Removed.
+       (vector_initialization) Removed.
+       (close_active_file) Only call make_source if non-null, otherwise
+       set vfm_source to null pointer.  Don't free temp_case.
+       (disk_source_read) Add struct ccase * parameter, use instead of
+       temp_case.
+       (memory_source_read) Ditto.
+       (lag_case) Add const struct ccase * member.
+       (procedure_write_case) Use trns_case instead of temp_case.
+       (clear_case) Add struct ccase * member, use instead of temp_case.
+       (exclude_this_case) Ditto.
+       (create_case_source) Add struct dictionary * parameter, use to
+       initialize source->value_cnt.
+
+       * vfm.h: (struct case_source) Add `value_cnt' member.
+       (struct case_source_class) Add struct ccase * parameter to `read'
+       member function pointer.
+       (struct case_sink_class) Make struct ccase * parameter const in
+       `write' member function pointer.
+       
+Wed Mar  3 20:44:37 2004  Ben Pfaff  <blp@gnu.org>
+
+       Fix a lot of "possibly uninitialized variable" warnings.  Some of
+       them are even real bugs.  A few of them make me wonder how the
+       code ever worked.
+
+       * aggregate.c: (parse_aggregate_functions) Initialize `function.
+
+       * ascii.c: (output_lines) Add default case to switch.
+
+       * crosstabs.q: Remove static variable `expected' and all
+       references to it.
+       (display_crosstabulation) Always calculate expected value.
+       (calc_chisq) Ditto.
+       (output_pivot_table) Initialize `cmp'.
+       (display_crosstabulation) New variable `last_row', which is
+       initialized.
+
+       * data-in.c: (parse_numeric) Always initialize sign.  How did this
+       work at all?!
+
+       * data-list.c: (repeating_data_trns_proc) Always initialize code.
+       Always set info.ofs.  (How did this work?!)
+
+       * expr-opt.c: (optimize_tree) Always initialize `m'.
+       (evaluate_tree) Always initialize `c'.  (How did this work?)
+
+       * frequencies.q: (frq_custom_variables) Always initialize min,
+       max.
+       (frq_custom_grouped) Always initialize `dl'.
+
+       * groff-font.c: (groff_read_font) Always initialize char_set.
+
+       * matrix-data.c: (nr_output_data) Initialize `split'.
+       (wr_read_splits) Remove shadowing split_cnt declaration.
+       (wr_output_data) Initialize `split'.
+
+       * output.c: (tokener) Skip add character on syntax error.
+
+       * pool.c: (pool_strndup) Always set `copy'.  (How did this work?!)
+
+       * postscript.c: (read_ps_encodings) Use line.string instead of
+       uninitialized `bp'.
+       (write_text) Add default case to switch.
+       (text) Always initialize multiple variables.  Fix bug with
+       ligatures.
+
+       * print.c: (fixed_parse_fortran) Initialize head.
+       (alloc_line) Add default case to switch.
+
+       * recode.c: (parse_dest_spec) Handle case where nothing matches.
+       (recode_trns_proc) Move variable declaration inward.  Add default
+       case to switch.
+
+       * sfm-read.c: (read_header) Initialize skip_amt.
+
+       * sysfile-info.c: (display_variables) Always initialize pc.
+
+       * vars-prs.c: Initialized `included'.
+
+Wed Mar  3 09:30:09 2004  Ben Pfaff  <blp@gnu.org>
+
+       * main.c: (main) sigaction()'s sa_flags member was uninitialized.
+       Just use signal() instead.
+
+Wed Mar  3 09:26:30 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of vfm_sink_info and vfm_source_info.
+       
+       * aggregate.c: (agr_00x_end_func) Don't increment
+       sfm_sink_info.ncases.
+
+       * sort.c: (do_internal_sort) Get case count from
+       vfm_source->class->count().
+       (struct external_sort) Add `case_size' member.
+       (do_external_sort) Initialize case_size.
+       (struct initial_run_state) Add `case_size' member.
+       (write_initial_runs) Initialize case_size.
+       (sort_sink_write) Use case_size.
+       (read_external_sort_output) Use case_size.  Get case_cnt from
+       initial_runs.
+
+       * vfm.c: (struct write_case_data) Add underscores to existing arg
+       names, all references updated.  Renamed `aux' as `func_aux', all
+       references updated.  Added new `aux' member.
+       (global var vfm_source_info) Removed.
+       (global var vfm_sink_info) Removed.
+       (struct procedure_aux_data) New.
+       (struct split_aux_data) New.
+       (procedure) Use `aux' fields for procedure_aux_data,
+       split_aux_data.
+       (process_active_file_write_case) Pass case_count + 1 to
+       transformation procedures, exclude_this_case().
+       (process_active_file_output_case) Don't increment
+       vfm_sink_info.ncases.
+       (prepare_for_writing) Don't initialize vfm_sink_info.  Don't try
+       to send data to disk early.
+       (make_temp_case) Don't use vfm_sink_info.case_size.
+       (close_active_file) Don't initialize vfm_source_info.
+       (struct disk_stream_info) New, to allow for case_cnt and case_size fields.
+       (disk_sink_create) Initialize and/or update disk_stream_info.
+       (disk_sink_write) Ditto.
+       (disk_sink_destroy) Ditto.
+       (disk_sink_make_source) Ditto.
+       (disk_source_read) Ditto.
+       (disk_source_destroy) Ditto.
+       (global var disk_source_class) Add disk_source_count().
+       (disk_source_count) New function.
+       (struct memory_sink_info) Add `case_cnt', `case_size' members.
+       (struct memory_source_info) Ditto.
+       (memory_sink_create) Deal with case_cnt, case_size.
+       (memory_sink_write) Ditto.
+       (memory_sink_make_source) Ditto.
+       (memory_source_read) Ditto.
+       (memory_source_count) New function.
+       (memory_source_class) Add memory_source_count().
+       (procedure_write_case) Don't use vfm_sink_info.ncases.  Do use
+       proc_aux->cases_written, and pass it to transformation procedures
+       and exclude_this_case ().
+       (exclude_this_case) Add case_num parameter.  Pass it to
+       expr_evaluate().
+       (SPLIT_FILE_procfunc) Use split_aux->prev_case instead of static
+       variable.
+
+       * vfm.h: (struct case_source_class) Add `count' member.
+
+       * vfmP.h: (struct stream_info) Removed.
+       (global variable vfm_source_info) Removed.
+       (global variable vfm_sink_info) Removed.
+       
+Tue Mar  2 23:38:17 2004  Ben Pfaff  <blp@gnu.org>
+
+       * var.h: (typedef trns_proc_func) New typedef.
+       (trns_free_func) New typedef.
+       (struct trns_header) Change `proc' to type trns_proc_func, `free'
+       to type trns_free_func.  This only changes the actual type of
+       trns_proc_func, adding a `case_num' parameter.  Updated all
+       implementations to use the typedefs instead.
+
+       * compute.c: (compute_num) Pass case_num to expr_evaluate().
+       (compute_num_vec) Ditto.
+       (compute_str) Ditto.
+       (compute_str_vec) Ditto.
+
+       * do-if.c: (do_if_trns_proc) Ditto.
+
+       * expr-evl.c: (expr_evaluate) Add new case_num parameter, use for
+       OP_CASENUM.
+
+       * inpt-pgm.c: (input_program_source_read) Maintain case count,
+       pass to transformation functions.
+       (reread_trns_proc) Pass case_num arg to expr_evaluate().
+
+       * loop.c: (loop_1_trns_proc) Ditto.
+       (loop_2_trns_proc) Ditto.
+       (loop_3_trns_proc) Ditto.
+
+       * print.c: (print_space_trns_proc) Ditto.
+
+       * sel-if.c: (select_if_proc) Ditto.
+
+Tue Mar  2 11:36:52 2004  Ben Pfaff  <blp@gnu.org>
+
+       * frequencies.q: (cleanup_freq_tab) Avoid memory leak by
+       destroying hash table.
+
+       * glob.c: (read_active_file) Variable not referenced, removed.
+       (cancel_input_pgm) Ditto.
+
+       * levene.c: Add #include <stdlib.h> needed to call free().
+
+       * aggregate.c: (parse_aggregate_functions) Make `function'
+       variable const.
+
+Tue Mar  2 11:30:56 2004  Ben Pfaff  <blp@gnu.org>
+
+       Start working to eliminate VFM dependence on static variables.
+
+       * command.c: (cmd_parse) Use case_source_is_class().
+
+       * data-list.c: Rewrite to eliminate use of static variables.
+
+       * dfm.c: (cmd_begin_data) Use case_source_is_class().
+
+       * file-handle.q: (fh_handle_name) Make parameter const.
+
+       * file-type.c: Rewrite to eliminate use of static variables.
+
+       * flip.c: Rewrite to eliminate use of static variables.
+
+       * format.c: (get_format_var_width) New function.
+
+       * get.c: Eliminate use of static variables.
+
+       * inpt-pgm.c: Eliminate use of static variables.
+
+       * matrix-data.c: Eliminate use of static variables.
+
+       * set.q: (set_max_workspace) New variable.
+       (cmd_set) Use SET WORKSPACE to modify set_max_workspace.
+
+       * var.h: (struct case_list) Move here from vfmP.h.
+
+       * vars-atr.c: (discard_variables) Handle new vfm_source type.
+
+       * vfm.c: (vfm_source) Change type from struct case_stream to
+       struct case_source.
+       (vfm_sink) Change type from struct case_stream to struct
+       case_sink.
+       (static var paging) Rename workspace_overflow, all references
+       updated.
+       (procedure) Use new class structures.
+       (process_active_file) Ditto.
+       (process_active_file_write_case) Ditto.
+       (prepare_for_writing) Use set_max_workspace.  Use new class
+       structures.
+       (close_active_file) Use new class structures.  Free old sink.
+       (global var disk_source_file) Removed.
+       (global var disk_sink_file) Removed.
+       (disk_stream_init) Removed.
+       (disk_stream_read) Removed.
+       (disk_stream_write) Removed.
+       (disk_stream_mode) Removed.
+       (disk_stream_destroy_source) Removed.
+       (disk_stream_destroy_sink) Removed.
+       (global var vfm_disk_stream) Removed.
+       (disk_sink_create) New function.
+       (disk_sink_write) New function.
+       (disk_sink_destroy) New function.
+       (disk_sink_make_source) New function.
+       (disk_sink_class) New static var.
+       (disk_source_read) New function.
+       (disk_source_destroy) New function.
+       (global var vfm_source_class) New var.
+       (global var memory_source_cases) Removed.
+       (global var memory_sink_cases) Removed.
+       (global var memory_sink_max_cases) Removed.
+       (struct memory_sink_info) New struct.
+       (memory_stream_init) Removed.
+       (memory_stream_read) Removed.
+       (memory_stream_write) Removed.
+       (memory_stream_mode) Removed.
+       (memory_stream_destroy_source) Removed.
+       (memory_stream_destroy_sink) Removed.
+       (global var vfm_memory_stream) Removed.
+       (page_to_disk) Renamed write_active_file_to_disk().
+       (memory_sink_create) New function.
+       (memory_sink_write) New function.
+       (memory_sink_destroy) New function.
+       (memory_sink_make_source) New function.
+       (memory_sink_class) New static var.
+       (memory_source_read) New function.
+       (memory_source_destroy) New function.
+       (memory_source_get_cases) New function.
+       (memory_source_set_cases) New function.
+       (global var vfm_source_class) New var.
+       (procedure_write_case) Use new class structures.
+       (create_case_source) New function.
+       (case_source_is_complex) New function.
+       (case_source_is_class) New function.
+       (create_case_sink) New function.
+
+       * vfm.h: (global variable reinit_sysmis) Not used, removed.
+       (global variable reinit_blanks) Not used, removed.
+       (global variable init_zero) Not used, removed.
+       (global variable init_blanks) Not used, removed.
+       (struct case_source) New struct.
+       (struct case_source_class) New struct.
+       (struct case_sink) New struct.
+       (struct case_sink_class) New struct.
+       (struct case_stream) Removed.
+
+       * vfmP.h: (struct case_list) Moved to var.h.
+
+Tue Mar  2 11:28:30 2004  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: (count_equal) New function.
+       (count_if) New function.
+       (unique) Add assertions.
+       (partition) Add assertions.
+       (is_partitioned) New function.
+       (copy_if) Add assertions.
+       (remove_equal) Add assertions.
+       (lexicographical_compare) Rename lexicographical_compare_3way.
+       (sort) Add assertions.  Rephrase some code.
+       (is_sorted) New function.
+
+Sun Feb 29 23:24:57 2004  Ben Pfaff  <blp@gnu.org>
+
+       Rewrite SORT CASES.
+
+       * sort.c: Completely rewrite.
+
+       * sort.h: Expose interface via struct sort_cases_pgm, not via
+       global variables.
+
+       * aggregate.c: (sort) New static var.
+       (cmd_aggregate) Use sort.
+       (create_sysfile) Ditto.
+       (aggregate_single_case) Ditto.
+       (dump_aggregate_info) Ditto.
+       (agr_00x_end_func) Ditto.
+       (debug_print) Ditto.
+
+       * var.h: (enum SRT_ASCEND) Removed.
+       (enum SRT_DESCEND) Removed.
+       (struct sort_cases_proc) Removed.
+       (struct variable) Remove p.srt member.
+
+Sun Feb 29 23:22:45 2004  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of the old, crappy heap structure and replace it by a new,
+       shiny, C++ STL-like heap structure.
+       
+       * Makefile.am: (pspp_SOURCES) Remove heap.c, heap.h.
+
+       * algorithm.c: (push_heap) New function.
+       (heapify) Ditto.
+       (pop_heap) Ditto.
+       (make_heap) Ditto.
+       (sort_heap) Ditto.
+       (is_heap) Ditto.
+       
+       * heap.c: Removed.
+
+       * heap.h: Removed.
+
+Sun Feb 29 23:21:53 2004  Ben Pfaff  <blp@gnu.org>
+
+       Increase warning level.
+       
+       * Makefile.am: (AM_CFLAGS) Remove -Wnouninitialized.
+
+Sat Feb 21 17:38:58 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+        * main.c: Added a signal handler for SIGSEGV requesting a bug report.
+        
+Fri Feb 20 23:22:14 2004  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c: (dict_create_var) Fix root cause of bug worked
+       around by previous change log entry.
+       
+       * compute.c: (lvalue_finalize) Remove workaround from previous
+       change log entry.
+
+Fri Feb 20 14:37:41 WAST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * compute.c: Fixed a bug where the Format was not getting set for 
+         computed variables (thus causing a crash when SAVEing).
+
+       * Added a test to stop this bug ever coming back
+
+Wed Feb 18 22:21:35 2004  Ben Pfaff  <blp@gnu.org>
+
+       Got rid of approx.h.  In general, replaced all references to
+       approx_eq() by ==, approx_lt() by <, etc.  Other types of changes
+       noted below.
+
+       * Makefile.am: (pspp_SOURCES) Removed approx.h.
+
+       * data-out.c: (try_F) Replaced test for approx_eq(number, 0.0) by
+       test for mag < EPSILON.
+
+       * misc.h: Add definition of EPSILON.
+
+Wed Feb 18 21:32:44 2004  Ben Pfaff  <blp@gnu.org>
+
+       * vfm.c: (procedure) Add check to prevent recursive call.
+
+Wed Feb 18 21:48:54 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * Moved the declarations relating to values to their own header file
+         (val.h)
+
+       * Added levene.c and levene.h
+
+       * vars-atr.c: Changed the signature of compare_values to 
+       take const * arguments.
+               
+       * t-test.q: Changed the structure of struct t_test_proc 
+       variables now contain their own group statistics information.
+       Eventually, t_test_proc might get renamed, because it'd be 
+       applicable to other commands too.
+
+Mon Feb 16 23:15:51 2004  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c: Clean up.  Changed interface of convert_*() to take
+       either a `double' or a `const char *' instead of a `const union
+       value *'.  Update all implementations of those interfaces.
+       (data_out) Use switch statements instead of a table.
+       (convert_AHEX) Rewrite.
+
+       * format.h: Update comment.
+
+Mon Feb 16 22:14:36 2004  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c: (dump_header) Add an Emacs header line to output files
+       that makes generated .c files read-only by default, to make it
+       difficult to accidentally change generated files.
+
+Mon Feb 16 22:12:07 2004  Ben Pfaff  <blp@gnu.org>
+
+       * frequencies.q: (compare_freq_numeric_a) Compare by frequency,
+       not bogus a->v.c <=> b->v.c pointer compare.
+       (compare_freq_alpha_a) Ditto.
+       (compare_freq_numeric_d) Ditto.
+       (compare_freq_alpha_d) Ditto.
+       
+Mon Feb 16 22:00:53 2004  Ben Pfaff  <blp@gnu.org>
+
+       Changed data_out() to store string data directly into a `union
+       value''s s member, not indirectly into c.
+
+       * crosstabs.q: (output_pivot_table) Use format_short() instead of
+       data_out().
+       (table_value_missing) Ditto.
+       (float_M_suffix) Ditto.
+       (format_short) New function.
+
+       * data-in.h: (data_in_finite_line) Remove inline definition.
+
+       * data-list.c: (destroy_dls_var_spec) New function.
+       (destroy_dls) Rewrite in terms of destroy_dls_var_spec().
+       (data_list_source_destroy_source) Avoid cast.
+       (struct repeating_data_trns) New field `id_value'.  Update
+       comments.
+       (cmd_repeating_data) Initialize id_value.  Use new
+       repeating_data_trns_free() for freeing REPEATING DATA
+       transformations.
+       (rpd_parse_record) Rewrite support for record ID to be less bogus.
+       (repeating_data_trns_free) New function.
+
+       * data-out.c: (data_out) Change return type to `void' by replacing
+       error returns by writing a message into the output buffer.
+       (convert_A) Read from v->s instead of v->c.
+       (convert_AHEX) Ditto.
+
+       * expr-evl.c: Update comment.
+       (expr_evaluate) Add assertion in OP_STRING case.
+
+       * format.h: (macro MAX_FORMATTED_LEN) New macro.
+
+       * list.q: (list_cases) Update for new data_out() semantics.
+
+       * print.c: (print_trns_proc) Ditto.
+
+       * tab.c: (tab_value) Ditto.
+       (tab_float) Avoid stupid cast.
+
+       * var.h: Update comments.
+       (macro MAX_STRING) New macro.
+       (macro MAX_ELEMS_PER_VALUE) New macro.
+
+       * vars-atr.c: (compare_values) New function.
+
+       * vfm.c: (dump_splits) Update for new data_out() semantics.
+
+Mon Feb 16 21:45:47 2004  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: (struct table_entry) Rename v[] to values[].  All
+       references updated.
+       (struct crosstab) Rename v[] to vars[].  All references updated.
+       (hash_table_entry) Replace the hash algorithm and fix a bug at the
+       same time, which caused the hash value to depend only on a single
+       value, not all of the variables' values.
+       
+Mon Feb 16 12:49:53 2004  Ben Pfaff  <blp@gnu.org>
+
+       Clean up struct dictionary's value_cnt usage.
+
+       * dictionary.c: Add a function comment to each function.
+       (struct dictionary) Rename value_cnt to next_value_idx, which more
+       accurately reflects its meaning.  All references updated.
+       (dict_rename_vars) Add assertion.
+       (dict_get_value_cnt) Rename dict_get_next_value_idx().  All
+       references updated.
+       (dict_get_case_size) New function.
+
+       * aggregate.c: (create_sysfile) Use dict_get_case_size().
+
+       * get.c: (mtf_read_nonactive_records) Ditto.
+
+       * sort.c: (allocate_cases) Ditto.
+       (write_initial_runs) Ditto.
+       (merge) Ditto.
+       (merge_once) Ditto.
+
+       * vfm.c: (prepare_for_writing) Ditto.
+       (setup_lag) Ditto.
+       (lag_case) Ditto.
+
+Mon Feb 16 00:17:55 2004  Ben Pfaff  <blp@gnu.org>
+
+       Make vfm.c slightly less grotesque.
+
+       * vfm.c: (filter_var) Removed.
+       (filter_index) Removed.
+       (FILTERED macro) Removed.
+       (exclude_this_case) New function.
+       (process_active_file_write_case) Use exclude_this_case() instead
+       of FILTERED and inline tests.
+       (procedure_write_case) Ditto.
+       (setup_filter) Removed.
+       (open_active_file) Don't call setup_filter().
+       (close_active_file) Call dict_get_filter() instead of checking
+       filter_var.
+
+Mon Feb 16 00:01:53 2004  Ben Pfaff  <blp@gnu.org>
+
+       * var.h: (struct variable) Update comments.
+
+Sun Feb 15 23:14:59 2004  Ben Pfaff  <blp@gnu.org>
+
+       New functions dict_create_var_assert(), dict_lookup_var_assert().
+       Converted several dict_*_var()/assert pairs into a single
+       dict_*_var_assert().
+
+       * dictionary.c: (dict_create_var_assert) New function.
+       (dict_lookup_var_assert) New function.
+
+Sun Feb 15 23:06:08 2004  Ben Pfaff  <blp@gnu.org>
+
+       Got rid of "struct long_vec", envector(), devector(), etc.  Added
+       two members `init', `reinit' to struct variable as a substitute.
+       
+       * Makefile.am: (pspp_SOURCES) Removed cases.c, cases.h.
+       
+       * cases.c: Removed.
+
+       * cases.h: Removed.
+
+       * aggregate.c: (parse_aggregate_functions) destvar doesn't need
+       init.
+
+       * autorecode.c: (cmd_autorecode) destvars don't need init.
+
+       * compute.c: (lvalue_finalize) Set reinit.
+
+       * data-list.c: (fixed_parse_compatible) Don't need init usually.
+       (dump_fmt_list) Ditto.
+       (parse_free) Ditto.
+
+       * descript.q: (run_z_pass) Don't need init for z-scores.
+
+       * dictionary.c: (dict_create_var) Initialize `init', `reinit'
+       members.
+       (dict_clone_var) Copy `reinit' member, initialize `init' member.
+
+       * glob.c: (init_glob) Remove vec_init() calls.
+
+       * inpt-pgm.c: (cmd_end_input_program) Use `reinit', not `left'.
+       
+       * loop.c: (internal_cmd_loop) Don't need to call envector().
+
+       * numeric.c: (cmd_numeric) Ditto.
+       (cmd_string) Ditto.
+       (cmd_leave) Ditto.  Set `init', `reinit' members.
+
+       * recode.c: (cmd_recode) Don't need to call envector().
+
+       * repeat.c: (internal_cmd_do_repeat) Ditto.
+
+       * var.h: (struct variable) Remove `left'.  Add `init', `reinit'.
+       (force_create_variable) Removed prototype.
+       (force_dup_variable) Ditto.
+
+       * vector.c: (cmd_vector) Don't need to call envector().
+
+       * vfm.c: (reinit_sysmis) Removed.
+       (reinit_blanks) Removed.
+       (init_zero) Removed.
+       (init_blanks) Removed.
+       (process_active_file_write_case) No need to deal with vectors.
+       Call clear_temp_case().
+       (vector_initialization) Rewrite to use `init', `reinit'.
+       (close_active_file) No need to call vec_clear().
+       (procedure_write_case) Call clear_temp_case().
+       (clear_temp_case) New function.
+
+Sun Feb 15 20:50:36 2004  Ben Pfaff  <blp@gnu.org>
+
+       * pfm-write.c: (bufwrite) Get rid of nasty cast that also invoked
+       undefined behavior.
+
+Thu Feb 12 23:35:15 2004  Ben Pfaff  <blp@gnu.org>
+
+       Add auxiliary argument to procedure() interface.  Associated small
+       clean-ups of vfm interface.
+       
+       * Updated every caller of procedure() and process_active_file() to
+       reflect modified interface.  Simple, ordinary changes not listed
+       otherwise below.
+
+       * Updated every function that implements struct case_stream's
+       `read' function to take a write_case_func and a write_case_data.
+       Also updated every caller of write_case() to instead call them
+       through these arguments.  In some cases this meant that the extra
+       args had to be threaded through a couple of extra levels.  This
+       wasn't difficult or interesting so the details won't be given.
+
+       * data-list.c: (struct repeating_data_trns) Add members
+       `write_case', `wc_data' as kluge.
+       (read_one_set_of_repetitions) Rename repeating_data_trns_proc and
+       make non-static.
+       (repeating_data_set_write_case) New function.
+
+       * data-list.h: New file to declare repeating_data_trns_proc() and
+       repeating_data_set_write_case().
+
+       * inpt-pgm.c: (input_program_source_read) Call
+       repeating_data_set_write_case() for all the REPEATING DATA
+       transformations, so that they know where to send their cases.
+       It's a big kluge.  Also kluge in END CASE.
+       (end_case_trns_proc) Never called anymore, but we still need it,
+       so just assert(0).
+
+       * sort.c: (read_sort_output) Update to match struct case_stream
+       `read' member.
+
+       * vfm.c: (struct write_case_data) New structure.
+       (proc_func) Removed.
+       (virt_proc_func) Removed.
+       (begin_func) Removed.
+       (virt_begin_func) Removed.
+       (end_func) Removed.
+       (write_case) Removed.
+       (procedure) Added an auxiliary parameter to each function pointer
+       argument's prototype.  Added an auxiliary data parameter.
+       Rewrote.
+       (process_active_file) Ditto.
+       (process_active_file_write_case) Pass aux data along.
+       (close_active_file) Ditto.
+       (procedure_write_case) Ditto.
+       (SPLIT_FILE_procfunc) Ditto.
+
+       * vfm.h: (typedef write_case_data) New.
+       (typedef write_case_func) New.
+       (struct case_stream) Add parameters to `read' member prototype.
+       
+Thu Feb 12 19:24:53 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q:  Added calculations for independent samples. (But no Levene
+       test yet!)
+
+       * Makefile.am: Moved q_sources_c into own variable 
+
+Wed Feb 11 23:56:51 2004  Ben Pfaff  <blp@gnu.org>
+
+       Miscellaneous cleanups.
+       
+       * Change unused to UNUSED in many source files to reflect modified
+       pref.h.  Change use of __WIN32__, __MSDOS, __DJGPP__,
+       __CYGWIN32__, __unix__, and unix not to assume that they're
+       defined to a nonzero value.  Change use of __attribute__ to use
+       NO_RETURN or PRINTF_FORMAT instead.
+       
+       * alloc.h: Move definitions for local_alloc(), local_free() here
+       from ../pref.h.orig and simplify.
+
+       * expr-evl.c: Instead of working differently based on PAGED_STACK,
+       use a pool allocator unconditionally.
+       (CHECK_STRING_SPACE) Removed.
+       (ALLOC_STRING_SPACE) Removed.
+       (expr_evaluate) Use e->pool instead of CHECK_STRING_SPACE and
+       ALLOC_STRING_SPACE.
+
+       * expr-opt.c: (dump_expression) Allocate string pool.
+
+       * expr-prs.c: (expr_free) Free string pool.
+
+       * pool.c: (pool_destroy) This pool must be removed from its
+       parent's list of gizmos, not from its own.  Use free_all_gizmos().
+       (pool_clear) New function.
+       (free_all_gizmos) New function.
+       (pool_alloc) Use space in empty block after this one if any.
+       (pool_release) Only empty out blocks, don't actually free() them.
+
+       * print.c: Get rid of PAGED_STACK special case by always
+       dynamically allocating line buffers.
+       (struct print_trns) Always include the `line' member.
+       (internal_cmd_print) Always initialize the `line' member.
+       (alloc_line) Always allocate memory for `line'.
+       (print_trns_proc) Always initialize buf from `line' member.
+       (print_trns_free) Always free `line' memory.
+
+       * sort.c: (allocate_file_handles) Special-case MS-DOS for mkdir()
+       call.
+       
+Wed Feb 11 20:33:18 2004  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c: Fixed crash from FLIP when a numeric variable is
+         specified on NEWNAMES and a large value is used, and a couple of
+         other minor bugs besides.
+         (struct varname) Make name a 9-character fixed-size array
+         instead of a 1-character variable size array.
+         (make_new_var) Allow digits in variable names.
+         (flip_stream_write) Limit numeric values to 8 characters and
+         format system missing and very large and small values more
+         appropriately.
+
+Thu Feb  5 13:19:06 WAST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * command.c: Fixed test on command return status for the correct 
+          value,  which had been causing a crash under certain invalid input.
+
+Wed Feb  4 15:34:11 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q: Added calculations for the one sample variant of the T-TEST
+
+Tue Feb  3 20:09:54 2004  Ben Pfaff  <blp@gnu.org>
+
+       * tab.c: (render_strip) Fix bug that sometimes caused joined text
+         in joined cells to be rendered outside box boundaries.
+
+Tue Feb  3 18:56:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * random.c (rng_create): Fixed seeding so that it gets reseeded after
+       SET seed=xx has been called.
+
+Mon Jan 19 14:08:09 2004  Ben Pfaff  <blp@gnu.org> 
+
+       * random.c (rng_get_double): Fix always-returning-zero bug in my
+       preferred way, and at the same time make sure rounding doesn't
+       bite us.
+
+Thu Jan  1 23:16:41 2004  Ben Pfaff  <blp@gnu.org>
+
+       * html.c: (change_attributes) Dead code, removed.
+       (escape_string) Eliminate code to call change_attributes() that
+       never actually called it.
+       (output_tab_table) Get rid of dependence on tab_hit
+       and struct tab_joined_cell's hit member, which are abominations.
+
+       * tab.c: (tab_output_text) Don't call
+       d->class->text_set_font_by_name if it's a null pointer.
+       (macro UNROLL_LOOP) Eliminate.
+       (macro UNROLL_3_LOOPS) Eliminate.
+       (tabi_render) Rewrite not to use the above macros.
+
+Thu Jan  1 23:09:07 2004  Ben Pfaff  <blp@gnu.org>
+
+       Start working on a new output driver system, one that doesn't suck
+       so much, by adding a "device-independent" output driver.  The idea
+       is to write out only a single output stream, then use separate
+       processes to translate them into whatever formats we want.  This
+       is similar to how "groff" works with its various output drivers
+       (grops, grotty, grodvi, ...).
+       
+       * Makefile.am: (pspp_SOURCES) Add devind.c, devind.h.
+
+       * list.q: (write_all_headers) Stub out devind class.
+       (clean_up) Ditto.
+       (determine_layout) Ditto.
+       (list_cases) Ditto.
+
+       * output.c: (outp_init) Add devind class.
+
+       * devind.c: New file.
+
+       * devind.h: New file.
+
+Thu Jan  1 23:08:14 2004  Ben Pfaff  <blp@gnu.org>
+
+       * frequencies.q: (hash_value_alpha) Fixed up the previous change
+       to use the proper string length.
+
+Wed Dec 31 16:27:33 WAST 2003 John Darrington <john@darrington.wattle.id.au>
+
+       * Fixed bug where FREQ would crash on alpha values
+
+Tue Dec 30 22:42:57 2003  Ben Pfaff  <blp@gnu.org>
+
+       * Removed bletcherous alloca() workarounds for AIX from top of
+       many files.  AIX can use the alternative alloca() implementation
+       instead.
+
+Tue Dec 30 22:35:16 2003  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (ascii_option) Fix implementation of headers option.
+
+Tue Dec 30 22:32:53 2003  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: Add a "squeeze" option to the ASCII driver to squeeze
+       multiple blank lines into one.
+       (struct ascii_driver_ext) Add squeeze_blank_lines option.
+       (ascii_preopen_driver) Initialize squeeze_blank_lines.
+       (static var option_tab) Add squeeze entry.
+       (ascii_option) Set squeeze_blank_lines.
+       (output_lines) Implement squeezing blank lines.
+
+Wed Dec 31 07:19:46 WST 2003 John Darrington <john@darrington.wattle.id.au>
+
+       * Removed redundant code from output.h
+
+Sat Dec 27 22:17:52 2003  Ben Pfaff  <blp@gnu.org>
+
+       Dictionary classes: each variable is "ordinary", "system", or
+       "scratch".
+
+       * var.h: (enum dict_class) New enum.
+
+       * vars-prs.c: (dict_class_from_id) New function.
+       (dict_class_to_name) New function.
+
+Sat Dec 27 22:16:06 2003  Ben Pfaff  <blp@gnu.org>
+
+       * var.h: (struct freq_tab_set) Removed (not used).
+
+Sat Dec 27 22:15:21 2003  Ben Pfaff  <blp@gnu.org>
+
+       * value-labels.c: (val_labs_destroy) vls needs to be freed too.
+
+Sat Dec 27 22:10:49 2003  Ben Pfaff  <blp@gnu.org>
+
+       * stats.c: (hypercube) Rename pow4().  All references updated.
+
+Sat Dec 27 22:05:49 2003  Ben Pfaff  <blp@gnu.org>
+
+       * rename-vars.c: (cmd_rename_variables) Rewritten.
+       (compare_name) Removed.
+
+Sat Dec 27 22:03:51 2003  Ben Pfaff  <blp@gnu.org>
+
+       var_set feature, and code taking advantage of it.
+       
+       * crosstabs.q: (static var var_dict) Removed.
+       (static var variables) New variable.
+       (static var variables_cnt) New variable.
+       (cmd_crosstabs) Free variables instead of var_dict.
+       (internal_cmd_crosstabs) Initialize and use variables,
+       variables_cnt instead of var_dict.
+       (free_var_dict) Removed.
+       (crs_custom_tables) Use var_set instead of a copied dictionary.
+       (crs_custom_variables) Set up variables, variables_cnt instead of
+       var_dict.
+       [DEBUGGING] (debug_print) Ditto.
+
+       * means.q: (mns_custom_tables) Use var_set instead of a copied
+       dictionary.
+
+       * vars-prs.c: (parse_vs_variable) New function.
+       (parse_dict_variable) Rewritten.
+       (parse_variable) Rewritten.
+       (parse_variables) Renamed parse_var_set_vars(), rewritten.
+       (parse_variables) New function in terms of parse_var_set_vars().
+       Now requires its first argument to be non-null.  All references
+       that passed a null pointer updated to pass default_dict instead.
+       (macro id_dict) Removed.
+       (parse_DATA_LIST_vars) Add assertions.
+       (parse_mixed_vars) Ditto.
+       (struct var_set) New structure.
+       (var_set_get_cnt) New function.
+       (var_set_get_var) New function.
+       (var_set_lookup_var) New function.
+       (var_set_destroy) New function.
+       (dict_var_set_get_cnt) New function.
+       (dict_var_set_get_var) New function.
+       (dict_var_set_lookup_var) New function.
+       (dict_var_set_destroy) New function.
+       (var_set_create_from_dict) New function.
+       (struct array_var_set) New structure.
+       (array_var_set_get_cnt) New function.
+       (array_var_set_get_var) New function.
+       (array_var_set_lookup_var) New function.
+       (array_var_set_destroy) New function.
+       (var_set_create_from_array) New function.
+
+       * q2c.c: (dump_parser) Use parse_variables(default_dict, ...)
+       instead of parse_variables(NULL, ...) in output code.
+
+Sat Dec 27 21:38:53 2003  Ben Pfaff  <blp@gnu.org>
+
+       Change inp_init from a 2-bit vector to an ordinary array.
+       Initialize it all in cmd_end_input_program() instead of in
+       create_variable().
+
+       * inpt-pgm.c: (enum value_init_type) New enum.
+       (global var inp_init) Change to `enum value_init_type *', make
+       static.
+       (inp_init_size) Removed.
+       (inp_nval) Change to `size_t', make static.
+       (cmd_input_program) Don't initialize inp_init or inp_init_size.
+       (cmd_end_input_program) Initialize inp_init, inp_nval.
+       (init_case) Rewrite.
+       (clear_case) Rewrite.
+
+       * inpt-pgm.h: Removed.
+
+Sat Dec 27 21:36:38 2003  Ben Pfaff  <blp@gnu.org>
+
+       * hash.c: (hsh_hash_bytes) Use Fowler-Noll-Vo hash instead of
+       Colin Plumb hash.  It is simpler and should better resist
+       collisions.
+       (hsh_hash_string) Ditto.
+
+Sat Dec 27 21:34:57 2003  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (export_write_case_func) Remove debug printing code.
+
+Sat Dec 27 21:11:09 2003  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (cmd_save_internal) Rename parameter.  Use &t->h instead
+       of cast.
+       (save_write_case_func) Use &trns->h instead of cast.
+       (cmd_export) Use &t->h instead of cast.
+
+Sat Dec 27 20:57:42 2003  Ben Pfaff  <blp@gnu.org>
+
+       Moved vectors into the dictionary.
+
+       * var.h: (struct vector) Moved here from vector.h.  `index' member
+       renamed `idx', `v' renamed `var', `nv' renamed `cnt'.  All
+       references updated.
+       
+       * vector.h: Removed.
+
+       * vector.c: (global var vec) Removed.
+       (global var nvec) Removed.
+       (cmd_vector) Rewritten.
+       (find_vector) Removed.
+
+       * dictionary.c: (dict_create_vector) New function.
+       (dict_get_vector) New function, replaces reading global vec[]
+       array.
+       (dict_get_vector_cnt) New function, replaces reading global nvec
+       variable.
+       (dict_lookup_vector) New function, replaces find_vector().
+       (dict_clear_vectors) New function.
+
+Sat Dec 27 20:54:01 2003  Ben Pfaff  <blp@gnu.org>
+
+       Start to move away from `struct variable' p `union' member to void
+       * aux member.
+
+       * var.h: (struct variable) Add `aux' member.
+
+Sat Dec 27 20:36:25 2003  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of struct variable `foo' member.
+
+       * frequencies.q: (internal_cmd_frequencies) Use p.frq.used instead
+       of foo.
+       (frq_custom_variables) Ditto.
+       (frq_custom_grouped) Ditto.
+
+       * get.c: (struct save_trns) Change `var' member from `int *' to
+       `struct variable **'.
+       (cmd_save_internal) Use aux instead of foo.
+       (save_trns_proc) Use revised `var' member.
+       (static var mtf_seq_no) Renamed mtf_seq_num.
+       (static var mtf_seq_nums) New static var.
+       (cmd_match_files) Initialize mtf_seq_nums.
+       (mtf_free) Free mtf_seq_nums.
+       (mtf_processing) Use mtf_seq_nums instead of foo.
+       (mtf_merge_dictionary) No need to initialize mv->foo.
+       (cmd_export) Use aux instead of foo.  Use revised `var' member.
+       (mns_custom_tables) Don't use foo to check for duplicates, that's
+       what PV_NO_DUPLICATE is for.
+
+       * var.h: (struct variable) Remove `foo' member.
+       (struct frequencies_proc) New member.
+       
+Sat Dec 27 19:46:13 2003  Ben Pfaff  <blp@gnu.org>
+
+       Clean up COMPUTE and IF.
+
+       * compute.c: More or less rewrite the darn thing.
+       (struct compute_trns) Rename and reorder and add and delete
+       members.
+       (cmd_compute) Rewrite.
+       (compute_num) Make conditional on test expression.  Now used for
+       both COMPUTE and IF.
+       (compute_num_vec) Ditto.
+       (compute_str) Ditto.
+       (compute_str_vec) Ditto.
+       (cmd_if) Rewrite.
+       (if_num) Removed.
+       (if_num_vec) Removed.
+       (if_str) Removed.
+       (if_str_vec) Removed.
+       (parse_target_expression) Renamed parse_rvalue_expression(),
+       rewritten.
+       (new_trns) Renamed compute_trns_create(), rewritten.
+       (delete_trns) Removed.
+       (free_trns) Renamed compute_trns_free(), rewritten.
+       (struct lvalue) New structure.
+       (parse_var_or_vec) Renamed lvalue_parse(), rewritten.
+       (lvalue_get_type) New function.
+       (lvalue_is_vector) New function.
+       (lvalue_finalize) New function.
+       (lvalue_destroy) New function.
+       
+Sat Dec 27 19:44:14 2003  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Disallow MODIFY VARS in input mode, so that
+       variables can't get dropped and confuse cmd_end_input_program()'s
+       attempt to fill inp_init[].
+       
+       * modify-vars.c: (static var forward_positional_ordering) New
+       variable.
+       (struct var_modification) Entirely changed.
+       (rearrange_dict) Interface changed, rewritten.
+       (cmd_modify_vars) Deal with modified struct var_modification, much
+       rewritten.
+       (struct var_renaming) New structure.
+       (compare_var_renaming_by_new_name) New function.
+       (validate_var_modification) New function.
+
+       * var.h: (struct modify_vars_proc) Removed.
+       (struct variable) Removed member p.mfv.
+
+Sat Dec 27 19:40:26 2003  Ben Pfaff  <blp@gnu.org>
+
+       Make EVALUATE a valid command whether we're debugging or not, so
+       that `make check' can succeed regardless of whether debugging is
+       turned on.
+       
+       * command.def: [GLOBAL_DEBUGGING] Drop the #if.
+
+       * compute.c: [GLOBAL_DEBUGGING] (cmd_evaluate) Drop the #if.
+
+Sat Dec 27 19:34:40 2003  Ben Pfaff  <blp@gnu.org>
+
+       * apply-dict.c: (cmd_apply_dictionary) Replace a ghastly switch
+       statement by a simple if test.
+
+       * dfm.c: (dfm_get_record) Add assertion.
+
+Sat Dec 27 17:51:26 2003  Ben Pfaff  <blp@gnu.org>
+
+       For each file x.c, move #include "x.h" to the very top of the
+       include list, to catch x.h failing to include the proper headers.
+
+Sat Dec 27 17:50:19 2003  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: (find) New function.
+       (remove_equal) New function.
+       (set_difference) New function.
+       (adjacent_find_equal) New function.
+       [TEST_UNIQUE] Removed test case.
+       (copy_if) Find end test.
+
+Sat Dec 27 17:42:45 2003  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c: (dict_get_case_weight) New convenience function.
+
+       * aggregate.c: (accumulate_aggregate_info) Use
+       dict_get_case_weight().
+
+       * frequencies.q: (calc_general) Ditto.
+       (calc_integer) Ditto.
+       (calc) Ditto.
+
+       * t-test.q: (groups_calc) Ditto.
+       (z_calc) Ditto.
+
+Sat Dec 27 17:29:45 2003  Ben Pfaff  <blp@gnu.org>
+
+       * glob.c: (global var default_dict) Change from `struct
+       dictionary' to `struct dictionary *'.  All references changed.
+       (init_glob) Initialize default_dict with dict_create().
+
+Sat Dec 27 17:06:06 2003  Ben Pfaff  <blp@gnu.org>
+
+       struct dictionary now made opaque.  All related functions:
+
+       * get.c: (rename_variables) Removed.
+       (dict_delete_run) Removed.
+       
+       * temporary.c: (copy_variable) Removed.
+       (new_dictionary) Removed.
+       (save_dictionary) Removed.
+       (restore_dictionary) Removed.
+       (free_dictionary) Removed.
+
+       * vars-atr.c: (clear_default_dict) Removed.
+       (find_variable) Removed.
+       (find_dict_variable) Removed.
+       (create_variable) Removed.
+       (delete_variable) Removed.
+       (common_init_stuff) Removed.
+       (init_variable) Removed.  Updating of inp_init moved into
+       cmd_end_input_program().
+       (replace_variable) Removed.
+       (rename_variable) Removed.
+       (clear_variable) Removed.
+       (dup_variable) Removed.
+
+       * vars-prs.c: (is_varname) Removed.
+       (is_dict_varname) Removed.
+       (fill_all_vars) Removed.
+
+       * vector.c: (find_vector) Removed.
+
+       * weight.c: (stop_weighting) Removed.
+
+       * dictionary.c: New file.
+       (dict_create) New, replaces new_dictionary().
+       (dict_clone) New, replaces save_dictionary() and
+       restore_dictionary().
+       (dict_clear) New, replaces clear_default_dict().
+       (dict_destroy) New, replaces free_dictionary().
+       (dict_get_var_cnt) New function, replaces references to
+       dict->nvar.
+       (dict_get_var) New function, replaces references to dict->var[i].
+       (dict_get_vars) New function, replaces fill_all_vars().
+       (dict_create_var) New, replaces create_variable().  Interface
+       drops `type' parameter, using a zero `width' to designate numeric.
+       (dict_clone_var) New, replaces dup_variable().
+       (dict_rename_var) New, replaces rename_variable().
+       (dict_lookup_var) New, replaces find_variable(),
+       find_dict_variable(), is_varname().
+       (dict_contains_var) New function.
+       (compare_variable_dblptrs) New function.
+       (dict_delete_var) New function, replaces clear_variable().
+       (dict_delete_vars) New function, replaces dict_delete_run().
+       (dict_reorder_vars) New function.
+       (dict_rename_vars) New function, replaces rename_variables().
+       (dict_get_weight) New function, replaces reading dict->weight_var.
+       (dict_set_weight) New function, replaces writing dict->weight_var
+       or calling stop_weight(dict).
+       (dict_get_filter) New function, replaces reading dict->filter_var.
+       (dict_set_filter) New function, replaces writing dict->filter_var.
+       (dict_get_case_limit) New function, replaces reading dict->N.
+       (dict_set_case_limit) New function, replaces writing dict->N.
+       (dict_get_value_cnt) New function, replaces reading dict->nval.
+       (dict_compact_values) New function, replaces a loop that was
+       replicated in several places.
+       (dict_get_split_vars) New function, replaces reading dict->splits.
+       (dict_get_split_cnt) New function, replaces reading
+       dict->n_splits.
+       (dict_set_split_vars) New function, replaces writing dict->splits.
+       (dict_get_label) New function, replaces reading dict->label.
+       (dict_set_label) New function, replaces writing dict->label.
+       (dict_get_documents) New function, replaces reading
+       dict->documents.
+       (dict_set_documents) New function, replaces writing
+       dict->documents.
+       
+       All references to above functions updated.
+       
+       * aggregate.c: (cmd_aggregate) Copy file label and documents from
+       old dictionary to new by hand, because dict_create() can't do it
+       itself.  Use dict_set_documents(), dict_set_split_vars().
+
+       * temporary.c: (cancel_temporary) Also set temp_dict to NULL after
+       calling dict_destroy().
+
+       * data-list.c: (dls_var_spec) Remove `type' member, replace by
+       `width'.
+       (fixed_parse_compatible) Some slightly nontrivial changes for
+       dict_create_var().
+       (dump_fmt_list) Ditto.
+       (parse_free) Ditto.
+
+       * file-type.c: (create_col_var) Ditto.
+
+       * get.c: (cmd_get) Use dict_compact_values() instead of a loop.
+       (trim_dictionary) Use dict_delete_vars(), dict_reorder_vars().
+       (rename_variables) Use dict_rename_vars().
+       (mtf_merge_dictionary) Use dict_get_documents(),
+       dict_set_documents(), dict_compact_values().
+
+       * pfm-read.c: (read_variables) Deal with changes to weighting.
+
+       * q2c.c: (dump_parser) Use dict_lookup_var() instead of
+       is_varname() in output code.
+
+       * sfm-read.c: (read_header) Use dict_create(), dict_set_label(),
+       other dictionary functions.
+
+       * title.c: (add_document_line) Use dict_get_documents(),
+       dict_set_documents().
+
+       * vars-atr.c: (discard_variables) Use dict_clear(default_dict),
+       reset default_handle by hand.  dict_clear() will clear vectors so
+       there's no need for that by hand.
+
+       * vfm.c: (close_active_file) Move call to finish_compaction()
+       earlier, so that we can do the compaction as a single step using
+       dict_compact_values().  Use dict_clear_vectors().
+       (finish_compaction) Use dict_delete_var(), dict_compact_values().
+               
+       Some functions don't have replacements:
+
+       * vars-atr.c: (force_create_variable) Removed.  All references
+       updated to dict_create_var() followed by an assertion.
+       (force_dup_variable) Removed.  All references updated to
+       dict_clone_var() followed by an assertion.
+       
+       * weight.c: (update_weighting) Removed.  No longer necessary, so
+       all references removed.
+
+Sat Dec 27 16:43:01 2003  Ben Pfaff  <blp@gnu.org>
+
+       Clean up AGGREGATE.
+       
+       * aggregate.c: Eliminate separation of weighted and unweighted
+       case.  It made the code too obscure and I doubt it was actually
+       faster.  Instead, all code uses the "weighted" code, because
+       that's a generalization of the "unweighted" code.
+       (FWEIGHT) Removed.
+       (FOPTIONS) Ditto.
+       (parse_aggregate_functions) No need to set FWEIGHT.
+       (accumulate_aggregate_info) Get rid of FWEIGHT cases.
+       (dump_aggregate_info) Ditto.
+       (initialize_aggregate_info) No need for special plain_function
+       that gets rid of FWEIGHT option.
+
+       * aggregate.c: Get rid of approximations.
+       (accumulate_aggregate_info) Don't use approx_gt(), approx_lt(),
+       approx_in_range().
+       (aggregate_single_case) Don't use approx_ne().
+
+Sat Dec 27 16:19:36 2003  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c (ascii_line_width): Dead code, removed.
+
+       * postscript.c (ps_line_width): Ditto.
+
+       * q2c.c (xrealloc): Ditto.
+
+       * count.c (internal_cmd_count): Ditto.
+
+       * means.q (validate_dependent_endpoint): Ditto.
+
+       * set.q: (cmd_gset) Ditto.
+
+       * weight.c: [0] (weight_trns_proc) Ditto.
+
+Sat Dec 27 16:18:16 2003  Ben Pfaff  <blp@gnu.org>
+
+       Make the code -Wmissing-prototypes clean.
+
+       * Makefile.am (version.c): Add #include "version.h".
+       
+       * ascii.c: (ascii_open_global) Make static.
+       (ascii_close_page) Ditto.
+       (ascii_font_sizes) Ditto.
+       (ascii_postopen_driver) Ditto.
+       (ascii_close_driver) Ditto.
+       (ascii_option) Ditto.
+       (ascii_open_page) Ditto.
+       (ascii_line_horz) Ditto.
+       (ascii_line_vert) Ditto.
+       (ascii_line_intersection) Ditto.
+       (ascii_box) Ditto.
+       (ascii_polyline_begin) Ditto.
+       (ascii_polyline_point) Ditto.
+       (ascii_polyline_end) Ditto.
+       (ascii_text_set_font_by_name) Ditto.
+       (ascii_text_set_font_by_position) Ditto.
+       (ascii_text_set_font_by_family) Ditto.
+       (ascii_text_get_font_name) Ditto.
+       (ascii_text_get_font_family) Ditto.
+       (ascii_text_set_size) Ditto.
+       (ascii_text_get_size) Ditto.
+       (ascii_text_metrics) Ditto.
+       (ascii_text_draw) Ditto.
+       (ascii_close_page) Ditto.
+
+       * cmdline.h: New header for parse_command_line().  Used where
+       needed.
+
+       * command.c: Move prototypes for cmd_*() functions to command.h.
+
+       * command.h: Prototypes for cmd_*() functions moved here from
+       command.c.
+
+       * crosstabs.q: (gamma_int) Ditto.
+
+       * file-handle.h: Add fh_init_files() prototype.
+       
+       * getline.c: (welcome) Ditto.
+
+       * glob.h: New header for init_glob().  Used where appropriate.
+
+       * hash.c: (comparison_helper) Ditto.
+
+       * html.c: (html_open_global) Ditto.
+       (html_close_global) Ditto.
+       (html_preopen_driver) Ditto.
+       (html_postopen_driver) Ditto.
+       (html_close_driver) Ditto.
+       (html_option) Ditto.
+       (html_open_page) Ditto.
+       (html_close_page) Ditto.
+       (html_submit) Ditto.
+
+       * inpt-pgm.c: (input_program_source_read) Ditto.
+
+       * output.c: (find_defn_value) Ditto.
+       (destroy_list) Ditto.
+
+       * pfm-read.c: (read_int) Ditto.
+
+       * postscript.c: (ps_open_global) Ditto.
+       (ps_close_global) Ditto.
+       (ps_font_sizes) Ditto.
+       (ps_preopen_driver) Ditto.
+       (ps_postopen_driver) Ditto.
+       (ps_close_driver) Ditto.
+       (ps_option) Ditto.
+       (ps_open_page) Ditto.
+       (ps_close_page) Ditto.
+       (ps_line_horz) Ditto.
+       (ps_line_vert) Ditto.
+       (ps_line_intersection) Ditto.
+       (ps_box) Ditto.
+       (ps_polyline_begin) Ditto.
+       (ps_polyline_point) Ditto.
+       (ps_polyline_end) Ditto.
+       (ps_text_set_font_by_name) Ditto.
+       (ps_text_set_font_by_position) Ditto.
+       (ps_text_set_font_family) Ditto.
+       (ps_text_get_font_name) Ditto.
+       (ps_text_get_font_family) Ditto.
+       (ps_text_set_size) Ditto.
+       (ps_text_get_size) Ditto.
+       (ps_text_metrics) Ditto.
+       (ps_text_draw) Ditto.
+
+       * q2c.c: (finish_up) Ditto.
+       (xmalloc) Ditto.
+       (xstrdup) Ditto.
+       (get_buffer) Ditto.
+       (st_lower) Ditto.
+       (st_upper) Ditto.
+       (skip_ws) Ditto.
+       (get_line) Ditto.
+       (add_symbol) Ditto.
+       (find_symbol) Ditto.
+       (lex_get) Ditto.
+       (force_id) Ditto.
+       (force_string) Ditto.
+       (match_id) Ditto.
+       (match_token) Ditto.
+       (skip_token) Ditto.
+       (parse) Ditto.
+       (parse_setting) Ditto.
+       (parse_specifier) Ditto.
+       (parse_specifiers) Ditto.
+       (parse_subcommand) Ditto.
+       (dump_specifier_vars) Ditto.
+       (is_keyword) Ditto.
+       (make_identifier) Ditto.
+       (dump_declarations) Ditto.
+       (dump_specifier_init) Ditto.
+       (dump_vars_init) Ditto.
+       (make_match) Ditto.
+       (dump_specifier_parse) Ditto.
+       (dump_subcommand) Ditto.
+       (dump_parser) Ditto.
+       (dump_header) Ditto.
+       (dump_free) Ditto.
+       (recognize_directive) Ditto.
+
+       * recode.c: (string_to_long) Ditto.
+
+       * repeat.c: (find_DO_REPEAT_substitution) Ditto.
+
+       * repeat.h: New header for perform_DO_REPEAT_substitutions, used
+       where appropriate.
+
+       * sort.c: (sort_stream_read) Ditto.
+       (sort_stream_mode) Ditto.
+       
+Fri Dec 19 23:35:04 2003  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c (binary_search): Fix comparison.
+
+Fri Dec 19 23:27:45 2003  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: (binary_search) Fix assertion.
+
+Fri Dec 19 21:31:48 2003  Ben Pfaff  <blp@gnu.org>
+
+       * sysfile-info.c: (compare_vectors_by_name) Rewrite.
+
+Fri Dec 19 21:30:24 2003  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: (compare_case_lists) Rewrite.
+
+Fri Dec 19 16:44:22 2003  Ben Pfaff  <blp@gnu.org>
+
+       * quicksort.c: Removed (not used).
+
+       * quicksort.h: Removed (not used).
+
+       * sort.c: Removed blp_quicksort() prototype.
+
+Fri Dec 19 16:42:13 2003  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: (int_2_compare) Rewrite.
+       (compare_line) Rewrite.
+
+Fri Dec 19 16:38:35 2003  Ben Pfaff  <blp@gnu.org>
+
+       * matrix-data.c (compare_factors) Use lexicographical_compare()
+       algorithm.
+       (compare_doubles) New function.
+       
+       * algorithm.c: (lexicographical_compare) New algorithm.
+
+Fri Dec 19 16:23:45 2003  Ben Pfaff  <blp@gnu.org>
+
+       * matrix-data.c (compare_variables_by_mxd_vartype): Rewrite.
+
+Fri Dec 19 15:54:45 2003  Ben Pfaff  <blp@gnu.org>
+
+       * expr-prs.c: (cmp_func) Removed.
+       (parse_function) Use binary_search() algorithm.
+       (compare_functions) New function.
+       (init_func_tab) Use sort() algorithm.
+
+       * algorithm.c: (binary_search) New algorithm.
+
+Fri Dec 19 15:50:45 2003  Ben Pfaff  <blp@gnu.org>
+
+       * descript.q: (display) Use sort() algorithm instead of qsort().
+       (compare_func) Removed.
+       (descriptives_compare_variables) New function.
+
+Fri Dec 19 15:08:38 2003  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of AVL trees.  Hashes are more appropriate for everything
+       PSPP does.
+
+       * Makefile.am: (pspp_SOURCES) Remove avl.c, avl.h.
+       
+       * avl.c: Removed.
+
+       * avl.h: Removed.
+
+Fri Dec 19 14:33:31 2003  Ben Pfaff  <blp@gnu.org>
+
+       Much code can be clarified by using C++ STL-like algorithms.  Not
+       all uses of these algorithms are listed below, only the ones where
+       the change to an algorithm was the only change of interest.
+       
+       * Makefile.am: (pspp_SOURCES) Add algorithm.c, algorithm.h.
+       
+       * algorithm.c: New file.
+
+       * algorithm.h: New file.
+
+       * modify-vars.c: (static var forward) Removed.
+       (static var positional) Removed.
+       (compare_variables) Removed.
+       (struct ordering) New.
+       (cmd_modify_vars) Use sort() algorithm.
+       (compare_variables_given_ordering) New function.
+       (rearrange_dict) Use sort() algorithm.
+
+       * sysfile-info.c: (cmd_display) Use sort() algorithm.
+       (cmp_var_by_name) Removed.
+
+Fri Dec 19 14:26:17 2003  Ben Pfaff  <blp@gnu.org>
+
+       Make file handles use a hash table.
+       
+       * file-handle.q: (files) Change to hash table, make static.
+       (cmd_file_handle) Use hash table functions.
+       (fh_get_handle_by_filename) Ditto.
+       (fh_get_handle_by_name) Ditto.
+       (hash_file_handle) New function.
+       (cmp_file_handle) Rewrite.
+       (fh_init_files) Use hash table functions.
+
+Fri Dec 19 14:24:38 2003  Ben Pfaff  <blp@gnu.org>
+
+       Clean up FREQUENCIES.
+       
+       * Makefile.am: (pspp_SOURCES) Remove frequencies.g.
+
+       * frequencies.q: Remove a lot of old #if'd out code at the end.
+       (internal_cmd_frequencies) Use calc() instead of calc_no_weight()
+       or calc_weight().  Initialize percentile_values.
+       (calc) New function based on calc_weight() from frequencies.g.
+       (precalc) Use hash functions.
+       (static var comparison_func) Removed.
+       (static var comparison_param) Removed.
+       (comparison_helper) Removed.
+       (get_freq_comparator) New function.
+       (not_missing) New function.
+       (add_freq) Removed.
+       (postprocess_freq_tab) Use hash table functions, algorithms,
+       get_freq_comparator().  Rewrite.
+       (cleanup_freq_tab) Rephrase.
+       (add_percentile) Clean up spacing.
+       (hash_value_numeric) New function.
+       (hash_value_alpha) New function.
+       (compare_value_numeric_a) Rewrite.
+       (compare_value_alpha_a) Rewrite.
+       (compare_value_numeric_d) Rewrite.
+       (compare_value_alpha_d) Rewrite.
+       (compare_freq_numeric_a) Rewrite.
+       (compare_freq_alpha_a) Rewrite.
+       (compare_freq_numeric_d) Rewrite.
+       (compare_freq_alpha_d) Rewrite.
+       (calc_stats) Clean up mode, percentiles, max.
+       (dump_statistics) Clean up spacing.
+       
+       * frequencies.g: Removed.
+
+       * var.h: (struct freq_tab) Change `data' to hash table.
+
+Fri Dec 19 14:15:46 2003  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.h: Remove declaration of global variable `files',
+       which wasn't used anywhere.
+
+       * postscript.c: (add_encoding) Remove superfluous cast.
+       (line) Ditto.
+
+       * sfm-read.c: [linux] (bswap_int32) Drop ntohl() non-portable
+       version.
+
+       * temporary.c: [0] (display_tree) Removed.
+
+Fri Dec 19 14:13:04 2003  Ben Pfaff  <blp@gnu.org>
+
+       Implement a new random number generator based on the alleged RC4
+       algorithm.
+
+       * expr-evl.c: (expr_evaluate) Use rng_get_double_normal() instead
+       of rand_normal().
+
+       * random.c: [!HAVE_GOOD_RANDOM] (real_rand) Removed.
+       [!HAVE_GOOD_RANDOM] (real_srand) Removed.
+       (macro k) Removed.
+       (static var V[]) Removed.
+       (static var Y) Removed.
+       (static var X2) Removed.
+       (setup_randomize) Removed.
+       (shuffle) Removed.
+       (rand_uniform) Removed.
+       (rand_normal) Removed.
+       (struct rng) New structure.
+       (rng_create) New function.
+       (rng_destroy) New function.
+       (swap_byte) New static function.
+       (rng_seed) New function.
+       (rng_get_bytes) New function.
+       (rng_get_int) New function.
+       (rng_get_unsigned) New function.
+       (rng_get_double) New function.
+       (rng_get_double_normal) New function.
+       (pspp_rng) New function.
+
+       * random.h: Sync up to random.c.
+
+       * sample.c: (struct sample_trns) Make `frac' unsigned and a
+       fraction of UINT_MAX, not 65536.
+       (cmd_sample) Use rng_get_unsigned(), rng_get_double(), UINT_MAX
+       fraction.
+
+       * vfm.c: (open_active_file) No need to call setup_randomize() any
+       longer.
+
+Fri Dec 19 12:05:56 2003  Ben Pfaff  <blp@gnu.org>
+
+       Change dictionary name indexes to use hash tables instead of AVL
+       trees.
+
+       * crosstabs.q: (free_var_dict) Use hash tables.
+       (crs_custom_tables) Ditto.
+       (calc_general) Ditto.
+       (compare_table_entry) Rewrite.
+       (enum_var_values) Reorder parameters.  All references updated.
+       Rewrite.
+
+       * get.c: (rename_variable) Use hash tables.
+       (mtf_merge_dictionary) Ditto.
+
+       * glob.c: (init_glob) Use hash tables.
+       (cmp_variable) Removed.
+
+       * means.q: (mns_custom_tables) Use hash tables.
+
+       * modify-vars.c: (rearrange_dict) Use hash tables.
+
+       * rename-vars.c: (cmd_rename_variables) Use hash tables.
+
+       * sfm-read.c: (read_header) Use hash tables.
+       (read_variables) Ditto.
+
+       * temporary.c: (new_dictionary) Use hash tables.
+       (save_dictionary) Ditto.
+       (restore_dictionary) Ditto.
+
+       * var.h: (struct dictionary) Change AVL tree `var_by_name' into
+       hash table `name_tab'.
+
+       * vars-atr.c: [DEBUGGING] (dump_one_var_node) Removed.
+       [DEBUGGING] (dump_var_tree) Removed.
+       (find_variable) Use hash tables.
+       (find_dict_variable) Ditto.
+       (common_init_stuff) Ditto.
+       (rename_variable) Ditto.
+       (clear_variable) Ditto.  Also, remove debug code.
+       (dup_variable) Use hash tables.
+
+       * vars-prs.c: (fill_all_vars) Use hash tables.
+       (is_dict_varname) Ditto.
+       (parse_dict_variable) Ditto.
+       
+Fri Dec 19 11:46:23 2003  Ben Pfaff  <blp@gnu.org>
+
+       Change value labels to use hash tables instead of AVL trees, and
+       change value labels into an ADT.
+
+       * Makefile.am: (pspp_SOURCES) Add value-labels.c, value-labels.h.
+       
+       * value-labels.c: New file.
+
+       * value-labels.h: New file.
+
+       * apply-dict.c: (cmd_apply_dictionary) Use value label ADT.
+       Get rid of a stupid use of goto.
+
+       * autorecode.c: (compare_alpha_value) Rewrite.
+       (hash_alpha_value) Ditto.
+       (compare_numeric_value) Rewrite.
+       (hash_numeric_value) Ditto.
+
+       * frequencies.q: (dump_full) Use value label ADT.
+
+       * pfm-read.c: (read_value_label) Use value label ADT.
+
+       * pfm-write.c: (write_value_labels) Use value label ADT.
+
+       * sfm-read.c: (read_variables) Use value label ADT.
+       (read_value_labels) Rewrite.
+
+       * sfm-write.c: (write_value_labels) Rewrite.
+
+       * sysfile-info.c: (cmd_sysfile_info) Use value label ADT.
+       (display_variables) Ditto.
+       (describe_variable) Ditto.
+
+       * t-test.q: (print_t_groups) Use value label ADT.
+
+       * temporary.c: (copy_variable) Use value label ADT.
+       (free_dictionary) Ditto.
+
+       * val-labs.c: (verify_val_labs) Use value label ADT.
+       (get_label) Ditto.
+       (debug_print) Ditto.
+       (val_lab_cmp) Removed.
+       (inc_ref_count) Removed.
+       (copy_value_labels) Removed.
+
+       * var.h: (struct value_label) Removed.
+       (struct variable) Change AVL tree `val_lab' into hash table
+       `val_labs'.
+
+       * vars-atr.c: (init_variable) Use value label ADT.
+       (clear_variable) Ditto.
+       (free_value_label) Removed.
+       (free_val_lab) Removed.
+       (get_val_lab) Removed.
+       (compare_variables) New function.
+       (hash_variable) New function.
+
+       * vfm.c: (dump_splits) Use value label ADT.
+
+Fri Dec 19 11:18:11 2003  Ben Pfaff  <blp@gnu.org>
+
+       Add to the hash table interface.
+
+       * hash.c: (hsh_hash_bytes) Add assertion.
+       (hsh_hash_string) Ditto.
+       (hsh_clear) Ditto.
+       (hsh_rehash) Ditto.
+       (hsh_probe) Ditto.
+       (hsh_create) Ditto.  Also make minimum `size'.
+       (hsh_destroy) Rephrase.
+       (sort_nulls_last) Removed.
+       (not_null) New function.
+       (hsh_data) Ditto.
+       (comparison_helper) Ditto.
+       (hsh_sort) Rewritten.
+       (hsh_data_copy) New function.
+       (hsh_sort_copy) Ditto.
+       (hsh_insert) Ditto.
+       (hsh_replace) Ditto.
+       (hsh_hash_double) Ditto.
+       (hsh_delete) Fix stupid bug.
+       
+Thu Dec 18 12:27:03 WAST 2003 John Darrington <john@darrington.wattle.id.au>
+        * added a calculation of the mode to FREQUENCIES
+
+Wed Dec 17 12:53:01 WAST 2003 John Darrington <john@darrington.wattle.id.au>
+
+       * moved (un)defs of DEBUGGING to config.h
+
+Mon Dec 15 21:35:59 2003  Ben Pfaff  <blp@gnu.org>
+
+       * groff-font.c: (add_kern) Fix indentation.
+       (add_kern) Use & instead of % to take power-of-2 modulus.
+       (font_get_kern_adjust) Likewise.
+
+Fri Dec 12 23:54:37 2003  Ben Pfaff  <blp@gnu.org>
+
+       * autorecode.c: (recode) Replace stupid use of memcpy() by
+       memberwise copy.
+       (hash_alpha_value) Use hsh_hash_bytes().  Get rid of nasty casts.
+       (hash_numeric_value) Ditto.
+       (autorecode_proc_func) pool_strdup() was wrong here because the
+       source string was not null-terminated.  Use new pool_strndup()
+       instead.
+
+       * crosstabs.q: (enum_var_values) Remove superfluous and bizarre
+       use of hsh_iterator_init().
+
+       * data-in.c: (parse_N) Initialize i->v->f.
+
+       * flip.c: (cmd_flip) Use memmove(), not memcpy(), to copy
+       overlapping arrays.
+
+       * groff-font.c: Use power-of-2 hash table sizes, not prime.
+       (groff_read_font) Don't call hsh_next_prime().  Don't call
+       fclose(NULL).
+       (static var hash) Remove `size_p', `max_used' members.
+       (font_char_name_to_index) Don't call hsh_next_prime().  Use
+       hsh_hash_string() instead of hashpjw(), & instead of %.
+       (default_font) Don't call hsh_next_prime().
+
+       * pool.c: (pool_strndup) New function.
+       (pool_strdup) Reimplement in terms of pool_strndup.
+
+       * postscript.c: (hash_font_entry) Use hsh_hash_string().  Get rid
+       of nasty casts.
+       (hash_ps_encoding) Use hsh_hash_string().
+       (hash_ps_combo) Use hsh_hash_string(), hsh_hash_int().
+       (hash_filename2font) Use hsh_hash_string().
+
+       * som.c: Add #include <stdlib.h>.
+
+       * tab.c: (tab_destroy) Don't set t->container after freeing `t'
+       (by destroying its pool).
+       
+Fri Dec 12 23:18:59 2003  Ben Pfaff  <blp@gnu.org>
+
+       Miscellaneous hash table code cleanup:
+       
+       * hash.h: (struct hsh_table) Moved into hash.c.
+       (hsh_count) Ditto, and transformed into function.
+       (hsh_compare_func) New typedef, used for defining otherwise-long
+       function types here and in hash.c
+       (hsh_hash_func) Ditto.
+       (hsh_free_func) Ditto.
+       
+       * hash.c: (struct hsh_table) Renamed `n' to `used', `m' to `size',
+       `table' to `entries'.  Removed `mp'.  All references updated.
+       (hsh_clear) Don't shrink entries array; if the hash was this big
+       once, it probably will be again.
+       (hsh_rehash) Made static.
+       (force_hsh_insert) Renamed hsh_force_insert.
+       (force_hsh_find) Renamed hsh_force_find.
+
+       Made hash table sizes powers of 2, because that's fine with any
+       reasonable hash function and because taking a power-of-2 modulus
+       is faster than any other:
+       
+       (hsh_prime_tab) Removed;
+       (hsh_next_prime) Ditto.
+       (next_power_of_2) New function.
+       (hsh_create) Use next_power_of_2.
+       (hsh_rehash) Use & instead of %.
+
+       Cleaned up hsh_sort:
+       
+       (internal_comparison_fn) Removed.
+       (sort_nulls_last) New function.
+       (hsh_sort) Removed second parameter, switched to using the new
+       quicksort() function from quicksort.h to avoid using nasty need
+       for static variables with qsort().  All references updated.
+
+       Changed the hash functions offered, because there are better hash
+       functions than the ones we had, and cleaned up the names to boot:
+       
+       * hash.c: (hashpjw_d) Removed.
+       (hashpjw) Ditto.
+       (hsh_hash_bytes) New function.
+       (hsh_hash_string) New function.
+       (hsh_hash_int) New function.
+
+       Improved the hash table iteration interface:
+       
+       * hash.h: (hsh_iterator_init) Removed.
+       (struct hsh_iterator) Removed `init' member, change `next' to
+       size_t.
+
+       * hash.c: (hsh_foreach) Removed.  All references updated to use
+       hsh_first/hsh_next instead.
+       (hsh_first) New function.  Notably, unlike hsh_foreach() it does
+       not treat a null pointer as an empty hash table.
+       (hsh_next) New function.
+
+       Made deletion possible, though slow:
+
+       * hash.c: (locate_matching_entry) New function.
+       (hsh_find) Use locate_matching_entry().
+       (hsh_delete) New function also using locate_matching_entry().
+       (hsh_force_delete) New function.
+
+Fri Dec 12 23:16:10 2003  Ben Pfaff  <blp@gnu.org>
+
+       * quicksort.c: New file implementing a sort routine with a
+       interface better than qsort() because it passes a user-provided
+       parameter to the sort routine.
+
+       * Makefile.am: Add quicksort.c, quicksort.h.
+
+Fri Dec 12 13:31:58 2003  Ben Pfaff  <blp@gnu.org>
+
+       * All source files: Get rid of nasty special cases for Checker,
+       which is pretty obsolete now.
+
+Thu Dec 11 21:38:24 WST 2003 John Darrington <john@darrington.wattle.id.au>
+
+       * Fixed a bug apparent when using the FREQUENCIES command with the
+       html driver.  The html driver was incorrectly trying to display 
+       empty cells.
+
+Sun Jan  2 21:40:13 2000  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Reorganized.  Put locale dir in version.c instead
+       of passing it to each compile command.  Only put local gmp libs in
+       LD_ADD if not installed on system.  Remove `boast' target.
+
+       * All source files: struct and union typedefs eliminated.
+       `sizeof type' replaced by `sizeof object' where practical.  Moved
+       `unused' qualifiers from start to end of declarations for gcc
+       2.7.2 compatibility.  Change `while (1)' to `for (;;)'.  Made
+       assertions on pointers strictly compliant.  Removed _ prefixes on
+       some function parameter names.
+
+       * alloc.c: New source file, containing these external linkage
+       functions removed from common.c: xmalloc, xcalloc, xrealloc,
+       xstrdup.
+
+       * arena.c: Removed.
+       
+       * arena.h: Removed.
+
+       * ascii.c: Migrated from arenas to pools.
+       (struct ascii_driver_ext) ops[], box[], fonts[] changed from
+       c_string to len_string.  All references changed.
+       (ascii_option) Signature changed to comply to new output.c
+       interface.
+       (count_fancy_chars) Removed.
+       (delineate) Removed support for rich text.
+       (ascii_text_metrics) Ditto.
+       (text_draw) Ditto.
+       (output_shorts) Change `box', `off', `on' from c_string to
+       len_string.  Change `remaining' from int to size_t.
+       (ascii_close_page) Make page numbering less haphazard.
+
+       * autorecode.c: Migrate from arenas to pools.
+
+       * avl.c: Migrate from arenas to pools.  Synch from libavl 1.4.0.
+
+       * bitvector.h: New file containing these macros from misc.h:
+       SET_BIT, CLEAR_BIT, SET_BIT_TO, TEST_BIT, BIT_INDEX.
+
+       * command.c: (struct command) cmd1, cmd2, cmd3 members changed to
+       word[3].  ncmd removed.
+       (var empty_string) Removed.
+       (var cmd_table) Declaration updated.
+       (var cmdtab) Removed.
+       (cmp_command) Removed.
+       (split_words) Rewritten to use strtok_r().
+       (init_cmd_parser) Renamed cmd_init().  Rewritten.
+       (find_command) Removed.
+       (FILE_TYPE_okay) Rewritten.
+       (cmd_parse) Rewritten.  Semantics of the return value of command
+       handlers has changed: they must now return one of the new CMD_*
+       enumerals, rather than a magic value.  This meant that all
+       commands had to be modified, and they were.
+       (figure_out_command) New function.
+
+       * command.def: Add CORRELATIONS, PEARSON CORRELATIONS.  Add
+       #defines for INIT, INPU, etc.
+
+       * command.h: New CMD_* enum series.
+       (cur_proc) Make const char *, not char *.
+       (cmd_init) Prototype.
+       (cmd_parse) Ditto.
+
+       * common.c: Removed.
+
+       * common.h: Removed.
+
+       * correlations.q: New file.
+
+       * crosstabs.q: Migrate from arenas to pools.  Migrate to new-style
+       q2c.
+       (custom_tables) Renamed crs_custom_tables().
+       (custom_variables) Renamed crs_custom_variables().
+       (calc_integer) Add in some `const' qualifiers.
+       (table_value_missing) Change from a_string to len_string.
+       (float_M_suffix) Change from a_string to len_string.
+
+       * data-in.c: Rewritten.  All references to
+       parse_string_as_format() changed to data_in().
+
+       * data-in.h: New file.
+
+       * data-list.c: Change DLS_* from #define's to enums.  Move from
+       rpd_msg() to tmsg().
+       (RPD_ERR) New #define.
+       (do_reading) Change dfm_push_cust() to dfm_push(), pop_cust() to
+       dfm_pop().
+       (read_from_data_list_fixed) Change from old
+       parse_string_as_format() to new data_in().
+       (read_from_data_list_free) Ditto.
+       (read_from_data_list_list) Ditto.
+       (cmd_repeating_data) Modify approach to checking for end of
+       command.
+       (rpd_msg) Removed.
+       (rpd_parse_record) Change from old parse_string_as_format() to new
+       data_in().  Change from old convert_format_to_string() to new
+       data_out().
+       (read_one_set_of_repetitions) Change dfm_push_cust() to
+       dfm_push(), pop_cust() to dfm_pop().
+
+       * data-out.c: Rewritten.  All references to
+       convert_format_to_string() changed to data_out().
+
+       * descript.q: Migrate to new q2c.
+       (cmd_descriptives) Removed.
+       (internal_cmd_descriptives) Renamed cmd_descriptives ().
+       (custom_variables) Renamed dsc_custom_variables().
+
+       * dfm.c: (struct dfm_fhuser_ext) `ln' removed.  All references
+       removed.
+       (open_file_r) Initialize h->where.line_number.  Migrate to new
+       struct string.
+       (open_file_w) Initialize h->where.line_number.
+       (read_record) Change from ext->ln to h->where.line_number.
+       Migrate to struct string.
+       (dfm_put_record) Rephrased.
+       (dfm_push_cust) Renamed dfm_push(), rewritten.
+       (dfm_pop) New function.
+
+       * error.c: All references updated.
+       (glob var error_count) Renamed err_err_count.
+       (glob var warning_count) Renamed err_warning_count.
+       (glob var error_already_flagged) Renamed err_already_flagged.
+       (glob var verbosity) Renamed err_verbosity.
+       (glob var cust_fn) Removed.
+       (glob var cust_ln) Removed.
+       (static var file_loc) New.
+       (static var nfile_loc) New.
+       (static var mfile_loc) New.
+       (tmsg) New function.
+       (push_cust) Removed.
+       (pop_cust) Removed.
+       (msg) Rewritten.
+       (static var terminating) Removed.
+       (failure) Renamed err_failure().
+       (hcf) Renamed err_hcf().
+       (err_push_file_locator) New function.
+       (err_pop_file_locator) New function.
+       (err_location) New function.
+       (check_error_count) Renamed err_check_count().
+       (vmsg) Renamed err_vmsg().  Interface changed.
+       (verbose_msg) Removed.
+       (err_cond_fail) New function.
+       (error_break) Renamed err_break().
+
+       * error.h: All references updated.
+       (enum MSG_CLASS_COUNT) Renamed ERR_CLASS_COUNT.
+       (enum ERR_CLASS_MASK, ERR_VERBOSITY_SHIFT, ERR_VERBOSITY_MASK)
+       New.
+       (struct file_locator) New.
+       (struct error) New.
+       (macro verbose_msg) Removed.
+       (macro cond_fail) Removed.
+
+       * expr-opt.c: (evaluate_tree) sizeof(char) == 1.
+
+       * expr-prs.c: Reorganized.  All references updated.
+       (exprtypename) Renamed expr_type_name().
+       (typename) Renamed type_name().
+       (free_expression) Renamed expr_free().
+       (parse_expression) Renamed expr_parse().  Uses new type_check()
+       function.
+       (init_functab) Renamed init_func_tab().
+       (type_check) New function.
+       (parse_or) Rewritten to use new allocate_nonterminal() and
+       append_nonterminal_arg() functions.
+       (parse_and) Ditto.
+       (parse_not) Ditto.
+       (parse_rel) Ditto.  Also simplified logic.
+       (parse_add) Ditto.
+       (parse_mul) Ditto.
+       (parse_neg) Ditto.
+       (parse_exp) Ditto.
+       (SYSMIS_func) Ditto.
+       (VALUE_func) Rephrased.
+       (CONCAT_func) Fix memory leak by replacing free by free_node on
+       lossage.
+       (generic_str_func) Ditto.
+       (parse_function) Ditto.  Also rephrasings.  Uses bsearch() to find
+       function.
+       (allocate_nonterminal) New function.
+       (append_nonterminal_arg) New function.
+       (static func_tab[]) Now at file level.
+       (cmp_func) Moved.
+       (init_func_tab) Moved.  Now just uses qsort() to sort func_tab[].
+
+       * expr.h: (enum series OP_*) Moved to exprP.h.
+       (OP_* defines) Ditto.
+       (struct op_desc) Ditto.
+       (global ops[]) Ditto.
+       (struct num_con_node) Ditto.
+       (struct str_con_node) Ditto.
+       (struct var_node) Ditto.
+       (struct lag_node) Ditto.
+       (struct casenum_node) Ditto.
+       (struct nonterm_node) Ditto.
+       (union any_node) Members renamed.
+       (struct sys_node) Removed.
+       (struct val_node) Removed.
+       (operator typedef) Removed.
+       (typedef exprtype) Removed.
+       (enum series EX_*) Moved to exprP.h.
+       (struct expression) Ditto.  Also renamed a lot of the members.
+       (PXP_* defines) Changed to enums.
+       (free_node prototype) Moved to exprP.h.
+
+       * file-handle.h: (struct file_handle) New member `where'.
+
+       * file-handle.q: Migrated to new q2c format.
+       (prepend_current_directory) Removed (dead code).
+       (cmd_file_handle) Incorporated all of internal_cmd_file_handle().
+       (fh_get_handle_by_filename) Removed dead code.
+       Set new `where' member.
+
+       * file-type.c: (file_type_source_read) References to
+       parse_string_as_format() changed to data_in().
+       dfm_push_cust()/pop_cust() changed to dfm_push()/dfm_pop().
+
+       * filename.c: All references updated.
+       (init_filename) Renamed fn_init().
+       (expand_line) Removed.
+       (macro EXPAND_LINE) Removed.
+       (interp_vars) Renamed fn_interp_vars().  Now uses st_*() instead
+       of custom functions.
+       (gnu_getcwd) Renamed fn_get_cwd(), rewritten.
+       (tilde_expand) Renamed fn_tilde_expand(), uses ds_*().
+       (normalize_filename) Renamed fn_normalize().
+       (search_path) Renamed fn_search_path(), rewritten.
+       (prepend_dir) Renamed fn_prepend_dir().
+       (blp_getenv) Renamed fn_getenv().
+       (blp_dirname) Renamed fn_dirname().
+       (fn_basename) New function, not used.
+       (absolute_filename_p) Renamed fn_absolute_p().
+       (is_special_filename) Renamed fn_special_p().
+       (file_exists) Renamed fn_exists_p().
+       (readlink_malloc) Renamed fn_readlink().
+       (getenv_default) Renamed fn_getenv_default().
+       (open_file) Renamed fn_open().
+       (close_file) Renamed fn_close().
+       (open_file_ext) Renamed fn_open_ext().
+       (close_file_ext) Renamed fn_close_ext().
+
+       * font.h: Migrate from arenas to pools.
+
+       * format.c: (parse_format_specifier_name) Deal with ds_* strings.
+
+       * frequencies.g: Migrate from arenas to pools.
+
+       * frequencies.q: Migrate to new q2c version.  Migrate from arenas
+       to pools.
+
+       * getline.c: All references updated.
+       (global getl_buf) Changed from char * to struct string.
+       (static getl_include_path) Ditto.
+       (global getl_buf_len) Removed.
+       (global getl_buf_size) Removed.
+       (getl_include_path) Deal with new getl_buf, getl_include_path.
+       (getl_uninitialize) New function.
+       (getl_get_current_directory) Rewritten.
+       (getl_clear_include_path) Rewritten.
+       (getl_add_include_dir) Rewritten.
+       (getl_add_file) Assertion fixed.
+       (getl_add_virtual_file) Change initial value of `remaining_loops'
+       from 2 to 1.
+       (welcome) Rewritten.
+       (handle_line_buffer) Make static.  Change logic to make
+       getl_add_virtual_file() change sensible.  Use ds_*() strings.
+       (getl_read_line) Use ds_*() strings.  Implement SET ECHO.
+       (getl_close_file) Moved.
+       (getl_location) New function.
+
+       * getline.h: All references updated.
+       (macro curln) Removed.
+       (macro curfn) Removed.
+       (macro am_interactive) Renamed getl_am_interactive.
+       (macro am_reading_script) Renamed getl_reading_script.
+
+       * glob.c: (global fmt_parse_ignore_error) Removed.
+       (init_glob) Use locale_dir not LOCALEDIR.  Use feholdexcept() on
+       systems that support it (C99).  Turn off SET ECHO by default.  No
+       necessary julcal initialization anymore.
+
+       * groff-font.c: Migrate from arenas to pools.
+       (groff_read_font) Use err_push_file_locator().
+       (groff_read_DESC) Ditto.
+       (font_msg) Use tmsg().
+
+       * hash.c: (hsh_sort) Fix debug code.
+       [GLOBAL_DEBUGGING] Include stdio.h.
+
+       * hash.h: (macro force_hsh_insert) Rephrase.
+
+       * heap.c: Rewritten.
+       
+       * heap.h: Rewritten.
+
+       * html.c: (html_option) Change from outp_value to struct string.
+       (postopen) Change from curfn to getl_location().
+       (escape_string) Remove rich-text code.  Signature changed.
+       (output_tab_table) Switch from a_string to struct len_string.
+       Remove rich text support.
+
+       * lexer.c: All references updated.  Largely rewritten.  Major
+       changes listed below.  Removed tagged quote support.  Adapted to
+       struct string tokstr.
+       (global tokstr) Changed to struct string.
+       (global tokstr_size) Removed.
+       (global tokstr_len) Removed.
+       (global tokid) New.
+       (global tokint) Removed.
+       (global toklongstr) Removed.
+       (C* defines) Removed.
+       (static tbl[]) Removed.
+       (static id[]) Removed.
+       (static une[]) Removed.
+       (discard_line) Renamed lex_discard_line().
+       (get_entire_line) Renamed lex_entire_line().
+       (get_rest_of_line) Renamed lex_rest_of_line().
+       (get_dotted_rest_of_line) Merged into lex_rest_of_line().
+       (make_hexit) Removed.
+       (syntax_error) Renamed lex_error().  Return value removed.
+       (get_token_representation) Renamed lex_token_representation().
+       (putback) Renamed lex_put_back().
+       (putfwd) Renamed lex_put_forward().
+       (convert_negative_to_dash) Renamed lex_negative_to_dash().
+       (set_prog) Renamed lex_set_prog().
+       (init_lex) Renamed lex_init().
+       (reset_eof) Renamed lex_reset_eof().
+       (lookahead) Renamed lex_look_ahead().
+       (check_id) Rewritten.
+       (yylex) Renamed lex_get(), rewritten.
+       (lex_end_of_command) New function.  Many commands were rephrased
+       using this.
+       (lex_integer_p) New function.  Replaces compare of tokint against
+       NOT_LONG.
+       (lex_integer) New function.  Replaces tokint.
+       (match_tok) Renamed lex_match().
+       (match_id) Renamed lex_match_id().
+       (match_int) Renamed lex_match_int().
+       (force_match_id) Renamed lex_force_match_id(), added return value.
+       (force_match) Renamed lex_force_match(), added return value.
+       (force_string) Renamed lex_force_string(), added return value.
+       (force_int) Renamed lex_force_int(), added return value.
+       (lex_id_match_len) New function.
+       (id_match) Renamed lex_id_match(), rewritten.
+       (get_line) Renamed lex_get_line().
+       (preprocess_line) Renamed lex_preprocess_line().
+       (tokname) Renamed lex_token_name().
+       (bin_value_func) Removed.
+       (oct_value_func) Removed.
+       (hex_value_func) Removed.
+       (unexpected_eof) New function.
+       (convert_numeric_string_to_char_string) New function.
+       (parse_string) Rewritten, signature changed.
+       (add_tokstr_char) Removed.
+       (add_tokstr_unsigned) Removed.
+       (add_tokstr_string) Removed.
+       (parse_tagged_quote) Removed.
+       (skip_comment) Renamed lex_skip_comment().
+
+       * lexer.h: All references updated.
+       (macro is_id1) Renamed CHAR_IS_ID1.
+       (macro is_idn) Renamed CHAR_IS_IDN.
+       (token names ID, NUM, STRING, STOP, ... WITH, EXP) Renamed with
+       prefix T_: T_ID, T_NUM, T_STRING, T_STOP, ... T_WITH, T_EXP.
+       (macro get_token) Removed.
+       (macro id_match) Removed.
+       (macro force_match_id) Removed.
+       (macro force_match) Removed.
+       (macro force_string) Removed.
+       (macro force_int) Removed.
+       (macro force_num) Removed.
+       (macro force_id) Removed.
+
+       * lexerP.h: Removed.
+
+       * list.q: Migrated to new q2c format.
+       (write_line) Deal with struct len_string.
+       (write_varname) Ditto.
+       (write_fallback_headers) Ditto.
+
+       * magic.c: New file, incorporating the following global variables
+       previously in other files: endian, second_lowest_value.  And both
+       of those are conditional on #define's.
+
+       * magic.h: New file, incorporating the following global variable
+       declarations: endian, second_lowest_value, and the following macro
+       declarations: NOT_DOUBLE, NOT_LONG, NOT_INT.
+
+       * main.c: Added declarations of pgmname, finished, curdate,
+       start_interactive.
+       (main) Call new parse_script() function.
+       (parse_script) New function.
+       (execute_command) New function.
+       (dump_token) Removed.
+       (handle_error) New function.
+
+       * matrix.c: New file.
+
+       * matrix.h: New file.
+
+       * matrix-data.c: Migrated from arenas to pools.
+       (mget_token) Change from parse_string_as_format() to data_in().
+
+       * means.q: Migrate to new q2c.
+       (custom_tables) Renamed mns_custom_tables().
+       (custom_crossbreak) Renamed mns_custom_crossbreak().
+       (custom_variables) Renamed mns_custom_variables().
+
+       * mis-val.c: (static var width) Changed from `int' to `size_t'.
+       (parse_varnames) Prototype.
+       (parse_numeric) Rephrasings.
+       (parse_alpha) Adapt to new struct string tokstr.
+
+       * misc.c: (intlog10) Rewritten.
+       (spacing) Removed.
+       (ansi_rand) Renamed real_rand(), moved into random.c.
+       (ansi_srand) Renamed real_srand(), moved into random.c.
+       (setup_randomize) Moved to random.c.
+       (rand_uniform) Ditto.
+       (rand_normal) Ditto.
+       (rand_simple) Ditto.
+       (get_config_line) Removed.
+       (reverse) Removed (dead code).
+
+       * misc.h: (macro SET_BIT) Moved to bitvector.h.
+       (macro CLEAR_BIT) Ditto.
+       (macro TEST_BIT) Ditto.
+       (macro SET_BIT_TO) Ditto.
+       (macro BIT_INDEX) Ditto.
+
+       * output.c: (outp_read_devices) Move to err_push_file_locator()
+       from push_cust().  Use struct string.
+       (expand_op_tokstr) Removed.
+       (static var op_tokstr) Changed to struct string.
+       (static var op_tokstr_size) Removed.
+       (tokener) Rephrasings.  Use struct string.
+       (parse_options) Use struct string.
+       (destroy_driver) Fix assertion.
+       (outp_get_paper_size) Move to err_push_file_locator().
+       [0] Removed dead code.
+       (outp_string_width) Move to len_string.
+
+       * output.h: Comment fixes.
+       (TAG_* enum series) Removed.
+       (struct outp_value) Removed.
+       (enum OUTP_T_FANCY) Removed.
+       (struct outp_text) `s' changed from a_string to len_string.
+       (struct outp_class) `option' change arg 3 from outp_value to
+       struct string.
+
+       * pfm-read.c: (corrupt_msg) Rewritten.
+
+       * pfm-write.c: (bufwrite) Fix assertion.
+
+       * pool.c: New file, reference version.
+
+       * pool.h: New file, reference version.
+
+       * postscript.c: (ps_font_sizes) Fix assertion.
+       (ps_option) Change arg 3 from outp_value to struct string.
+       Adapt to struct string.
+       (macro output_line) Removed.
+       (macro add_string) Removed.
+       (output_encodings) Adapted to struct string.  Moved to
+       err_push_file_locator().
+       (find_encoding_file) Fix assertion.
+       (read_ps_encodings) Move to err_push_file_locator().
+       (postopen) Use getl_location() instead of curfn.
+       (out_text_plain) Move to len_string.
+       (text) Ditto.  Remove rich text support.
+
+       * print.c: (cmd_print) Remove now-unneeded resource cleanup code.
+       (cmd_print_eject) Ditto.
+       (cmd_write) Ditto.
+       (internal_cmd_print) Now cleans up after itself.  Uses
+       fh_parse_file_handle() now.
+       (cmd_print_space) Use PXP_NUMERIC to type-check.
+
+       * q2c.c: Overhauled.  Removed _("") i18n support.  All references
+       updated.  All output functions updated to handle structures rather
+       than local or static variables.  Adapt to new PSPP lex_*()
+       functions.
+       (macro _) Removed.
+       (macro N_) Removed.
+       (macro MAX_N_SBC) Removed.
+       (global bare) Removed.
+       (enum STRING) Renamed T_STRING.
+       (enum ID) Renamed T_ID.
+       (get_buffer) Buffer size increased.
+       (strlower) Renamed st_lower(), rephrased.
+       (strupper) Renamed st_upper(), rephrased.
+       (skip_ws) New function.
+       (get_line) Don't special-case any types of lines (like those
+       beginning with ! or $, for instance).
+       (get_token) Renamed lex_get().  Rephrased.
+       (static var `prefix') New.
+       (parse) New function.
+       (parse_setting) Minor rephrasing.
+       (dump_specifier_vars) Ditto.
+       (make_identifier) Put null terminator on identifier, duh.
+       (dump_vars) Renamed dump_declarations().  Never indent.  Never
+       static.  Output changed entirely.
+       (dump_specifier_init) Rephrase.
+       (dump_vars_init) No index variable needed.  Other modifications.
+       (dump_parser) Don't parse command name.  Do dump functions instead
+       of just code fragments.
+       (dump_free) Dump function instead of code fragment.
+       (recognize_directive) New function.
+       (main) Use recognize_directive().  Don't rely on magic $ line
+       beginning: instead, parse comments.  Update list of headers.
+
+       * random.c: New file, containing the following functions:
+       real_rand(), real_srand(), setup_randomize, shuffle, rand_uniform,
+       rand_normal, rand_simple.
+
+       * random.h: New file.
+
+       * recode.c: (cmd_recode) Merge internal_cmd_recode() into this
+       function.  `max_src_width', `max_dst_width' changed to size_t.
+       (internal_cmd_recode) Removed.
+       (parse_dest_spec) Merge similar cases.
+       (parse_src_spec) Add assertion.
+
+       * repeat.c: (recognize_keyword) New function.
+       (internal_cmd_do_repeat) Parse and handle PRINT keyword on END
+       REPEAT.  Improve recognition of END REPEAT (use
+       recognize_keyword()).  Move from curfn to getl_location().  Use
+       struct string.
+               
+       (perform_DO_REPEAT_substitutions) Adapt to struct string.
+
+       * set.q: Adapt to new q2c.
+       (cmd_set) Range-check some values better.
+       (custom_blanks) Renamed stc_custom_blanks().
+       (custom_length) Renamed stc_custom_length().
+       (custom_results) Renamed stc_custom_results().
+       (custom_seed) Renamed stc_custom_seed().
+       (custom_width) Renamed stc_custom_width().
+       (custom_format) Renamed stc_custom_format().
+       (custom_journal) Renamed stc_custom_journal().
+       (custom_color) Renamed stc_custom_color().
+       (custom_listing) Renamed stc_custom_listing().
+       (custom_disk) Renamed stc_custom_disk().
+       (custom_log) Renamed stc_custom_log().
+       (custom_rcolor) Renamed stc_custom_rcolor().
+       (custom_viewlength) Renamed stc_custom_viewlength().
+       (custom_workdev) Renamed stc_custom_workdev().
+
+       * settings.h: Not necessary to include format.h any longer.
+
+       * sfm-read.h: (macro bswap_int32) Moved here from sfmP.h.
+       (corrupt_msg) Rewritten.
+
+       * sort.c: Adapt to rewritten heap ADT.
+
+       * str.c: (aa_strcpy) Removed.
+       (ab_strcpy) Removed.
+       (ac_strcpy) Removed.
+       (ba_strcpy) Removed.
+       (bb_strcpy) Removed.
+       (ca_strcpy) Removed.
+       (aa_strdup) Removed.
+       (aa_strdupcpy) Removed.
+       (ba_strdup) Removed.
+       (sa_strdup) Removed.
+       (memrev) Renamed mm_reverse().
+       (memrmem) Renamed mm_find_reverse().
+       (cmp_str) Renamed st_compare_pad().
+       (strmaxcpy) Removed.
+       (strbarepadcpy) Renamed st_bare_pad_copy(), signature changed.
+       (strbarepadlencpy) Renamed st_bare_pad_len_copy(), signature
+       changed.
+       (strpadcpy) Renamed st_pad_copy(), signature changed.
+       (blpstrset) Removed.
+       (ds_create) New function.
+       (ds_init) New function.
+       (ds_replace) New function.
+       (ds_destroy) New function.
+       (ds_clear) New function.
+       (ds_extend) New function.
+       (ds_shrink) New function.
+       (ds_truncate) New function.
+       (ds_length) New function.
+       (ds_size) New function.
+       (ds_value) New function.
+       (ds_end) New function.
+       (ds_concat) New function.
+       (ds_concat_buffer) New function.
+       (ds_printf) New function.
+       (ds_putchar) New function.
+       (ds_getline) New function.
+       (ds_get_config_line) New function derived from the old
+       misc.c:get_config_line().
+       (ls_create) New function.
+       (ls_create_buffer) New function.
+       (ls_init) New function.
+       (ls_shallow_copy) New function.
+       (ls_destroy) New function.
+       (ls_null) New function.
+       (ls_null_p) New function.
+       (ls_empty_p) New function.
+       (ls_length) New function.
+       (ls_value) New function.
+       (ls_end) New function.
+
+       * str.h: Reformatted.
+       (struct a_string) Removed.
+       (struct b_string) Removed.
+       (struct c_string) Removed.
+       (struct len_string) New.
+       (struct string) New.
+       (macro as_streq) Removed.
+       (macro bs_streq) Removed.
+       (macro cs_streq) Removed.
+       (macro sa_streq) Removed.
+       (macro sb_streq) Removed.
+       [__GNUC__] (inline function ds_putchar) New function.
+       [__GNUC__] (inline function ds_length) New function.
+       [__GNUC__] (inline function ds_value) New function.
+       [__GNUC__] (inline function ds_end) New function.
+
+       * sysfile-info.c: (cmd_sysfile_info) Rephrased.
+       (display_vectors) Fix missing i18n.
+
+       * t-test.q: Migrate to new q2c.
+
+       * tab.c: Migrate from arenas to pools.
+       (tab_create) Use struct len_string.
+       (tab_realloc) Ditto.
+       (text_format) Ditto.
+       (tab_joint_text) Ditto.
+       (tab_natural_width) Remove rich text support.
+       (tab_natural_height) Ditto.
+       (tab_output_text) Handle TAT_FIX.
+       (tab_raw) Change arg from a_string to len_string.
+       (tabi_driver) Fix assertion.  Use struct len_string.
+       (render_strip) Use struct len_string.  Remove rich text support.
+       Add `const' qualifiers.
+
+       * tab.h: (enum TAB_RICH) Remove.
+       (enums TAB_COL_NONE, TAB_COL_DONE) New.  Where appropriate,
+       SOM_COL_* updated to read TAB_COL_*.
+       (struct tab_table) Change arena to pool.  Change a_string to
+       len_string.
+
+       * temporary.c: (restore_dictionary) Rewrite Checker code.
+
+       * var.h: (macros MAX_SHORT_STRING, MIN_LONG_STRING, SYSMIS,
+       LOWEST, HIGHEST) Moved here from common.h.
+       (typedef any_trns) Removed.  All references changed to `struct
+       trns_header'.
+
+       * vars-atr.c: (force_create_variable) Fix assertion.
+       (force_dup_variable) Fix assertion.
+       
+Thu Jun  3 18:40:42 1999  Ben Pfaff  <blp@gnu.org>
+
+       Using alphanumeric variables in functions under AGGREGATE
+       segfaulted.  Fixed.  Thanks to Dr. Dirk Melcher
+       <BZN-mdksh@t-online.de> for reporting this bug.
+       
+       * aggregate.c: (parse_aggregate_functions) When setting the
+       FSTRING bit, also allocate memory for the `string' member of
+       agr_next.
+       (free_aggregate_functions) Free iter->string.  Don't use the
+       non-function bits when indexing the array of functions.
+       [DEBUGGING] (debug_print) Don't use the non-function bits when
+       indexing the array of functions.        
+
+Sun May 30 00:00:54 1999  Ben Pfaff  <blp@gnu.org>
+
+       Under certain circumstances, the final case would be omitted from
+       the results of an AGGREGATE operation.  Fixed.  Thanks to Dr. Dirk
+       Melcher <BZN-mdksh@t-online.de> for reporting this bug.
+       
+       * aggregate.c (agr_00x_end_func): Increment number of cases in
+       sink before writing case.  For streams that keep track of how many
+       cases there are based on this value, this means that the last case
+       will be read in on the next stream read.
+
+Sat May 29 22:03:31 1999  Ben Pfaff  <blp@gnu.org>
+
+       Undefined behavior was invoked by referencing a freed pointer.
+       
+       * vfm.c (memory_stream_write): Free pointer *after* checking for
+       non-null status.
+
+Sat May 29 22:02:22 1999  Ben Pfaff  <blp@gnu.org>
+
+       A wrong record size was displayed when paging the active file to
+       disk.
+       
+       * vfm.c: (memory_stream_write) Fix off-by-one error.
+
+Sat May 29 21:50:26 1999  Ben Pfaff  <blp@gnu.org>
+
+       Not having enough temporary space for sorting caused a core dump.
+       Fixed.
+       
+       * sort.c: (allocate_cases) Initialize i.
+
+Sat May 29 21:40:54 1999  Ben Pfaff  <blp@gnu.org>
+
+       Syntax errors in function descriptions on AGGREGATE caused core
+       dumps.  Fixed.
+       
+       * aggregate.c (cmd_aggregate): Don't free agr_dict after calling
+       free_aggregate_functions(), since that function already frees
+       agr_dict.
+       
+Sat May 29 21:06:10 1999  Ben Pfaff  <blp@gnu.org>
+
+       A null pointer was dereferenced, causing a core dump, when
+       PERCENTILES was specified on FREQUENCIES.  This fixes the problem,
+       but PSPP still doesn't calculate percentiles.  Thanks to Regnor
+       Jernsletten <rjernsle@eunet.no> for reporting this problem.
+       
+       * arena.c: (arena_malloc) If the arena hasn't been initialized
+       already, initialize it.
+
+Sat May 29 20:47:29 1999  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.cygwin: New file supplied by Hankin <hankin@dunno.com>
+       for compilation with Cygnus Windows B20.  Not used by other
+       systems.
+
+Sat May 29 20:36:04 1999  Ben Pfaff  <blp@gnu.org>
+
+       SORT always sorted in ascending order.  Fixed.  Thanks to Dr. Dirk
+       Melcher <BZN-mdksh@t-online.de> for reporting this bug.
+
+       * sort.c: (compare_case_lists) Reverse sense of comparison if
+       sorting in descending order.
+       (compare_record) Ditto.
+
+Tue Mar  9 13:18:54 1999  Ben Pfaff  <blp@gnu.org>
+
+       SPLIT FILE with a string variable caused a core dump.  Fixed.
+
+       * vfm.c: If the variable is a string then make a temporary value
+       struct pointing to it.  The underlying problem is a lot bigger
+       than this (see TODO) but this is a stopgap for the simple case at
+       least.
+       
+Tue Mar  9 13:15:53 1999  Ben Pfaff  <blp@gnu.org>
+
+       Nested INCLUDEs didn't work.  Fixed.
+
+       * getline.c: (getl_include) Set first_line to NULL in allocated
+       structure.
+
+Tue Mar  9 13:13:46 1999  Ben Pfaff  <blp@gnu.org>
+
+       The MATCH FILES procedure set the values of variables not present
+       to 0.  It should have been SYSMIS.  This is now fixed.
+
+       * get.c: (mtf_delete_file_in_place) Replace 0.0 by SYSMIS.
+
+Tue Mar  9 12:52:23 1999  Ben Pfaff  <blp@gnu.org>
+
+       The REMARK command was too aggressive about skipping lines.  It
+       didn't like being the last command in a file.
+
+       * command.c: (cmd_remark) Call get_entire_line() instead of
+       get_line().
+
+Tue Mar  9 12:48:05 1999  Ben Pfaff  <blp@gnu.org>
+
+       Comment parsing wasn't consistent with the rest of the code in its
+       idea of where one command ends and another starts.  This meant
+       that sometimes commands would be mysteriously ignored.  Thanks to
+       Dr. Dirk Melcher <BZN-mdksh@t-online.de> for reporting this bug.
+        
+       * command.c: (parse_cmd) Hand off comment parsing to new function
+       skip_comment() in lexer.c.
+       * lexer.c: (skip_comment) New function.
+
+Wed Jan 20 20:22:07 1999  Ben Pfaff  <blp@gnu.org>
+
+       The TABLE subcommand on MATCH FILES worked only erratically at
+       best.  This fixes it.  Thanks to Dr. Dirk Melcher
+       <BZN-mdksh@t-online.de> for reporting this bug.
+
+       * get.c: (mtf_compare_BY_values) When comparing string values, a
+       difference of 1 is still a difference :-)
+       (mtf_processing) Inverted TABLE reading logic fixed.  Also don't
+       advance TABLE files automatically when matched.  Comment fixes.
+
+Tue Jan 19 22:32:31 1999  Ben Pfaff  <blp@gnu.org>
+
+       VARIABLE LABELS rejected a slash before the first variable
+       specification, contradicting the documentation.  Thanks to Walter
+       M. Gray <graywm@northernc.on.ca> for reporting this bug.
+
+       * var-labs.c: (cmd_variable_labels) Ignore a leading slash in
+       command specification.
+
+Tue Jan 19 22:29:54 1999  Ben Pfaff  <blp@gnu.org>
+
+       Because of an incorrect optimization in memory allocation,
+       CROSSTABS sometimes segfaulted when asked to output multiple
+       tables.  Thanks to Walter M. Gray <graywm@northernc.on.ca> for
+       reporting this bug.
+
+       * crosstabs.q: (postcalc) New variables maxcols, maxcells, which
+       are passed to output_pivot_table() for its use.
+       (output_pivot_table) Instead of assuming the number of columns is
+       constant, keep track with maxcols.  In general mode, use maxcells
+       to determine whether more matrix cells need to be allocated.    
+
+Tue Jan 19 22:27:46 1999  Ben Pfaff  <blp@gnu.org>
+
+       CROSSTABS didn't display value labels for column and row
+       variables.  Thanks to Walter M. Gray <graywm@northernc.on.ca> for
+       reporting this bug.
+
+       * crosstabs.q: (table_value_missing) If the specified value has a
+       value label for this variable, then show it instead of the raw
+       value.
+       (display_dimensions) Delegate display of value_labels to
+       table_value_missing.
+
+Mon Jan 18 20:04:06 1999  Ben Pfaff  <blp@gnu.org>
+
+       WRITE didn't write line ends.  Fixed.  Thanks to Dr. Dirk Melcher
+       <BZN-mdksh@t-online.de> for reporting this bug.
+
+       * print.c: (print_trns_proc) Write (CR/)LF if PRINT is used _or_
+       if the file isn't declared as binary.
+
+Mon Jan 18 19:56:45 1999  Ben Pfaff  <blp@gnu.org>
+
+       MATCH FILES corrupted memory and dumped core on some syntax
+       errors.  Fixed.
+
+       * get.c: (cmd_match_files) Set file->handle to NULL before
+       jumping to lossage.
+       (mtf_free_file) Don't free a null dictionary.   
+
+Mon Jan 18 19:27:57 1999  Ben Pfaff  <blp@gnu.org>
+
+       MATCH FILES should set numeric values not available to the
+       system-missing value, not to 0.  Thanks to Dr. Dirk Melcher
+       <BZN-mdksh@t-online.de> for reporting this bug.
+
+       * get.c: (mtf_processing) Set unused records to system-missing,
+       not 0.
+
+Mon Jan 18 15:06:46 1999  Ben Pfaff  <blp@gnu.org>
+
+       KEEP didn't work properly on the SAVE procedure.  Fixed.  Thanks
+       to Ralf Geschke <ralf@kuerbis.org> for reporting this bug.
+
+       * temporary.c: (save_dictionary) Initialize var_by_name AVL tree
+       in newly created dictionary, and add each copied variable to the
+       tree.
+Mon Jan 18 15:04:48 1999  Ben Pfaff  <blp@gnu.org>
+
+       Memory leak fix.
+       
+       * get.c: (trim_dictionary) Free variable list for KEEP after
+       finishing with it.
+
+Mon Jan 18 12:57:36 1999  Ben Pfaff  <blp@gnu.org>
+
+       Some systems didn't like the way open_file was coded.  Thanks to
+       Hankin <hankin@rogue.consultco.com> for pointing this out.
+
+       * filename.c: (open_file) Don't try to store stdin, stdout,
+       stderr as part of an array, because that doesn't always work.
+
+Mon Jan 18 12:53:27 1999  Ben Pfaff  <blp@gnu.org>
+
+       The SAVE procedure didn't save long string variables properly.
+       Fixed by this patch.  Thanks to Hankin
+       <hankin@rogue.consultco.com> for this patch.
+       
+       * sfm-write.c: (write_variable) Fix off-by-one error in writing
+       out variable pad records.
+
+Tue Jan  5 14:29:27 1999  Ben Pfaff  <blp@gnu.org>
+
+       Previously, if PRINT SPACE were given a negative argument, it
+       would report an error, then spin in an (almost) infinite loop.
+       This fixes that behavior.
+
+       * print.c: (print_space_trns_proc) After reporting a negative
+       argument, set number of lines to print to 1.
+
+Tue Jan  5 13:59:55 1999  Ben Pfaff  <blp@gnu.org>
+
+       SPSS 8.0 outputs some new record types in its system files, and it
+       allows longer value labels.  Accept these system files.
+
+       * sfm-read.c: (sfm_read_dictionary) Ignore record type 7 subtype
+       11 emitted by SPSS 8.0.
+       
+Tue Jan  5 13:55:50 1999  Ben Pfaff  <blp@gnu.org>
+
+       The LIST procedure was too conservative in allocating space for
+       buffers, which caused a bug that only showed up with very long
+       output variables.  Thanks to Hankin <hankin@dunno.com> for this
+       bug report.
+
+       * list.q: (determine_layout) Allocate 1022 bytes instead of 256.
+
+Tue Jan  5 13:34:34 1999  Ben Pfaff  <blp@gnu.org>
+
+       Typo meant string format specifiers weren't checked properly.  I
+       think that Hankin <hankin@dunno.com> sent me this report, but I'm
+       willing to be corrected on this point.
+       * format.c: (check_string_specifier) Fix obvious typo.  
+
+Tue Jan  5 12:50:42 1999  Ben Pfaff  <blp@gnu.org>
+
+       Using $CASENUM in an expression didn't work.  Here's a fix.
+       Thanks to Dirk Melcher <BZN-mdksh@t-online.de> for reporting this
+       bug.
+        
+       * expr-evl.c: (evaluate_expression) Add OP_CASENUM case.
+
+       * expr-opt.c: (dump_node) OP_CASENUM is acceptable.
+
+Tue Jan  5 12:47:48 1999  Ben Pfaff  <blp@gnu.org>
+
+       The changes in 0.2.1 to fix DATA LIST FREE parsing broke some
+       other behavior, *sigh*.  This patch hopefully fixes that.  This
+       time I've actually tested it.
+
+       Thanks to Hankin <hankin@dunno.com> for reporting this bug.
+
+       * data-list.c: (read_from_data_list_free,
+       read_from_data_list_list) Call parse_string_as_format() directly
+       without mucking around with the field width.
+
+Tue Jan  5 12:31:19 1999  Ben Pfaff  <blp@gnu.org>
+
+       Occasionally, you may encounter a script that wants to be
+       interpreted in interactive mode.  Make -i emulate this behavior to
+       allow such scripts to be executed with PSPP.
+
+       Thanks to Hankin <hankin@dunno.com> for reporting this behavior.
+
+       * cmdline.c: (pre_syntax_message[]) Update -i description.
+
+       * lexer.c: (preprocess_line) When getl_interactive is 2 (i.e.,
+       when -i is given on the command line) don't treat unindented lines
+       as starting a new command.
+
+Tue Jan  5 12:30:10 1999  Ben Pfaff  <blp@gnu.org>
+
+       In conjunction with egcs 1.1.1, Checker emits some bogus warnings,
+       mostly caused by local initialized aggregates.  After egcs is
+       fixed upstream these can be removed, but for now they're not a big
+       deal.
+       
+       * ascii.c: (ascii_postopen_driver) Checker chokes on local
+       initialized arrays.  Avoid this.
+
+       * sfm-write.c: (sfm_write_dictionary) Don't use a local
+       initialized struct.
+
+Tue Jan  5 12:07:24 1999  Ben Pfaff  <blp@gnu.org>
+
+       egcs 1.1.1 has some new warnings relative to gcc 2.8.1, which the
+       following changes avoid.  Currently I compile sources with egcs
+       1.1.1 and gcc 2.7.2.3 before sending them out.
+
+       * apply-dict.c: (apply_dict) Use new avl_traverser_init() macro.
+       
+       * ascii.c: (option_tab[]) Initialize all struct members.
+
+       * avl.h: (avl_traverser_init) New macro.
+       
+       * command.c: (DEFCMD, UNIMPL macros, cmd_table[]) Initialize all
+       struct members.
+
+       * crosstabs.q: (enum_var_values) Use new hsh_iterator_init()
+       macro.
+
+       * hash.c: Comment fix.
+
+       * hash.h: (hsh_iterator_init) New macro.
+
+       * html.c: (option_tab[]) Initialize all struct members.
+
+       * pfm-write.c: (write_value_labels) Use new avl_traverser_init()
+       macro.
+
+       * postscript.c: (option_tab[]) Initialize all struct members.
+       (output_encodings, preclose, dump_lines) Use new
+       hsh_iterator_init() macro.
+
+       * sfm-write.c: (write_value_labels) Use new avl_traverser_init()
+       macro.
+
+       * sysfile-info.c: (describe_variable) Use new avl_traverser_init()
+       macro.
+
+Thu Nov 19 12:32:45 1998  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: Examined each of the parsing functions to make sure
+       that they wouldn't dump core if they were passed a string of the
+       wrong length, since now the DATA LIST FREE/LIST routines don't
+       check for field width before passing it to the data parser.
+       (parse_RBHEX, parse_AHEX) Reject odd length input.
+       (parse_string_as_format) Reject input that's too short or too
+       long.
+
+       * data-list.c: Before, the DATA LIST FREE/LIST routines would pad
+       a field to its entire declared output width then pass it to the
+       data-in parsing routines.  This contradicted the documented
+       behavior.  This is fixed in these changes.  Thanks to Mark H. Wood
+       <mwood@IUPUI.Edu>.  In addition, this fixes a few more details of
+       free-format parsing that differed from SPSS.
+       (cut_field) Commas and spaces are treated identically.  Returns
+       the proper column instead of a fixed 1 value.
+       (parse_field) Removed.
+       (read_from_data_list_free, read_from_data_list_list) Call
+       parse_string_as_format directly instead of parse_field.
+
+       * heap.c: (heap_delete) Stylistic fixes.
+
+Sun Aug  9 11:12:13 1998  Ben Pfaff  <blp@gnu.org>
+
+       * loop.c: (loop_2_trns_proc) Formatting fix.
+
+       * sel-if.c: (cmd_filter) Set FILTER_before_TEMPORARY.
+
+       * var.h: (glob var FILTER_before_TEMPORARY) New global var.
+
+       * vfm.c: (macro FILTERED) New.
+       (static var filter_var) New.
+       (process_active_file_write_case) Use FILTERED.
+       (setup_filter) Set filter_var.
+       (close_active_file) Delete the filter if not
+       FILTER_before_TEMPORARY.
+       (procedure_write_case) Use FILTERED.
+
+Sat Aug  8 00:20:14 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: Changed /PIVOT={ON,OFF} to /FORMAT={PIVOT,NOPIVOT}.
+
+       * data-in.c: (parse_day_count) Message fix.
+       (parse_month) Style fix.
+
+       * data-list.c: (struct data_list_pgm) New member eof.
+       (cmd_data_list) Init eof to 0.
+       (do_reading) Implement the /END subcommand and read-past-eof
+       checking.
+
+       * do-if.c: Include stdio.h when debugging.
+       (cmd_else_if) Make sure the command is .-terminated.
+
+       * glob.c: (init_glob) Capitalize the command prompt.
+
+       * inpt-pgm.c: (end_case_trns_proc) Debugging message.
+       (end_file_trns_proc) Debugging message.
+
+       * loop.c: (internal_cmd_loop) Make it work when there's no loop
+       index!
+       (loop_2_trns_proc) Enable MXLOOPS (why was this disabled?)
+
+       * main.c: (dump_token) Make kwtab[] const.
+
+       * set.q: Spelling, comment fixes.
+
+       * sysfile-info.c: (cmd_display) DISPLAY VECTORS not DISPLAY
+       VECTOR.
+
+       * vars-prs.c: (fill_all_vars) Style fix.
+
+       * vfm.c: (index_to_varname) Return const.
+
+Tue Aug  4 23:49:23 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Changes in many source files for partial -ansi -pedantic and
+       no-debugging compliance: Remove trailing common in enum
+       declarations; add `unused' attributes; insert some appropriate
+       casts.
+
+       * cmdline.c: (parse_command_line) Add new --testing-mode flag.
+
+       * command.c: (shell) Make static.
+       (run_command) Make static.
+
+       * data-list.c: (dump_fixed_table) Remove use of local_strdup().
+
+       * dfm.c: (cmd_begin_data) I18n fix.
+
+       * error.c: (verbose_msg) Define if __STRICT_ANSI__.
+
+       * error.h: (macro verbose_msg) Define if __STRICT_ANSI__.
+
+       * expr-opt.c: (evaluate_tree) Don't initialize local arrays if
+       __STRICT_ANSI__.
+
+       * file-handle.q: Don't prepend the source file directory name to
+       the data file name.  (Ongoing issue.)
+       (prepend_current_directory) Comment out.
+       (internal_cmd_file_handle) Don't call prepend_current_directory().
+       (fh_get_handle_by_filename) Ditto.
+
+       * filename.c: Append zero byte to readlink() return value.
+
+       * getline.c: (getl_read_line) I18n fix.
+
+       * lexer.h: Don't use gcc features if __STRICT_ANSI__.
+
+       * misc.h: Don't use gcc features if __STRICT_ANSI__.
+
+       * pfm-write.c: (bufwrite) Don't try to increment a void * pointer
+       directly.
+
+       * postscript.c: (output_encodings) Don't use local_strdup().
+       (postopen) Ditto.
+
+       * print.c: Don't use gcc features if __STRICT_ANSI__.
+
+       * q2c.c: (dump_vars) Don't put a , at the end of the last enum.
+
+       * recode.c: (parse_src_spec) Fully brace nested if's.
+
+       * set.q: (global var set_testing_mode) New var.
+
+Wed Jul 29 22:01:44 1998  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: Add some more `unused' attributes that only come into
+       play when NDEBUG is defined.
+       (ascii_close_page) Set s_len when reallocating s.
+       
+       * crosstabs.q: (delete_missing) New function.
+       (output_pivot_table) Call delete_missing() if /MISSING=REPORT.
+       (make_summary_table) Create summary table reallocable.
+
+       * postscript.c: Add more `unused' attributes as above.
+
+       * tab.c: (tab_create) [GLOBAL_DEBUGGING] Set reallocable member.
+       (tab_realloc) [GLOBAL_DEBUGGING] Assert that table is reallocable.
+        
+       * tab.h: (struct tab_table) [GLOBAL_DEBUGGING] New `reallocable'
+       member.
+
+       * var.h: (macro force_dup_variable) [!GLOBAL_DEBUGGING] Remove
+       gratuitous space between parameter definition.
+
+       * vars-atr.c: Changed some assert(0)'s to abort()'s to prevent
+       complaints about running off the end of functions with NDEBUG
+       enabled.
+
+Sun Jul  5 00:17:25 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Several source files: Removed some PORTME notes when reflection
+       revealed that ANSI forbids that sort of breakage.  Also, added
+       lots of `unused' qualifiers here and there.
+
+       * aggregate.c: (accumulate_aggregate_info) Remove local var
+       weighting that turned out not to be used.
+
+       * avl.c: Update to version 1.1.0.  Add unused specifier.
+       (avl_destroy) Initialize ab to 0.  Comment fixes.  Cast return
+       value to void *.
+       (avl_probe) Replace some instances of 1 with +1 where appropriate.
+       (avl_find) Cast return value to void *.
+       (avl_delete) q doesn't need to be initialized at the beginning of
+       the function.  Replace some instances of 1 with +1.
+       (force_avl_delete) Renamed avl_force_delete, all references changed.
+       (compare_ints) `param' marked unused.
+       (print_int) `param' marked unused.
+       (recurse_tree) Replace some instances of 1 with +1.
+
+       * avl.h: Update to version 1.1.0.  Only declares avl function
+       types if not already declared.
+       (AVL_MAX_HEIGHT) Only define if not already defined.
+       (struct avl_node) New unused member char pad[2].
+       [GLOBAL_DEBUGGING] Change conditionalization to NDEBUG instead.
+       (force_avl_insert) Renamed avl_force_insert.
+       (force_avl_delete) Renamed avl_force_delete.
+
+       * crosstabs.q: (struct table_entry) Put `freq' into a union with
+       new member `data'.
+       (struct crosstab) Add new member `ofs'.
+       (glob var int_tab) Removed.
+       (custom_tables) In integer mode, assign v[i] properly through the
+       indirect var_dict.
+       (custom_variables) Now p.crs.max == max + 1.
+       [DEBUGGING] (debug_print) p.crs.min and p.crs.max are now ints.
+       (precalc) Implement integer mode.
+       (calc_integer) Implement integer mode.
+       (compare_table_entry) Remove unused local variable `comparing'.
+       (make_summary_table) Implement integer mode.
+       (macro ns_rows) Implemented as static variable now.
+       (several variables) Made static, from global.
+       (output_pivot_table) Use table_value_missing() for column heads.
+       Remove several unused local variables.  Implement integer mode
+       table summing.  Count up ns_rows.
+       (crosstabs_dim) Make columns wider when /MISSING=REPORT requested.
+       (find_pivot_extent) Moved into find_pivot_extent_general; now just
+       calls that function or find_pivot_extent_integer.
+       (find_pivot_extent_integer) New function.
+       (enum_var_values) Implemented for integer mode.
+       (table_value_missing) New function.
+       (display_dimensions) Call table_value_missing() for heads.
+       (float_M_suffix) New function.
+       (display_crosstabulation) Call table_value_missing() for row
+       heads.  Handle missing values in /MISSING=REPORT mode.
+       (calc_fisher) Remove unused var N.
+       (calc_r) Remove unused var fact.
+
+       * data-list.c: (dump_fixed_table) Fix table dimensioning.
+       (read_one_set_of_repetitions) Remove unused vars var_spec, column.
+
+       * data-out.c: (insert_commas) Remove unused var cp.
+       (convert_CCx) Remove unused vars save_set_decimal,
+       save_set_grouping.
+
+       * descript.q: (dump_z_table) Fix table dimensioning.
+       (pre_calc) Remove unused var j.
+       (display) Remove unused vars title, s.  Fix table dimensioning.
+
+       * expr-evl.c: Comment fixes.
+
+       * frequencies.q: (full_dim) New function.
+       (dump_full) Fix table dimensioning.
+       (condensed_dim) New function.
+       (dump_condensed) Fix table dimensioning.
+
+       * get.c: (cmd_match_files) Remove unused var n_val.  Remove unused
+       label winnage.
+
+       * html.c: (html_close_drive) Remove unused var i.
+       (postopen) Remove unused vars title, curfn_len, cp.
+       (preclose) Remove unused vars this, x.
+
+       * lexer.c: Comment fixes.
+
+       * matrix-data.c: (cmd_matrix_data) Remove unused var index.
+
+       * means.q: (custom_tables) Remove unused var m_dim.
+
+       * mis-val.c: Format fix.
+
+       * modify-vars.c: (cmd_modify_vars) Remove unused var new_dict.
+
+       * output.c: (outp_get_paper_size) Remove unused var cp.
+
+       * pfm-read.c: (read_float) Remove unused var save, unused label
+       underflow.
+       (read_variables) Remove unused vars cp, j.
+       (read_value_label) Remove unused var j.
+
+       * pfm-write.c: (bufwrite) Remove unused var i.
+
+       * postscript.c: (ps_postopen_drive) Remove unused vars dev_info,
+       fn.
+       (output_encodings) Remove unused vars char_cp, n_output.
+       (read_ps_encodings) Remove unused var ep.
+       (postopen) Remove unused var title.
+       (preclose) Remove unused var fp.
+       (ps_open_page) Remove unused vars true, false, orientation,
+       mirror_horz, mirror_vert, width, length.
+       (ps_text_metrics) Remove unused var x.
+
+       * q2c.c: (find_symbol) Remove unused var y.
+       (parse_setting) Remove unused parameter sbc, all references
+       changed.
+       (dump_parser) Remove unused var cp.
+       (dump_free) Remove unused var i.
+
+       * set.q: (static vars args, n) Removed.
+       (internal_cmd_gset) Removed.
+
+       * sfm-read.c: (sfm_read_dictionary) Removed unused var i.
+       (read_machine_flt64_info) Removed unused var file_endian.
+       (read_documents) Removed unused var i.
+       (read_compressed_data) Removed unused parameter dict, all
+       references changed.
+
+       * sfm-write.c: (bufwrite) Removed unused var i.
+       (sfm_write_case) Removed unused var i.
+
+       * sort.c: (merge_once) Remove unused var t.
+       (write_separate) #if 0 out as dead code.
+
+       * split-file.c: (cmd_split_file) Remove unused var i.
+
+       * sysfile-info.c: (sysfile_info_dim) New function.
+       (cmd_sysfile_info) Fix table dimensioning.
+       (variables_dim) New function.
+       (display_variables) Fix table dimensioning.
+       (describe_variable) Remove unused var prev_r.
+
+       * t-test.q: (z_postcalc) Removed.
+       (pairs_calc) Remove unused var bad_weight.
+       (postcalc) Remove unused vars dfn, dfd.
+
+       * tab.c: (tab_create) Set t->dim to NULL.
+       (tab_dim) Make sure t->dim is NULL first.
+       (tab_natural_width) Remove parameter `clamp'.
+       (tab_value) Remove duplicate assertion for table.
+       (tab_raw) New function.
+       (nowrap_dim) New function.
+       (wrap_dim) New function.
+       (tab_output_text) Fix table dimensioning.
+
+       * tab.h: (tab_raw) New macro.
+
+       * val-labs.c: (get_label) Remove unused var type.
+       (copy_value_labels) Remove unused var trav.
+
+       * var.h: (struct crosstab_proc) Completely changed.
+
+       * vars-prs.c: (parse_dict_variable) Remove unused var v.
+
+       * vfm.c: (open_active_file) Remove unused vars i, lp.
+
+       * weight.c: (weight_trns_proc) #if 0 out as dead code.
+       
+Tue Jun  2 23:37:21 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add apply-dict.c, flip.c.
+
+       * apply-dict.c: New file.
+       
+       * command.c: (struct command) Make cmd[] larger for CLEAR
+       TRANSFORMATIONS command name.
+       (parse_cmd) Make sure we're in a valid state before using it as an
+       index.  Discard variables and reset state on invalid transitions.
+       (cmd_clear_transformations) New function.
+
+       * command.def: Add APPLY DICTIONARY, CLEAR TRANSFORMATIONS, FLIP.
+       Add unimplemented PRESERVE, RESTORE.
+
+       * file-handle.h: Include stddef.h.
+
+       * flip.c: New file.
+       
+       * pfm-read.c: (parse_value) Pad value label values with spaces,
+       not nulls.
+
+       * sfm-read.c: (struct sfm_fhuser_ext) Add reference count.
+       (sfm_close) Decrement reference count, make sure it's zero.
+       (sfm_maybe_close) New function.
+       (sfm_read_dictionary) Handle reference counts.
+
+       * vars-atr.c: (clear_default_dict) New function.
+       (discard_variables) Use clear_default_dict().
+
+Sun May 31 00:58:05 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add pfm-write.c.
+       (LDADD) Add the libgmp2 libraries.
+
+       * command.def: Define EXPORT.
+
+       * get.c: (cmd_export) New function.
+       (export_write_case_func) New function.
+
+       * pfm-read.c: (static spss2ascii[]) Make it const.
+
+       * pfm-write.c: New file.
+
+       * sfm-write.c: Formatting, comment fixes.
+
+       * var.h: Comment fix.
+
+Fri May 29 21:44:12 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add pfm.h, pfm-read.c.
+
+       * command.def: IMPORT is now implemented.
+
+       * format.c: (glob var translate_fmt[]) New var.
+
+       * get.c: (enum GTSV_NONE) Renamed GTSV_OPT_NONE.
+       (cmd_import) New function.
+       (import_source_read) New function.
+       (glob var import_source) New var.
+
+       * pfm-read.c: New file.
+
+       * pfm.h: New file.
+       
+       * sfm-read.c: (parse_format_spec) Local variable translate_fmt[]
+       moved in format.c.
+       (dump_dictionary) Disabled printing a couple of items.
+
+Mon May 25 12:42:37 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: (postcalc) Call make_summary_table().
+       (make_summary_table) New function.
+       (insert_summary) New function.
+       (display_dimensions) Remove some unnecessary arguments, all
+       references changed.
+       (output_pivot_table) Fix lots of problems with the risk table
+       setup.
+       (submit) Don't display an empty table.
+       (display_risk) Fix order of arguments to calc_risk().
+
+       * glob.c: Always include assert.h and stdlib.h.
+
+       * output.h: (enum OUTP_T_JUST_FULL) Removed, all references
+       removed.
+
+       * tab.c: (tab_create) Cosmetic changes.
+
+       * tab.h: (enum TAB_JUSTIFY) Removed, all references removed.
+
+Sun May 24 22:39:23 1998  Ben Pfaff  <blp@gnu.org>
+
+       * tab.def: Removed.
+
+       * crosstabs.q: (output_pivot_table) Headers drawing and submission
+       code simplified, moved into new function submit().
+       (submit) New function.
+       (crosstabs_dim) New function.
+       (display_directional) Substitute variable names for %s where
+       appropriate.
+       (somers_d_v[], somers_d_ase[], somers_d_t[]) New static vars.
+       (calc_symmetric) Initialize parameters only if non-NULL.
+       Calculate Somers' d.
+       (calc_directional) Calculate Somers' d (or copy it, really).
+       Calculate eta.
+
+       * output.c: (outp_string_width) New function.
+
+       * postscript.c: (postopen) Calculate font widths based on the
+       width of the zero '0' character, not the width of the space
+       character.  Set paper-width and paper-length based on points, not
+       device units.
+       (ps_open_page) Fix page setup string for landscape mode.
+
+       * som.h: (struct som_dimension) Removed.
+       (struct som_table_class) height, width members take int * not
+       som_dimesion * now.
+
+       * tab.c: Many functions now have added parameter validation.
+       (tab_height, tab_width) These functions were removed and merged
+       into a single function tab_resize(), and all references changed.
+       (tab_dim) Rewritten since the interface changed; reduced from
+       hundreds of lines to two.  All callers were changed.  Currently
+       most of them just use tab_natural_dimensions as their callback and
+       await detailed translation of functionality.
+       (tab_natural_width) New function.
+       (tab_natural_height) New function.
+       (tab_natural_dimensions) New function.  This is a callback
+       function, not something that you'd want to call directly.
+       (tab_nat_dim) Removed.
+       (tabi_table) Allocates t->w and t->h.
+       (tabi_driver) Inlined sum_columns()'s functionality.  Calls the
+       dimensions callback.
+       (evaluate_dimensions) Removed.
+       (sum_columns) Removed.
+
+       * tab.h: (enum TAL_1THIN) Removed.
+       (enum series t_*) Removed.
+       (struct tab_table) Members trh, trv changed to unsigned char *
+       from int *.  Member dim changed to a function pointer from a
+       unsigned char *.  Member max_stack_height removed.  New members
+       hr_tot, vr_tot.
+       (macros tab_l, tab_r, tab_t, tab_b) New.
+
+Sat May 23 23:22:13 1998  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (delineate) Assign last_space_nchars before skipping
+       spaces, to fix right justification.
+
+       * crosstabs.q: (static vars risk, direct) New vars.
+       (static var pearson_r) Removed.
+       (glob var chisq_fisher) Made static.
+       (static vars row_tot[], col_tot[]) Don't include grand total
+       anymore.
+       (static var grand_total) Renamed W, all references changed.
+       (output_pivot_table) Only make `table' if num_cells != 0.  Make
+       risk and directional tables.  Deal with grand total no longer part
+       of col_tot[].  Free rows and cols after we're done with them.
+       (display_risk) New function.
+       (display_directional) New function.
+       (clac_r) Rewritten so that it stores all its results into its
+       arguments, so it can be used for Spearman's correlation too.
+       (calc_symmetric) Added a t[] argument, all references changed.
+       Calculates ASEs for tau-b, tau-c, gamma.  Calculates Spearman's r,
+       Pearson's r, Cohen's kappa.
+       (calc_risk) New function.
+       (calc_directional) New function.
+
+       * som.c: (som_submit) Improved debugging code.
+
+       * stats.c: (hypercube) New function.
+       (cube) New function.
+       (sqr) New function.
+       (normal_sig) Went back to old implementation, which actually
+       worked.
+
+       * stats.h: (macros square, cube, hypercube) Removed.  The
+       equivalent functions in stats.c are inlined here; all references
+       to square changed to sqr.
+
+Fri May 22 00:03:41 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: (N_SYMMETRIC) New define.
+       (postcalc) Disable debug printing.
+       (static vars chisq_fisher, pearson_r) New.
+       (output_pivot_table) Add support for symmetric measures.  Add
+       chi-square output of exact sigs.
+       (display_chisq) Rewritten.
+       (display_symmetric) New function.
+       (gamma_int) New function.
+       (Pr) New function.
+       (swap) New function.
+       (calc_fisher) New function.
+       (calc_chisq) Check boundary conditions better. Calculate Yates,
+       Fisher, Mantel-Haenszel tests.
+       (calc_r) New function.
+       (calc_symmetric) New function.
+
+       * stats.c: (normal_sig) Rewritten with new algorithm.  Renamed
+       from calc_normal.
+       (chisq_sig) Better boundary conditions.  Renamed from
+       calc_significance.
+
+       * tab.h: (struct tab_table) New member cf.
+
+       * tab.c: (tab_create) Set cf.
+       (tab_width) New function.
+       (tab_realloc) Handle cf.
+       (tab_vline) Handle cf.
+       (tab_hline) Handle cf.
+       (tab_box) Handle cf.
+       (tab_value) Handle cf.
+       (tab_float) Handle cf.
+       (tab_text) Handle cf.
+       (tab_joint_text) Handle cf.
+       (tab_offset) Handle cf.
+       (tab_next_row) Handle cf.
+       (evaluate_dimensions) Handle cf.
+       (render_strip) Handle cf.
+
+Wed May 20 00:03:59 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: (postcalc) New vars row_tot, col_tot, pass them to
+       output_pivot_table().
+       (output_pivot_table) Moved lots of local variables outside and
+       made them static.  Add beginnings of chi-square statistic
+       support.  Now column and row totals aren't in the main matrix.
+       Always zero out any leftover rows & columns after we're done with
+       the table entries.  Move all output stuff into
+       display_dimensions(), display_crosstabs(), display_chisq().
+       (display_dimensions) New function.
+       (display_crosstabulation) New function.
+       (display_chisq) New function.
+       (calc_chisq) Implemented Pearson and likelihood-ratio chisquares.
+
+       * frequencies.q: (dump_full, dump_condensed) Remove tab_null()
+       references, simplify logic.
+
+       * postscript.c: Remove scale, translate-x, translate-y,
+       mirror-horz, mirror-vert, rotate-180 options.
+       (struct ps_driver_ext) Remove scale, translate_x, translate_y.
+       All references deleted.
+       (macro YT) New macro.
+       (array option_tab[]) Removed options.
+       (ps_option) Removed options.
+       (ps_open_page) Write page setup explicitly to output file, without
+       using now-deleted BP function.
+       (macro dump_line) Use YT().
+       (macro dump_thick_line) Use YT().
+       (draw_headers) Use YT().
+       (switch_font) Reorder arguments to SF function.
+       (write_text) Use YT().
+
+       * sfm-read.c: (sfm_read_case) Don't attempt to read variables that
+       have get.fv == -1.
+
+       * sysfile-info.c: (describe_variables) Don't use tab_nulls().
+
+       * tab.c: (tab_create) Initialize t->ct to zeros.  Remove
+       null-debugging code.
+       (tab_realloc) Remove null-debugging code.  Initialize new regions
+       of t->ct to zeros.
+       (tab_vline) Support offsets.
+       (tab_hline) Support offsets.
+       (tab_box) Support offsets.
+       (tab_null) Removed.
+       (tab_nulls) Removed.
+       (tab_row) Removed.
+       (tab_col) Removed.
+       (evaluate_dimensions) Remove null-debugging code.  Understand
+       TAB_EMPTY attribute.  Assert that text.s.s is always non-NULL if
+       TAB_EMPTY not present.
+
+       * tab.h: New cell attribute TAB_EMPTY.
+       (macros tab_nr, tab_nc, tab_row, tab_col) New.
+
+       * vars-atr.c: (init_variable) Set get.fv to -1 so that GET doesn't
+       try to read them from system files.
+
+       * vfm.c: (dump_splits) Don't call tab_null().   
+
+Sat May 16 19:36:55 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: (struct crosstab) Added `missing' member.
+       (custom_tables) Init missing.
+       (calc_general) Handle missing values.
+       (calc_chisq) New function.
+       (output_pivot_table) Start work on chi-square output.  Update for
+       new tab offset support functions.  Shorten statistic names.
+
+       * Several files: add in more `const's to placate gcc's warnings.
+
+       * tab.h: (struct tab_table) Add col_ofs, row_ofs members.  Comment
+       fixes.
+
+       * tab.c: (tab_height, tab_realloc, tab_vline, tab_hline, tab_box,
+       tab_null, tab_nulls, tab_value, tab_float, tab_text,
+       tab_joint_text) Add col_ofs and row_ofs support.
+       (tab_offset) New function.
+       (tab_next_row) New function.
+       (tab_row) New function.
+       (tab_col) New function.
+       (tabi_table) Add col_ofs and row_ofs support.
+
+       * vars-atr.c: (is_system_missing) New function.
+
+Tue May 12 16:14:30 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: Expanded subcommand names RESID --> RESIDUAL, etc.
+       (static var no_cells) Removed.
+       (static var num_cells) New.
+       (static var expected) New.
+       (static var cells[]) New.
+       (internal_cmd_crosstabs) Deal with new variables.
+       (postcalc) Removed most of the meat and put it in new function
+       output_pivot_table().
+       (output_pivot_table) Calculates and outputs an entire pivot table.
+
+       * postscript.c: (postopen) Fix problems with free()ing addresses
+       not obtained from malloc().
+
+       * som.c: (som_submit) Add assertion.
+
+       * sysfile-info.c: (describe_variable) Use new tab_nulls()
+       function.
+
+       * tab.c: (static var tab_names[]) New.
+       (tab_realloc) -1 for nc or nr indicates no change.
+       (tab_nulls) New function.
+       (tab_dim) Use tab_names[].
+       (tabi_cumulate) Don't include bottom or right headers.  Furrfu.
+       (evaluate_dimensions) Don't terminate on uninited cells, just put
+       an X in them and emit a notice.  Use tab_names[].
+
+       * tab.h: Move bits into tab.def.
+
+       * tab.def: New.  Don't try to declare tab_table_class because then
+       som.h has to be included.       
+       
+Thu May  7 22:55:04 1998  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: New file, contains all the command definitions
+       previously included bodily in command.c.
+
+       * format.def: New file, contains all of the format definitions
+       previously split across format.h, format.c, and sfm-write.c.
+
+       * lexer.h: Renamed from tokens.h in order to match corresponding
+       .c file name.
+
+       * lexerP.h: Moved some rarely used functions exported by lexer.c
+       into here.
+
+       * Makefile.am: Commemorate renamed files.
+       (EXTRA_DIST) Add command.def, format.def.
+
+       * command.c: [0] (walk_cmdtable_func) Removed.
+
+       * crosstabs.q: (postcalc) Made it work and print out matrices
+       proving it.
+       (enum_column_values) Renamed enum_var_values, generalized for any
+       variable.
+
+       * format.h: (struct fmt_desc) New member `spss'.
+
+       * q2c.c: (main) Generated code includes lexer.h instead of
+       tokens.h.
+
+       * sfm-write.c: (write_format_spec) Use new spss member of fmt_spec
+       instead of an independent translation table.
+
+Tue May  5 13:19:03 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Lots of source files: Added const to declarations.
+
+       * aggregate.c: (parse_aggregate_function) Rename inner i to j.
+       
+       * arena.c: (arena_clear) Set prev pointer to null when done.
+
+       * ascii.c: (ascii_option) Rename index as indx.
+
+       * avl.c: This is now a separate library called libavl.
+       (xmalloc) Make static.
+       (avl_probe) Step A7 can use the cache instead of an explicit
+       compare.
+       (avl_delete) Don't maintain a q pointer because it's always
+       available in the pointer stack.  Comment fix.
+
+       * avl.h: This is now a separate library called libavl.
+
+       * command.c: (cmd_table[]) Remove spurious trailing "".
+
+       * common.h: Only include random() fix if this system needs it.
+
+       * crosstabs.q: Include alloca headers.
+       (n_sorted_tab) New global var.
+       (postcalc) Mostly rewritten.
+       (find_pivot_extent) Rewritten.
+       (enum_column_values) Rewritten.
+
+       * data-out.c: (convert_F) Rename inner n as n_spaces.
+
+       * error.c: (dump_message) Don't have an outer var i.
+
+       * file-handle.q: (static var f) Removed.  All references removed.
+       (internal_cmd_file_handle) Uses a local variable instead of f.
+
+       * get.c: (trim_dictionary) Change scope of i, i1, i2.
+       (cmd_match_files) Don't strcpy tokstr into sbc (why was this ever
+       done?)
+
+       * getline.h: Declare getl_history as extern.  Reported by
+       palme@uni-wuppertal.de (Hubert Palme).
+
+       * postscript.c: (postopen) Some large mods for constness.
+
+       * recode.c: Remove spurious copyrights since PSPP is owned by FSF
+       anyway.
+
+Fri Apr 24 12:52:47 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Rename BUILT_SOURCES to q_sources, all references
+       changed.  Add avl.c, avl.h to pspp_SOURCES.  Remove avllib from
+       LDADD.
+
+       * avl.c, avl.h: New files.  These form a clean-room
+       reimplementation of avllib.  Iterative algorithms are used in
+       place of recursive ones, so there is no resemblance in the code.
+
+       * Lots of headers: Don't include other headers by default.
+
+       * Lots of source files: Explicitly include all needed headers.
+
+       * arena.c: (arena_clear) New function.
+
+       * crosstabs.q: (ROW_VAR, COL_VAR) New enums.
+       (static var ar) Removed.
+       (staitc vars ar_tc, ar_col) New.
+       (cmd_crosstabs) Destroy the arenas.
+       (internal_cmd_crosstabs) Create the arenas.
+       (precalc) Don't need a free function for the hash.
+       (calc_general) Make sure to zero out the trailer on the key data
+       before inserting.
+       (print_table_entries) Updated.
+       (postcalc) Worked on actually implementing.
+       (find_pivot_extent) New function.
+       (compare_value) New function.
+       (enum_column_values) New function.
+
+       * data-in.c: (parse_month) Make local array `static const'.
+       
+       * data-out.c: (convert_date) Make local array `static const'.
+       (convert_WKDAY) Same.
+       (convert_MONTH) Same.
+
+       * frequencies.q: (postprocess_freq_tab) avl_walk_inorder() has
+       been renamed to avl_walk().
+       
+       * hash.c: Rewritten more efficiently.
+
+       * hash.h: Add attribute const to hsh_next_prime declaration.
+
+       * lexer.c: (id_match) Make arguments const.
+
+       * postscript.c: (ps_postopen_driver) Make default fonts the
+       Helvetica family.
+
+       * q2c.c: (main) Generated code needs stdlib.h.
+
+       * sfm-write.c: (write_value_labels) An avl_traverser needs to be
+       initialized to 0 now, not to NULL.  All other references to
+       avl_traverser were updated in the same way.
+
+       * tokens.h: Macro version of id_match updated to use const
+       properly.
+
+       * val-labs.c: (inc_ref_count) New function.
+       (copy_value_labels) Simply through use of new avl_copy() function.
+
+Wed Apr 15 13:01:58 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: Probably doesn't compile.  New PIVOT subcommand.
+       (postcalc) Worked on this.
+
+       * postscript.c: (OPO_DOUBLE_LINE) New enum.
+       (struct ps_driver_ext) New line_width_thick member.
+       (ps_preopen_drive) Init line_width_thick.
+       (option_tab[]) Add line-* options.
+       (ps_option) Parse line-* options.
+       (postopen) Add line_width_thick support.  Strip leading spaces on
+       prologue output lines.
+       (ps_open_page) Include line_width_thick in output.
+       (macro dump_thick_line) New.
+       (dump_fancy_line) Support thick lines as well as double lines.
+
+Tue Apr 14 00:50:08 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add crosstabs.c to BUILT_SOURCES.  Add crosstabs.q
+       to pspp_SOURCES.  Add crosstabs.q to EXTRA_DIST.
+
+       * Many source files: Rename `options' to `pv_opts' as appropriate.
+
+       * command.c: (static var cmd_table[]) Add CROSSTABS command.
+
+       * common.c: (xcalloc) New function.
+
+       * crosstabs.q: New file.  Not finished yet, though.
+               
+       * data-list.c: Comment fix.
+
+       * error.c: Remove some old Checker cruft.
+
+       * frequencies.q: (dump_full) Cumulate valid percent instead of
+       regular percent.
+
+       * getline.c: Comment fix.
+
+       * hash.c: Comment fixes.
+
+       * hash.h: (struct hsh_table) Make hash functions return unsigned
+       instead of int to avoid problems with taking the modulo of
+       negative return values.  All references changed.
+
+       * misc.c: (intlog10) Make its table static const instead of auto.
+
+       * sfm-read.c: (read_header) Make `prefix' static const instead of
+       auto.
+
+       * var.h: (union value) Add member `hash'.
+       (struct variable) Rename prv_index as `foo'--all references
+       changed.  Reorder.
+       (typedef pv_opts) Removed.  All references changed.
+
+       * vars-prs.c: (parse_variables) Message fixes.
+       
+Mon Mar  9 15:35:08 1998  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (cmd_match_files) Don't reverse the order of FILEs as
+       they are being inserted.  Don't check for BY variables of
+       different types.  Discard variables if the active file isn't
+       included in the merge.
+       (mtf_processing) Essentially rewritten.
+       (mtf_merge_dictionary) Check for master/slave variables of
+       different types/widths.
+
+       * vfm.c: (static var not_canceled) New var.
+       (process_active_file) Don't call vfm_source->read() if
+       there's no vfm-source.  Initialize not_canceled.
+       (process_active_file_write_case) Honor and update not_canceled.
+       (prepare_for_writing) Rollback changes from yesterday, they were
+       wrong.
+       (close_active_file) Don't destroy vfm_source unless it exists.
+       
+Mon Mar  9 00:56:16 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Lots of source files: Added { } around nested if/else constructs
+       to avoid new gcc 2.8 warnings.
+
+       * data-in.c: (parse_Z) Declare `int' type explicitly.
+       (convert_Z) Ditto.
+
+       * get.c: (struct mtf_file) Add prev, next_min, by, input members.
+       (cmd_match_files) Initialize mtf_by_values.  Manage by, input,
+       prev members.  Put TABLEs at the end of the chain and FILEs at the
+       beginning.  Don't allow the active file in STATE_INIT.  Use proper
+       `seen' value for the active file.  Fill out the by members and
+       make sure they're of consistent type.  Do the actual merge
+       operation.
+       (mtf_processing_finish) New function.
+       (var_type_description) New function.
+       (mtf_free_file) New function.
+       (mtf_free) Rewritten.
+       (mtf_delete_file_in_place) New function.
+       (mtf_read_nonactive_records) New function.
+       (mtf_compare_BY_values) New function.
+       (static var mtf_seq_no) New var.
+       (mtf_processing) New function.
+       (mtf_merge_dictionary) Assign nval members for the system file
+       dictionary.  Assign fv values for its variables.  Point each slave
+       variable to the corresponding master variable.
+
+       * hash.c: Include str.h.
+
+       * mis-val.c: (copy_missing_values) src arg is const.
+
+       * misc.c: (spacing) Make `max' var explicitly int.
+
+       * sfm-read.c: (dump_dictionary) Message reformatting.
+       (sfm_read_case) Add assertion.
+
+       * sort.c: Esthetic fixes.
+
+       * var.h: (struct match_files_proc) New struct.
+       (struct variable) Add private data match_files_proc.
+
+       * vars-atr.c: (delete_variable) Implement.  Add argument for the
+       dictionary that owning the variable.
+       (dup_variable) Add assertion.
+
+       * vfm.c: Comment fixes, hopefully the comments are correct now.
+       (process_active_file) New function.
+       (process_active_file_write_case) New function.
+       (process_active_file_output_case) New function.
+       (prepare_for_writing) Use temp_dict->nval for vfm_info, not
+       default_dict.nval.
+       (write_case) Renamed procedure_write_case().  Now write_case is a
+       pointer to a function.  Style fixes.
+       
+1998-03-05  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (q2c) Link with libmisc.
+       (version.c) Define default_config_path, include_path,
+       groff_font_path.
+
+       * ascii.c: (ascii_postopen_driver) When the default newline string
+       is requested, open file in text mode.  Suggested by
+       palme@uni-wuppertal.de (Hubert Palme).
+       (static vars line_buf, line_p) Change from char * to unsigned char
+       *.
+       (ascii_close_page) char * to unsigned char *.
+
+       * cmdline.c: (parse_command_line) Implement -r option by
+       prepending ~/.pspp/rc to the list of files to process.
+
+       * command.c: (cmd_remark) Reset getl_prompt to the standard prompt
+       before pulling in a final line.
+       (null_func, null_int_func) Removed (dead code).
+
+       * descript.q: (display) Calculate width of variable name column
+       properly.  Calculate number of valid cases properly.  Reported by
+       palme@uni-wuppertal.de (Hubert Palme).
+
+       * filename.c: (init_filename) Use default_config_path instead of
+       now obsolete CONFIG_PATH.
+
+       * getline.c: (getl_initialize) Use include_path instead of now
+       obsolete INCLUDE_PATH.
+       (getl_add_file) New argument `where'.  All references changed.
+
+       * groff.c: (find_font_file) Use groff_font_path instead of now
+       obsolete GROFF_FONT_PATH.
+       
+       * postscript.c: (find_ps_file) Use groff_font_path instead of now
+       obsolete GROFF_FONT_PATH.  Copy through temporary variable to
+       avoid problems with constness.
+
+       * str.h: (macro cs_streq) New macro.
+
+       * version.h: (glob var default_config_path, include_path,
+       groff_font_path) New vars.
+       
+1998-02-23  Ben Pfaff  <blp@gnu.org>
+
+       * Many source files: Change verbose_msg() priority levels and
+       messages.
+
+       * aggregate.c: Include debug-print.h.
+
+       * cmdline.c: (parse_command_line) Add --safer/-s and --command/-c
+       options.
+       (static var pre_syntax_message) Document --safer/-s and
+       --command/-c.
+
+       * command.c: (cmd_erase, cmd_host) Disable if set_safer is set.
+
+       * dfm.c: (open_inline_file) [__CHECKER__] Zero out ext->file,
+       because it's not used but it's still copied.
+       (open_file_r) Remove gratuitous debug message.
+
+       * filename.c: (safety_violation) New function.
+       (open_file) Remove gratuitous debug messages.  Don't allow pipe
+       files if set_safer is set.
+
+       * get.c: Turn off debugging.
+
+       * getline.c: (getl_add_virtual_file) New function.
+       (getl_read_line) Add verbose_msg() call for opening new syntax
+       file.
+       (getl_perform_delayed_reset) Add a return value describing whether
+       any action was taken.  Call reset_eof().
+
+       * getline.h: Comment fix.
+
+       * groff-font.c: (groff_read_font) Use `goto next_iteration' in
+       place of incorrect `continue'.  Use strtok_r() instead of
+       strtok().  Always check strtok_r() return value.
+       (groff_read_DESC) Use strtok_r() instead of strtok().
+
+       * lexer.c: (reset_eof) New function.
+
+       * main.c: (parse) Get a token after performing a delayed reset
+       action; allow empty syntax files.
+
+       * postscript.c: (output_encodings) Use strtok_r() instead of
+       strtok().
+
+       * q2c.c: (dump_parser) Use strtok_r() instead of strtok().
+
+       * set.q: Comment fixes.
+       (glob var set_safer) New var.
+       (internal_cmd_set) Support SAFER.
+
+       * str.h: [!HAVE_STRTOK_R] Declare strtok_r() prototype.
+
+       * temporary.c: (free_dictionary) Set d->splits to NULL after
+       freeing.
+
+       * vars-atr.c: (clear_variable) Decrement dict->n_splits if
+       variable deleted, not if it *isn't* deleted.
+
+1998-02-16  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (array cmd_table[]) Add MATCH FILES.
+
+       * common.c: Comment fixes.
+
+       * data-list.c, dfm.c, error.c, filename.c, list.q, matrix-data.c,
+       modify-vars.c, postscript.c, sfm-read.c, sfm-write.c, tab.c:
+       Include alloca.h.  Problem reported by palme@uni-wuppertal.de
+       (Hubert Palme).
+
+       * expr-opt.c: Include str.h.  Problem reported by
+       palme@uni-wuppertal.de (Hubert Palme).
+
+       * get.c: (cmd_get) [DEBUGGING] Update v->p.get to v->get.
+       (static var mtf_by) Change from char ** to variable **.
+       (static var mtf_master) New var.
+       (mtf_merge_dictionary) New function.
+       (cmd_match_files) Init mtf_master.  Parse mtf_by according to new
+       var type.  Reorder tests properly.  Initialize file->dict.  Detect
+       TABLE= without BY=.  Read file dictionaries and merge them.  Give
+       subcommand name with IN, LAST, FIRST error messages.  Create IN,
+       LAST, FIRST variables.  Comment fixes.
+       (mtf_free) Don't free default_dict.  Free mtf_master.
+
+       * getline.c: Define getl_mode.  Change getl_buf_size to size_t
+       from int.
+       (handle_line_buffer) Cast int to size_t in comparison to avoid
+       warning.
+
+       * getline.h: Declare getl_mode extern.
+
+       * groff-font.c: (groff_read_font) Type-fix calls to getline.
+       (groff_read_DESC) Make line_size a size_t.
+       (match_tok) Parenthesize name to avoid macro expansion.
+
+       * mis-val.c: (copy_missing_values) New function.
+
+       * postscript.c: (postopen) Make buf_size a size_t.
+
+       * sfm-read.c: (dump_dictionary) Make global from static.  Print
+       variable info in parts for easier debugging with Checker.
+
+       * temporary.c: (copy_variable) Use copy_value_labels().
+       (new_dictionary) New arg: whether to copy file label, documents.
+
+       * val-labs.c: (copy_value_labels) New function.
+
+       * var.h: (enums MISSING_*) Add MISSING_COUNT.
+
+       * vars-atr.c: [GLOBAL_DEBUGGING] (force_dup_variable) New
+       function.
+       (dup_variable) Set prv_index, get.fv, get.nv.
+
+Fri Feb 13 15:38:36 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pspp_SOURCE) Add htmlP.h.
+
+       * Many source files: For ANSI-compliance, add empty statement
+       after label.  Reported by palme@uni-wuppertal.de (Hubert Palme)
+       and Micah Altman <maltman@www-vdc.fas.harvard.edu>.
+
+       * data-in.c: (parse_numeric) Some header files break on
+       -DBL_MIN_10_EXP because they get a --; add () for safety.
+       Reported by palme@uni-wuppertal.de (Hubert Palme).
+
+       * dfm.c: Idea by Dr Eberhard W Lisse <el@linux.lisse.na>.
+       (struct dfm_fhuser_ext) Change `file' from FILE * to file_ext.
+       (dfm_close) Use close_file_ext.
+       (open_inline_file) Set file.file to NULL, not file.
+       (open_file_r, open_file_w) Initialize file.file; fill in file_ext
+       struct and use open_file_ext().
+       (read_record) Use file.file.
+
+       * file-handle.q: (prepend_current_directory) Pass through special
+       filenames.
+
+       * filename.c: Only include unistd.h if HAVE_UNISTD_H.
+       (normalize_filename) Pass through special filenames.
+       (open_file, close_file) Accept pipe| and |pipe syntaxes as
+       equivalent.
+       (dirname) Rename blp_dirname() because of name conflict on some
+       OS.  All references changed.  Reported by palme@uni-wuppertal.de
+       (Hubert Palme).
+       (is_special_filename) New function.
+
+       * get.c: (GTSV_OPT*) Add GTSV_OPT_MATCH_FILES.
+       (trim_dictionary) Conditionalize some of the options on whether
+       GTSV_OPT_MATCH_FILES is in *options.
+       (rename_variables) Don't allow variables to be renamed as scratch
+       variables.
+       (MTF_*) New enum series.
+       (struct mtf_file) New struct.
+       (static vars mtf_head, mtf_tail, mtf_by, mtf_n_by, mtf_free) New
+       vars.
+       (cmd_match_files, mtf_free) New functions.
+
+       * lexer.c: (match_int) Needed parentheses around name to escape
+       macro expansion.  Reported by Micah Altman
+       <maltman@www-vdc.fas.harvard.edu>.
+
+       * print.c: Needed to include alloca.h.  Reported by Micah Altman
+       <maltman@www-vdc.fas.harvard.edu>.
+
+       * recode.c: (convert_to_double) Parenthesize -DBL_MIN_10_EXP to
+       -(DBL_MIN_10_EXP).  Reported by palme@uni-wuppertal.de (Hubert
+       Palme).
+       
+       * str.h: Include stdarg.h.  Reported by palme@uni-wuppertal.de
+       (Hubert Palme) and Micah Altman <maltman@www-vdc.fas.harvard.edu>.
+
+Thu Feb  5 00:18:21 1998  Ben Pfaff  <blp@gnu.org>
+
+       * html.c: (struct html_driver_ext) Move into htmlP.h.
+       (html_preopen_driver) Initialize cp_x, cp_y.
+       (html_submit) Implement as call to output_tab_table().
+       (change_attributes) New function.
+       (escape_string) New function.
+       (output_tab_table) New function.
+
+       * list.q: (write_all_headers) Add code for writing headers for the
+       html driver.
+       (clean_up) Write out the html close-table tag.
+       (determine_layout) Ignore html driver.
+       (list_cases) Write html data.
+
+       * som.c: (som_submit) Move more of the code into output_table().
+
+       * tab.c: (static var hit) Make a global var and rename tab_hit.
+       (static var tab_table_class) Make a global var.
+
+       * htmlP.h: New file.
+
+Tue Feb  3 16:12:18 1998  Ben Pfaff  <blp@gnu.org>
+
+       * dump-sysfile.c: Removed.
+
+       * html.c: (preclose) Change comment in emitted code.
+
+       * matrix-data.c: Debugging off by default.  Comment fixes.
+       (static var container) New var.
+       (cmd_matrix_data) Create and destroy container.  Initialize
+       is_per_factor[] to 0s.  Move code into new function
+       string_to_content_type().  Require split values to be present in
+       the data when ROWTYPE_ is explicit.  Call specific function, not
+       general read_matrices().
+       (string_to_content_type) New function.
+       (context) Exclude all whitespace, not just spaces.
+       (mget_token) A dot is a number.  Add assertion.
+       (static var data) Renamed nr_data.
+       (static var factor_values) Renamed nr_factor_values.
+       (read_matrices) Renamed read_matrices_without_rowtype().  Handle
+       only specific case.  Close data_file before exit.
+       (fill_matrix) New function.
+       (read_data_lines) Renamed nr_read_data_lines().  Remove debug
+       printing.  Style fixes.  Message fixes.  Move code into
+       fill_matrix().
+       (read_matrices_without_rowtype) Rename
+       matrix_data_read_without_rowtype().  Fix off-by-one error on
+       loops.  Allocate nr_data[] memory from arena.
+       (read_matrices_with_rowtype) Removed.
+       (read_splits) Renamed nr_read_splits().  Style fixes.
+       (read_factors) Renamed nr_read_factors().
+       (dump_cell_content) Comment fixes.  Arguments changed.  Change
+       debug printing.  All references changed.
+       (output_data) Renamed nr_output_data().
+       (static var wr_content) New var.
+       (struct factor_data) New struct.
+       (static var wr_data) New var.
+       (static var wr_current) New var.
+       (matrix_data_source_destroy_source) Removed.
+       (read_matrices_with_rowtype) New function.
+       (matrix_data_read_with_rowtype) New function.
+       (wr_read_splits) New function.
+       (compare_factors) New function.
+       (wr_output_data) New function.
+       (wr_read_rowtype) New function.
+       (wr_read_factors) New function.
+       (wr_read_indeps) New function.
+       (glob var matrix_data_source) Make destroy_source member NULL as
+       well.
+
+Fri Jan 23 00:09:08 1998  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c: (syntax_error) Give better error message when at end of
+       file.
+
+       * matrix-data.c: (var content_names[]) Fix PROX spelling.  Change
+       N_SCALAR to output as plain N.
+       (mdump_token) Change output format.
+       (context) Fix message output interaction with spaces in input.
+       (another_token) New function.
+       (force_eol) Improved error message.
+       (static var max_cell_index) New var.
+       (read_matrices) Init `cells'.  factor_values is now per-cell.
+       Init max_cell_index.
+       (read_data_lines) Replace `compare' local with new `compare' arg.
+       Debugging messages changed.  Only read factors if per_factor.
+       Propagate error return from read_factors(), force_eol().
+       Copy N_SCALAR values across the N vector.
+       (read_matrices_without_rowtype) Don't init `cells'.  Don't need to
+       check parentheses manually since we now have is_per_factor[].
+       Call read_data_lines() with new args.  Check for end of data after
+       looping, using another_token().
+       (read_factors) Arguments changed.  Use max_cell_index to determine
+       whether to read or compare factors.  Message fixes.
+       (dump_cell_content) New function.
+       (output_data) Completely rewritten because content types were
+       supported to be nested inside factor values, not vice versa.
+       
+Thu Jan 22 00:26:38 1998  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c: (syntax_error) Support formatted varargs messages.
+
+       * matrix-data.c: Turn debugging on by default.
+       (static content_type[]) New array.
+       (static content_names[]) New array.
+       (static rowtype_, varname_) New vars.
+       (static is_per_factor[]) New array.
+       (static split_values) Moved declaration.
+       (static n_continuous, first_continuous) New var.
+       (cmd_matrix_data) Don't init split_values.  Assign ROWTYPE_ to
+       rowtype_.  Simplify SPLIT code.  Init is_per_factor[].  Assign
+       VARNAME_ to varname_.  Initialize first_continuous, n_continuous.
+       Check for continuous variables.
+       [DEBUGGING] (debug_print) Remove content_names[].
+       (mdump_token) New macro.
+       (mget_token_dump) New function.
+       (mdump_token) New function.
+       (context) New function.
+       (mget_token) Fix messages.
+       (static var data, split_values, factor_values) New vars.
+       (read_matrices) Manage split_values, factor_values.
+       (read_data_lines) New function.
+       (read_matrices_without_rowtype) Implemented.
+       (read_splits) Message fixes.  Uses `just_read'.
+       (read_factors) New function.
+       (output_data) New function.
+       (matrix_data_source_destroy_source) Close the file handle.
+       (glob var matrix_source) Change name from "DATA LIST" to "MATRIX
+       DATA".
+
+       * str.c: (strpadcmp) Removed.
+
+       * vfm.c: (dump_splits) Initialize i; fix test for end of splits.
+
+Sun Jan 18 00:30:59 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Lots of source files: Add cast to unsigned character to calls to
+       tolower() and toupper().
+
+       * aggregate.c: Set default_dict.splits to NULL.
+
+       * command.c: (static variable tab[]) Add MATRIX DATA.
+
+       * data-in.c: Add debugging defines.  Formatting fixes.
+
+       * expr-opt.c: Formatting fixes.
+
+       * lexer.c: (syntax_error) Message fixes.
+
+       * matrix-data.c: New enum series.
+       (static vars fmt, section, diag, explicit_rowtype, signle_split,
+       split_values, n_factors, factors, cells, pop_n, contents,
+       n_contents) New vars.
+       (cmd_matrix_data) Finished implementation.
+       (compare_variables_by_mxd_vartype) New function.
+       [DEBUGGING] (debug_print) New function.
+       (static vars mtoken, mtokstr, mtoklen, mtokval) New vars.
+       (read_matrices) New function.
+       (read_matrices_without_rowtype) New function.
+       (read_matrices_with_rowtype) New function.
+       (read_splits) New function.
+       (mget_token) New function.
+       (force_eol) New function.
+       [0] (test_tokenizer) New function.
+       (matrix_data_source_destroy_source) New function.
+       (glob var matrix_data_source) New var.
+
+       * misc.h: Include ieeefp.h if present.
+
+       * split-file.h: (cmd_split_file) Changes corresponding to struct
+       dictionary changes.
+
+       * str.h: Fix memmem prototype.
+
+       * temporary.c: (save_dictionary, restore_dictionary,
+       free_dictionary) Changes corresponding to struct dictionary
+       changes.
+
+       * var.h: (MXD_* enums) New enum series.
+       (struct matrix_data_proc) New struct.
+       (struct split) Removed.
+       (struct dictionary) Changed `splits' member from `split *' to
+       `variable **'.
+       (macro force_create_variable) New macro.  Replaced lots of
+       create_variable()/assert() calls with calls to this macro.
+
+       * vars-atr.c: (discard_variables) Changed assertion.
+       [GLOBAL_DEBUGGING] (force_create_variable) New function
+       called by the macro of the same name.
+       (clear_variable) Changes to delete splits from the dictionary
+       corresponding to struct dictionary changes.
+
+       * vars-prs.c: (parse_variables) [GLOBAL_DEBUGGING] Check for
+       corrupted variable `index' values in the dictionary passed in
+       every time this function is called.
+
+       * vfm.c: (dump_splits, SPLIT_FILE_procfunc) Changes corresponding
+       to struct dictionary changes.
+
+Tue Jan 13 23:45:02 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pspp_SOURCES) Add matrix-data.c.
+
+       * command.c: New includes.
+       (static array cmd_table[]) Add ERASE, HOST, NEW FILE.
+       (cmd_erase) New function.
+       [unix] (shell) New function.
+       (run_command) New function.
+       (cmd_host) New function.
+       (cmd_new_file) New function.
+
+       * expr-prs.c: (parse_primary) Message fix.
+
+       * inpt-pgm.c: Formatting fix.
+       (cmd_reread) Implement the FILE subcommand.
+
+       * matrix-data.c: New file.
+
+       * q2c.c: (dump_header) Change output commenting style.
+
+       * weight.c: Comment fix.
+
+Tue Jan 13 00:53:39 1998  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (buf64_10x) Renamed buf64_1xx, all references
+       changed.
+       (buf_10x) Renamed buf_1xx, all references changed.
+       (cmd_aggregate) Implemented cases 010, 011, 110, and 111 (all
+       cases now implemented).
+       (create_sysfile) New function.
+       (agr_11x_func) New function.
+
+       * data-in.c: (parse_numeric) Work properly if there's an
+       explicitly coded decimal point in the data and decimal places are
+       specified on DATA LIST.  Bug reported by Dr Eberhard W Lisse
+       <el@linux.lisse.na>.
+
+       * get.c: (cmd_get, cmd_save_internal) Allow extraneous slash
+       before file specification on GET, SAVE, XSAVE.  Bug reported by Dr
+       Eberhard W Lisse <el@linux.lisse.na>.
+
+       * q2c.c: [!HAVE_STRERROR] Include misc/strerror.c, not
+       strerror.c.  Bug reported by Alexandre Oliva
+       <oliva@dcc.unicamp.br>.
+
+       * sort.c: Include sort.h.  Comment fixes.  A few esthetic fixes.
+       (static var separate_case_tab) New var.
+       (cmd_sort_cases) Cancel temporary transformations here.  Free
+       v_sort before return.
+       (sort_cases) Run an EXECUTE procedure if SEPARATE is nonzero and
+       we're reading from a sort stream.  Don't cancel temporary
+       transformations.  Offload internal sorting to do_internal_sort().
+       (do_internal_sort) New function.  Handles internal sorting even
+       when SEPARATE is nonzero.  Doesn't free v_sort.
+       (do_external_sort) Take new arg SEPARATE.  Only destroy `x' if
+       it's non-NULL.
+       (write_initial_runs) Take new arg SEPARATE.  Only destroy the old
+       sink if SEPARATE is zero.
+       (read_output_cases) Renamed read_sort_output(), all references
+       changed.  Now uses separate_case_tab when it exists.
+       (write_separate) New function.
+
+       * vfm.c: (page_to_disk) Destroy memory_source_cases, not
+       memory_sink_cases.  Don't redundantly call
+       vfm_source->destroy_source().
+       (memory_stream_mode) After switching over, set memory_sink_cases
+       to NULL.
+
+Sat Jan 10 23:35:51 1998  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (struct agr_var) Expand dbl[] array from 2 to 3
+       elements.
+       (static var prev_case) New, moved out of aggregate_single_case()
+       local scope.
+       (static var buf64_10x, buf_10x) New.
+       (cmd_aggregate) Initialize prev_case.  Comment fixes.  Implement
+       the 000, 001, 100, and 101 cases.  Free prev_case.
+       (parse_aggregate_functions) Disallow scratch variables.
+       (free_aggregate_functions) Only free agr_dict if non-null.  Use
+       iter->function to determine numeric/string type, not
+       iter->src->type.
+       (aggregate_single_case) Don't manage prev_case.  Initialize
+       aggregate info after dumping it.
+       (accumulate_aggregate_info) Fix sum, weighted sum, mean, weighted
+       mean, stddev, weighted stddev definitions.
+       (dump_aggregate_info) Implemented.
+       (initialize_aggregate_info) Renamed from
+       initialize_aggregate_functions().  Initializes dbl[2].
+       (agr_00x_trns_proc, agr_00x_end_func, write_case_to_sfm,
+       agr_10x_trns_proc, agr_10x_trns_free, agr_10x_end_func) New.
+
+       * cases.c: (alloc_val) Removed.
+
+       * get.c: (cmd_save_internal) Initialize new `dict' member.
+
+       * sfm-write.c: (sfm_write_dictionary, write_header,
+       write_variable, write_value_labels, write_documents) Reorganize,
+       simplify for new parameter structure.
+       (write_variable) Only one variable * argument now.
+
+       * sfm.h: (struct sfm_write_info) Removed `pri', `sec', and
+       replaced by new `dict' member.
+
+       * temporary.c: (new_dictionary) Initialize n_documents.
+
+       * vars-atr.c: (dup_variable) Allocate `value's from dict into
+       v->fv manually.
+       (init_variable, replace_variable) Eliminate usage of alloc_val().
+
+       * vars-prs.c: (parse_DATA_LIST_vars) Accept PV_NO_SCRATCH option.
+
+       * vfm.c: (arrange_compaction) Allow `temporary' value of 2 to
+       signal that AGGREGATE is to be used for forming final cases.
+       (close_active_file) Call end_func before stopping lagging.  Cancel
+       temporary after finishing compaction.
+       (write_case) Comment fixes.  Cleaned up.
+       (compact_case) Let AGGREGATE handle compaction when `temporary' is
+       2.
+
+Sat Jan 10 02:10:47 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (BUILT_SOURCES) Add means.c.
+       (pspp_SOURCES) Add means.c.
+       (EXTRA_DIST) Add means.q.
+
+       * command.c: (array cmd_table[]) Add MEANS.
+
+       * common.h: Esthetic fixes.  Comment fixes.  Test for
+       MAX_SHORT_STRING greater than 8.
+       (macros LOWEST, HIGHEST) New.
+
+       * data-in.c, data-list.c, recode.c: Comment fixes.
+
+       * means.q: New file, base version.
+
+       * mis-val.c: (parse_num_or_range, parse_numeric) Replace -DBL_MAX
+       with LOWEST, DBL_MAX with HIGHEST.
+
+       * q2c.c: (dump_vars) Add an enum to array types giving the number
+       of values for the enum.
+
+       * sfm-read.c: (sfm_read_dictionary, read_machine_flt64_info)
+       Replace second_lowest_value with second_lowest_flt64.
+
+       * sfm-write.c: (write_variable, write_rec_7_34) Replace
+       second_lowest_value with second_lowest_flt64.
+
+       * t-test.q: Comment fix.
+
+       * temporary.c: (restore_dictionary) Esthetic fix.
+
+       * tokens.h: (force_match_id, force_match, force_string, force_int,
+       force_num, force_id) Replace msg() with syntax_error().
+
+       * var.h: (struct means_proc) New.
+       (struct variable) Add mns member to `p' union.
+
+       * vars-prs.c: (parse_variable, parse_dict_variable,
+       parse_variables, parse_DATA_LIST_vars) Replace msg() with
+       syntax_error().
+
+Thu Jan  8 22:28:41 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pspp_SOURCES) Add tab.h.
+
+       * Most source files: Added a cast to unsigned char in usages of
+       the ctype is*() functions.  Replaced `end of command expected'
+       calls to msg() with calls to syntax_error().
+
+       * frequencies.q: (dump_condensed) Fix tab_dim() column reference.
+
+       * lexer.c: (hex_val) Removed (was dead code).
+       (idmatch) Parenthesize function name to avoid macro expansion.
+
+       * postscript.c: Comment fixes.
+       (ps_preopen_driver) Change default font size to 10pt.
+
+       * sfm-read.c: (read_variables) Byteswap sv.print, sv.write as
+       int32s.
+       (parse_format_spec) Change system-file format spec argument type
+       to int32.  Parse the format spec with bitwise operators.
+
+       * sfmP.h: (struct sysfile_format) Removed.
+       (struct sysfile_variable) Changed print, write members from
+       sysfile_format to int32.
+
+       * tokens.h: Esthetic fixes.
+       [__GNUC__] (macro id_match) New macro to hopefully speed up
+       identifier matching.
+       (macros match_id, match_tok, match_int) Implemented in
+       compiler-independent manner; no longer GNU C only.
+
+       * vfm.h: Include time.h.
+
+Mon Jan  5 11:06:15 1998  Ben Pfaff  <blp@gnu.org>
+
+       * data-list.c: (dump_fixed_table) Change tab_dim().
+
+       * dump-sysfile.c: (open_sysfile) Fix mmap() call.
+
+       * error.c: Include command.h.
+
+       * frequencies.g: Formatting fixes.
+
+       * frequencies.q: Add tab_dim() calls.  Make the total cell a
+       joined cell.
+
+       * glob.c: Include command.h.
+
+       * sfm-read.c: (struct sfm_fhuser_ext) New members sysmis, highest,
+       lowest.
+       (sfm_read_dictionary) Initialize sysmis, highest, lowest.
+       (sfm_read_machine_flt64_info) Update sysmis, highest, lowest.
+       (read_variables) Byteswap sv.type; byteswap sv.print, sv.write as
+       the other elements (is this right?).
+       (read_variables) Use lowest, highest members.
+       (parse_format_spec) New arg `vv' for more stringent checking.
+       (dump_dictionary) Byteswaps nonexplicit data.
+       (sfm_read_case) Byteswap numeric data.
+
+       * som.c: Initialize table_num to 1.
+       (render_segments) Remember to increment y_index after each table
+       segment.
+
+       * sysfile-info.c: (cmd_sysfile_info) Change tab_dim().  Don't call
+       avl_count() on a NULL tree.  No title for the second table.
+       (cmd_display) Handle DISPLAY VECTORS by calling display_vectors().
+       Handle AS_SCRATCH as AS_NAMES.  Warn if no variables.  Re-enable;
+       fix call to display_variables().
+       (display_variables) Default to 4 columns, not 3.  Set up headers.
+       Column title is Variable, not Name.  Fix index column.
+       Add joint text.  Add tab_dim().  Handle value labels properly.
+       Handle DISPLAY LABELS properly.  Draw boxes correctly.
+       (describe_variable) Value labels don't need titles.  Don't clear
+       nonexistent index column.
+       (compare_vectors_by_name) New function.
+       (display_vectors) New function.
+
+       * tab.c: (tab_height) Add assertion.
+       (tab_null) Add debug code.
+       (evaluate_dimensions) Add debug code.
+
+       * var.h: (struct variable) get_proc data is sometimes used
+       simultaneously with other per-procedure info, therefore it was
+       removed from the union.  All references changed.        
+
+Sun Jan  4 18:13:33 1998  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (ascii_close_page) Put title on second line of headers
+       if there is no subtitle.
+
+       * command.c: (glob var cur_proc) Move definition here, from
+       common.c.
+       (cmd_remark) Emit blank line before remarks.
+
+       * command.h: (glob var cur_proc) Move declaration here, from
+       common.h.
+
+       * data-list.c: (dump_fixed_table) Fix messages.
+       (dump_free_table) Call tab_nat_dim().
+
+       * descript.q: (dump_z_table) Modify tab_dim() call.
+
+       * frequencies.q: (dump_condensed, dump_statistics) Add tab_dim()
+       call.
+       (dump_statistics) Don't output header.
+
+       * groff-font.c: Minor format fix.
+
+       * html.c: Comment fix.
+
+       * list.q: (write_varname) Indent after advancing page.
+
+       * output.h: Minor reordering.
+
+       * postscript.c: Comment fixes.  Many places, '\n' was replaced by
+       a reference to eol[].
+       (struct ps_driver_ext) New member eol[].
+       (ps_preopen_driver) Initialize eol[].
+       (ps_postopen_driver) Fix sense of text for text_opt, line_opt
+       defaults.  Handle headers.  Fix test for minimum page length.
+       (static var option_tab[]) Add `line-ends'.
+       (ps_option) Handle line-ends to change eol[].
+       (postopen) Scale prop_em_width and fixed_width properly.  Set the
+       prologue title to outp_title if applicable.  Replace the prologue
+       line ends with eol[].  Call draw_headers() if headers are enabled.
+       (text_width) New function.
+       (out_text_plain) New function.
+       (draw_headers) New function.
+
+       * print.c: (dump_table) Call tab_nat_dim().
+
+       * som.c: (som_blank_line) Only advance a line if not at the top of
+       a page.
+       (som_submit) Move several informational table calls here.
+       Increment subtable_num if SOMF_NO_TITLE not set.
+       (output_table) Advance a line if SOMF_NO_SPACING not set.
+       (render_columns, render_segments, render_simple) Handle spacing
+       between tables.  Handle table titles.  Remove debug output.
+
+       * som.h: (SOMF_*) New enum series.
+       (struct som_table_class) New member `flags'.
+
+       * sysfile-info.c: (cmd_sysfile_info) Calls tab_nat_dim().  No
+       headers or spacing.
+       (display_variables) Calls tab_nat_dim().
+       (describe_variable) Remove restriction on number of value labels.
+       Make value labels separated by thin lines.
+
+       * tab.c: (tab_create) Default `flags' to none.
+       (tab_float) New arg `w'.  All references changed.
+       (tab_nat_dim) New function.
+       (tab_output_text) No title or spacing.
+       (tab_flags) New function.
+       (tabi_flags) New function.
+       (tabi_title) New function.
+       (strip_height) Removed.
+       (tabi_render) Skip title when necessary.
+       (static var tab_tab_class) Add tabi_flags, tabi_title.
+       (evaluate_dimensions) Disable display of column, row size.
+       (sum_columns) Add title height to top header.
+       (render_strip) Moved within file.
+
+       * tab.h: (struct tab_table) New member `flags'.
+
+       * vfm.c: (dump_splits) Calls tab_nat_dim().  No title.
+
+Sat Jan  3 16:55:44 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Most source files: Add `const' attribute in all appropriate
+       places.
+       
+       * sysfile-info.c: (cmd_sysfile_info) Add tab_dim() call, add a
+       column to the variables table for use by describe_variable().
+       (cmd_display) Disable for the present.
+       (display_documents) Don't wrap documents.
+       (display_variables) Table has four columns now.
+       (describe_variable) Table has four columns now.  Don't use a
+       subtable, use joined cells instead.
+
+       * tab.c: (tab_create) Don't set `join'.
+       (tab_realloc) ct array is not made up of a_string's.
+       Reallocate trh, hrh, h arrays, initialize trh array.  Initialize
+       cell contents on GLOBAL_DEBUGGING, not DEBUGGING.
+       (text_format) New function.
+       (tab_title) Rewritten, uses text_format().
+       (tab_text) Rewritten, uses text_format().
+       (tab_joint_text) New function.
+       (tab_join) Removed.
+       (static var hit) New variable.
+       (render_strip) New args r1, r2.  Implement joined cells that fit
+       on a single page.
+       (tabi_render) Increment hit.  Pass new args to render_strip().
+       (evaluate_dimensions) [GLOBAL_DEBUGGING] Check for uninitialized
+       cells.  For t_naw and t_nah, ignore joined cells and null cells in
+       calculations.
+       
+       * tab.h: (struct tab_join_rect) Removed.
+       (struct tab_table) Removed `join'.
+       (TAB_JOIN_MAIN) Removed.
+       (struct tab_joined_cell) New struct.
+       (TAT_NOWRAP) New enum.
+
+Fri Jan  2 01:39:58 1998  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (ascii_postopen) Replace ASCII_* macros with their
+       expansions.
+       (ascii_postopen_driver) Fix initialization of *_spacing so that
+       the TAL_0 bit doesn't count.
+
+       * data-list.c: (dump_fixed_table) Use natural width for Format
+       column.
+
+       * glob.c: (rerange) Removed.
+       (get_date) Formatting fixes.  Internationalization fix.
+
+       * html.c: (html_postopen_driver) Replace HTML_DEFAULT_OUTPUT_FILE
+       with "pspp.html".
+
+       * postscript.c: (ps_postopen_driver) Replace
+       PS_DEFAULT_OUTPUT_FILE with "pspp.ps".
+
+       * som.c: (som_submit) Don't eject page before every table.
+       (output_table) Fix order of arguments on call to area().
+       (render_columns) Fix calculation of max_len.
+       
+       * tab.c: (tabi_cumulate) Minor change to increase elegance.
+       (render_strip) New function.
+       (strip_height) New function.
+       (tabi_render) Rewrite as calls to render_strip().
+
+       * tab.h: (TAT_* enums) Removed TAT_RICH, all references removed.
+       Renumbered TAT_PRINTF, TAT_TITLE, TAT_FIX to correspond better
+       with the TAB_* and OUTP_T_* constants.
+       
+Thu Jan  1 11:53:52 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Formatting fixes.
+
+       * ascii.c: (ascii_postopen_driver) Initialize *_line_spacing[],
+       *_line_width[].
+
+       * data-list.c: (dump_fixed_table) Add tab_dim() call.
+
+       * descript.q: (dump_z_table, display) Add tab_dim() calls.
+
+       * dump-sysfile.c: (glob var length) Make type off_t.
+       (usage) Fix arguments.
+       (main) Return 0.
+
+       * output.h: (OUTP_T_*) Change constants' value to match tab.h.
+       Now right-justification is the default so many references had to
+       change.
+       (struct outp_class) Removed line_width, all references changed.
+       (OUTP_DEV_*) Add OUTP_DEV_DISABLED.
+       (struct outp_driver) Add elements horiz_line_width,
+       vert_line_width, horiz_line_spacing, vert_line_spacing.  Remove
+       som element.
+
+       * postscript.c: (outp_encodings) Formatting fixes.  Fix garbage
+       collection.
+       (postopen) Initialize all the informational members of
+       outp_driver.
+
+       * som.c: (som_blank_line) New function, renamed from blank_line(),
+       all references changed.
+       (som_submit) Disables drivers whose pages can't be opened.
+       (render_columns, render_simple, render_segments) Add debug output.
+       (render_columns) Fix loop range.
+       (render_simple) Don't try to render the headers, they're taken
+       care of automatically.  Advance cp_y past the table when done.
+       (render_segments) Fix loop ranges.
+
+       * tab.c: Initialize new members of tab_table.
+       (tab_vline) Handle trv[]; don't set style for spacing-only lines.
+       (tab_hline) Handle trh[]; don't set style for spacing-only lines.
+       (tab_box) Handle trh[], trv[]; don't set style for spacing-only
+       lines.
+       (set_expr) Removed.
+       (tab_dim) New function.
+       (tab_col_width) Removed.
+       (tab_row_height) Removed.
+       (tab_output_text) Call tab_dim().
+       (tabi_driver) Call evaluate_dimensions(), sum_columns().
+       (tabi_area) Implemented.
+       (tabi_cumulate) Implemented.
+       (tabi_render) Partially implemented, but broken.
+       (var tab_table_class) Made static.
+       (evaluate_dimensions) New function.
+       (sum_columns) New function.
+
+       * tab.h: (enum t_*) Now start at t_end.  New: t_ptw, t_nr, t_nc,
+       t_nah, t_naw, t_neg, t_xch, t_dup, t_lbl, t_jnz, t_sac, t_sar,
+       t_scr, t_srr, t_sentinel.  Removed: t_nat.
+       (struct tab_table) New: wl, wr, ht, hb, trh, hrh, trv, wrv, dim,
+       max_stack_height, w, h.  Removed: ce, re.
+       (macro blank_line) Removed.
+       (glob var zero_length) Removed.
+
+Fri Dec 26 15:44:31 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Most source files: include some of the new include files broken
+       out of var.h.
+       
+       * Makefile.am: (pspp_SOURCES) Add all the new source files to the
+       list.
+
+       * aggregate.c: (glob var outfile) Make static.
+
+       * command.c: (glob var pgm_state) Move here.
+
+       * common.c: (glob vars endian, second_lowest_value, pgmname,
+       finished, curdate, cur_proc, start_interactive, history_file) Move
+       here.
+
+       * descript.q: (structs dsc_z_score, descriptives_trns) Move here.
+
+       * file-handle.q: (glob vars files, inline_file) Move here.
+
+       * glob.c: Lost lots of glob vars, detailed in individual file
+       entries.
+       (init_glob) set_printer, set_screen were obsolete, deleted.
+       set_cprompt has fewer spaces because pspp has fewer letters than
+       fiasco.
+
+       * inpt-pgm.c: (glob vars inp_init, inp_init_size) Move here.
+       (inp_nval) Made static.
+
+       * lexer.c: (glob vars token, tokval, tokstr, tokstr_size,
+       tokstr_len, toklongstr, tokint) Move here.
+
+       * misc.c: Lost several vars and functions.
+
+       * set.q: (all the set_* variables) Move here.
+
+       * str.c: (strmaxcpy, strbarepadcpy, strbarepadlencpy, strpadcpy,
+       blpstrset, strpadcmp, memrev, memrmem, cmp_str) Move here from
+       misc.c.
+
+       * tab.c: (set_expr, tab_col_width, tab_row_height) New functions.
+
+       * tab.h: (enum series t_*) New enums.
+       (struct tab_table) Use arena struct tag.  New members ce, re.
+
+       * tokens.h: Comment fixes.
+
+       * var.h: Move lots of enums and variables and functions and
+       structures to other files.  Use and declare a lot more union and
+       struct tags.  Comment fixes.  
+
+       * vector.c: (glob vars vec, nvec) Move here.
+
+       * vfm.c: (glob vars reinit_sysmis, reinit_blanks, init_zero,
+       init_blanks, last_vfm_invocation) Move here.
+
+       * cases.h: New file.
+       (struct long_vec) Move here.
+       (vec_init, vec_clear, vec_insert, vec_delete, devector, envector)
+       Move here.
+
+       * command.h: New file.
+       (STATE_* enums) Move here.
+       (glob var pgm_state) Move here.
+
+       * format.c: New file.
+       (glob var formats) Move here.
+       (parse_format_specifier_name, fmt_to_string,
+       check_input_specifier, check_output_specifier,
+       check_string_specifier, convert_fmt_ItoO, parse_format_specifier)
+       Move here.
+
+       * format.h: New file.  Move functions now in format.c here.
+       (FMT_* enums) Move here.
+       (struct fmt_desc) Move here.
+       (FCAT_* enums) Move here.
+       (struct fmt_spec) Move here.
+       (glob vars formats, fmt_parse_ignore_error) Move here.
+
+       * inpt-pgm.h: New file.
+       (INP_* enums) Move here, make #defines into enums.
+       (glob vars inp_init, inp_init_size) Move here.
+
+       * sort.h: New file.
+       (glob vars v_sort, nv_sort) Move here.
+       (sort_cases, read_sort_output) Move here.
+
+       * vector.h: New file.
+       (struct vector) Move here, add struct tag.
+       (glob vars vec, nvec) Move here.
+       (find_vector) Move here.
+
+       * New file.
+       (glob vars last_vfm_invocation, temp_case, reinit_sysmis,
+       reinit_blanks, init_zero, init_blanks) Move here.
+       (struct case_stream) Move here.
+       (glob vars vfm_source, vfm_sink, vfm_memory_stream,
+       vfm_disk_stream, sort_stream, data_list_source,
+       input_program_source, file_type_source, get_source, n_lag) Move
+       here.
+       (procedure, write_case, lagged_case, compact_case, page_to_disk)
+       Move here.
+               
+Wed Dec 24 22:40:42 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pspp_SOURCES) Added html.c, som.c, som.h.
+       (LDADD) Add libdcdflib.
+
+       * ascii.c: Comment and formatting fixes.  Almost every external
+       function had an assert added, checking driver_open and page_open.
+       (ascii_init_driver) Broken into ascii_preopen_driver,
+       ascii_postopen_driver, ascii_close_driver.  Manages driver_open.
+       (ascii_open_page) Sets page_open.
+       (ascii_close_page) Clears page_open.
+
+       * html.c: Comment and formatting fixes.  Almost every external
+       function had an assert added, checking driver_open and page_open.
+       (html_init_driver) Broken into html_preopen_driver,
+       html_postopen_driver, html_close_driver.  Manages driver_open.
+       (html_open_page) Sets page_open.
+       (html_close_page) Clears page_open.
+       (html_submit) Disabled.
+
+       * lexer.c: (parse_string) Remove debugging printf.
+
+       * list.q: (determine_layout) Open a page if one is not yet open.
+
+       * output.c: Comment fixes.
+       (add_class) Set the class member of the new list element.
+       (parse_options) Don't handle device type.
+       (colon_tokenize) New function.
+       (configure_driver) New four-field format with a field for device
+       type.  Now initialize driver_open, page_open, next, and prev
+       fields.  Use new colon_tokenize() function.  Don't do a memory
+       copy to replace a driver, it doesn't work; instead delete the old
+       driver and insert a new one.
+       (destroy_driver) Don't call som_destroy_driver().  Close the page
+       if it's open.  Find the class in the list of classes and decrement
+       that reference count.  Remove the driver from the global driver
+       list.
+       (outp_iterate_enabled_drivers) Renamed outp_drivers().  All
+       references changed.  Rewritten.  Don't return a driver that's not
+       enabled.
+       (outp_eject_page) All references to som_internal_eject_page()
+       changed to use this.  Sets cp_x to 0 as well as cp_y.
+
+       * output.h: (OUTP_I_* enums) Removed.
+       (struct som_submission_form) Removed.
+       (struct outp_class) init_driver broken into preopen_driver,
+       postopen_driver, and close_driver.  submit changed to take a
+       som_table argument.
+
+       * postscript.c: Comment and formatting fixes.  Almost every
+       external function had an assert added, checking driver_open and
+       page_open.
+       (ps_init_driver) Broken into ps_preopen_driver,
+       ps_postopen_driver, ps_close_driver.  Manages driver_open.
+       (ps_open_page) Sets page_open.
+       (ps_close_page) Clears page_open.
+
+       * som.c: New file, base implementation.
+       
+       * som.h: (struct som_table) Add struct tag.
+       (enum SOM_COL_ACROSS) Removed.
+       (SOM_ROWS, SOM_COLUMNS) New enums.
+       (struct som_table_class) Add member `cumulate'.  Remove `segment';
+       change `render' arguments.
+       (struct som_point, struct som_rect) Removed.
+       (som_submit_table) Fixed typo, should have been som_submit.
+
+       * sysfile-info: (describe_variable) Don't try to insert a
+       subtable; just destroy it for now.
+
+       * t-test.q: Include dcdflib/cdflib.h instead of cdflib.h.  Fix
+       references to value labels.
+
+       * tab.c: (tab_destroy) New function.
+       (tab_columns) Change argument.
+       [0] (tab_submit) Remove dead code.
+       (tab_title) Allocate string from the table's arena.
+       (tab_output_text) Only free the buffer if we allocated it.
+       (tab_submit) New function.
+       (static vars t, d) New static vars.
+       (tabi_table, tabi_driver, tabi_count, tabi_area, tabi_columns,
+       tabi_headers, tabi_cumulate, tabi_render) New functions.
+       (glob var tab_table_class) New global var.
+
+       * tab.h: (struct tab_join_rect) Don't use a som_rect; directly
+       encapsulate the rectangle.  All references changed.
+       
+Sun Dec 21 16:18:58 1997  Ben Pfaff  <blp@gnu.org>
+
+       * All header files updated to use struct tags in addition to
+       typedefs for all structures.  Don't use word `struct' in struct
+       tags.
+       
+       * Makefile.am: (pspp_SOURCES) Remove html.c.
+       (INCLUDES) Replace the lib/* includes with a single lib/ include;
+       all references updated.
+
+       * command.c: (parse_cmd) Remove call to som_check_workspace.
+       (output_line) Update to new som.
+
+       * data-in.c: (parse_numeric) A single dot is not an error; it is
+       the system-missing value.
+
+       * data-list.c: (dump_fixed_table, dump_free_table) Update to new
+       som.
+
+       * data-out.c: Added `const' as appropriate to many prototypes.
+       (convert_E, convert_F, convert_CCx) Take double argument instead
+       of value * argument.
+       (convert_format_to_string) Call changed functions appropriately.
+       Instead of modifying the caller's value for FCAT_SHIFT_DECIMAL,
+       make a local copy of the value.
+
+       * descript.q: Remove custom_variables() prototype now provided by
+       q2c.  
+       (custom_variables) Don't increment sbc_variables, the caller does
+       this.
+       (dump_z_table, display) Update to new som.
+
+       * error.c: (vmsg) Add const to prototype.  Remove code to handle
+       `too many errors' condition.
+       (check_error_count) New function.
+       (msg) Add const to prototype.
+
+       * filename.c: (open_file) Rewrite for elegance.
+
+       * frequencies.q: Remove custom_*() prototypes now provided by q2c.
+       (dump_full, dump_condensed, dump_statistics) Update for new som.
+
+       * list.q: Don't include somP.h.  Change all references to
+       som_driver_ext to refer to the new members of som_driver.  Change
+       som_internal_eject_page() references to outp_eject_page().
+
+       * main.c: (parse) Rewrite for elegance.  Add call to
+       check_error_count().
+
+       * output.c: (add_class, outp_list_classes, outp_configure_driver)
+       Rewrite or revise for new outp_driver_class_list structure.
+       (outp_iterate_enabled_drivers) Fix comparison between disabled
+       devices and current device type.
+       (outp_eject_page) New function.
+
+       * output.h: Comment fixes.
+       (struct outp_driver) New members driver_open, page_open, cp_x,
+       cp_y, font_height, prop_em_width, fixed_width.  Deleted members
+       ref_count, next.
+       (struct outp_driver_class_list) New struct.
+       (outp_class_list) Changed to type outp_driver_class_list; all
+       references updated.
+
+       * print.c: (dump_table, print_trns_proc) Updated for new som.
+
+       * q2c.c: (dump_vars) Simplify array subcommand code.  Declare
+       prototypes for custom subcommands.
+       (dump_subcommand) Always include the `else'.
+       (dump_parser) Fix comments in output code.
+
+       * set.q: Reordered functions.
+
+       * som-frnt.c, som-high.c, som-low.c, somP.h: Removed.
+       
+       * som.h: Rewritten from scratch.
+
+       * str.h: Remove dead code.
+
+       * tab.c, tab.h: New files, base implementation.
+
+       * sysfile-info.c: (cmd_sysfile_info, describe_variable) Update to
+       new som.
+
+       * t-test.q: New code from John Williams
+       <johnr.williams@stonebow.otago.ac.nz>.  Include math.h, cdflib.h.
+       Many many new static vars and defines.
+       (precalc, postcalc, g_postcalc, z_postcalc, t_pairs, t_groups,
+       groups_calc, pairs_calc, z_dev_calc, z_calc) New functions.
+       (struct value_list) New struct.
+       (variance, covariance, pooled_variance, oneway, pearson_r, f_sig,
+       t_crt, t_sig, print_t_groups) New functions.
+       (cmd_t_test) Implemented.
+
+       * temporary.c: (cancel_temporary) Only free the temp_dict if it's
+       non-NULL.
+
+       * vfm.c: (dump_splits) Update to new som.
+
+Thu Dec  4 23:02:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (fiasco_SOURCES) Add html.c.
+
+       * aggregate.c: Base source.
+
+       * ascii.c: (postopen, preclose) Reformat.
+
+       * data-out.c, expr-evl.c: Comment fixes.
+       
+       * filename.c: (open_file) When opening a file for writing, use
+       line buffering instead of full buffering for better interactive
+       performance.  Suggested by Valerio Aimale
+       <valerio@svpop.com.dist.unige.it>.  Also, recognize special file
+       names `stdin', `stdout', `stderr'.
+
+       * groff-font.c: Comment fixes.
+
+       * html.c: New file; base version.
+
+       * list.q: (write_all_headers, clean_up, determine_layout,
+       list_cases) Ignore `special' devices for now.  Needs to be fixed
+       later.
+
+       * output.c: (outp_init) Add html driver to list; reverse list
+       order.
+
+       * output.h: (struct outp_class_struct) New members `special',
+       `submit'; comment fixes.  All references changed.
+
+       * postscript.c: (ps_init_driver) Make defaults for text_opt,
+       line_opt depend on whether the OUTP_DEV_SCREEN bit is set on the
+       device.
+       (postopen) Comment fix.
+       (preclose) Comment fixes, formatting fixes.  Change x->file.file
+       references to more proper f->file.
+
+       * som-high.c: (som_submit_table) Special classes use their own
+       renderers.
+
+       * som.h: Comment fixes.
+
+       * temporary.c: (new_dictionary) Don't try to xstrdup() a NULL
+       string.
+       
+Tue Dec  2 14:36:07 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (fiasco_SOURCES) Add aggregate.c back in.
+
+       * aggregate.c: Still working on this.
+
+       * command.c: (cmd_table[]) Add AGGREGATE back in.
+       (split_words) Make '-' a legal word separator as well as ' '.
+
+       * main.c: Comment fixes.
+
+       * q2c.c: (dump_parser) Don't require the procedure's full name to
+       be present, in the generated source.
+
+       * t-test.q: Change name to `t-test' from `t test'.  Let PAIRS be
+       multiply specified and let it be default; let MISSING, CRITERIA,
+       FORMAT be multiply specified.
+       (cmd_t_test) Parse command name.  [DEBUGGING] Call debug_print().
+       (custom_groups) Fix defaults.
+       (custom_pairs) Check whether this is a PAIRS subcommand before
+       attempting to parse.  Better garbage collection.  Proper storage
+       allocation.
+       [DEBUGGING] (debug_print) New function.
+
+       * temporary.c: Comment fixes.
+       (copy_variable) Don't copy variable name and index.
+       (save_dictionary) Copy variable name and index by hand.
+
+       * vars-atr.c: Comment fixes.
+       (create_variable) New dictionary argument.  All references
+       changed.
+       (common_init_stuff) New dictionary argument.  All references
+       changed.
+       (init_variable) New dictionary argument.  All references changed.
+       (dup_variable) New function.
+
+       * vars-prs.c: (parse_variables) If there are any errors, we always
+       return 0.  Previously, it was possible for some types of errors to
+       be ignored.
+       
+Sat Nov 22 01:20:59 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (fiasco_SOURCES) For 0.1.5 release, remove
+       aggregate.c.
+
+       * command.c: (cmd_table[]) Comment out AGGREGATE; add T TEST.
+
+       * list.q, t-test.q: Remove ALL option from VARLIST declaration in
+       grammar rules.
+
+       * q2c.c: Comment fixes.
+       (SBC_* enums) Remove SBC_VARLIST_ALL; all references removed.
+       
+       * t-test.q: (cmd_list) Rename cmd_t_test.
+
+       * temporary.c: (new_dictionary) Don't declare as static.
+       
+Fri Nov 21 00:03:06 1997  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: Changes, still not finished.
+
+       * file-handle.q, frequencies.q, list.q, set.q: Comment fixes.
+
+       * q2c.c: Comment fixes.  Now its output is internationalized.
+       (get_token) Fix parsing of escapes within literal strings.
+       (main) Fix bad #line directives in output.
+
+       * t-test.q: Base implementation.
+
+       * temporary.c: (new_dictionary) New function.
+       (restore_dictionary) [__CHECKER__] Change fill character to *
+       (from @).
+       
+Sun Nov 16 01:29:57 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (BUILT_SOURCES, fiasco_SOURCES) Add t-test.c
+
+       * aggregate.c: Changes, still not finished.
+
+       * descript.q, list.q: Comment fixes.
+
+       * q2c.c: Almost completely rewritten.
+
+       * t-test.q: New file, not complete.
+
+Fri Nov 14 00:14:48 1997  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: Changes, still not finished.
+
+       * sort.c: (sort_cases) Call cancel_temporary() instead of doing it
+       by hand.
+
+       * temporary.c: (cancel_temporary) New function.
+
+       * vars-atr.c: (discard_variables) Call cancel_temporary() instead
+       of doing it by hand.
+
+       * vfm.c: (close_active_file) After restoring a TEMPORARY
+       dictionary, set temp_dict to NULL.  Cancel TEMPORARY through
+       cancel_temporary().
+       (SPLIT_FILE_procfunc) Comment fix.
+
+Tue Oct 28 16:08:45 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (fiasco_SOURCES) Add aggregate.c.
+
+       * aggregate.c: New file, not finished yet.
+
+       * command.c: (cmd_table) Add AGGREGATE.
+
+       * common.h: (pgm_state) Move declaration to var.h.
+
+       * lexer.c: (bin_value_func, oct_value_func, hex_value_func) i18n
+       fixes.
+       (parse_string) Message fix.
+
+       * recode.c: Comment fix.
+
+       * sfm-read.c: (read_variables) Code esthetic fixes.
+       (write_header) Default date is `Jan', not `JAN'.
+
+       * sfmP.h: (bswap_int32) [!__linux__] Fix off-by-one errors.
+
+       * sort.c: (cmd_sort_cases) Farm the work out to new function
+       parse_sort_variables().
+       (parse_sort_variables) New function.
+       (sort_cases) New function.  Cancels temporary transformations,
+       which sorting didn't do previously.
+       (cmd_sort_cases) Better garbage collection on error.  Uses
+       do_external_sort().
+       (write_initial_runs, merge_once) Improved code esthetics.
+       (sort_stream_read) Reduced to one call to read_output_cases().
+       (read_output_cases) New function.
+
+       * var-labs.c: (cmd_variable_labels) Re-enabled truncation of
+       variable labels to 120 characters.
+
+       * var.h: Comment fixes.
+       (glob var pgm_state) From common.h.
+
+       * vars-atr.c: (discard_variables) Set pgm_state to STATE_INIT.
+
+       * vars-prs.c: (parse_DATA_LIST_vars) Support PV_SINGLE in
+       options.  Set *names to NULL on error.
+
+       * vfm.c: (memory_stream_init) Assert compaction_nval != 0.
+
+Thu Oct  9 09:59:49 1997  Ben Pfaff  <blp@gnu.org>
+
+       * sfm-write.c, vfm.c: [HAVE_UNISTD] #include <unistd.h>, needed by
+       SunOS4.  From Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+Wed Oct  8 18:55:24 1997  Ben Pfaff  <blp@gnu.org>
+
+       * vfm.c: (page_to_disk) Added missing local variables.
+
+Tue Oct  7 20:23:17 1997  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: Comment fix.
+
+       * sort.c: (cmd_sort_cases) Attempt to perform internal sort if the
+       source is anything other than a disk stream, not just if it's in a
+       memory stream.  Call page_to_disk() before external sort.
+       (allocate_cases) Message fix.
+
+       * vfm.c: (prepare_for_writing) Warn user when paging workspace to
+       disk.
+       (page_to_disk) New function.
+
+Sun Oct  5 15:56:14 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (INCLUDES) Include .. instead of $(top_srcdir).
+
+       * common.h: (macro strerror) Remove.  From Alexandre Oliva
+       <oliva@dcc.unicamp.br>.
+
+       * get.c: (dict_delete_run) The number of variables to delete is
+       not necessarily the number of variables that need to be shifted
+       up.
+       (trim_dictionary) Don't set *options to 0.  Fix bug that caused
+       too many variables to be deleted.
+
+       * postscript.c: Comment fix.
+
+       * q2c.c: Include strerror.c.  From Alexandre Oliva
+       <oliva@dcc.unicamp.br>.
+
+       * set.q: #undef ON and OFF.  From Alexandre Oliva
+       <oliva@dcc.unicamp.br>.
+
+       * sfm-read.c: (sfm_read_dictionary) Don't set the file class too
+       early, otherwise errors cause a bad free().
+
+       * str.h: (macro nvsprintf) s/FORMATS/FORMAT/ typo.  From Alexandre
+       Oliva <oliva@dcc.unicamp.br>.
+
+       * temporary.c: (save_dictionary) Don't allocate memory if
+       n_documents is 0.
+
+       * vfm.c: (memory_stream_write) Message fix.
+
+Sat Oct  4 16:20:43 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (static var cmd_table[]) Define REPEATING DATA
+       command.
+
+       * common.h: Added support for broken systems that are missing
+       EXIT_SUCCESS, EXIT_FAILURE, RAND_MAX, and/or strerror().
+
+       * Many source files: Replace syntax error messages via msg() with
+       call to syntax_error().
+
+       * data-list.c: (dump_fixed_table) Add support for dumping table
+       for REPEATING DATA as well as DATA LIST FIXED.
+       (cmd_repeating_data) Allows and requires `/' between subcommands.
+       Does proper thing with allowing rpd.starts_end to stay 0.  Allows
+       CONTINUED specifications to be omitted.  Forces CONTINUED to be
+       specified if ID is.  Calculates starts_end, cont_end from logical
+       record length as reported by fhp.  Calls dump_fixed_table() if
+       requested.  Fixed length of record copied by memcpy.
+       (parse_num_or_var) Sets `num' to 0, not NOT_INT, for variables.
+       Message fix.
+       (realize_value) Returns sensible value for out-of-range variable
+       values.
+       (rpd_parse_record) New argument `ofs'.  Fixed confusion between
+       length of occurrences and length of line.  Added warning for
+       fields that exceed the line length.  Fixed infinite loop.
+       (read_one_set_of_repetitions) Numerous minor changes for more
+       complete SPSS compliance.  Message fixes.
+
+       * dfm.c: (dfm_close) If the file being closed is the inline file,
+       read all the remaining data before closing it.
+       (dfm_get_record) Don't close the file on lossage, as either it
+       has been closed already or it doesn't belong to us.
+
+       * error.c: (puts_stdout) New function.
+       (vmsg) Use puts_stdout instead of puts.
+
+       * file-handle.q: (fh_record_width) New function.
+
+       * inpt-pgm.c: (init_case) Fixed buffer overrun when inp_nval % 4
+       == 0.
+       (clear_case) Ditto.
+       (input_program_source_read) Made an old kluge an approved method.
+
+       * lexer.c: (syntax_error) New function.
+
+       * misc.c: [BROKEN_RAND] (ansi_rand, ansi_srand; static var next)
+       New.
+
+       * output.c: (oupt_get_paper_size) Message fix.
+
+       * q2c.c: Numerous fixes to formatting of generated code made to
+       conform to GNU coding standards.  Uses syntax_error() in generated
+       code.  Other miscellaneous generated message fixes.  Added support
+       for broken systems that are missing EXIT_SUCCESS, EXIT_FAILURE,
+       RAND_MAX, and/or strerror().
+
+Sat Oct  4 02:09:56 1997  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: Comment fixes.
+
+       * data-list.c: (struct repeating_data_trns) New member `id_spec'.
+       (find_variable_input_spec) New function.
+       (cmd_repeating_data) Initializes id_spec.
+       (rpd_parse_record) Implemented.
+       (read_one_set_of_repetitions) Returns -3 by default in order to
+       kluge out some potential bugs.
+
+       * data-out.c: Comment fixes.
+
+       * file-type.c: (internal_cmd_record_type) Message fix.
+
+       * inpt-pgm.c: (input_program_source_read) Special temporary kluge
+       for handling -3 return value.
+
+Sat Sep 20 23:58:15 1997  Ben Pfaff  <blp@gnu.org>
+
+       * data-list.c: Comment fixes.
+       (struct dls_var_spec) Reordered members.
+       (read_from_data_list_fixed) Restructured.
+       (struct repeating_data_trns) Reordered members.  Renamed `starts'
+       as `starts_beg', `ends' as `starts_end'.
+       (cmd_repeating_data) Calculates length of repeated data if
+       necessary and possible.
+       (parse_num_or_var) Don't allow string variables.
+       (realize_value) New function.
+       (rpd_msg) New function.
+       (rpd_parse_record) New function.  Currently stubbed out.
+       (read_one_set_of_repetitions) Implemented.
+
+       * inpt-pgm.c: (input_program_source_read) Comment fix.
+
+Thu Sep 18 21:34:57 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (cmd_end_repeat_p) Removed.
+       (init_cmd_parser) Doesn't set cmd_end_repeat_p.
+       (parse_cmd_name) Removed.
+
+       * data-list.c: Comment fixes.
+       (data_list_pgm) Removed `eof' member.
+       (static var first) New var.
+       (cmd_data_list) Sets `first'.  Ensures that DATA LIST uses the
+       FILE TYPE file inside FILE TYPE structures.
+       (append_var_spec) Appends to *first, not dls.spec.
+       (parse_fixed) Message fixes.
+       (struct rpd_num_or_var) New.
+       (struct repeating_data_trns) New.
+       (static var rpd) New.
+       (cmd_repeating_data) New function.
+       (parse_num_or_var) New function.
+       (parse_repeating_data) New function.
+       (read_one_set_of_repetitions) New function.
+
+       * file-type.c: (cmd_file_type) Message fixes.  Always
+       default_handle to FILE TYPE file handle.
+       (internal_cmd_record_type) Message fixes.
+
+Wed Aug 20 14:22:03 1997  Ben Pfaff  <blp@gnu.org>
+
+       * repeat.c: Comment fix.  Disable debugging.
+
+       * temporary.c: (restore_dictionary) Sets splits to NULL and
+       n_splits to 0 before destroying the variables because now doing
+       this tries to remove split variables.
+
+       * vars-atr.c: (discard_variables) Asserts that n_splits is 0 after
+       destroying the dictionary.
+       (clear_variable) Removes a variable from splits after destroying
+       it.
+
+Mon Aug 18 18:06:55 1997  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: (set_compat) Removed.
+       (pick_compat) Removed.
+       (parse_command_line) Removed -c option.
+       (pre_syntax_message) Removed -c option.
+       (usage) Remove compatibility code.
+
+       * common.h: (macros VER_PC, VER_WND, VER_X) Removed.
+       (glob var compat) Removed.
+
+       * compute.c: (type_check) Fixed messages about type mismatches.
+
+       * data-list.c: (cmd_data_list) Removed compatibility code.
+       (fixed_parse_compatible) Calls convert_negative_to_dash().
+       Fixed bug where it only set the variable in fx.spec if it created
+       the variable itself.
+       (dump_fmt_list) Spelling fix.
+       (cut_field) Removed compatibility code.
+
+       * dfm.c: (cmd_begin_data) Don't require a command terminator on
+       BEGIN DATA command.
+
+       * expr-evl.c: (evaluate_expression) Implement LAG.
+
+       * expr-prs.c: (parse_add) Calls convert_negative_to_dash().
+       (parse_neg) Calls convert_negative_to_dash().
+       (LAG_func) Increases n_lag to the lag requested.  Fixed assignment
+       bug.
+
+       * expr.h: (struct expression_struct) Removed member max_lag.
+
+       * file-type.c: (parse_col_spec) Calls convert_negative_to_dash().
+       (internal_cmd_record_type) Removed special handling to produce
+       negative numbers from dash tokens.
+
+       * getline.c: (static var DO_REPEAT_level) New var.
+       (getl_add_DO_REPEAT_file) Increments DO_REPEAT_level.
+       (handle_line_buffer) Copies the line into getl_buf; doesn't call
+       copy_with_DO_REPEAT_substitutions().
+       (getl_read_line) Maintains value of getl_mode.  Calls
+       perform_DO_REPEAT_substitutions() whenever DO_REPEAT_level is
+       positive.
+       (getl_close_file) Decrements DO_REPEAT_level when appropriate.
+
+       * getline.h: (getl_mode) New glob var.
+
+       * glob.c: Comment fixes.
+       (init_glob) Restructured.  Sets set_seed.
+       (init_compat_dependent) Removed.  All references removed.
+       (get_date) Format changed from MM/DD/YY to DD MMM YYYY.
+       (__htonl, __htons) Removed.  (What were these for?)
+
+       * lexer.c: (static var tbl) Dash set to class CNUM.
+       (make_hexit) New function from data-out.c.
+       (get_token_representation) Rewritten.
+       (convert_negative_to_dash) New function.
+       (lex_init_compat_dependent) Removed.
+       (yylex) A dash is parsed as part of a number if it is followed by
+       a digit.  The ASCII representation of a number is copied to
+       tokstr.  String parsing farmed out to parse_string().  Comment
+       fixes.
+       (bin_value_func, oct_value_func, hex_value_func, parse_string) New
+       functions.
+       (preprocess_line) Line processing depends on interactive/batch
+       mode, not on compatibility mode.  Removed PC+ compatibility code.
+
+       * loop.c: (loop_3_trns_proc) Comment fix.
+
+       * main.c: Remove dead code.
+       (main) Remove call to init_compat_dependent().
+
+       * misc.c: (convert_fmt_ItoO) Make E format conversion more
+       conformant.
+
+       * print.c: (parse_string_argument) Calls
+       convert_negative_to_dash().
+       (fixed_parse_compatible) Calls convert_negative_to_dash().
+
+       * repeat.c: (RPT_* defines) Removed.
+       (struct rpt_numeric) Removed.
+       (struct repeat_entry) New member type, changed `replacement' from
+       char * to char **.
+       (clean_up) Deallocation adapted to new repeat_entry.
+       (internal_cmd_do_repeat) `type' defaults to 0.  Remove lookahead()
+       usage.  Creates vars for `type' of 1.
+       (parse_ids) Sets type of 1.  Adapted to new repeat_entry.
+       (store_numeric) Rewritten, new interface.
+       (parse_numbers) Rewritten.
+       (parse_strings) Rewritten.
+       (find_DO_REPEAT_substitution) New function.
+       (perform_DO_REPEAT_substitutions) New function.
+       (copy_with_DO_REPEAT_substitutions) Removed.
+       (debug_print) Rewritten.
+
+       * set.q: Comment fix.
+       (custom_results) Removed compatibility code.
+       (internal_cmd_set) Removed SET EMULATION subcommand.  Removed
+       compatibility code.
+
+       * sysfile-info.c: (cmd_display) Removed compatibility code.
+
+       * tokens.h: Comment fixes.
+       (token types enum) Removed `toktype' typedef name for this int
+       type.  Removed SUBST.  Restructured.
+
+       * vars-atr.c: (discard_variables) Sets n_lag to 0.
+
+       * vars-prs.c: Comment fix.
+
+       * vfm.c: Comment fixes.
+       (glob var n_lag) New var.
+       (static vars lag_count, lag_head, lag_queue) New vars.
+       (procedure) Removed argument nlag.
+       (setup_lag) New function.
+       (close_active_file) Discards lagging state.
+       (lag_case) New function.
+       (lagged_case) New function.
+       (write_case) Lags a case if lagging.
+
+       * weight.c: (cmd_weight) Removed compatibility code.
+       
+Sun Aug 17 22:34:40 1997  Ben Pfaff  <blp@gnu.org>
+
+       * getline.h: (struct getl_script) New members loop_index, macros.
+
+       * getline.c: (getl_add_file) Sets first_line field to NULL.
+       (getl_add_DO_REPEAT_file) New function.
+       (handle_line_buffer) When the current line's length is negative,
+       set the filename and line number.  Increment line number after
+       reading line.  Pass the line to
+       copy_with_DO_REPEAT_substitutions() for processing.
+       (getl_close_file) Free DO REPEAT lines before freeing the
+       filename, and just set the filename to NULL when doing this,
+       because otherwise the filename gets freed twice.
+
+       * glob.c: (glob var queuing) Removed.  All references removed.
+
+       * lexer.c: Comment fixes.
+       (get_token_representation) New function.
+
+       * repeat.c: Comment fixes.
+       (struct repeat_entry) Replaced type and v union members with a
+       simple string.
+       (append_record) New function.
+       (internal_cmd_do_repeat) Started reforming it for the new
+       repeat_entry struct.  Properly records filename changes in the
+       getl_line_buf.  Fixed improper use of = for ==.  Fixed sense of
+       strncasecmp() result usage.  Uses append_record() to simplify.
+       Properly discards END REPEAT line.  Calls getl_add_DO_REPEAT_file
+       to add in the file.
+
+       (copy_with_DO_REPEAT_substitutions) Started coding.
+
+       [DEBUGGING] (debug_print_lines) New function.
+
+       * set.q: (custom_results, internal_cmd_set) s/VER_PCP40/VER_PC/;
+
+       * tokens.h: (macro is_id1, is_idn) New macros.
+
+Sat Aug 16 10:57:41 1997  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: (static var pre_syntax_message) Changed `win'
+       compatibility mode to `wnd'.
+
+       * data-list.c: (fixed_parse_spss) Renamed
+       fixed_parse_compatible().
+
+       * glob.c: (init_glob) Excise unused code for
+       program_invocation_short_name.
+
+       * lexer.c: (preprocess_line) Leading indentors are ignored in Wnd
+       as well as in X.
+
+       * print.c: (fixed_parse_spss) Renamed fixed_parse_compatible().
+
+       * set.q: `win' compatibility renamed `wnd'.
+
+Thu Aug 14 22:11:12 1997  Ben Pfaff  <blp@gnu.org>
+
+       * filename.c: [__WIN32__] Change the included Windows header files
+       (again).
+       (absolute_filename_p) [__MSDOS__] A filename with a colon as the
+       second character is absolute.
+       (dirname) Fix logic error.  Don't printf() the results.
+       (prepend_dir) Don't printf() the results.
+
+       * getline.c: (handle_line_buffer) New function.
+       (getl_read_line) Reads line with handle_line_buffer() when
+       appropriate.
+       (getl_close_file) Discard line buffer data.
+
+       * getline.h: Comment fixes.
+       (struct getl_line_list) New struct.
+       (getl_script_struct) Added line buffer members.  These are hooks
+       for use by DO REPEAT to allow it to insert virtual source code
+       into the program.
+
+       * glob.c: (init_glob) [__DJGPP__ || (__WIN32__ && __BORLANDC__)]
+       Override Borland C++ stupidity that claims Windows has a console
+       window size of 0x3.
+
+       * repeat.c: This is in the process of being restructured from
+       using a token-buffering approach to the DO REPEAT facility to
+       using the more flexible approach of a line-buffering approach in
+       conjunction with the getline module.  Comment fixes.
+       (struct tok_struct) Removed.
+       (static vars queue_index, queue_head, queue) Removed.
+       (static vars line_buf_head, line_buf_tail) New vars.
+       (internal_cmd_do_repeat) Instead of queuing tokens, queue lines.
+       Not complete.
+       (pull_queue, destroy_queue) Removed.
+       [DEBUGGING] (debug_print_tokens) Removed.
+
+Tue Aug  5 13:57:58 1997  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.q: (prepend_current_directory) New function.
+       (internal_cmd_file_handle, fh_get_handle_by_filename) Prepends
+       current directory before normalizing filename.
+
+       * filename.c: (gnu_getcwd) New function.
+       (absolute_filename_p) New function.
+       (search_path) New argument, PREPEND.  All references changed to
+       pass NULL except those explicitly mentioned.  Uses
+       absolute_filename_p().  Prepends PREPEND before trying the
+       filename.
+       (dirname, prepend_dir) New functions.
+
+       * getline.c: (getl_get_current_directory) New function.
+       (getl_include) Passes getl_get_current_directory() as PREPEND arg
+       to search_path().
+               
+Sun Aug  3 11:42:36 1997  Ben Pfaff  <blp@gnu.org>
+
+       * In several source files, the term `script' was replaced with
+       `syntax file' inside error messages.  Usage of the term `script'
+       in the sense of a syntax file is now deprecated.
+
+       * cmdline.c: (static vars pre_syntax_message, post_syntax_message)
+       Updated messages.
+
+       * dump-sysfile.c: (usage) Update message.
+
+       * getline.c: (getl_read_line) Ignore lines beginning with `#!'.
+
+       * getline.h: (glob var getl_include_path) Declare extern.
+
+       * list.q: Define EXTERN as extern before #including somP.h.
+
+       * var.h: Remove declaration of `disptype' variable.
+
+       * vfm.c: (close_active_file) After switching the data sink to a
+       data source, set vfm_sink to NULL, because it doesn't exist any
+       more.
+
+Thu Jul 17 21:41:44 1997  Ben Pfaff  <blp@gnu.org>
+
+       * glob.c: [__BORLANDC__] Include math.h.  Define _matherr() and
+       _matherrl() to ignore all math errors.
+
+       * sfm-read.c: (read_value_labels) When reading the labels from
+       disk, read the little parts separately instead of as a struct;
+       this avoids alignment problems.
+
+       * sfm-write.c: (struct sfm_fhuser_ext) New member `elem_type'.
+       (sfm_write_dictionary) Sets elem_type and frees it on lossage.
+       (write_header) Allocates and initializes elem_type.
+       (sfm_write_case) Uses elem_type to determine how to handle each
+       flt64 element.
+       (sfm_close) Frees elem_type.
+
+       * sfmP.h: Comment fix.
+       [__BORLANDC__] Uses #pragma -a to adjust structure member
+       alignment.
+       
+Thu Jul 17 01:55:12 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (fiasco_SOURCES) Remove display.c.
+
+       * common.c: Fix typo.
+
+       * dfm.c: (read_record) Remove strncasecmp() emulation and fix the
+       sense of the condition.
+
+       * expr-evl.c: (macro ALLOC_STRING_SPACE) [!PAGED_STACK] Add
+       line-continuation backslash.
+
+       * filename.c: [__WIN32__] Include <windef.h> before <winbase.h>.
+
+       * frequencies.q: (custom_grouped, add_percentile) Don't use a
+       non-constant expression as an argument to sizeof.
+
+       * glob.c: [__WIN32__ && __BORLANDC__] When including <conio.h>,
+       undefine gettext macro because that's a conio function.
+
+       * hash.h: (hsh_prime_tab declaration) Remove.
+
+       * list.q: (write_fallback_headers) Move `leader' allocation out of
+       main loop.  Change to local_alloc() allocation.
+
+       * output.h: Formatting fixes.  Put __attribute__ in right place on
+       function prototypes.
+
+       * sfm-read.c: (read_machine_flt64_info, read_variables) Change
+       incorrect `SECOND_LOWEST_VALUE' references to proper
+       `second_lowest_value'.
+
+       * som-frnt.c: (EXTERN macro) Define as `extern' instead of null
+       value.  This way 2 out of 3 of the som files define the vars
+       extern, the correct way, that actually works under BC++.
+       (som_set_float) Don't use nonconstant initializers for a struct.
+
+       * som-high.c: Add the standard alloca() header.
+       (replicate_table) Add prototype.
+
+       Merged DISPLAY routine.
+       * sysfile-info.c: (AS_*) New enum series.
+       (cmd_sysfile_info) Gutted.  Calls describe_variable() to do the
+       dirty work.
+       (cmd_display, display_macros, display_documents,
+       display_variables) Stolen from defunct display.c.
+       (describe_variable) New function.
+
+       * temporary.c: [0] (display_tree) New debug function.
+       (copy_variable) Performs shallow copy of value labels instead of
+       deep copy; i.e., just copys the AVL tree and increments the
+       reference counts.
+
+       * val-labs.c: Comment fixes.
+       (do_value_labels) Optionally skip leading forward slash.
+       (get_label) Creates only a single value label instead of many
+       copies of one, and sets the reference count.
+
+       * display.c: Removed.
+
+       * dump-sysfile.c: New file, not yet complete.
+
+Fri Jul 11 23:02:18 1997  Ben Pfaff  <blp@gnu.org>
+
+       For lots of source files I added more verbose_msg's.  These aren't
+       listed below as they have tested as being benign.  In some cases
+       these replaced debug_printf() calls.
+
+       * output.c: (outp_read_devices) Message fix.
+
+       * postscript.c: (output_encodings) Message fix.  Reports errors on
+       fclose().
+       (postopen) Message fix.
+       
+Fri Jul 11 14:09:40 1997  Ben Pfaff  <blp@gnu.org>
+
+       * dfm.c: (dfm_close) Don't call fclose() for a NULL FILE.
+
+       * filename.c: (close_file_ext) Set f->file to NULL *after* closing
+       it.
+
+       * main.c: Remove <malloc.h> #include.
+
+       * mis-val.c: (parse_numeric) Set .f member for each missing[]
+       instead of trying to just set the missing[] itself, which is a
+       gcc-specific idiom.
+
+       * sfm-read.c: (read_variables) Same.
+
+       * str.h: Add memmem() prototype.
+
+       * val-labs.c, var-labs.c: Replace <malloc.h> with <stdlib.h>.
+
+Thu Jul 10 22:13:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (q2c) Don't include any libraries in the link.
+
+       * dfm.c: (force_line_buffer_extension) New macro.
+       (count_tabs) New function.
+       (tabs_To_spaces) New function.
+       (read_record) Calls tabs_to_spaces() on the line being processed.
+
+       * q2c.c: Disabled i18n for this proglet so that libintl.a doesn't
+       have to be compiled twice (once for CC, once for LOCAL_CC).
+Sun Jul  6 19:14:33 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (INCLUDES) Add intl directory; fix directories.
+       (LDADD) Add @INTLLIBS@.
+       (q2c) Add LIBS, @INTLLIBS@ to link step.
+
+       * inpt-pgm.c: Turn off debugging.
+
+       * postscript.c: (postopen) Format fix.  local_free() blocks
+       returned by local_alloc(); don't free() them.
+
+Sat Jul  5 23:44:51 1997  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: (parse_string_as_format) Comment fix.  Fix check for
+       string length.
+
+       * data-list.c: (read_from_data_list_fixed) Pass proper value for
+       LEN arg, not simply the full string length.
+
+       * sort.c: (allocate_file_handles) Check SPSS compatible temp file
+       directories before generic temp file directories.
+
+       * vfm.c: Disable debugging.
+
+Fri Jul  4 13:26:41 1997  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: Comment fix.
+       (cmd_save_internal) Always passes GTSV_OPT_SAVE option.
+
+Wed Jun 25 22:52:28 1997  Ben Pfaff  <blp@gnu.org>
+
+       * expr-prs.c: (debug_print_postfix) Conditionally included on
+       GLOBAL_DEBUGGING.  Removed out_header() reference.
+
+       * exprP.h: Removed #undef GLOBAL_DEBUGGING.
+
+Sun Jun 22 22:00:28 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: Removed obsolete ascii_close_page() prototype.
+
+       * command.c: (output_line) Comment fix.
+
+       * data-in.c: Formatting fix.
+       (parse_string_as_format) Now the `fc' argument is used only for
+       the purpose of error messages; it is not an index into the string
+       passed.  All references changed.
+
+       * data-list.c: Comment fix.
+       (cut_field) Comment fix.  Now returns the column number of the
+       position of the field cut out on success.
+       (parse_field) Added `column' argument.  Puts the column numbers in
+       the error message.
+       (read_from_data_list_free, read_from_data_list_list) Record the
+       column number returned by cut_field(), pass it to parse_field().
+
+       * dfm.c: Comment fix.
+
+       * do-ifP.h: Comment fix.
+
+       * expr-prs.c: (SYSMIS_func) Implemented string-type arguments for
+       the SYSMIS function.
+
+       * expr.h, exprP.h: Comment fix.
+
+       * glob.c: (init_glob) Only calls setlocale() and family if
+       ENABLE_NLS set.
+
+       * hash.h: Comment fix.
+
+       * include.c: Comment fix.
+
+       * output.c: Comment fix.
+
+       * postscript.c: (ps_line_intersection) Simplified assertion.
+
+       * repeat.c: Comment fix.
+
+       * vars-atr.c: Comment fix.
+
+       * vars-prs.c: Comment fix.
+
+       * vfm.c: (vector_initialization) [DEBUGGING] Fixed undefined
+       behavior with usage of postincrement.
+       (memory_stream_read) Discards cases as it goes. 
+
+Sun Jun 15 16:45:17 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Cleans q2c, not just distcleans it.  Distcleans
+       foo.
+
+       * Most source files: Includes debug-print.h, related comment
+       fixes.
+
+       * cases.c: (alloc_val) Removed complex allocation code.  Merely
+       increments default_dict.nval and returns the former value.
+       (envector, devector) Removed references to lv member of struct
+       variable.
+
+       * common.h: (macro VME) Replaced complex definition with simple
+       one.
+
+       * data-list.c: (cmd_data_list) Sets vfm_source instead of
+       read_active_file and cancel_input_pgm.
+       (read_from_data_list, cancel_data_list) Removed.
+       (data_list_source_read, data_list_source_destroy_source) New
+       functions.
+       (glob var data_list_source) New var.
+
+       * dfm.c: (open_file_r, open_file_w) Simplified debug output.
+       (cmd_begin_data) Improved criteria for an input program accessing
+       the inline file.  Still not perfect.
+
+       * do-if.c: (do_if_trns_proc) Simplified debug output.
+
+       * expr-prs.c: Comment fixes.
+       [DEBUGGING] (debug_print_postfix) Simplified debug output.
+
+       * file-handle.q: (fh_close_handle) Simplified debug output.
+
+       * file-type.c: Comment fixes.
+       (cmd_file_type) Sets vfm_source instead of read_active_file and
+       cancel_input_pgm.
+       (cmd_end_file_type) On failure, discards variables in place of
+       just canceling the input program.
+       (read_from_file_type) Renamed file_type_source_read.
+       (cancel_file_type) Renamed file_type_source_destroy_source.
+       (glob var file_type_source) New var.
+
+       * get.c: (GTSV_* enum series) New enums GTSV_OPT_SAVE, GTSV_NONE.
+       (cmd_get) Initializes options to GTSV_NONE before passing to
+       trim_dictionary().  Removed `lv' reference.  Sets vfm_source
+       instead of read_active_file and cancel_input_pgm.
+       (cmd_save_internal) Initializes options before passing to
+       trim_dictionary().  Local var `nval' removed.
+       (dict_delete_run) Comment fixes.
+       (trim_dictionary) Comment fixes.  Disallows scratch variables if
+       GTSV_OPT_SAVE set in options.
+       (read_from_get) Renamed get_source_read.
+       (cancel_get) Renamed get_source_destroy_source.
+       (glob var get_source) New var.
+
+       * inpt-pgm.c: (cmd_input_program) Sets vfm_source instead of
+       read_active_file and cancel_input_pgm.
+       (read_from_input_program) Renamed input_program_source_read.
+       Simplified debug output.
+       (cancel_input_program) Renamed
+       input_program_source_destroy_source.
+       (glob var input_program_source) New var.
+
+       * loop.c: (loop_1_trns_proc) Simplified debug output.
+
+       * main.c: (dump_token) Made eof output more explicit.
+
+       * sfm-read.c: (read_variables, dump_dictionary) Removed `lv'
+       references.
+
+       * sort.c: (cmd_sort_cases) Disallows scratch variables.  Removed
+       code for always-memory or always-disk cases.  malloc's case-list
+       based on vfm_source_info.ncases.  Explicit support for
+       memory_stream via memory_source_cases.
+       (do_external_sort) Sets vfm_source instead of read_active_file and
+       cancel_input_pgm.
+       (allocate_file_handles) The temporary directory permissions are
+       set to 0700 instead of 0777.
+       (allocate_cases) Formatting fixes.  Simplified debug output.
+       (output_record) Compacts the case if necessary before writing it
+       out.
+       (close_handle, open_handle_w) Simplified debug output.
+       (write_initial_runs) Destroys vfm_sink, then sets it to
+       sort_stream.  Writes records to memory based on
+       vfm_sink_info.case_size.
+       (write_to_sort_cases) Renamed sort_stream_write().
+       (merge) Simplified error handling.  Simplified debug output.
+       Formatting fixes.
+       (read_from_external_sort) Renamed sort_stream_read().
+       Reads records based on vfm_source_info.case_size.
+       (sort_stream_write) Writes records to memory based on
+       vfm_sink_info.case_size.
+       (sort_stream_mode) New function.
+       (glob var sort_stream) New variable.
+
+       * temporary.c: (cmd_temporary) Simplified debug output.
+       (copy_variable) Removed references to `lv'.
+
+       * title.c: (get_title) Simplified debug output.
+
+       * var.h: Comment fixes.
+       (struct get_proc) Removed member `lv'.
+       (struct variable) Removed member `lv'.  Comment fixes.
+       (glob vars read_active_file, write_active_file, cancel_input_pgm)
+       Removed.
+       (struct case_stream) New.
+
+       * vars-atr.c: (discard_variables) Changed cancel_input_pgm,
+       read_active_file references to use vfm_source.
+       (init_variable, replace_variable) Removed references to `lv'.
+
+       * vfm.c: Comment fixes.
+       (glob var vfm_source, vfm_sink, vfm_source_info, vfm_sink_info)
+       New variables.
+       (static var queue, qh, qt, n_lag) Removed.  All references
+       removed.
+       (glob var compaction_necessary, compaction_nval, compaction_case,
+       paging) New variables.
+       (record_case) Removed.
+       (procedure) Comment fixes.  Calls vfm_source->read() instead of
+       read_active_file().
+       (lag) Removed.
+       (prepare_for_writing, arrange_compaction, make_temp_case,
+       vector_initialization, setup_filter) New function.
+       (open_active_file) Most of the code moved into the abovementioned
+       new functions.  Now sets temp_dict to &default_dict if there is no
+       temporary dictionary, for convenience.  New debug output.
+       (close_active_file) Deals with changing the sink to the source.
+       Calls finish_compaction().  Frees compaction_case.  Mostly
+       rewritten.
+       (glob vars disk_source_file, disk_sink_file) New vars.
+       (destroy_active_file, read_from_memory) Removed.
+       (disk_stream_init, disk_stream_read, disk_stream_write,
+       disk_stream_mode, disk_stream_destroy_source,
+       disk_stream_destroy_sink) New functions.
+       (glob var vfm_disk_stream) New var.
+       (glob vars memory_source_cases, memory_sink_cases,
+       memory_sink_iter, memory_sink_max_cases) New vars.
+       (memory_stream_init, memory_stream_read, memory_stream_write,
+       memory_stream_mode, memory_stream_destroy_source,
+       memory_stream_destroy_sink) New functions.
+       (glob var vfm_memory_stream) New var.
+       (write_case) Local var `i' renamed `cur_trns'; local var `retval'
+       named `more_cases'.  Simplified debug output.  Otherwise mostly
+       rewritten.
+       (record_case) Moved into the stream drivers.  Removed.
+       (transform) Removed (was dead code).
+       (SPLIT_FILE_procfunc) s/vfm_replacement/vfm_sink_info/.  In the
+       common case that the splits don't change, we don't need to copy
+       the case into prev_case again--pointless.
+       (compact_case) New function.
+       (finish_compaction) New function.
+
+       * vfmP.h: Comment fixes.
+       (DEV_* enum series) Removed. 
+       (struct storage) Renamed `stream_info'.  Removed variant record.
+       Removed `device' member.
+
+       * debug-print.h: New file.
+       
+Sun Jun  8 01:12:38 1997  Ben Pfaff  <blp@gnu.org>
+
+       * autorecode.c: Turned off debugging.
+
+       * data-list.c: (destroy_dls) Closes the associated file handle.
+
+       * descript.q: (custom_variables) Added PV_NO_SCRATCH to
+       parse_variables() options.
+
+       * dfm.c: (open_file_r) Removed gratuituous argument to msg() call.
+
+       * display.c: (display_variables) Really fixed null cell bug.
+
+       * file-handle.q: (fh_close_handle) Changed debugging message.
+
+       * frequencies.q: (custom_variables) Added PV_NO_SCRATCH to
+       parse_variables() options.
+
+       * list.q: Added PV_NO_SCRATCH in q2c varlist options.
+       (cmd_list) Fails if no variables specified.
+       (determine_layout) Writes blank lines manually.
+
+       * loop.c: (loop_1_trns_proc) Made debugging code only print
+       messages if debugging.
+
+       * q2c.c: (dump_subcommand) Appends sbc->message to SBC_VARLIST
+       parse_variables() arguments.
+       (main) Parses optional parenthesized options to varlist
+       subcommands into sbc->message.
+
+       * sfm-read.c: Format fix.
+
+       * var.h: (FV_*) New enum series.
+       (PV_*) New enum PV_NO_SCRATCH.
+
+       * vars-prs.c: (find_var) Removed.
+       (fill_all_vars) Takes FV_* enum instead of boolean third
+       argument.  Rewritten to deal with scratch as well as system
+       variables.
+       (parse_variables) Error message on scratch variable if
+       PV_NO_SCRATCH set.
+
+       * vfm.c: (static var virt_begin_func) New var.
+       (procedure) Sets up virt_begin_func.
+       (SPLIT_FILE_procfunc) For the first case, calls virt_begin_func()
+       after dump_splits().  For succeeding groups changes, calls
+       virt_begin_func() instead of begin_func().      
+
+Fri Jun  6 22:42:23 1997  Ben Pfaff  <blp@gnu.org>
+
+       * count.c, data-out.c, file-handle.q, list.q, loop.c: Turned off
+       debugging.
+
+       * dfm.c: Added some debugging messages, disabled by default.
+       (open_file_r) Fixed error message.
+       (read_record) On eof on inline_file, instead of calling
+       fh_close_handle(), simply jump to eof label like a normal file.
+       Message fixes.
+
+       * display.c: Thin lines between rows for certain kinds of
+       listing.  Fixed `null cell' bug.
+
+       * error.c: (failure) Flush stdout, stderr before failing.
+
+       * file-handle.q: (fh_close_handle) Added debugging message.
+
+       * frequencies.q: (dump_full) Bottom line extends across entire
+       table width.  Changed title formatting.
+       (dump_condensed) Changed title formatting.
+       (dump_statistics) Fixed title formatting.
+
+       * glob.c: (init_glob) Moved initialization of cur_proc out of #if.
+       Sets default value of set_format.
+
+       * list.q: (cmd_list) Calls blank_line() before determine_layout().
+       Passes write_all_headers() to procedure() as pre-group func.
+       (write_all_headers) New function.
+       (determine_layout) Removed calls to write_header().
+       Calls blank_line() before and after write_fallback_headers().
+
+       * recode.c: (recode_trns_free) Only attempts to free head->map if
+       non-NULL.
+
+       * sfm-read.c: (read_variables) Allows `#' at beginning of system
+       file variable names but gives a warning.  Sets `left' based on
+       first character being/not being `#'.  On lossage frees dict->var.
+
+       * som-high.c: (som_draw_title) Simplified title formatting.
+
+       * vfm.c: (dump_splits) Fixed and changed splits formatting.
+
+Thu Jun  5 22:51:15 1997  Ben Pfaff  <blp@gnu.org>
+
+       * autorecode.c: (cmd_autorecode) Sets h_trans to NULL at
+       beginning.  Frees v_src, v_dest on successful exit.  Frees
+       h_trans[*], h_trans on lossage.
+       (recode) Frees h_trans[*], h_trans.
+
+       * dfm.c: (dfm_close) Formatting change.
+       (open_inline_file) Now passed a dfm_fhuser_ext to initialize; no
+       longer allocates its own in inline_file.
+       (open_file_r) Passes the local dfm_fhuser_ext to
+       open_inline_file().
+       (open_file_w) Message fix. 
+       (read_record) Buffer reallocation strategy changed.  Frees
+       ext->line even in inline_file to prevent leaks.
+       (dfm_put_record) Fixed bug where `ext' was cached before the file
+       was opened and thus it would be NULL when the file really was
+       open.
+       (cmd_begin_data) Sets up inline_file basics itself, then calls
+       open_inline_file() for the dfm_fhuser_ext.  Formatting fix.
+
+       * list.q: (write_line) Formatting fix.
+       (clean_up) Minor strategy change.  Sets proportional font after
+       finishing cleanup.
+       (determine_layout) Sets fixed font before writing regular headers,
+       or after writing fallback headers.
+
+       * modify-vars.c: (cmd_modify_vars) Frees variable lists for DROP
+       and KEEP vars after using them.
+
+       * postscript.c: (ps_init_driver) Frees x->family.
+       (postopen) When loading fonts, free the temporary font name buffer
+       after using it.
+       (ps_text_set_font_by_position) Free temporary font name buffer
+       after using it.
+       (text) Fixed code that calculated `lig' so that `lig' always gets
+       initialized.  Formatting fix.
+
+       * som-low.c: (get_cell_size, som_get_table_size) `prop_height' ->
+       `font_height'.
+       [GLOBAL_DEBUGGIGN] (check_table) Use arena_alloc() to allocate
+       cells, not xmalloc(), so that the cells will get destroyed
+       automatically.
+
+       * sysfile-info.c: (cmd_sysfile_info) Frees the dictionary after
+       using it.
+
+Tue Jun  3 23:33:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (ascii_text_draw) Always sets metrics for strings that
+       are drawn.
+
+       * dfm.c: Comment fix.
+
+       * list.q: Comment fixes.  Include somP.h.  Removed static vars
+       table, n_columns, n_rows, part.  New struct list_ext.  New static
+       var line_buf.
+       (n_lines_remaining, n_chars_width, write_line) New functions.
+       (cmd_list, list_cases) Rewritten.
+       (begin_row, end_row, flush_table) Removed.
+       (write_header, clean_up, write_varname, write_fallback_headers,
+       determine_layout) New functions.
+
+       * output.c: (outp_iterate_enabled_drivers) Minor reformat.
+
+       * output.h: Comment fix.
+
+       * postscript.c: Comment fix.
+       (struct ps_driver_ext) Removed prop_size, fixed_size members;
+       added font_size.  All references changed.
+       (ps_init_driver) Initializes font_size.  Simplified space checking
+       code.
+       (static var option_tab[]) Removed prop-size, fixed-size; added
+       font-size.
+       (ps_option) Handles font_size.
+
+       * som-high.c: Moved prototypes into somP.h.
+       (som_init_driver) New function.
+       (som_submit_table) Moved some code into new function
+       som_init_driver().
+       (build_target) Moved some code into new function
+       som_internal_eject_page().
+       (som_eject_page) Uses som_internal_eject_page().
+       (som_internal_eject_page) New function.
+
+       * som-low.c: Moved prototypes into somP.h.
+
+       * som.h: Formatting fixes.
+
+       * somP.h: (struct som_driver_ext) Removed em_width;
+       added prop_em_width, fixed_width.
+
+Mon Jun  2 14:25:25 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added `localedir' definition.  Added
+       -DLOCALEDIR="..." to DEFS.  Added -I. to INCLUDES.
+
+       * ascii.c: (macro draw_line) Fixed capitalization.
+
+       * ascii.c, autorecode.c, cases.c, cmdline.c, command.c, common.c,
+       compute.c, count.c, data-in.c, data-list.c, data-out.c,
+       descript.q, dfm.c, display.c, do-if.c, error.c, expr-evl.c,
+       expr-opt.c, expr-prs.c, file-handle.q, file-type.c, filename.c,
+       formats.c, frequencies.q, get.c, getline.c, glob.c, groff-font.c,
+       hash.c, heap.c, include.c, inpt-pgm.c, lexer.c, list.q, loop.c,
+       main.c, mis-val.c, misc.c, modify-vars.c, numeric.c, output.c,
+       postscript.c, print.c, q2c.c, recode.c, rename-vars.c, repeat.c,
+       sample.c, sel-if.c, sfm-read.c, sfm-write.c, sfmP.h, som-frnt.c,
+       som-high.c, som-low.c, sort.c, split-file.c, sysfile-info.c,
+       temporary.c, title.c, tokens.h, val-labs.c, var-labs.c,
+       vars-atr.c, vars-prs.c, vector.c, vfm.c, weight.c: Marked strings
+       for internationlization.
+
+       * glob.c: [HAVE_LOCALE_H] Includes locale.h.
+
+Sun Jun  1 23:31:18 1997  Ben Pfaff  <blp@gnu.org>
+
+       * do-if.c, sort.c, val-labs.c: Comment fixes.
+
+       * glob.c: (init_glob) Uncommented, updated i18n support.
+       
+       * arena.c, ascii.c, data-in.c, descript.q, error.c, expr-evl.c,
+       expr-opt.c, expr-prs.c, filename.c, frequencies.q, groff-font.c,
+       output.c, postscript.c, sfm-read.c, som-high.c, vars-prs.c: Made
+       the declarations of macros taking arguments a lot nicer.
+
+Sun Jun  1 17:22:04 1997  Ben Pfaff  <blp@gnu.org>
+
+       * error.h: Removed CE, CW aliases for SE, SW.
+
+       * q2c.c: Removed explicit streq() definition since it's duplicated
+       in str.h.
+       
+       * approx.h, error.h, font.h, hash.h, misc.h, output.h, somP.h,
+       stats.h, str.h, tokens.h: Made the declarations of macros taking
+       arguments a lot nicer-looking of <pinard@iro.umontreal.ca>.
+       Comment fixes.
+
+Sun Jun  1 12:02:06 1997  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: Comment fixes.
+       (pick_compat) Changed return type to int.  Now, instead of setting
+       glob var `compat' to the emulation, returns the emulation.  All
+       references changed.
+       (parse_command_line) Added terminating null to end of
+       `long_options' array definition.
+       (pre_syntax_message) Fixes.
+       (usage) Shows the default emulation in the syntax message by
+       calling pick_compat().
+
+       * getline.c: (getl_add_include_dir) Separates paths with
+       PATH_DELIMITER, not DIR_SEPARATOR.
+
+       * glob.c: (init_glob) Fixed references to DEFAULT_VER_PCP40,
+       DEFAULT_VER_WIN61, DEFAULT_VER_X40.
+
+       * output.c: (outp_configure_macro) Make earlier definitions for a
+       particular key override later ones for the same key.
+       
+Fri May 30 19:40:49 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: Comment fixes.
+
+       * output.c: (outp_get_paper_size)
+       s/STAT_OUTPUT_INIT_FILE/STAT_OUTPUT_PAPERSIZE_FILE/.
+       
+Sun May 25 22:34:07 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c, postscript.c, sfm-read.c, sfm-write.c, sort.c: Include
+       <errno.h>.  GNU libc 2 enforces this!
+
+       * command.c: (parse_cmd) Fixed problem with `else' clause being
+       paired with wrong `if'.  Comment fix.
+
+Fri May  9 16:53:52 1997  Ben Pfaff  <blp@gnu.org>
+
+       * getline.c: [!HAVE_LIBREADLINE] (read_console) Changed
+       blp_getline() to getline().
+
+       * output.c: (outp_eval_dimension) Changed the fix from last time;
+       there was no variable `a'.
+
+       * q2c.c: (get_line) Fixed boundary condition overrun bug.
+
+Mon May  5 21:58:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * output.c: (outp_evaluate_dimension) Fixed handling of negative
+       numbers having fractional parts.  Added case of a fraction without
+       a whole-number part.
+
+Fri May  2 22:08:05 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (ascii_text_get_font_position) Removed.
+
+       * expr.h, exprP.h: Disabled debugging.
+
+       * groff-font.c, postscript.c: Changed `groff' to `Groff' in
+       several places.
+
+       * output.h: (struct outp_class_struct) Removed
+       text_get_font_position method.  All references deleted.
+
+       * postscript.c: Big change here.  Fontmaps were completely
+       eliminated because of a change in philosophy.  Comment fixes.
+       (struct ps_fontmap, ps2dit_map, font_family, dit2family_map)
+       Removed.
+       (struct ps_driver_ext) `position', `fontmap', `prop_name',
+       `fixed_name' members removed.  New members `prop_family',
+       `fixed_family'.  `family' member changed to type char *.
+       (static var ps_fontmaps) Removed.
+       () Removed.
+       (ps_init_driver) Removed obsolete references, updated.
+       Initializes `translate_x', `translate_y', `scale'.  Doesn't read
+       fontmap, of course.  Refers to font names through internal_name
+       rather than subversive means.  Frees proper items.
+       (static var option_tab[]) Removed `fontmap-file' option; renamed
+       `fixed-font', `prop-font'.
+       (ps_option) Corresponds to option_tab[].
+       (read_fontmap, release_fontmap, ps_to_dit, compare_ps2dit,
+       hash_ps2dit, compare_dit2family, hash_dit2family, compare_family,
+       hash_family) Removed.
+       (postopen) Generates font names from family names.  Gets
+       PostScript font name properly.  New prologue file comment `!!!'
+       style.
+       (ps_open_page) Adds translate_x, translate_y to BP prologue
+       function; gives SF argument floating-point format.
+       (ps_text_set_font_by_name) Doesn't try to map PostScript->Groff
+       font name.  Doesn't change font family.
+       (ps_text_set_font_by_position) Generates Groff font name from font
+       family name instead of through table lookup.
+       (ps_text_set_font_by_family) Renamed `ps_text_set_font_family',
+       all references changed.  Reduced to simple string assignment.
+       (ps_get_font_name) Removed.
+       (ps_get_font_family) Reduced to string return.
+       (text) Doesn't save `position' since it no longer exists.  Ugly
+       kluge to save font family--fix soon?
+       (load_font) Removed PostScript name argument.
+       
+Thu May  1 14:58:59 1997  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: Comment fix.
+       (ps_open_page) Puts scale factor in PostScript output.
+       
+Sat Apr 26 11:49:32 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Distcleans q2c.
+
+Wed Apr 23 21:33:48 1997  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (delineate) Sets text size even if width is zero.
+
+       * command.c: Comment fix.
+       (static var cmd_table[]) Re-enabled EVALUATE command.
+       (parse_cmd) Lotsa comment fixes.  Fixed infinite loop in parsing
+       of comments in script files.  Now more liberal on criteria for
+       performing a state transition--if *anything* happened correctly,
+       not just if *everything* happened correctly.
+
+       * data-out.c: (convert_F) Comment fix.  Why in the fsck does
+       Checker segfault on formatting large numbers and why in the fsck
+       hadn't I noticed this before?
+
+       * expr.h, exprP.h: No longer turn off GLOBAL_DEBUGGING.
+
+       * list.q: (cmd_list) Commented out the actual output routine
+       because of various problems.  Probably will abandon the idea of
+       using the general `crushed tables' for the LIST procedure.
+
+       * temporary.c: (restore_dictionary) Sets var_by_name to NULL after
+       clearing it.  Allocates a new var_by_name dictionary before trying
+       to add members to it.
+
+       * vars-atr.c: [DEBUGGING] (dump_one_var_node) Removed argument
+       `sib'.  Changed type of `node' argument.
+       [DEBUGGING] (dump_var_tree) Replaced avlwalk() with
+       avl_walk_inorder().
+       (clear_variable) Only dumps the var tree if var_by_name non-NULL.
+       [DEBUGGING] Only deletes the variable from var_by_name if that var
+       non-NULL.
+
+Fri Apr 18 16:48:41 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added include files to SOURCES.  Added
+       frequencies.q to EXTRA_DIST.  Removed include/ from INCLUDES.  Now
+       includes rules for q2c.  Added `boast' target.
+
+Fri Apr 18 15:42:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Maintainer-clean Makefile.in.
+       
+       * Makefile.am: Fixed redundant EXTRA_DIST line.
+
+       * ascii.c: Comment fixes.
+       (ascii_line_vert) Fixed overly aggressive range check.
+
+       * display.c: Removed dead code.
+
+       * list.q: Turn debugging on.
+       (flush_table) New debug code.
+
+       * sfm-read.c: (read_value_labels) malloc's the structure before
+       trying to assign to its members.
+
+       * sfm-write.c: Comment fix.
+
+       * som-high.c: (som_submit_table) Sets som.t and som.d on each call
+       to output_table().
+       (output_table) No arguments anymore--gets them through `som'
+       global.  New debug code.  In crushed tables, now sets `htv' as
+       well as `hv' to avoid bad confusion later.
+       (dump_crush_page) New debug code.
+
+       * som-low.c: (som_dump_crush_page) New debug code.
+
+Thu Mar 27 01:11:29 1997  Ben Pfaff  <blp@gnu.org>
+
+       All source files: Broke long lines into multiple lines.
+       
+       * ascii.c: (ascii_close_page) Uses host_system var in place of
+       HOST_SYSTEM constant.
+
+       * cmdline.c: (var syntax_message[]) Broke into
+       pre_syntax_message[] and post_syntax_message[].
+       (usage) Outputs both parts, separated by driver list.
+
+       * error.h: Fixed broken formatting.
+
+       * expr-opt.c: (str_search, str_rsearch) New functions.
+
+       * misc.c: (blp_getdelim) Removed.  All references changed to
+       `getdelim'.
+       (str_search, str_rsearch) Removed.
+       (memrmem) New function.
+
+       * misc.h: (blp_getline) Removed.  All reference changed to
+       `getline'.
+
+       * stat.h: New file.
+
+       * filename.c: Includes "stat.h", not <sys/stat.h>.
+       (blp_getenv) Uses host_system var instead of HOST_SYSTEM constant.
+
+       * output.c: (outp_list_classes) Changed output formatting.
+
+       * sfm-write.c: (write_header) Uses host_system var instead of
+       HOST_SYSTEM constant.
+       (write_rec_7_34) Extracts version numbers from the version string.
+       Untested.
+
+       * sort.c: Includes "stat.h", not <sys/stat.h>.
+
+       * str.c: (strcasecmp) Removed.
+
+       * title.c: (cmd_document) Uses host_system var instead of
+       HOST_SYSTEM constant.
+
+       * version.c: Generated on-the-fly by the Makefile instead of being
+       static.
+
+       * str.h: Comment fixes.  Doesn't substitute for missing memmove or
+       memcpy.
+       [!HAVE_STRNCASECMP] Declares strncasecmp().
+
+       * version.h: Removed stray character.  Comment fixes.
+       (vars host_system, build_system) New vars.
+
+Mon Mar 24 21:47:31 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Most source files: Changed formatting of copyright notice; fixed
+       FSF address; reformatted to better conform to GNU standards;
+       comment fixes.  Added markups to prevent GNU indent from messing
+       up my beautiful formatting :-).
+       
+       * q2c.c: (get_line) Ignores lines that begin with `/* *INDENT' so
+       that GNU indent markups can be passed through without problems.
+
+Wed Feb 19 21:30:31 1997  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: Turned off debugging.
+
+       * glob.c: (init_glob) Turned on save-file compression by default.
+
+       * sfm-write.c: (sfm_write_case) Fixed bug which resulted in less
+       compression than was possible in save files.
+
+Sun Feb 16 20:57:20 1997  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c: (convert_F) Comment fixes.  Debug message fixes.
+
+       * frequencies.q: Removed Fiasco extensions.  Updated calculation
+       algorithms.  Polished output format. 
+       (struct frq_info_struct) Removed members `max_degree', `min_n',
+       all references removed.
+       (macro frq_extensions) Removed.
+       (static vars min_n, max_degree) Removed, all references removed.
+       (internal_cmd_frequencies) Doesn't handle extensions.  Doesn't
+       calculate `min_n', `max_degree'.
+       (postcalc) Passes new arg to dump_statistics().
+       (dump_full) Honor NOLABEL option.  Buggy?  Adds variable name
+       title.
+       (dump_condensed) Adds variable name title.
+       (sum_freqs) Removed.
+       (calc_stats) Updated calculation algorithm.
+       (dump_statistics) Removed warning for too-few observations.
+       Changed table formatting.  Adds variable name title if passed new
+       arg is nonzero.
+
+       * output.h: Comment fix.
+
+       * recode.c, sample.c, sort.c: Disabled debug code.
+
+       * som-frnt.c: (som_set_value, som_set_float, som_set_text)
+       Improved debug code.
+
+       * var.h: (enum series frq_*) Removed Fiasco extensions.
+
+Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added PROCESS IF to command table.
+
+       * Lots & lots of places, removed checks for NULLs preceding calls
+       to free_expression(), which itself checks.
+
+       * descript.q: Removed Fiasco extensions.  Removed optimizations
+       for non-weighted active files.  Implemented some options.
+       Finished polishing output format.  Comment fixes.  Merged
+       `descript.g'.
+       (static vars n_glob_miss_list, n_glob_valid, n_glob_missing,
+       max_degree, min_n) Removed.
+       (macro dsc_extensions) Removed.
+       (struct dsc_info_struct) Removed `min_n' member, all references
+       fixed.
+       (internal_cmd_descriptives) Removed calculation of min_n,
+       max_degree.  Only deals with one `calc' routine instead of two
+       flavors.
+       (precalc) Eliminated redundancy.  Updated for changes to
+       descriptives_proc structure.
+       (calc) Moved here from `descript.g'.  Rewritten to calculate
+       statistics via `moments about the mean' rather than by summing,
+       summing squares, summing cubes, and so on.
+       (postcalc) Rewritten for new-style statistical calculation.
+       (display) Removed support for displaying variables across rows.
+       No longer crushes the descriptives table.  Removed ancient code.
+       Added display of N, by variable and listwise.
+
+       * descript.g: Removed; merged into `descript.q'.
+
+       * expr-evl.c: (evaluate_expression) Now returns a double.  For
+       numeric results, it returns the result as well as storing it in
+       the passed `value' structure if non-NULL.  For string results it
+       just returns 0.0 and it must be passed non-NULL.  Many references
+       to this function were optimized by use of this change, especially
+       but not exclusively in `compute.c'.
+
+       * frequencies.g: Comment fix.
+
+       * glob.c: (glob var process_if_expr) New global var.
+
+       * postscript.c: (static var option_tab[]) Corrected entry for
+       `fixed_size'.
+       (postopen) Sets x->size to x->prop_size.
+       (ps_text_set_font_by_name) Sets font size as well as typeface for
+       PROP and FIXED fonts.
+       
+       * sel-if.c: (cmd_process_if) New function.
+
+       * sfm-write.c: (struct sfm_fhuser_ext) New member `n_cases'.
+       (sfm_write_dictionary) Sets `n_cases' to 0.
+       (sfm_write_case) Increments `n_cases'.
+       (sfm_close) Attempts to seek the system file back to the header
+       and write the number of cases in its proper slot.
+
+       * som-frnt.c: (som_insert_table) Masks off expansion options since
+       only SOPT_X_NORM seems to work sensibly.
+
+       * som-low.c: (get_cell_size) Fixed bug when a table cell was sized
+       with a `fixed' value of 2.
+
+       * sort.c: (cmd_sort_cases) Cancels PROCESS IF.
+
+       * sysfile-info.c: (cmd_sysfile_info) Doesn't display more than 10
+       value labels; uses SOPT_NONE instead of SOPT_X_BOTH.
+
+       * var.h: (enum series dsc_*) Removed Fiasco extensions.
+       (struct descriptives_proc) Removed `miss_noweight'; new members
+       `X_bar', `M2', `M3', `M4', `min', `max'.
+
+       * vars-atr.c: (discard_variables) Cancels PROCESS IF.
+
+       * vfm.c: (close_active_file) Cancels PROCESS IF.
+       (write_case) Doesn't process cases unselected by PROCESS IF.
+
+Fri Feb 14 23:32:58 1997  Ben Pfaff  <blp@gnu.org>
+
+       * glob.c: (glob var err) Removed.
+
+       * sysfile-info.c: (cmd_sysfile_info) When adjusting table size,
+       doesn't have to take into account number of value labels since
+       they're in a subtable anyway.  Also, doesn't display more than 10
+       value labels since we can't yet break pages in subtables.
+
+Tue Feb  4 15:15:50 1997  Ben Pfaff  <blp@gnu.org>
+
+       * som-frnt.c: (som_change_table_size) Simple change for elegance
+       that shouldn't change behavior.
+       (som_set_value) Comment fix.
+
+       * som-high.c: (som_submit_table) Message fix.
+
+Wed Jan 22 21:54:00 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added SYSFILE INFO to command table.
+
+       * file-handle.q: (fh_handle_filename) New function.
+
+       * get.c: (save_trns_proc) Fixed a bug in padding of output data
+       with spaces.
+
+       * main.c: (parse) New return value for command functions, -3.
+
+       * misc.h: Comment fix.
+
+       * output.h: Comment fixes.
+       (macro COMPONENTS) Removed.
+
+       * postscript.c: (write_text) Modified literal_chars[] so that `('
+       and ')' are not written to the output in strings as literals.
+
+       * sfm-read.c: (sfm_read_dictionary) New argument.
+       (read_header) New argument.  Sets the information structure's
+       values from the header information.  
+       (read_variables) [__CHECKER__] Redefines isalnum()--some sort of
+       bizarre Checker problem, I guess.
+       (read_variables) Proper cleanup on lossage.
+
+       * sfm.h: (struct sfm_read_info) New struct for use by
+       sfm_read_dictionary().
+
+       * som-frnt.c: (som_create_table) New argument CREATE_FLAGS,
+       currently used just for tables that can be dynamically resized and
+       thus have to be allocated with arena_malloc() instead of
+       arena_alloc().  All references changed.
+       (som_change_table_size) New function.
+       (som_insert_table) Bugfix: now inserts `cell', not `c'!
+
+       * som-high.c: [GLOBAL_DEBUGGING] (check_table) Moved to som-low.c.
+       (som_submit_table) [GLOBAL_DEBUGGING] Doesn't call check_table()
+       any more.
+
+       * som-low.c: (draw_cell) Calls draw_table_cell() for SCON_TABLE
+       cells.
+       (draw_intersection) Now takes an argument specifying the table in
+       question.  All references changed.
+       (draw_table_cell) New function.
+       (som_get_table_size) [GLOBAL_DEBUGGING] Calls check_table().
+       (som_get_table_size) Many nice new explanatory comments.
+       [GLOBAL_DEBUGGING] (check_table) Moved here from som-high.c.
+
+       * som.h: New enum series SOM_CREATE_* for use as create flags with
+       som_create_table().
+
+       * str.h: Moved a comment here from TODO.
+
+       * sysfile-info.c: New file.  Reference implementation.
+
+Sun Jan 19 14:22:11 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added RENAME VARIABLES to table of commands.
+
+       * data-in.c: (dls_error) Sets `cust_field'.
+       (parse_N) Message fix.
+       (parse_day_count) New function.
+       (to_roman) Never outputs VX as a `short form' of V.
+       (parse_month) Fixed parsing of Roman numerals.
+       (parse_trailer) Message fix.
+       (parse_DATE, parse_ADATE, parse_EDATE, parse_SDATE, parse_JDATE,
+       parse_QYR, parse_MOYR, parse_WKYR, parse_DTIME) Issue a message if
+       the date is invalid.
+       (parse_SDATE) Fixed swapped day, year.
+       (parse_JDATE) Fixed bug for dates in 1582.
+       (parse_DTIME) Allows days not between 1 and 31.
+       (parse_numeric) Makes local copy of f.type for easier usage.
+       FMT_DOLLAR fixed.
+
+       * data-out.c: (convert_F) When outputting as scientific, properly
+       sets f.type as fp->type.
+       (insert_commas) Fixed operator precedence problem with setting of
+       nitems.  Changed strcpy to memcpy (no null terminator). 
+       (convert_date) Fixed FMT_JDATE: added 1900 to year.
+       (convert_CCx) Essentially rewritten, but now it works.
+
+       * display.c: (cmd_display) Added DISPLAY FILE LABEL (undocumented
+       feature of Fiasco).
+       (display_documents) Implemented.
+
+       * error.c: (glob var cust_field) New var.
+       (vmsg) Displays cust_field as part of message classes DE and DW.
+
+       * formats.c: (debug_print) Fixed to compile under updated
+       dictionary format.
+
+       * get.c: (cmd_get, cmd_save_internal) Close file handle on
+       failure.
+
+       * misc.c: (parse_format_specifier) Formatting fix.
+
+       * modify-vars.c: (struct var_modification) Renamed `n_reorder' as
+       `n_rename' for clarity.
+       (cmd_modify_vars) Initializes `forward' and `positional' at
+       appropriate times.  Frees lists of vars to rename on failure.
+       Comment fix.  Frees memory on success.  
+       (rearrange_dict) Simplified `for' loop condition.
+
+       * rename-vars.c: New file (reference implementation).
+       
+       * set.q: (internal_cmd_set) Fixed `emu' test condition.
+
+       * sfm-read.c: (read_header) File label is created only if file
+       label in file is not blank.
+       (read_variables) Initializes `dict' local variable.
+       (read_documents) Proper behavior on lossage.
+
+       * sfm-write.c: (write_header) Doesn't blank out the file label
+       (why was this here to begin with?!)
+
+       * temporary.c: (save_dictionary) File label is copied only if
+       non-NULL.  Doesn't try to xstrdup() dictionary documents.
+       Adapted so as to not irritate Checker.
+       (free_dictionary) Only destroys var_by_name if non-NULL.
+
+       * title.c: (cmd_file_label) Doesn't skip FILE, LABEL tokens.
+       (cmd_document) Doesn't skip DOCUMENT token.  Adds some header
+       lines to the document, indents the document.  Also, it works now.
+       (add_document_line) New function.
+
+       * var.h: (struct dictionary) Reordering.
+
+       * vars-prs.c: (parse_variables) On lossage, only local_free()'s
+       bits if it was allocated to begin with.
+
+Thu Jan 16 13:08:57 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added MODIFY VARS to list of commands.
+
+       * configure.in: Updated custom macros for autoconf 2.12.  Removed
+       mmap reference; fixed termcap library reference.
+
+       * display.c: (display_variables) Fixed a few bugs although it's
+       still not well written.
+
+       * error.c: [!__CHECKER__] (chkr_disp_call_chain) New function.
+       (induce_segfault) Calls chkr_disp_call_chain() instead of
+       inducing an actual SIGSEGV.
+
+       * expr-opt.c: (evaluate_tree) Swapped order of arguments to
+       str_search() and str_rsearch().  Fixed tests for matches on
+       OP_INDEX and OP_RINDEX.
+
+       * filename.c: (good_getcwd) Removed as the new libc for Checker
+       doesn't contain this bug, apparently.
+
+       * misc.c: (str_search, str_rsearch) Changed order of arguments for
+       consistency with GNU memmem.
+       (blp_getdelim) Changed `len' from `int' to `size_t'.
+
+       * modify-vars.c: Reference implementation.
+
+       * som-frnt.c: (zero_length) New global var.
+       (som_create_table) Message fix.
+
+       * som.h: Added gcc attributions to som_set_text(),
+       som_output_text() prototypes.  blank_line() refers to
+       zero_length[] instead of a literal null string to suppress gcc
+       warnings.
+
+       * sort.c: (do_external_sort) Fixed fencepost error on lossage.
+       (allocate_cases) Decrements x_max so the last element of x[] can
+       be used by the algorithm.
+
+       * var.h: Changed minor details of `variable' declaration.  
+       (struct modify_vars_proc) New struct.
+       (struct variable) Added field p.mfv.
+
+       * vars-atr.c: Comment fix.
+
+       * vars-prs.c: (fill_all_vars) More optimal implementation.
+
+       * vfm.c: (dump_splits) Sets the last byte of temp_buf to a null
+       character, which it shouldn't have to do but printf() seems to
+       read the null byte even though I supply a maximum length...
+
+Fri Jan 10 20:22:08 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Removed command alias X for QUIT.
+       (parse_cmd) Fixed comment parsing.
+
+       * dfm.c: (struct dfm_fhuser_ext) Fields `len', `size' are now of
+       type size_t.
+       (read_record) Fixed references to len, size.
+       (dfm_get_record) Restructured.
+
+       * file-handle.h: (struct file_handle) Field `lrecl' now of type
+       size_t.
+
+       * file-handle.q: (internal_cmd_file_handle) Checks for nonpositive
+       record length.
+
+       * modify-vars.c: New file.  Not complete.
+       
+       * set.q: (set_ccx) Fixed operator precedence problem regarding ^
+       and ==.
+
+       * sfm-read.c: (bswap_flt64, read_header, write_variable) Fixed
+       problems caused by int/size_t differences.
+
+       * sort.c: (output_record, merge_once) Cast `size_t's to `int's in
+       appropriate spots.
+
+       * str.c: (strcasecmp) Fixed bug that cropped up when the strings
+       being compared were of equal length.
+
+Thu Jan  2 19:08:23 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added DOCUMENT, DROP DOCUMENTS, FILE LABEL.
+
+       * lexer.c: (get_dotted_rest_of_line) New function.
+
+       * sel-if.c: (cmd_filter) Cannot choose string or scratch variables
+       as filters.
+
+       * sfm-read.c: (sfm_read_dictionary) Calls read_documents() to read
+       type 6 records.  Frees the dictionary properly.
+       (read_header) Initializes the dictionary instead of letting
+       read_variables() do it.  Sets the dictionary file label from the
+       system file.
+       (read_documents) New function.
+
+       * sfm-write.c: (sfm_write_dictionary) Calls write_documents() to
+       write type 6 record if appropriate.
+       (write_header) Writes file label from dictionary.
+       (write_documents) New function.
+
+       * temporary.c: (save_dictionary, restore_dictionary,
+       free_dictionary) Properly handle new fields in dictionary struct.
+
+       * title.c: (get_title) Returns after failure().
+       (cmd_file_label, cmd_document, cmd_drop_documents) New functions
+       for new commands FILE LABEL, DOCUMENT, DROP DOCUMENTS.  Untested.
+
+       * var.h: (struct dictionary) New fields `label', `n_documents',
+       `documents'.
+
+Wed Jan  1 22:08:10 1997  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added FILTER to list of commands.
+
+       * frequencies.g: [WEIGHTING] Removed test for weighting!=-1 since
+       it's always true.
+
+       * get.c: (cmd_save_internal) Removed weighting code since it's now
+       handled by sfm-write.c.  Properly commented out debug code.
+
+       * glob.c: (glob var weighting) Removed.
+
+       * sel-if.c: Comment fixes.
+       (cmd_filter) New function.
+
+       * sfm-read.c: (struct sfm_fhuser_ext) New field `weight_index'.
+       (sfm_read_dictionary) Sets weighting variable direct in the
+       created dictionary now.  (Apparently we previously didn't support
+       weighting on GET?)
+       (read_header) Sets weight_index field in sfm_fhuser_ext from
+       header read from disk.
+
+       * sfm-write.c: (sfm_write_dictionary) Comment fix.
+       (write_header) Now sets the weighting in the header from the
+       passed primary dictionary instead of from the sfm_write_info.
+
+       * sfm.h: (struct sfm_write_info) Removed field `weight'.
+
+       * som-high.c: (dump_crush_table) Fixed a couple of assertions that
+       broke on boundary conditions.
+
+       * var.h: (struct dictionary) New fields `weight_var',
+       `weight_index', and `filter_var'.
+       (glob var weighting) Removed.  This is now part of struct
+       dictionary.  All references changed; the less mechanical changes
+       are described above.
+
+       * vars-atr.c: (find_dict_variable) New function.
+
+       * vfm.c: (static var filter_index) New variable.
+       (open_active_file) Initializes filter_index from default_dict.
+       (write_case) Calls proc_func() only if the filter variable is
+       nonzero; this implements FILTER behavior.
+
+       * weight.c: (static var weight_varname) Removed.
+       (cmd_weight) Modified default_dict instead of glob vars.
+       (update_weighting) Changed the signature to modify a dictionary
+       instead of glob vars.  Now returns the weighting variable.
+       (get_weighting_variable) Removed; its function is absorbed by
+       update_weighting().
+       (stop_weighting) Operates on a dictionary now.
+
+Wed Jan  1 17:00:59 1997  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: Removed debugging info from messages.
+       (do_external_sort) Cleans up after itself by deleting the
+       temporary directory on failure.  (On success it is deleted by the
+       input program.)
+       (allocate_cases) Removed debug code.  Added clean up code.
+       (output_record) Removed debug code.
+       (merge) Added code to close all the input files that are currently
+       open.  This is a likely location for bugs, because I'm not sure
+       about boundary conditions.  Removed an unnecesary heap_delete().
+       (merge_once) Removed input file "optimization" that in fact
+       screwed up the rest of the code.  Message and comment fixes.
+
+Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
+
+       * error.c: [__CHECKER__] (induce_segfault) Flushes output streams.
+
+       * heap.c: (heap_delete) New argument.
+
+       * sort.c: Finished implementation of external sort.
+
+       * vfm.c: (read_from_disk) Returns after a disk error.
+
+Sun Dec 22 23:10:39 1996  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: (static var state) Removed.
+       (static vars max_handles, tmp_basename, tmp_extname,
+       huffman_queue) New variables.
+       (do_external_sort) Moved most code to new functions.
+       Creates huffman_queue.
+       (allocate_file_handles, allocate_cases) New functions.
+       (static vars run_no, run_length, file_index, case_count) New
+       variables. 
+       (output_record) Returns success.  Now really writes to the output
+       file.
+       (begin_run, end_run) New functions.
+       (write_initial_runs) Returns success.  Initializes run_no to -1.
+       Calls begin_run(), end_run() at appropriate times.  Outputs debug
+       messages.
+       (write_to_sort_cases) Calls begin_run(), end_run() at appropriate
+       times.
+       (merge) New function.
+
+       * heap.c, heap.h: New files.  Hopefully in near-final form.
+
+Sat Dec 21 21:51:04 1996  Ben Pfaff  <blp@gnu.org>
+
+       * glob.c: Added write_active_file to global vars.
+
+       * sort.c: Several new miscellaneous static variables.
+       (cmd_sort_cases) Big comment fix.
+       (perform_case_2) Renamed `do_external_sort' and completely
+       rewritten.
+       (case_2_proc_func) Removed.
+       (output_record, write_initial_runs, write_to_sort_cases,
+       compare_record) New functions.
+
+       * vfm.c: [DEBUGGING] (index_to_varname) Excised bit rot.
+
+Tue Dec 17 18:57:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: (perform_case_2) Changed the method for allocation of
+       lots of memory--now allocates one case at a time in hopes that
+       more cases can be allocated with heavily fragmented memory.
+
+       * var.h: (write_active_file) New global var.
+
+       * vfm.c: (procedure, close_active_file, write_case,
+       SPLIT_FILE_procfunc) Now allow beginfunc, procfunc, and endfunc
+       arguments to procedure() to be NULL.  All references to
+       procedure() that made use of dummy functions were changed to NULL
+       functions.
+       (open_active_file) If write_active_file is non-NULL, the output
+       device becomes DEV_PGM (a new enum).
+       (close_active_file) Sets write_active_file to NULL.
+       (read_from_memory) Comment fix.
+       (record_case) Calls write_active_file() when the output device is
+       DEV_PGM.
+
+Sun Dec 15 15:32:16 1996  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: New file.
+
+       * autorecode.c: (cmd_autorecode) Fixed parsing of options.
+       Fixed checking for duplicate varnames.
+       (recode) xmalloc()'s the transformation instead of arena_alloc()'ing
+       it.
+       (autorecode_trns_free) Destroys hash tables for each recoding
+       specification.
+       (autorecode_proc_func) Compares NULL to *vpp instead of vpp.
+
+       * command.c: Added SORT CASES to cmd_table.
+       (null_func, null_int_func) Prototyped.
+
+       * descript.g: (calc_weight, calc_noweight) Computes own case
+       number now.
+       
+       * frequencies.q: (dump_statistics) Fixed problem with
+       too-few-cases warning message.
+
+       * get.c: (cmd_save_internal) Handles weighting properly.
+
+       * hash.c: (hsh_dump) Output format changed.
+       (force_hsh_insert) Actually works now, prototype changed.
+
+       * list.q: (static var case_num) New variable.
+       (cmd_list) Initializes case_num.
+       (list_cases) Increments case_num.
+
+       * var.h: Added definitions for SORT CASES.  Comment fixes.
+
+       * vfm.c: Some definitions moved to new file vfmP.h.  Comment
+       fixes.  `active' renamed vfm_active, `rep' renamed
+       vfm_replacement, all references changed.
+       (procedure) The procfunc no longer receives a case number.  All
+       references changed.
+       (write_case) Subtle reordering.
+       (SPLIT_FILE_procfunc) Counts cases differently.  Slightly less
+       redundant.
+
+       * weight.c: (get_weighting_variable) New function.
+
+       * vfmP.h: New file with definitions from vfm.c.
+
+Sat Dec 14 10:35:30 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (FILE_TYPE_okay) Commented out some tests because
+       they're clumsy and not yet needed.
+
+       * var.h: Most *_trns structures moved to their respective source
+       files.  Some were moved into a new file, do-ifP.h.  Comment fixes.
+       (union any_trns) Changed to a typedef for trns_header.
+       (struct input_program_pgm) Removed.
+
+       * vars-prs.c: (parse_variables) Only local_free()'s bits if it
+       was allocated in the first place.
+
+Fri Dec 13 21:30:53 1996  Ben Pfaff  <blp@gnu.org>
+
+       * autorecode.c: New file.
+       
+       * command.c: Added AUTORECODE to command table; re-enabled SET.
+
+       * data-out.c: (convert_F) Handles infinities and NaNs properly.
+
+       * error.c: (vmsg) Comment fixes.
+
+       * hash.c: Comment fix.
+       (hashpjw_d) New function.
+       (hashpjw) Reimplemented as call to more general function
+       hashpjw_d().
+       (internal_comparison_fn) Initializes pointers properly.
+       (hsh_sort) [GLOBAL_DEBUGGING] New debugging code.
+       (force_hsh_insert, force_hsh_find) New debugging wrapper
+       functions.
+
+       * main.c: (main) Message fix.
+
+       * output.c: (outp_read_devices) Message fix.
+
+       * set.q: Comment fixes.
+       (custom_results) Implemented Wnd/X form of subcommand.
+       (set_routing) New function.
+       (internal_cmd_set) Implemented ERRORS, MESSAGES.
+
+       * settings.h: (SET_ROUTE_*) New enum series.
+       (set_results) Renamed set_results_file, all references changed.
+       (set_messages) Removed.
+       (glob vars set_errors, set_messages, set_results) New vars.
+
+       * title.c: (get_title) Remembers to xstrdup() the result of
+       get_rest_of_line().
+
+       * var.h: (arc_item, arc_spec, autorecode_trns) New structures for
+       use by AUTORECODE.
+       (union any_trns) New element `arc'.
+
+Fri Dec  6 23:53:47 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (output_line) Removed references to set_screen.
+
+       * error.c: (static var terminating) New var.
+       (hcf) Sets terminating to 1.
+       (vmsg) If terminating is nonzero, does not attempt to call hcf().
+       This prevents an infinite loop if an error occurs within hcf().
+
+       * expr-evl.c: (evaluate_expression) [__CHECKER__] Replaced case
+       statement circumlocution with `case 42000' trick.
+       (evaluate_expression) New support for OP_STR_MIS.
+
+       * expr-opt.c: (evaluate_expression) [__CHECKER__] Replaced case
+       statement circumlocution with `case 42000' trick.
+       (dump_node) Handles OP_STR_MIS.
+
+       * expr-prs.c: (MISSING_func, SYSMIS_func) Rewrote to handle string
+       variables exceptions.
+       (parse_function) Message fix.
+       (ops[]) Added OP_STR_MIS.
+
+       * expr.h: Added OP_STR_MIS to OP_* enum.  Comment fixes.
+
+       * exprP.h: [__CHECKER__] Removed case statement circumlocution.
+
+       * glob.c: Removed set_scrnfile glob var.
+       (init_glob) set_errorbreak set to 0 by default.
+
+       * groff-font.c: Changed included files.
+       (groff_read_font) Initializes font_arena local var correctly.
+       (default_font) New function.
+
+       * output.c: Comment fixes.
+       (glob var disabled_devices) New variable.
+       [GLOBAL_DEBUGGING] (static var iterating_driver_list) New
+       variable.
+       [GLOBAL_DEBUGGING] (reentrancy) New function.
+       [GLOBAL_DEBUGGING] (outp_read_devices, outp_done, find_driver,
+       outp_iterate_enabled_drivers) Calls to reentrancy().
+       (destroy_list) New function.
+       (outp_done) Moved code to destroy_list().
+       (parse_options) Parses `listing', `screen', `printer' options
+       internally.
+       (configure_driver) Sets new `device' member of driver.
+       (outp_iterate_enabled_drivers, outp_enable_device) New functions.
+
+       * output.h: Comment fixes.  New enum series OUTP_DEV_*.
+       (struct outp_driver_struct) New member `device'.
+
+       * postscript.c: (find_encoding_file) Doesn't display its own error
+       messages.
+       (default_encoding) New function.
+       (switch_font) Calls default_encoding() if no encoding can be
+       found.
+       (text) Makes up a character metric if none exists for the desired
+       character.
+       (load_font) Properly copies a fallback filename.  Calls
+       default_font() for a font if none at all are known.
+
+       * set.q: Comment fixes.  Removed OUTPUT subcommand.
+       (custom_listing) Calls outp_enable_device() to enable/disable
+       listing device.
+       (turn_screen_on) Removed.
+       (internal_cmd_set) Calls outp_enable_device() to enable/disable
+       screen, printer devices.
+
+       * settings.h: Comment fixes.
+       (glob vars set_output, set_printer, set_screen, set_scrnfile)
+       Removed.
+
+       * som-high.c: (som_submit_table, som_eject_page) Use
+       outp_iterate_enabled_drivers() instead of iterating
+       outp_driver_list directly.
+
+Wed Dec  4 21:34:17 1996  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: (parse_EDATE, parse_SDATE) New functions.
+       (parse_string_as_format) Handles new formats.
+       (parse_numeric) Now handles DOT and PCT formats.
+
+       * data-out.c: (convert_E, convert_F, insert_commas) Handle DOT
+       format now.
+       (convert_date) Handle EDATE and SDATE formats.
+       (convert_CCx) Now if there's not room for the currency characters,
+       converts it as F format if it's positive instead of giving up
+       quickly.  Also fixed save-and-restore bug with decimal point
+       characters.  
+       (convert_format_to_string) Handles new formats.
+
+       * misc.c: (formats[]) Added new formats.
+       (convert_fmt_ItoO) Supports new formats.
+
+       * sfm-read.c: (parse_format_spec) Supports new formats.  Better
+       data checking.  New argument, all references changed.
+
+       * sfm-write.c: (write_format_spec) Supports new formats.
+
+       * var.h: New formats FMT_DOT, FMT_PCT, FMT_EDATE, FMT_SDATE.
+       Comment fixes.
+
+Sun Dec  1 17:19:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: Comment fixes.
+       (parse_command_line) Changed return type to void.
+
+       * data-in.c: (parse_string_as_format) Added FMT_CCA...FMT_CCE to
+       switch.
+       (parse_numeric) Handles international numbers (comma as decimal
+       point).  Some reformatting.
+
+       * data-list.c: (parse_free) Default output format is now
+       set_format instead of hard-coded F8.2.
+       (read_from_data_list_list) Emits error message on undefined data
+       only if set_undefined is nonzero.
+
+       * data-out.c: (convert_E) Changes decimal point from period to
+       comma if appropriate.  Restructured.  Better comments.
+       (convert_F) Changes decimal point from period to comma if
+       appropriate.
+       (insert_commas) Major bug with handling of negative values fixed.
+       Also, inserts periods instead of commas if appropriate.
+       (convert_CCx) New function.
+       (convert_format_to_string) Added FMT_CCA...FMT_CCE to switch.
+       (num_to_string) Changed `.' to set_decimal.
+
+       * dfm.c: Comment fixes.
+       (dfm_close) Frees ext->line even in inline_file.
+       (open_inline_file) New function.
+       (open_file_r) When opening the inline file: now properly
+       recognizes `BEGIN DATA.' line, and calls open_inline_file() to
+       finish up.
+       (read_record) Calls fh_close_handle() instead of dfm_close() to
+       close the inline file.  Makes a copy of the line getl_buf to avoid
+       interlock problems.
+       (dfm_get_record) Restructured.  Now checks the return value of
+       open_file_r().
+       (cmd_begin_data) Moved open code into open_inline_file().  Relaxed
+       checking for use of inline file.  No longer tries to close inline
+       file.
+
+       * error.c: (glob var error_already_flagged) New var.
+       (vmsg) Message change.  Now checks max number of errors/warnings,
+       acts on it.
+
+       * file-handle.q: (fh_handle_name) Now allows closing of
+       inline_file.
+       (fh_init_files) Reformatted.
+
+       * get.c: (trim_dictionary) Checks SCOMP option instead of COMP.
+
+       * getline.c: (getl_include) Fixed bug that popped up when called
+       when file queue was empty.
+       (read_console) Resets error_count, warning_count,
+       error_already_flagged to zero.
+
+       * glob.c: Many changes to update list of variables.
+       (init_compat_dependent) Now this function is called whenever
+       `compat' changes.  It now sets set_seed only if it hasn't
+       previously been referenced.  It now calls
+       lex_init_compat_dependent().
+
+       * include.c: (cmd_include_at) Frees temporary buffer instead of
+       line buffer.  
+       (cmd_include) Doesn't make copy of include file name.
+
+       * lexer.c: Comment fixes.
+       (init_lex) Moved some code into new function
+       lex_init_compat_dependent().
+       (lex_init_compat_dependent) New function.
+       (hex_val) Simplified.
+       (preprocess_line) Uses set_endcmd instead of hardcoding `.'.
+
+       * main.c: Comment fixes.
+       (main) Reformatted.
+
+       * misc.c: (formats[]) Added FMT_CCA...FMT_CCE.
+       (check_input_specifier) Disallows FMT_CCA...FMT_CCE.
+       (convert_fmt_ItoO) Detects FMT_CCA...FMT_CCE.
+       (setup_randomize) Sets set_seed_used.
+
+       * set.q: Comment fixes.
+       (custom_results) Conditionalizes on `compat'.
+       (custom_log) Calls custom_journal().
+       (set_ccx) New function.
+       (cmd_set) Calls init_compat_dependent() when `compat' changes.
+       Calls set_ccx() to handle CCA...CCE.  Sets set_grouping
+       when set_decimal changes.  Range-checks values for MITERATE,
+       MNEST.  Message fixes.
+
+       * settings.h: Comment fixes.
+       (struct set_cust_currency) New struct.
+       (set_cc[], set_grouping, set_seed_used) New global vars.
+
+       * var.h: (FMT_CCA...FMT_CCE) New output formats.
+       (FCAT_OUTPUT_ONLY) New FCAT_* constant.
+
+Thu Nov 28 23:14:07 1996  Ben Pfaff  <blp@gnu.org>
+
+       * glob.c: Revised variables to correspond to settings.h.
+       (init_glob) Initializes variables from settings.h properly.
+
+       * set.q: Began long-overdue major revision to correspond to new
+       philosophy.  Most code changed. 
+
+       * settings.h: Mostly changed; reorganized, reordered, large new
+       comment.
+
+Thu Nov 28 19:46:10 1996  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (cmd_save_internal) No longer forces compression off.
+
+       * sfm-read.c: (read_compressed_data) If eof is reached when
+       reading a new instruction octet, only signal error if we're in the
+       middle of a case.
+
+       * sfm-write.c: (COMPRESSION_BIAS) New #define.
+       (struct sfm_fhuser_ext) New member `end'.
+       (write_header) Refers to COMPRESSION_BIAS instead of magic 100.0.
+       (ensure_buf_space) New function.
+       (sfm_write_case) Reimplemented in order to support compression.
+       (sfm_close) Writes out the remaining contents of the compression
+       buffer if any.
+
+Wed Nov 27 23:18:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Defined SAVE and XSAVE commands in command table.
+
+       * common.h: second_lowest_value is of type flt64, not double.
+
+       * file-handle.h: Comment fix.
+
+       * get.c: Comment fixes.
+       (static var `trns') New.
+       (save_write_case_func, save_trns_proc, save_trns_free, null_func,
+       cmd_save_internal, cmd_save, cmd_xsave) New functions.
+       (dict_delete_run) Clears the variables and frees them now.
+       (trim_dictionary) Sets default for compression.
+       On KEEP subcommand, frees deleted variables as well as clearing
+       them.  Finally got the sense of the test for deleting all
+       variables correct.
+       [DEBUGGING] (dump_dict_variables) Message fix.
+
+       * glob.c: (init_glob) set_compression set to 1 by default.
+
+       * list.q: Properly #includes config.h.
+
+       * misc.h: New macro REM_RND_UP.
+
+       * settings.h: Comment fix.
+
+       * sfm-read.c: (structs sysfile_header, sysfile_format,
+       sysfile_variable; inline function bswap_int32) Moved to new file
+       sfmP.h.
+       (corrupt_msg) [__CHECKER__] No longer induces segfault.
+       (sfm_read_dictionary) Fixed bug caused by failing to initialize
+       var_by_index.
+       (read_machine_flt64_info) Fixed some problems caused by confusion
+       between flt64 and double types.
+       (read_header) Message fix.
+       (read_variables) Fixed set of cases in which we byte-swap sv.print
+       and sv.write.  Fixed confusion of flt64 and double.
+
+       * sfm.h: (struct sfm_write_info) New.
+
+       * som-high.c: (som_draw_title) Properly frees `s'.
+
+       * temporary.c: (save_dictionary) Comment fix.
+
+       * var.h: Comment fixes.  New FMT_* enum, FMT_NUMBER_OF_FORMATS.
+       (struct trns_header) Formatting fix.
+       (struct save_trns) New.
+
+       * vars-atr.c: (discard_variables) Comment fix.
+
+       * sfm-write.c: New file, baseline release.
+
+       * sfmP.h: New file, baseline release.
+
+Sun Nov 24 14:53:53 1996  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: (parse_command_line) `--version' output updated.
+       (glob var syntax_message[]) Added my e-mail address.
+
+       * file-handle.q, lexer.c, vfm.c: Changed many instances of
+       `illegal' to `invalid'.
+
+       * sfm-read.c: (struct sfm_fhuser_ext) New fields used as
+       uncompression buffer.
+       (sfm_close) Frees decompression buffer.
+       (sfm_read_dictionary) Initializes decompression buffer.
+       (buffer_input, read_compressed_data) New functions.
+       (sfm_read_case) Restructured; now calls read_compressed_data() to
+       handle compressed system file data.
+
+       * var.h: Comment fix.
+
+Mon Nov 11 15:34:09 1996  Ben Pfaff  <blp@gnu.org>
+
+       * dfm.c: (dfm_close) Does not set h->{ext,class} because the
+       caller handles it.
+        
+       * get.c: New comments.  New static var `get_file'.
+       (cmd_get) Now fully implemented.  Calls discard_variables();
+       initializes fv and lv for all variables; new debug code; sets
+       up the dictionary; sets up the input program.
+       (read_from_get, cancel_get) New functions.
+
+       * sfm-read.c: Comment fixes.
+       (sfm_close) New static function.
+       (sfm_read_dictionary) Properly sets up the class of the
+       file_handle.  No longer cares what size the data is in records of
+       type 7.  Also, on failure, properly cleans up the file_handle and
+       free()s some stuff.
+       (read_variables) No longer thinks it knows `nval' of the
+       dictionary.  Now sets p.get.fv, etc., instead of speculatively
+       setting fv itself.
+       (read_value_labels) Fixed off-by-one error in indexing of
+       var_by_index[].
+       (sfm_read_case) New function.
+       (sfm_r_class) New static var.
+
+       * var.h: (get_proc) New struct.
+       (struct variable) New member p.get.
+
+Thu Nov  7 20:52:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: Removed GTSV_OPT_MAP because of a misinterpretation of
+       the manual's meaning.
+       (rename_variables) New function.
+       (trim_variables) Doesn't try to parse MAP any more.  Removed debug
+       code.  Now properly reorders the dictionary on the KEEP keyword.
+
+       * sfm-read.c: (read_value_labels) Fixed some bugs regarding
+       garbage collection.
+
+       * vars-atr.c: (clear_variable) New argument `dictionary *'.
+       (rename_variable) New function.
+       (free_val_lab) Reformatted.
+
+Thu Nov  7 17:29:16 1996  Ben Pfaff  <blp@gnu.org>
+
+       * var.h: Reindented entire file.  Comment fixes.
+       (glob vars var, var_by_name, nvar, N, nval, n_splits, splits)
+       Removed.
+       (glob var default_dict) New.
+       (struct indirect_dictionary) Removed.
+
+       * Many other source files were changed to add `default_dict.'
+       before all references to the dictionary of the active file.
+       
+       * vars-atr.c: (make_indirect_dictionary) Removed.
+
+       * glob.c: Reindented all variable declarations.  Updated for
+       changed var.h.  Comment fixes.
+
+       * temporary.c: (restore_dictionary, save_dictionary) Simplified
+       because now we can mainly copy dictionary structs.
+
+       * vars-prs.c: (is_dict_varname, parse_dict_variable,
+       parse_variables) Takes dictionary instead of indirect_dictionary
+       first argument.
+       (parse_variables) Instead of calling make_indirect_dictionary,
+       just sets DICT to &default_dict if DICT is NULL.  Of course, lots
+       of `*dict.' references had to be changed to `dict->'.  Removed
+       debug code.
+
+Thu Nov  7 15:48:52 1996  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: Added GTSV_OPT_* series of enums.
+       (trim_dictionary, dict_delete_run) New functions.
+       [DEBUGGING] (dump_dict_variables) New function.
+       (cmd_get) Calls trim_dictionary() to get dictionary fully set-up.
+       [DEBUGGING] Calls dump_dict_variables() to display results.
+
+       * glob.c: (cmp_variable) Now a public function declared in var.h.
+
+       * sfm-read.c: Turned off debug code.  Comment fixes.
+       (read_machine_int32_info, read_machine_flt64_info) New functions
+       to parse type 7 records.
+       (sfm_read_dictionary) Properly byteswaps several fields now.
+       Calls read_machine_*_info() to parse type 7 subtypes 3 and 4
+       records.  [DEBUGGING] Dumps dictionary.
+       (read_variables) Sets `index' field of variables created properly.
+       Constructs avl tree of variables in dictionary.  [DEBUGGING] No
+       longer dumps dictionary.
+       (read_value_labels) Properly byteswaps fields.  [DEBUGGING] New
+       debug code.
+       [DEBUGGING] (dump_dictionary) No longer stubbed out.
+
+       * temporary.c: (restore_dictionary) Destroys `var_by_name' glob
+       var before destroying any variables just to save a little time.
+
+       * var.h: (struct variable) Reordered in order to make name[] the
+       first member; this makes pointers to `variable' pointers to the
+       variable name, simplifying avl trees, etc.
+       (struct indirect_dictionary) New struct.
+
+       * vars-atr.c: (find_variable) Rewritten for efficiency.
+       (make_indirect_dictionary, is_dict_varname, parse_dict_variable)
+       New functions.
+       (is_varname) Rewritten for efficiency.
+       (parse_variables) New argument, which is a `dictionary *'.  All
+       references changed.  This function now reads variable names from
+       the dictionary passed, or from the default dictionary if NULL.
+
+Tue Nov  5 18:34:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * misc.h: Added new macro DIV_RND_UP to perform integer division,
+       rounding up.  Changed many references to ROUND_UP to use this
+       instead.
+
+       * sfm-read.c: Includes avl.h.
+       (corrupt_msg) Induces a segfault under Checker.
+       (macro assertive_bufread) New.  Many references to bufread() now
+       use this instead.
+       (sfm_read_dictionary) Split up into several functions.  Added code
+       to read dictionary records following the the type 2 records.  Not
+       quite complete.  New variable `var_by_index'.
+       (read_header, read_variables) New functions extracted from
+       sfm_read_dictionary().
+       (read_value_labels) New function.
+       (bufread) Checks ferror() if fread() doesn't return the expected
+       value; if ferror() is zero it's just EOF.
+       (dump_dictionary) Stubbed out.
+
+       * BTW: The source code now exceeds 50000 lines!
+       
+Mon Nov  4 22:03:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added GET to cmd_table[].
+
+       * list.q: Removed reference to alloca headers.
+       (cmd_list) Gave prototype.
+
+       * sfm-read.c: Added DEBUGGING comments.
+       (sfm_read_dictionary) Checks bias correctly.  Sets
+       dict->var_by_name to NULL.  Calculates long_string_count
+       correctly.  realloc's dict->var[] array to minimum size.
+       [DEBUGGING] Calls dump_dictionary.
+       [DEBUGGING] (dump_dictionary) New function.
+
+       * temporary.c: (save_dictionary) Sets var_by_name to NULL.
+       (restore_dictionary) If the dictionary contains a non-NULL
+       var_by_name, uses that instead of generating one.
+       (free_dictionary) Destroys var_by_name.
+
+       * var.h: (struct dictionary) Added field `var_by_name'.
+
+       * get.c: New file, not complete.
+
+Sun Nov  3 12:24:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       * mis-val.c: New enums MV_NOR_*.  New struct num_or_range.
+       (parse_num_or_range) New function.
+       (parse_numeric) Reimplemented in order to support LOW THRU <n> and
+       <n> THRU HIGH missing values.
+
+       * output.h: [__GNUC__>1 && __OPTIMIZE__] (width, height) Made
+       __attribute__((const)).
+
+       * q2c.c: (get_token) Merged isdigit || isalpha into isalnum.
+
+       * sfm-read.c: Finished reference implementation.
+
+       * sfm.h: Includes var.h.
+
+       * var.h: Comment fixes.
+       (struct `variable') Reordered some fields.
+
+       * vars-atr.c: (is_num_user_missing) Added support for MISSING_*
+       constants added previously.
+
+Wed Oct 30 17:13:08 1996  Ben Pfaff  <blp@gnu.org>
+
+       * common.h: Comment fixes.  Added declaration of
+       `second_lowest_value' as variable or macro.  Made `compat_type',
+       `pgm_state_type' into anonymous enums.
+
+       * display.c: Comment fix.
+
+       * glob.c: [ENDIAN==UNKNOWN] Added definition for `endian' global
+       var.
+       [!defined SECOND_LOWEST_VALUE] Added definition for
+       `second_lowest_value' global var.
+       (compat, pgm_state global vars) Changed types to `int'.
+       (init_glob) Initializes `second_lowest_value'.
+
+       * sfm-read.c: Continued work, not complete.
+
+       * var.h: Added new MISSING_* constants to handle LOWEST and
+       HIGHEST.
+
+Sat Oct 26 23:06:06 1996  Ben Pfaff  <blp@gnu.org>
+
+       * sfm-read.c: New file, not complete.
+
+       * cases.c: (vec_insert) Changed vector expansion algorithm.
+       (vec_delete) Fixed bug that screwed up deletion sometimes, it was
+       mucking up the RECODE transformation in particular.
+       (envector) Harmless change in notation.
+
+       dfm is now fairly well tested again.  
+       * dfm.c: (dfm_get_record) Only returns ext->ptr if ext is
+       non-NULL--duh.
+       (cmd_begin_data) if(ext->line) replaced by if(ext && ext->line).
+
+       * recode.c: Comment fix.
+
+       * sfm.h: Interface should be fairly final now, or at least for a
+       day or so...
+
+       * vfm.c: [DEBUGGING] (index_to_varname) New function.
+       (open_active_file) [DEBUGGING] Translates ccase indices into
+       variable names now to make it easier to understand what's really
+       going on.
+
+Sat Oct 26 20:46:31 1996  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: Comment fix.
+
+       * data-list.c: Includes dfm.h.
+       (do_reading) Uses new function dfm_push_cust().
+
+       * data-out.c: (convert_time, convert_WKDAY, convert_MONTH) Added
+       `return 1;' at end.
+
+       * file-handle.h: Completely changed.  Some parts split off into
+       new file dfm.h.  Implemented in file-handle.q.
+       (enum FH_*) Removed.
+       (struct fh_ext_class) New struct.
+       (struct file_handle) Retained only these fields: name, norm_fn,
+       fn, recform, lrecl, mode.  New fields class, ext.
+       (get_handle_by_name, get_handle_by_filename, parse_file_handle,
+       close_handle, handle_name) Added `fh_' prefix to name, all
+       references changed.
+
+       * dfm.h: New file, implemented in dfm.c.
+       (get_record, put_record, fwd_record, bkwd_record, set_record,
+       get_cur_col) Functions moved from file-handle.h, now prefixed with
+       `dfm_'.
+       (dfm_push_cust) New function.
+
+       * sfm.h: New file.  Incomplete.
+
+       * dfm.c: All functions adjusted/rewritten for new dfm/fhp
+       interface.  Functions reordered, comments changed.  Not well
+       tested, probably full of bugs.
+       (struct dfm_fhuser_ext) New struct.
+       (dfm_close) New function.
+       (open_file_r) Pickier about finding `BEGIN DATA.' line.
+       (open_file_w) User messages changed.
+       (get_record) Comment fixed.
+       (read_record) Increments ext->ln even for inline_file.  Calls
+       dfm_close() for inline_file when `END DATA.' encountered.
+       (dfm_get_record) Experimental restructuring.
+       (dfm_push_cust) New function.
+       (cmd_begin_data) Detects whether the inline file was fully read by
+       checking whether it is still open; detects whether it was read at
+       all by checking whether the line number is greater than zero.
+
+       * file-handle.q: All functions adjust/rewritten for new dfm/fhp
+       interface.  Functions reordered, comments changed.  Not well
+       tested, probably full of bugs.
+       (init_file_handle) Removed initializers for obsolete fields, added
+       new fields.
+       (fh_close_handle) Much simpler, now mainly calls the class
+       function.
+       (fh_init_files) Renamed inline file internal filename.
+
+       * file-type.c: Includes dfm.h.
+       (read_from_file_type) Doesn't use dfm internal state anymore.
+
+       * inpt-pgm.c, print.c: Include dfm.h.
+
+       * recode.c: (internal_cmd_recode) Casts strlen() return value to
+       int in comparison with other int.
+
+       * som-high.c: (build_target) Fixed operator precedence problem in
+       if statement (& versus ==).
+
+Sat Oct 26 10:39:25 1996  Ben Pfaff  <blp@gnu.org>
+
+       * dfm.c: (read_record) Can now read fixed-length records; not
+       tested.
+       (put_record) Can now write fixed-length records; not tested.
+
+       * file-handle.h: FH_* defines changed to enums.  New enum series
+       FH_RF_*, FH_MD_*.
+       (struct file_handle) New members recform, lrecl, mode.
+
+       * file-handle.q: Parser changed.
+       (internal_cmd_file_handle) Added support for new /RECFORM, /MODE,
+       /LRECL subcommands.  These are compatible with Windows.
+       (init_file_handle) Initializes recform, mode fields.
+
+       * q2c.c: (get_line) When outputting `!' comment lines, now
+       increments the output file line number so that `#line' directives
+       are correct.
+       (make_identifier) New function that converts an arbitrary string
+       into a valid C identifier.
+       (dump_vars) Calls make_identifier() in two places in order to
+       suppress some errors for bad identifiers.
+       (make_match) Allows TRUE as synonym for YES and FALSE as synonym
+       for NO.  Allows numbers to be prefixed by underscores to make them
+       acceptable C identifiers but still to be parsed as numbers by the
+       Fiasco lexer.
+
+Thu Oct 24 20:13:42 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Re-enabled RECODE, SAMPLE, SELECT IF.
+       
+       * dfm.c: Comment fixes. (get_record) Gives error if file handle
+       was opened for writing.
+       (open_file_w) New function.
+       (read_record) Uses strncasecmp if available.  Improved error
+       messages, comments.
+       (put_record) New function.
+
+       * file-handle.h: Moved function comments into dfm.c and
+       file-handle.q.  Comment fixes.  Removed declarations of
+       tilde_expand() and normalize_filename().
+       (struct file_handle) Changed `open' from boolean to enumerated
+       field to allow for three states--closed, open for reading, open
+       for writing--all references changed.
+
+       * file-handle.q: Includes filename.h.
+
+       * print.c: (CMD_* enums) Renamed PRT_* and moved into var.h; all
+       references changed.
+       (alloc_line) Makes allowance for line terminator characters in
+       calculations.
+       (print_trns_proc) Now handles OUTFILE, WRITE differences.
+       (print_space_trns_proc) Handles OUTFILE differences.
+
+       * recode.c, sample.c: Comment fixes.
+
+       * var.h: (struct print_trns) Changed boolean field `eject' to
+       bitmapped field `options'; all references changed.  New enums
+       PRT_* for use with this field.
+
+       * exception.h, test-exception.c: Removed.
+
+Thu Oct 24 17:47:14 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (delineate) Turned off debug output.
+
+       * common.c: [Checker and Linux] (__assert_fail, __eprintf) Moved
+       to error.c.
+
+       * data-in.c: (parse_string_as_format) Sets the entire string value
+       to spaces, not just the short string part of it.  Is this correct
+       now? 
+
+       * data-out.c: (convert_date) Fixed DATETIME format problems with
+       decimal places, removed debug code.
+
+       * dfm.c: (open_file_r) Fixed bug where an error would occur in the
+       middle of parsing BEGIN DATA that would cause the lexer to read
+       from a wild pointer `prog'; now calls new function
+       preprocess_line() in lexer.c.
+
+       * error.c: [__CHECKER__] (hcf) Calls induce_segfault() on improper
+       termination.
+       [Checker and Linux] (__assert_fail, _eprintf) Moved from common.c.
+       Now call induce_segfault() to induce the segfault.
+       (induce_segfault) New function.
+
+       * expr-opt.c: Comment fix.
+       (parse_sysvar) New function.
+       (parse_primary) Added system variable support--calls
+       parse_sysvar().
+       (global var ops) Added OP_CASENUM operator.
+
+       * expr.h: Comment fixes.
+       (OP_* enum) added OP_CASENUM operator.
+       (struct casenum_node) New struct.
+       (union any_union_union) New member `cas' of type `casenum_node'.
+
+       * glob.c: (global var last_vfm_invocation) New var.
+       (init_glob) Initializes last_vfm_invocation.
+
+       * lexer.c: (lookahead) Fixed reversed condition on if statement.
+
+       * getline.c: (get_line) Split into get_line() and preprocess_line().
+       (preprocess_line) New function.
+
+       * var.h: Declares last_vfm_invocation.
+
+       * vfm.c: (procedure) Sets last_vfm_invocation.
+
+Wed Oct 23 21:53:43 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (parse_cmd) Fixed bad assertion related to
+       lookahead().
+
+       * data-in.c: (parse_month) Implemented to parse months according
+       to full interpretation of standard.
+       (to_roman) New function.
+       (parse_wk_delimiter) Bug fix (forgot to skip `WK' in string).
+       (parse_weekday) Bug fix (forgot to skip all the day name).
+
+       * data-list.c: (read_from_data_list_fixed) Fixed bug that screwed
+       up parsing of multirecord data items.  Also fixed user message.
+
+       * data-out.c: Comment fix.
+       (year2, year4, convert_date, convert_time, convert_WKDAY,
+       convert_MONTH) New functions to support time & date output.
+       (convert_format_to_string) Calls new time & date output routines.
+
+       * expr-prs.c: (nary_num_func) Found a bug, but didn't fix it yet.
+
+       * lexer.c: (lookahead) Noted a previously unnoticed caveat in
+       comment.
+
+       * main.c: [DEBUGGING] (dump_token) Updated to handle getline.h.
+
+       * misc.c: (global var formats) Fixed declarations of DATETIME,
+       TIME, DTIME.
+
+       * postscript.c: (text) Fixed a pair of bugs in the reallocation of
+       the output_char buffer.
+
+       * vars-prs.c: (parse_DATA_LIST_vars) Fixed a failure to free
+       memory bug.  Fixed user messages.
+
+Tue Oct 22 17:27:04 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Removed #pragma argsused from lots of places.
+       
+       * data-in.c: Implemented zoned decimal and time-date formats.
+       Untested.  This is a huge chunk of code--maybe 1000 lines and 50
+       new functions.
+
+       * data-out.c: Implemented zoned decimal format.
+
+       * expr.h: Moved yrmoda() declaration here from exprP.h.
+
+       * misc.c: (global var formats) Minor fixes--added
+       FCAT_SHIFT_DECIMAL to formats N and Z.
+       (convert_fmt_ItoO) Added support for format Z.
+
+       * som-frnt.c: (som_set_value) Fixed bug regarding string values.
+
+Mon Oct 21 20:39:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (parse_cmd) [GLOBAL_DEBUGGING] Inserted call to
+       som_check_workspace() that is activated between commands.
+
+       * data-list.c: (dump_fixed_table, dump_free_table) Finished these
+       for good, I hope.
+
+       * list.q: (begin_row) Changed title expansion style from
+       SOPT_X_VERT to SOPT_X_SHSP.
+
+       * som-frnt.c: Now includes `somP.h'.
+       (som_push_workspace, som_pop_workspace) New functions that, taken
+       together, form a solution to the recursive table building problem
+       mentioned yesterday.  Surrounded every table output routine
+       throughout the program with calls to these functions.
+       [GLOBAL_DEBUGGING] (som_check_workspace) New function.
+       (som_create_table) Checks that there's an active workspace.
+       (som_destroy_all_tables, som_crush) Removed.
+
+       * som-high.c: (global var som_preserve_tables) Removed, all
+       references deleted.
+       (som_submit_table) Checks that there's an active workspace.
+       (dump_columnated_table) Doesn't columnate tables that would have
+       just one row per column.
+       (dump_crush_page, som_dump_crush_page) Removed debugging code.
+       (som_dump_crush_page) Moved row number labels from left side of
+       tables to right side.
+       (som_get_table_size) Added support for SOPT_X_SHSP.
+
+       * som.h: New cell expansion type SOPT_X_SHSP.
+
+       * somP.h: (global vars arena_stack, n_arena_stack, m_arena_stack)
+       New vars.
+       (global var curtab_arena) Moved from som-frnt.c.
+
+Sun Oct 20 13:45:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: [GLOBAL_DEBUGGING] (SUPPRESS_WARNINGS) New debug option
+       that causes bad location warnings to be suppressed.
+       (delineate) Saves current font when calling draw_text(); fixed
+       handling of NULLs when backing up.  Also fixed line-wrapping bug.
+
+       * command.c: Re-enabled `LEAVE', `NUMERIC', `PRINT', `PRINT EJECT',
+       `PRINT FORMATS', `PRINT SPACE', `STRING', `TITLE', `WRITE'.
+
+       * common.c: Added code to cause assertion failure to dump core
+       when run under Checker.
+
+       * data-list.c: (dump_fixed_table) Fixed some inconsistencies, but
+       there are still bugs.
+
+       * glob.c: (__eprintf) Removed.
+
+       * list.q: Inserted som_preserve_tables kluge that prevents tables
+       from being thrown away due to recursive table building through
+       som_output_line being called from a transformation during the LIST
+       procedure invocation.  This is a general problem that must be
+       solved in a better way since it applies to all procedures in
+       general.
+       (begin_row) Changed title options to SOM_X_VERT from SOM_X_BOTH.
+       (flush_table) Removed SOM_TOPT_PRESERVE from submission options.
+
+       * numeric.c: Fixed several errors in the form of msg() calls.
+
+       * print.c: Updated for use of som.
+       (dump_table) Reimplemented.
+       (print_trns_proc) Calls som_eject_page() instead of eject_page().
+       Calls som_output_text() instead of outs_line().
+
+       * som-frnt.c: (som_destroy_all_tables) Sets som_preserve_tables to
+       0.
+       (som_output_text) Function moved from som-low.c.  Interface
+       changed.
+
+       * som-high.c: (som_preserve_tables) New global public variable
+       declared in som.h.
+       (som_submit_table) Destroys the tables only if som_preserve_tables
+       is 0.
+       (paginate_horizontally) Bugfix: sets som.mpw even if there's only
+       one subrow per row.  Now labels subrows if there's more than one
+       subrow per row.
+       (dump_crush_table) Added wishlist comment.
+       (som_eject_page) New public function declared in som.h.
+
+       * som-low.c: (som_dump_crush_page) Draws row labels if there's
+       more than one subrow per row.
+       (som_output_text) Moved to som-frnt.c.
+
+       * som.h: (SOM_TOPT_PRESERVE) Removed.
+
+       * title.c: (get_title) Changed interface.
+       (cmd_title) Changed `title' to `outp_title'.
+       (cmd_subtitle) Changed `subtitle' to `outp_subtitle'.
+
+Sun Oct 20 09:04:15 1996  Ben Pfaff  <blp@gnu.org>
+
+       * list.q: (flush_table) Conforms to new partial options in
+       som_submission_form.
+
+       * som-high.c: (paginate_horizontally) Changed form of subrow
+       number labels.
+       (build_target) Omits spacing before table if
+       SOM_TOPT_PARTIAL_OMIT_TOP is selected.
+       (dump_crush_page) Changed interface.  Only trims bottom rule if
+       SOM_TOPT_PARTIAL_OMIT_BTM is not selected.
+       (dump_crush_table) Handles partial tables.
+       (output_row_label) New function.
+       (som_dump_crush_page) Emits subrow number labels.  Draws vertical
+       rule on the right edge of narrow subrows.
+
+       * som.h: Changed SOM_SUB_PARTIAL_* series of submission type
+       constants to a series of SOM_TOPT_PARTIAL_* submission options.
+       All references updated.
+
+Fri Oct 18 19:46:49 1996  Ben Pfaff  <blp@gnu.org>
+
+       * misc.c: Comment fix.
+
+       * som-high.c: (examine_table) Treats crushed tables separates for
+       purpose of determining header size.
+       (paginate_horizontally) Allots space for line numbers in crushed
+       tables with lots of subrows per row.  Calculates the `maximum page
+       width', the width of the widest horizontal page.
+       (build_target) Removed trim argument; all references changed.
+       Stricter assertions.  (dump_crush_page) New function.
+       (dump_crush_table) Reimplemented.
+
+       * som-low.c: (som_dump_page) Uses new RULE_ROW &c. constants.
+       (som_dump_crush_page) Reimplemented, interface changed.
+
+       * somP.h: Many many new helper macros for use with crushed tables.
+       (global var som) Removed `tv', `cum_y' members; all references
+       removed.  New members `mpw', `digit_space'.
+
+Sun Sep 29 19:37:03 1996  Ben Pfaff  <blp@gnu.org>
+
+       * arena.c: (arena_alloc) [!DISCRETE_BLOCKS] Removed `size'
+       variable, changed to constant 1024.
+       (arena_ca_strdup) Changed `sizeof(a_string)' to
+       `sizeof(c_string)'.
+       (arena_ca_strdup) [!DISCRETE_BLOCKS] Changed bad cast from
+       `(c_string *)' to `(char *)'; this fixed some offset problems.
+
+       * filename.c: (readlink_malloc) Changed initial allocation from
+       100 bytes to 128.
+       (good_getcwd) Changed from xmalloc() to local_alloc(); removed
+       comment.
+
+       * postscript.c: (read_fontmap) Fixed leak by changing &owner to
+       &fm->owner in several places.
+
+       * som-high.c: (output_table) Changed interface to rest of world.
+       (examine_crush_table) Removed.  Crushed tables are re-broken now,
+       in preparation for rewrite.
+
+       * som.h: Comment fix.
+
+Sat Sep 28 21:28:07 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (ascii_init_driver) Disposes of x->file.filename and x
+       itself in the cleanup stage.
+
+       * descript.q: (display) At least temporarily, changed the table
+       format to a crushed table.
+
+       * list.q: (begin_row) At least temporarily, added horizontal lines
+       between cases.
+
+       * som-high.c: (examine_crush_table) Sets som.hh to the width of
+       the horizontal "headers," that is, to the width of the far left
+       and far right rules.
+       (justify_pagination) Sets som.th to the width of the widest row
+       in the crushed table.  Fixed inner loop off-by-one error.
+
+       * som-low.c: (som_dump_crush_page) Added code to draw horizontal
+       rules.
+
+       * somP.h: Comment fix.
+
+Fri Sep 27 20:08:39 1996  Ben Pfaff  <blp@gnu.org>
+
+       * filename.c: (open_file_ext) Now, doesn't set f->file to NULL
+       before closing it; also, opens the constructed filename `s'
+       instead of f->filename.
+
+       * postscript.c: Moved initialization of x->loaded, x->prop,
+       x->fixed, x->current, also the add_encoding() calls, into
+       postopen().
+       (preclose) Destroys x->combos; sets x->loaded, x->combos to NULL;
+       sets x->last_font to NULL; sets x->next_combo to zero.
+
+       * som-high.c: (crushed_row_height) Moved definition farther up.
+       (som_submit_table) Doesn't calculate line width, font size until
+       after calling open_page(), to accomodate changes to PostScript
+       driver.
+       (vert_headers) Removed; equivalent functionality moved to
+       examine_table(), examine_crush_table().
+       (justify_pagination) Replaced with different algorithm.
+       (dump_crush_table) Bugfix that caused tables to fail to be clipped
+       at the bottom of the page.
+
+Thu Sep 26 22:20:26 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Added cmd_list back into cmd_table.
+
+       * freq.c, frequencies.q, repeat.c, list.q, vars-atr.c, vfm.c:
+       Comment fix: `#define DEBUGGING' --> `#define DEBUGGING 1'.
+
+       * list.q: (flush_table) Updated to new som_submission_form format.
+
+       * som-frnt.c: Comment fix.
+
+       * som-high.c: Changed `#endif' to `#undef EXTERN'.
+       (output_table) Calls som_get_table_size() directly; handles
+       crushed tables.
+       (examine_crush_table) New function; calls vert_headers().
+       (examine_table) Moved some code into new function, vert_headers().
+       (justify_pagination) New function.
+       (dump_plain_table) Removed `static' from `cy'.
+       (dump_crush_table) New function.
+
+       * som-low.c: (som_dump_crush_page) New function.
+
+       * som.h: Comment fixes.
+       (enum SOM_TOPT_CRUSH) New.
+       (SOM_SUB_PARTIAL_BEG, SOM_SUB_PARTIAL_MID, SOM_SUB_PARTIAL_END)
+       Temporarily set to zero to make do with LIST procedure.
+
+       * somP.h: Re-ordering.
+
+Wed Sep 25 19:36:11 1996  Ben Pfaff  <blp@gnu.org>
+
+       * som.c: Split into som-frnt.c, som-high.c, som-low.c.
+
+       * somP.h: New file for use by som-high.c, som-low.c.
+
+       * q2c.c: Added definition for VME.
+       (get_line) Now dumps `!' comment lines to the output file
+       verbatim.
+
+       * crosstabs.q, descript.q, file-handle.q, frequencies.q, list.q,
+       set.q: Changed format of `!' comment lines.
+
+Tue Sep 24 18:39:09 1996  Ben Pfaff  <blp@gnu.org>
+
+       * All source files: Added copyright notice.
+
+       * common.c: (xmalloc, xrealloc, xstrdup) Cast size_t's to unsigned
+       longs in msg() calls.
+
+       * con32s.c: (xmalloc, xrealloc) Updated from common.c.
+
+       * q2c.c: (xmalloc, xrealloc, xstrdup) Updated from common.c.
+
+Sat Sep 21 23:16:31 1996  Ben Pfaff  <blp@gnu.org>
+
+       * output.c: (outp_read_devices) Changed criteria for
+       distinguishing different types of lines.
+
+Fri Sep 20 22:52:28 1996  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: Changed syntax message.
+
+       * filename.c: (good_getcwd) Bug fix (?).
+       (normalize_filename) [__BORLANDC__] Uses _fullpath() library
+       function.
+       (search_path) Appends DIR_SEPARATOR to directory name only if it
+       does not already end with one.
+
+       * glob.c: Checks STAT_PAGER envvar before PAGER.
+
+       * output.c: Checks environment variables instead of just local
+       macros.
+
+Tue Sep 10 21:39:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * arena.c: (arena_destroy) Swatted a subtle bug that cropped up
+       when the pointer passed to the function was within the arena
+       itself, so that it couldn't properly be set to NULL _after the
+       arena was freed_.
+
+       * command.c: Re-enabled DISPLAY.
+
+       * display.c: Rewritten to handle tables.  Untested.
+
+       * filename.c: (search_path) Fixed memory leak.
+
+       * frequencies.q: (cmd_frequencies) Frees v_variables.
+       (postcalc) Calls cleanup_freq_tab() after displaying statistics.
+       (cleanup_freq_tab) New function to garbage collect.
+       (dump_full) Elegantized.
+
+       * main.c: New comment.
+
+       * output.h: New tag for tagged quotes: TAG_NEWLINE.
+
+       * postscript.c: Comment fix.
+       (release_fontmap, free_font_entry) New functions.
+       (ps_init_driver) Sets free_font_entry() as the freefunc for
+       hashtable `loaded'.  Calls release_fontmap() when destroying a
+       driver; also frees the output filename; also frees the
+       ps_driver_ext block.
+       (free_ps_encoding) Frees the filename as well as the encoding
+       block.
+       (output_encodings) Frees the line buffer and pops the msg-filename
+       stack.
+       (read_fontmap) Frees the fontmap filename and the line buffer.
+       (postopen, preclose) Misc. garbage collection fixes.
+       (ps_open_page) Destroys the `combos' hash table; sets `last_font'
+       to NULL; this fixes some output problems.
+       (text) Handles TAG_NEWLINE.  Untested.
+
+       * som.c: (cell_byte_size) Merged SCON_VALUE and SCON_TEXT cases.
+       (som_set_string) Removed.  All references changed to
+       `som_set_text'.
+       (som_set_text) Rewritten.  New interface.  More general.
+
+       * som.h: Minor format changes.
+       (struct som_value_cell) Removed; all references changed to
+       `som_text_cell'.
+       (enums SOT_*) Changed.
+
+Mon Sep  9 21:43:13 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: Re-enabled SPLIT FILE.
+
+       * postscript.c: Comment fix.
+
+       * som.h: Added `SOT_NONE'.
+
+       * split-file.h: (cmd_split_file) Removed superfluous parenthesis.
+
+       * vfm.c: (dump_splits) Reimplemented.
+
+Sat Sep  7 22:35:12 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Compiled the project under gcc 2.7.2, which gave some new
+       warnings.  This led to many additions of casts from unsigned to
+       int sprinkled throughout the code.
+       
+       * arena.c: Many uses of `unsigned' changed to `size_t'.
+
+       * command.c: Added END FILE, END REPEAT to command table.
+       (var cmd_end_repeat) Renamed cmd_end_repeat_p.
+       (find_command, FILE_TYPE_okay) Not commented out anymore.
+       (parse_cmd) Calls FILE_TYPE_okay again.
+       (output_line) Added calls to som_output_text() to put the line
+       in the output files.
+
+       * common.c: (macro VME) Format changes.
+       (xstrdup) Asserts that its argument is not NULL.
+       
+       * data-list.c: Implemented dump_fixed_table().
+       
+       * inpt-pgm.c: Formatting changes.  Comment changes.
+       (end_case_proc) Renamed end_case_trns_proc.
+       (cmd_end_file, end_file_trns_proc) New functions.
+
+       * misc.c: Many uses of `int' and `unsigned' changed to `size_t'.
+
+       * misc.h: (local_strdup) New macro corresponding to strdup() but
+       allocating its data through local_alloc() if possible--that is, if
+       GNU C is in use.
+
+       * postscript.c: Comment changes.
+       (quote_ps_name, quote_ps_string, output_encodings) New functions.
+       (output_line, add_string) New macros supporting
+       output_encodings().
+       (postopen) Fixed contents of ${fixed-font} and ${prop-font}
+       substitution vars.  Calls output_encodings() when a line
+       consisting of `!encodings' is encountered.
+       (preclose) Some code moved into quote_ps_string().
+       (dump_line) Changed into macro supporting dump_fancy_line().
+       (switch_font) Now outputs DSC "%%IncludeResource: font (...)"
+       command when appropriate.
+       (write_text) Fixed `literal_char' array (I think it's fixed, at
+       least.)
+       (text) Fixed bug when width was zero.  Now exits immediately on
+       zero height_left.  Now, when executing `goto restart;', checks
+       that cp<end, so that we don't read beyond end-of-string.  Also,
+       outputs the correct code to the output file by outputting the code
+       from the metric instead of the internal metric index.
+
+       * repeat.c: (cmd_end_repeat) New function.
+
+       * som.c: (var som) `headers' renamed `options' and semantics
+       changed.  All references changed.
+       (draw_title) `if(px!=-1 || px!=-1)' --> `if(px!=-1 || py!=-1)'.
+       (build_target) Only inserts spacing if SOM_TOPT_SPACING not
+       selected.
+       (som_text_table) Removed.
+       (som_output_text) New function.
+
+       * som.h: (struct som_submission_form) Removed `header', `reuse',
+       replaced with bitmapped field `options'.
+       (SOM_TOPT_*) New enum set for som_submission_form.options.
+       (SOT_*) New enum set for som_output_text().
+
+       * temporary.c: (copy_variable) When copying the var label, only
+       calls xstrdup() if it's non-NULL.
+
+       * var.h: (enum type `vartype') Removed; all references changed to
+       `int'.
+
+       * vars-atr.c: (init_variable) Changed local var `nbytes' from
+       `int' to `size_t'.
+
+Thu Sep  5 22:05:56 1996  Ben Pfaff  <blp@gnu.org>
+
+       * font.h: Comment changes.
+
+       * groff-font.c: (groff_read_font) Initializes `name' field to
+       NULL.  Handles `encoding' field.
+
+       * hash.c: (hsh_dump) [GLOBAL_DEBUGGING] Output formatting changes.
+
+       * postscript.c: (struct font_entry) Removed `position' field.
+       (struct ps_font_combo) New struct.
+       (struct ps_driver_ext) Removed field `next_position'.  New fields
+       `combos', `next_combo'.  `last_font' field changed from
+       `font_entry *' to `ps_font_combo *'.
+       (ps_init_driver) Reformatted; handles new fields.  When
+       OPO_AUTO_ENCODE is set, adds the two default fonts' encodings to
+       the encoding list.
+       (get_encoding, find_encoding_file) New functions.
+       (add_encoding) Some code moved out into find_encoding_file().
+       (postopen) Changed value for ${title}.
+       (preclose) Sets `loaded' field to NULL after destroying the hash
+       table.
+       (ps_open_page) Added comment.  Inits the `combos' and `next_combo'
+       fields.
+       (ps_text_set_font_by_position) Figures out the current family if
+       not known.
+       (compare_ps_combo, hash_ps_combo, free_ps_combo) New functions.
+       (switch_font) Implemented.
+       (write_text) Calls switch_font() more often.  Format changes.
+       #undefs its macros after they're no longer useful.
+       (text) Changed `continue' at one point to a jump to the top of the
+       loop because we don't want `separate' reset to 0 at that point.
+       (load_font) No longer sets `position' in the font_entry created.
+
+Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * font.h: (struct font_desc) New member `encoding', which is not
+       properly handled yet.
+
+       * glob.c: (init_glob) Some new i18n code, which is probably
+       screwed up.
+
+       * output.c: (outp_read_devices, outp_get_paper_size) Changed
+       `size' local from `int' to `size_t'.
+
+       * postscript.c: New driver configuration parameter `auto-encode'.
+       New enums OPO_AUTO_ENCODE, ODA_COUNT.
+       (struct font_entry) New member `position'.
+       (struct ps_driver_ext) Reordered.  New hash table member
+       `encodings'; new members `next_position', `next_encoding',
+       `last_font'.  Members `current', `prop', `fixed' changed from type
+       `font_desc *' to `font_entry *'; all references changed.
+       (struct ps_encoding) New struct.
+       (read_ps_encodings, compare_ps_encoding, hash_ps_encoding,
+       free_ps_encoding, add_encoding) New functions.
+       (ps_init_driver) Added OPO_AUTO_ENCODE to default
+       x->output_options.  Initializes new members of ps_driver_ext.
+       Changed default value for prologue_fn, encoding_fn.  Calls
+       read_ps_encodings after loading default fonts.
+       (option_tab[], ps_option) Handle new configuration parameter.
+       (switch_font) New function.
+       (struct output_char) `font' member changed from `font_desc *' to
+       `font_entry *'.  New member `separate'.
+       (read_fontmap) Changed `size' from `int' to `size_t'.
+       (output_line, put_number) New macros for write_text().
+       (write_text) Optimizes text output by consolidating multiple
+       calls to PostScript `show' operator.
+       (text) Keeps track of when text arguments can't be consolidated by
+       write_text(), and marks those spots in the output stream.
+       (load_font) Sets `position' of the allocated font_entry to -1, cuz
+       the font hasn't been switched to by switch_font(), which is where
+       the position is important--the PostScript is what cares about the
+       position.
+
+Sat Aug 31 23:52:38 1996  Ben Pfaff  <blp@gnu.org>
+
+       * hash.c: (hsh_destroy) Ignores NULL argument.  Doesn't try to
+       call a NULL free_func.
+       (hsh_rehash) Elegantized.
+       (hsh_probe) Fix bug that manifested when the table was expanded
+       and thus had to change location in memory.  Good thing
+       too--otherwise could have been much more subtle.
+       (hsh_find) [GLOBAL_DEBUGGING] Not stubbed out anymore.
+       (hsh_foreach) New function for hash table iteration.
+
+       * hash.h: (struct hsh_iterator) New.
+
+       * lexer.c: (parse_tagged_quote) Font and family name strings in
+       tags are now null-terminated.
+
+       * output.c: (outp_evaluate_dimension) Fixed over-aggressive unit
+       parsing.
+       (internal_get_paper_size, outp_get_paper_size) Fixed; now work as
+       documented.  (Never before tested?)
+
+       * output.h: Comment changes.
+
+       * postscript.c: New driver options `optimize-text-size',
+       `optimize-line-size', `max-fonts-simult'.  New enum set for
+       specing cached line types.  Comment fixes.
+       (struct line_form) New struct.
+       (struct ps_driver_struct) New members `text_opt', `line_opt',
+       `max_fonts', `lines'.
+       (ps_init_driver) Initializes new members of ps_driver_struct.
+       (user option type enum set) New member `nonneg_int_arg'.
+       (static var option_tab[]) Supports new options.
+       (ps_option) Handles new options.
+       (find_ps_file) Made static.  No longer calls hsh_dump().
+       (ps_get_var) Made static.
+       (preclose) Dumps out proper DSC trailer.
+       (ps_open_page) Elegantized.
+       (ps_close_page) Calls dump_lines() if appropriate.
+       (ps_line_horz, ps_line_vert, ps_line_intersection) Reduced to
+       wrappers around line().
+       (int_2_compare, compare_line, dump_line, dump_fancy_line,
+       dump_lines, hash_line, free_line, line) New functions for support
+       of line caching.
+       (write_text, text) Made static.
+       (text) Added to font support, not finished.
+
+Thu Aug 29 21:36:41 1996  Ben Pfaff  <blp@gnu.org>
+
+       * font.h: (struct font_desc) New members ascent, descent.
+
+       * groff-font.c: (groff_read_font) Calculates font ascent and
+       descent from the ascent and descent of the `d' and `p' characters,
+       respectively, as per a suggestion on comp.fonts.
+
+       * postscript.c: (ps_open_page, ps_close_page, ps_line_horz,
+       ps_line_vert, ps_line_intersection) Rewritten to deal with changed
+       prologue.
+       (write_text) Handles text right-justification and centering (not
+       full justification).  Still very inefficient.  (One output line
+       per character?!)
+       (struct output_char) Added fields for font and font size.
+       (text) Many bugfixes.
+
+Sat Aug 24 23:26:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: (usage) Calls outp_list_classes().
+
+       * font.h: Comment fix.
+
+       * groff-font.c: New exported global var `space_index'.
+       (groff_init) New function to initialize `space_index'.
+       (hash_kern) Casts result to unsigned.
+       (font_name_to_index) Renamed font_char_name_to_index.  All
+       references changed.  Also, now returns the value of `space_index'
+       when passed an ASCII space character as an argument.  Fixed
+       handling of nulls.
+       (font_get_kern_adjust) Changed i from `int' to `unsigned'.
+       Handles passed NULL pointers properly.
+
+       * lexer.c: (parse_tagged_quote) Comment fix.  Better range
+       checking.
+
+       * output.c: (outp_list_drivers) Removed.  Removed all references.
+       
+       * output.h: Comment fixes.
+
+       * postscript.c: (ps_open_global) Calls groff_init().
+       (output_char) New structure.
+       (write_text) New function.
+       (text) No longer stubbed out!  Now the output is correct--with a
+       few exceptions, one of them being that the page has to be held
+       upside down into a mirror.
+
+Sun Aug 11 21:31:22 1996  Ben Pfaff  <blp@gnu.org>
+
+       * font.h: Comment fix.
+       
+       * font.c: (name_to_index) Renamed font_name_to_index, made extern.
+       All callers changed.
+       (number_to_index) Renamed font_number_to_index, made extern.  All
+       callers changed.
+       (font_get_kern_adjust, font_get_char_metrics) New functions.
+
+       * output.h: New constant OUTP_T_INTERNAL_DRAW.
+
+       * postscript.c: Changed default line width back to 1/2 point.
+       (ps_line_horz, ps_line_vert, ps_line_intersection) Now lines are
+       in the center of the space allotted for them, not just a fixed
+       offset from the edge of the space; this fixes some bugs.
+       (ps_line_intersection) Now supports all command line styles.
+       (ps_text_get_size) Bug fix in computation of em width.
+       (text) New function, the meat behind ps_text_metrics and
+       ps_text_draw.  Not complete.
+       (ps_text_metrics, ps_text_draw) Removed the stub taken from
+       ascii.c; call text().
+
+Sat Aug 10 23:28:17 1996  Ben Pfaff  <blp@gnu.org>
+
+       * arena.c: (arena_free) Assert that the argument is non-NULL.
+       
+       * groff-font.c: (add_kern) Calls arena_free() for old_kern if and
+       only if old_kern is non-NULL.
+
+       * postscript.c: (ps_init_driver) Changed default line width to 1
+       point.
+       (postopen) New prologue variables.
+       (ps_line_horz, ps_line_vert, ps_line_intersection) Implements some
+       more of the common line styles properly, but not all.
+       (ps_text_metrics) Fixed problem with this stubbed out version that
+       kept it from taking font sizes into account.
+
+Thu Aug  8 22:31:11 1996  Ben Pfaff  <blp@gnu.org>
+
+       * arena.c: (arena_malloc) Bug fix.
+       (arena_dump) [GLOBAL_DEBUGGING] New function.
+
+       * ascii.c: Comment fix.
+       (count_fancy_chars, delineate) Now static functions.
+       
+       * filename.c: (interp_vars) Bug fixes.
+
+       * font.h: Comment fixes.
+
+       * glob.c: (init_glob) Sets set_viewwidth, set_viewlength at
+       beginning in case we have an error message to display before
+       initializing the display.
+
+       * groff-font.c: Comment fix.  Changed rehash threshold from 2/3
+       full to 1/2 full.
+       (groff_read_font) Bug fixes.
+       (name_to_index) Increments hash.used.  Sets `name' field of hash
+       entry properly.
+       (add_kern) Sets kern_max_used after rehashing.  Other bug fixes.
+
+       * hash.c: Return type changed.
+
+       * postscript.c: Continued development.  Now marks lines on the
+       paper, but very buggy.
+
+Sat Aug  3 20:50:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Changed comments in many source files from `/* xxx /* yyy */' to
+       `/* xxx */ /* yyy */' for cleanliness.
+
+       * arena.c: (arena_sd_strdup) New function.
+       
+       * ascii.c: (struct ascii_driver_ext) New member `file'.
+       (ascii_init_driver) Fills out member `file' for initing; uses
+       close_file_ext for closing drivers.
+       (ascii_option) Changed %.*s back to %s because the a_string's are
+       always null-terminated.
+       (postopen, preclose) New functions.
+       (ascii_open_page) Uses new style of open_file_ext.
+       (ascii_option, commit_line_buf, output_lines) Use ext->file.file
+       instead of this->output.
+       (__assert_fail) Removed.
+
+       * cmdline.c: Changed syntax_message[].
+
+       * error.c: #include's <readline/history.h> only if the history
+       library is available, not if just the readline library is
+       available.
+
+       * filename.c: (expand_line) Removed alloca() support.
+       (interp_vars) No longer tilde-expands argument.  Limit on output
+       length removed.
+       (tilde_expand) Now treats argument as path rather than filename.
+       [!unix] Now is a no-op function.
+       (search_path) Better verbose message formatting.
+       (open_file, close_file) Comment fixes.
+       (close_file) [!unix] Doesn't bother with pipes.
+       (open_file_ext) Completely rewritten, interface revamped.
+       (close_file_ext) New function.
+
+       * font.h: Comment changes.
+
+       * frequencies.q: Removed AIX alloca support since it doesn't use
+       alloca.
+
+       * hash.c: Comment changes & additions.
+       (hsh_create) Initializes entire table instead of first M entries.
+       (hsh_probe) Stupid bug fixed.  Now it works.
+       (hsh_dump) [GLOBAL_DEBUGGING] New function.
+
+       * main.c: (parse) Detects EOF properly in token-eating loop.
+       Should the STOP token have its value changed to 0?
+
+       * misc.c: (blp_getdelim) [HAVE_GETDELIM] Now it's a macro.
+       (blp_getline) Now it's a macro.
+
+       * output.h: (struct outp_driver) Removed members output, filename.
+       
+       * output.c: (outp_init) [!NO_POSTSCRIPT] Installs PostScript
+       drivers in driver table.
+       (outp_read_devices) Frees buf.  Warns if there are no active
+       output drivers.
+       (outp_configure_clear) Sets outp_configure_vec to NULL after
+       deleting its elements.
+       (configure_driver, destroy_driver) Removed references to output,
+       filename members of outp_driver.
+       (outp_evaluate_dimension, internal_get_paper_size,
+       outp_get_paper_size) New functions.
+
+       * postscript.c: Continued development.  Now links but doesn't make
+       any marks on the page.  Lotsa bugs I suppose.
+
+       * str.c: (strcasecmp) [!HAVE_STRCASECMP] New function.
+
+       * str.h: Comment changes.
+
+Sat Jul 27 22:32:38 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Removed dependencies on non-nested comments in several files.
+       Also removed references to (unix || __unix__) in #if's since
+       prefh.orig makes those two equivalent.
+       
+       * ascii.c: (ascii_open_global) Creates ascii_arena.
+       (ascii_close_global) Destroys ascii_arena.
+       (ascii_init_driver) Doesn't create ascii_arena.
+       (ascii_copy_driver) Removed.
+       (ascii_option) Possible bugfix regarding %s vs. %.*s with a_string's.
+       (outp_class ascii_class) Removed ascii_copy_driver reference.
+
+       * frequencies.q: Now can display all statistics except median.
+       Still not finished.
+
+       * output.c: Handles outp_class.ref_count so output class
+       destructors are called properly.
+       (add_class) Sets ref_count to 0.
+       (configure_driver) Initializes class if ref_count++ is 0.
+       (destroy_driver) Destructs class if --ref_count is 0.  Frees the
+       class output file name.
+       
+       * output.h: (struct outp_class) Removed copy_driver, inited.
+       Added ref_count.
+
+       * postscript.c: Completely replaced but not finished.
+       
+Tue Jul 23 21:48:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       * approx.h: #includes <float.h>.
+
+       * arena.h, arena.c: Many functions changed to take an arena **
+       instead of an arena *, for consistency.  All callers changed.
+       (arena_alloc) Now creates a new arena if passed *A that is NULL.
+       (arena_destroy) Sets *A to NULL.
+       
+       * ascii.c: (delineate) Implements OUTP_T_VERT correctly.  Removed
+       assertion that `width' be positive.
+
+       * command.c: Removed #if's from cmd_table.
+       (walk_cmdtable_func) [0] New function (debug code).
+       (init_cmd_parser) [0] Dumps out cmd_table (debug code).
+       (parse_cmd) Doesn't return failure for unimplemented commands.
+
+       * common.h: (SYSMIS) Changed from DBL_MAX to -DBL_MAX.
+       (SYSCODE) New constant macro.
+
+       * descript.q: Checks for positive n_variables before performing
+       analysis.
+
+       * file-handle.q: (get_handle_by_filename) Bug fix: passes &f to
+       avl_find instead of &fp as arg 2.
+
+       * frequencies.g, frequencies.q: Continued updating; now compiles &
+       works again, but not complete.
+
+       * main.c: Changes to user messages.
+
+       * misc.c: (reverse) [0] New function.
+
+       * settings.h: Comment removed.  #includes "common.h".
+
+       * som.c: (som_set_null) New function.
+       (som_set_value, som_set_string, som_set_text) More detailing
+       assertions.
+       (som_set_float) Implemented function.
+       (dump_columnated_table) Bug fix regarding page breaks.
+       (draw_cell) Bug fix regarding text that spilled out of a cell.
+       (draw_intersection, draw_horz_rule, draw_vert_rule) No longer draw
+       null lines.
+       (get_cell_size) Support SCON_EMPTY cells.
+       (get_table_size) When calculating rules' widths and heights, mask
+       out SLIN_SPACING bit.  Added SOPT_X_HLTL support.
+       
+       * som.h: (som_any_cell) New option SOPT_X_HTLT.  Removed
+       SOPT_X_SHADE.
+       (struct som_submission_form) New member `header'; all users
+       changed.
+
+       * val-labs.c: (get_label) User messages changed.
+
+       * var.h: Changed FREQUENCIES structures.
+
+       * vars-atr.c: (is_num_user_missing, is_str_user_missing) Made
+       inline.
+       
+Fri Jul 19 19:11:13 1996  Ben Pfaff  <blp@gnu.org>
+
+       * approx.h: Definition of EPSILON now depends on system's
+       DBL_EPSILON.  Removed GNU C specific code.
+       (cmpapx) Renamed approx_compare.
+
+       * frequencies.g, frequencies.q: Continued updating; still doesn't
+       compile.
+
+       * groff-font.c: (name_to_index) Fix bug that kept it from
+       compiling.
+
+       * hash.c, hash.h: Completed work.
+
+       * var.h: Changes to freq_tab, frequencies_proc.
+       
+Wed Jul 17 21:23:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       New hashing code.
+       * hash.c, hash.h: New files.  Not completed.
+       * Makefile.am: Added hash.c to source file list.
+       * font.h: (struct font_desc) New member kern_size_p.
+       * groff-font.c: Uses hash.h.
+       (hashpjw) Moved to hash.c.
+       (next_prime_power) Rewrote, renamed hsh_next_prime, moved to
+       hash.c.
+       (static var hash) New member size_p.
+       * var.h: Includes hash.h.
+       (struct freq_tab) Changed AVL_TREE to hash_tab.
+
+       * vars-prs.c: Comment, formatting fixes.
+
+       * frequencies.g, frequencies.q: Continued updating.  Not yet
+       working.
+
+       * formats.c: Bug fix.
+
+Tue Jul 16 22:10:04 1996  Ben Pfaff  <blp@gnu.org>
+
+       Increasing parallelism between DESCRIPTIVES and FREQUENCIES.
+       * descript.g: Comment fixes.
+       * descript.q: Comment fixes.  Moved some declarations into var.h.
+       Made dsc_info a static table.  Updated FIXMEs.
+       (internal_cmd_descriptives) Beautified.
+       
+       * frequencies.q: Started updating into working order.
+       * frequencies.g: New file analogous to descript.g.
+       * var.h: Comment fixes.  Added structures for FREQUENCIES.
+       
+       * som.c: Removed vestiges of crushing and partial table support.
+
+Sun Jul 14 15:45:31 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Many more changes to som.c especially, but these will not be
+       documented as I have resolved to remove them.  This patchlevel is
+       being released solely so that I can fall back to it if I decide
+       that removing the changes is not a good idea.
+
+Sat Jul 13 09:58:44 1996  Ben Pfaff  <blp@gnu.org>
+
+       * som.c: (global var som) New member `cum_y'.
+       (build_target) Properly handles titles for partial tables.
+       (dump_partial_beg, dump_partial_mid, dump_partial_end)
+       Merged into single new function dump_partial().  Fixed problem
+       with titles on partial tables.
+       (dump_table) Calls dump_partial() for all parts of partial tables.
+       (dump_page) Criteria for drawing title changed.
+       
+Fri Jul 12 22:03:36 1996  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (cmd_table) Added LIST, WEIGHT.
+
+       * command.c: (cmd_remark) No longer frees `s' since it's not
+       dynamically allocated.
+       
+       * data-out.c: (convert_f) Now correctly handles the case where
+       abs(v->f)<1 but v->f rounds to a value of 1.00 given the specified
+       number of decimals.
+       (som_destroy_all_tables) Removed argument.  All callers changed.
+       (som_vline, som_hline) Argument validity checking corrected.
+       (som_set_value) Implemented half-heartedly.
+       (replicate_table) Copies tables piece-by-piece when using Checker.
+
+       * som.h: New line style SLIN_1THIN, currently equivalent to
+       SLIN_0.  New enum set SOM_SUB_*.
+       (struct som_submission_form) Removed `seq_no'.  Added `type'.
+       
+       * list.q: Newly working file; uses partial tables.
+       
+       * som.c: (som_reduce_table) Renamed som_set_table_height().
+       (som_crush) Removed argument `group'.
+       (global var som) Removed `nt', `seq_no'.  Added `type'.
+       (som_submit_table) Arguments changed.
+       (output_table) Removed partial table code.
+       (build_target) New arg; partial table support added.  All callers
+       changed.
+       (dump_plain_table) Removed partial table code.
+       (dump_partial_beg, dump_partial_mid, dump_partial_end) New functions.
+       (dump_table) Supports partial tables.
+       (dump_page) New argument to allow not drawing top and/or bottom
+       headers.  All callers changed.  Supports partial tables.
+
+Sat Jul  6 22:22:25 1996  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c: Changed `#include <approx.h>' to `#include
+       "approx.h".
+       (convert_F) Comment fix.  Now won't print `-.000', etc.
+
+       * descript.q: Now Z-scores work, although there appears to
+       be a bug (which might actually be in data-out.c:convert_F()).
+       (descriptives_trns_proc, descriptives_trns_free) New functions.
+       (run_z_pass) Implemented.
+       
+       * var.h: Comment fixes.
+       (dsc_z_score, descriptives_trns) New structs.
+       (descriptives_trns) Added to any_trns as `dsc'.
+
+       * error.c, error.h: New error class, IS (Installation Script
+       error), used in those instances where the error is in the
+       installation, but there is a script file or installation file that
+       can be usefully referred to.
+       
+       * output.c: Change many IE classes to IS classes.
+
+       * cases.c, command.c, common.c, crosstabs.q, expr-evl.c,
+       frequencies.q, list.q, vars-prs.c, vfm.c: Removed reference to
+       HAVE_MALLOC_H because Borland C++ alloca() is broken, so why
+       include the corresponding header?
+       
+       * glob.c: (init_glob) Don't malloc term_buffer under Checker.
+       Don't bail out if termcap can't be read.
+
+       * som.c: (som_destroy_table) Removed.
+       (som_reduce_table, som_destroy_all_tables) New functions.
+       (som_crush) New function, not implemented.
+       
+       * som.h: New table option STAB_CRUSH.  Comment fix.  New struct
+       som_submission_form.  Function prototypes revised.
+
+       Outputting huge tables (1000s of rows) a few rows at a time
+       is supported, though untested.  May even break everything.
+       Actually, the code doesn't even compile right now.
+       * som.c: (struct som) New fields htv, nt, seq_no.
+       (som_submit_table) Multiple arguments changed to a single
+       pointer to struct submission_form.  Only increments subtable_num
+       if seq_no is zero.  Only destroys table if it's not going to
+       be reused.
+       (replicate_table) New function.
+       (output_table) Comment fix.
+       (examine_table) Changed inline code to code calling
+       replicate_table().  Calculates htv.  Supports partial tables.
+       (draw_title) Removed comment.
+       (build_target) Only allows for title on first part of partial
+       tables.
+       (dump_plain_table) Only resets table chunk number on first part
+       of partial tables; FIXME: doesn't work quite right.  Supports
+       partial tables.
+       (dump_page) Titles only on first part of partial tables.
+
+Fri Jul  5 20:16:19 1996  Ben Pfaff  <blp@gnu.org>
+
+       * Thanks to an unreliable IDE hard drive, I have spent the last
+       day reconstructing my Debian GNU/Linux installation and redoing
+       the previous day's changes--somehow I managed to save every file
+       except for output.c and output.h.  So the following changes could
+       really be considered independent of the output.c, output.h changes
+       from Jul 4.
+
+       * output.h, output.c: Moved the outp_configure_vec global var,
+       outp_names struct, and enum set OUTP_S_* from output.h to output.c.
+       outp_configure_vec is now static.
+       
+Thu Jul  4 20:20:24 1996  Ben Pfaff  <blp@gnu.org>
+
+       * The entire philosophy behind configuration of the output drivers
+       changed.  Now there is a termcap-type configuration where drivers
+       to be read are determined beforehand, rather than parsing the
+       entire output init file and storing it in memory & deciding what
+       to actually use later.  Faster & more memory-efficient at the same
+       time, cool.
+       
+       * output.c: Comment fix.  Removed outp_init_drivers global var.
+       Removed all references to synonyms.  New structure outp_defn.  New
+       global vars outp_macros, outp_configure_vec.
+       (search_name, delete_name, add_name, check_configure_vec,
+       expand_name, find_defn_value) New static functions.
+       (outp_configure_clear, outp_configure_add, outp_configure_macro,
+       outp_read_devices) New extern functions.
+       (outp_init) Much functionality moved into outp_read_devices.
+       (outp_read_devices) Format of output init file changed; name of
+       file is `devices' rather than `output' to avoid Makefile
+       conflicts.
+       (outp_clear) Renamed outp_done.
+       (outp_list_classes) Bug fix, cleaned up.
+       (outp_list_drivers) Not implemented anymore.
+       (outp_configure_driver) Now a static function; simplified; now
+       interpolates macros; supports new structure.
+       (outp_enable_driver, match_synonym) Removed; all references
+       removed.
+       (find_driver) First argument removed.
+       
+       * output.h: Global var outp_init_drivers removed; new structure
+       outp_names; new enum set OUTP_S_*; new global var
+       outp_configure_vec; function prototypes for output.c exports
+       updated.
+       
+       * main.c: (main) Calls outp_read_devices() after parsing the
+       command line.
+       
+       * cmdline.c: (parse_command_line) New option -v --verbose;
+       --version changed to -V.  --device option changed syntax to just
+       take a single device name.  Accepts key=value declaration of
+       output init file macros.  Syntax message updated.
+
+       * filename.c: (expand_line) New function.
+       (interp_environ_vars) Renamed interp_vars; no longer uses
+       fixed-size buffer.
+       (blp_getenv) Allows $ARCH and $VER pseudo-environment-vars to be
+       overridden by real environment vars.
+       (search_path) Uses verbose_msg() instead of #ifdef'd printf().
+       * filename.h: interp_environ_vars() renamed interp_vars().
+       
+       * error.c, error.h: Added extern variable `verbosity', message
+       class MM.
+       
+       * error.c: (vmsg) Support message class MM.
+       (verbose_msg) New function.
+
+       * descript.q: (generate_z_varname) Bug fix in generation of
+       Z-score varnames.
+       (dump_z_table) Bug fix in column headers.
+       
+       * ascii.c: (ascii_init_driver) Changed minimum number of lines per
+       page from 29 to 15.  Don't set a default for ops[OPS_INIT,
+       OPS_DONE].  Writes the uninit string when the driver is closed.
+       (ascii_open_page) Write the init string before the first page.
+       (output_shorts) Form of main loop changed from `while' to `for'.
+       Bug fix with overstrikes: the character is printed *after* the
+       backspace.  Eliminated a lot of `& 0xff' modifiers.
+       (advance_to_left_margin) New function.
+       (return_carriage, output_lines) Handle left margin.
+
+Thu Jul  4 00:35:59 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: New option `carriage-return-style'.
+
+       * ascii.c: (count_fancy_chars) New function.
+       (delineate, text_metrics) Use new function; bug fixes regarding
+       rich text strings.
+       (text_draw) Bug fix with rich text.
+       (output_string, output_shorts) Reordered.
+       (output_shorts) Now handles boxchars and some overstrike font
+       changes.
+       (output_char, return_carriage) New functions.
+       (output_lines) Now handles overstriking and font changes properly;
+       some code moved to output_shorts.
+
+Tue Jul  2 22:13:23 1996  Ben Pfaff  <blp@gnu.org>
+
+       [GLOBAL_DEBUGGING]
+       * ascii.c: New member `debug' in ascii_driver_ext.
+       (ascii_init_driver, delineate) Uses new member.
+
+       Now you can set a vertical height on writing text.
+       * ascii.c: (delineate) Keeps track of vertical position.
+       (text_draw) No longer considers fully justified text an internal
+       error.
+       
+       * output.h: New flag OUTP_T_VERT; other OUTP_T_ values changed.
+
+       Tables' titles are drawn; they can have variable height.
+       * som.c: `som' struct has new member, title_height.
+       (draw_title) New argument.  Moved within file.  All caller
+       changed.
+       (build_target) New argument, amount of space needed for first row.
+       Calculates height of title, takes that into account.  All callers
+       changed.
+       (dump_plain_table, dump_columnated_table) Took calculation of y1,
+       y2 out of loop.
+       (dump_columnated_table) [GLOBAL_DEBUGGING] Debugging code
+       improved.
+       (dump_columnated_table) Organized for readability.
+       (dump_page) Makes use of som.title_height.
+
+       * som.c: Many comment bug fixes.
+
+       * descript.q: (try_name, generate_z_name) Bug fix regarding
+       generation of Z-score variable names.
+       * var.h: Removed num from descriptives_proc; all referents removed.
+
+Mon Jul  1 22:13:39 1996  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c: (ascii_line_horz, ascii_line_vert,
+       ascii_line_intersection) Added debugging code.
+
+       Added a descriptive line above each table to describe it.
+       * command.c: (parse_cmd) Calls som_new_series.
+       
+       * som.c: New static vars table_num, subtable_num.  New `som'
+       member `title'.
+       (dump_page) New arguments.
+       (som_submit_table) Handle new variables.
+       
+       * som.c, som.h: (som_submit_table) New arguments.  All callers
+       changed.
+       (som_new_series) New function.
+       (build_target) Makes room for extra line.
+       (draw_title) New function.
+       (dump_page) Calls draw_title.  Bug fix: doesn't always set
+       som.ext->cp to 0.
+       
+       Columnation of tables support.
+       * som.h: Deleted fr, lr, ri from som_table.  Reorganized.
+       
+       * som.c: Deleted references to fr, lr, ri.
+       (som_columnate) Bux fix: sets group member of table.
+       (som_add_options) Function removed.
+       (dump_table) Split into three functions; extensively reworked.
+       
+       * descript.q: (dump_z_table) Better output table formatting; added
+       title support to correspond to som.h changes.
+       (display) Title support.
+
+       * output.h: Added OUTP_T_NONE.
+       
+Mon Jul  1 13:00:00 1996  Ben Pfaff  <blp@gnu.org>
+
+       * descript.q: Improved handling of Z scores; still not perfect.
+       
+       * output.h, ascii.c: Added hook for getting em width of current
+       font.
+       
+       * som.c: Uses new em-width hook.  Added debugging code to
+       several functions.
+       (som_columnate) New argument.
+       (som_add_options) Removed.
+
+Jun 29 17:40:47 1996  Ben Pfaff  <blp@gnu.org>
+
+       * som.h, som.c, output.c, output.h, ascii.c: Updated to work with
+       rules as a property of the table instead of as a property of the
+       cells.
+       
+       * ascii.c: Added `header' to table of options.
+       
+       * descript.q: Added even shorter statistic names; modified to work
+       with new som interface.
+       
+       * misc.c (blp_getdelim): Bug fix.
+       
+       * version.c: includes 'conf.h'.
+       
+----------------------------------------------------------------------
+Local Variables:
+mode: change-log
+version-control: never
+End:
index 7c52887bf884d773171c4b5d3f9fb2e41be6bb44..1ffbdf3e24ae70d8673cff1887b6d3fe2222c6ab 100644 (file)
@@ -11,3 +11,5 @@ include $(top_srcdir)/src/language/automake.mk
 include $(top_srcdir)/src/ui/automake.mk
 
 AM_CPPFLAGS += -I$(top_srcdir)/src -I$(top_srcdir)/lib -DPKGDATADIR=\"$(pkgdatadir)\"
+
+EXTRA_DIST += src/OChangeLog
diff --git a/src/data/ChangeLog b/src/data/ChangeLog
deleted file mode 100644 (file)
index ef91902..0000000
+++ /dev/null
@@ -1,2541 +0,0 @@
-2008-07-25  Ben Pfaff  <blp@gnu.org>
-
-       * casereader-translator.c (struct casereader_arithmetic_sequence):
-       New struct.
-       (casereader_create_arithmetic_sequence): New function.
-       (cas_translate): New function.
-       (cas_destroy): New function.
-
-2008-07-26  John Darrington <john@darrington.wattle.id.au>
-
-       * case-ordering.c case-ordering.h: Removed the value_cnt
-       associated with the ordering structure.
-
-2008-07-16  Jason Stover  <jhs@math.gcsu.edu>
-
-       * category.c (cat_get_category_count): New function.
-
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6512.
-
-       * data-out.c (output_infinite): Use gsl_isnan instead of isnan,
-       and gsl_isinf instead of isinf, as a stopgap measure for
-       portability until appropriate gnulib modules are available.
-
-       * por-file-writer.c (format_trig_double): Similarly, use
-       gsl_finite instead of finite.
-
-2008-03-18  John Darrington <john@darrington.wattle.id.au>
-
-       * data-in.c: If category is custom currency, then use
-       numeric format for input.
-
-2008-03-06  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c (var_name_is_insertable): New function.
-       (make_hinted_name): Don't accept variable names that match PSPP
-       keywords.  Thanks to Jason Stover for reporting the problem.
-
-2008-03-06  Ben Pfaff  <blp@gnu.org>
-
-       * format-guesser.c (syntax): Require month names to be spelled out
-       as English words, so that single characters that happen to be
-       Roman numerals don't get detected as months.  Thanks to John
-       Darrington for reporting this bug.
-
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6441.  Reviewed by John Darrington.
-
-       * format.c (fmt_fix): New function.
-       (fmt_fix_input): New function.
-       (fmt_fix_output): New function.
-
-       * format.def: Correct minimum width for DATETIME format.  It was
-       7, should have been 17.
-
-       * automake.mk: Add new files.
-
-       * format-guesser.c: New file.
-
-       * format-guesser.h: New file.
-
-2008-02-18  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6426.  Reviewed by John Darrington.
-       
-       * format.c (min_width): Renamed fmt_min_width and made public.
-       Updated all references.
-       (max_width): Renamed fmt_max_width and made public.  Updated all
-       references.
-       (max_decimals): Renamed fmt_max_decimals and made public.  Updated
-       all references.
-       (var_create): Use the new functions for default variable
-       attributes below.
-       (var_default_formats): New function.
-       (var_default_measure): New function.
-       (var_default_alignment): New function.
-
-       * format.h (macro FMT_MAX_NUMERIC_WIDTH): New macro.
-
-2008-02-09  Ben Pfaff  <blp@gnu.org>
-
-       Add a couple of extensions to GET DATA TYPE=TXT.  Patch #6412.
-       Thanks to John Darrington for review.
-
-       * data-in.c (data_in): Add new argument to designate the last
-       column of the data field being parsed, for use in error messages.
-       Update all callers.
-
-       * data-parser (struct data_parser): New member `quote_escape'.
-       (data_parser_create): Initialize quote_escape.
-       (data_parser_set_quotes): New function.
-       (cut_field): Support escaped quotes.
-       (parse_delimited_span): Ditto.
-       (parse_delimited_no_span): Ditto.
-
-       * get-data.c (parse_get_txt): Support ESCAPE extension subcommand
-       in enhanced mode.  Only support multiple quote characters in
-       enhanced mode.
-
-2008-02-06  John Darrington <john@darrington.wattle.id.au>
-
-       psql-reader.c psql-reader.h: Read more than one tuple at
-       once.  Fix bug reading a query which returns no data. Fix bug
-       when transformation followed a reader.
-       Ask the server for the number of records in the query, for the
-       benefit of the gui.
-
-2008-02-05  John Darrington <john@darrington.wattle.id.au>
-
-       psql-reader.c: So yesterday they release postgresql 8.3.0
-       which has money represented with 64 bits.  They must get
-       paid more than me.
-
-2008-02-02  John Darrington <john@darrington.wattle.id.au>
-
-       psql-reader.c psql-reader.h: New files.  Thanks to Ben Pfaff
-       for reviewing this code.
-       
-2008-02-02  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6347.
-
-       * sys-file-reader.c (read_variable_record): Allow missing values
-       to be specified on long string variables, but warn about them
-       because PSPP does not yet support them.
-       (read_extension_record): Ignore extension records 20 and 21, which
-       PSPP does not yet support.
-       (read_header): Fix error message when floating-point format cannot
-       be identified.
-
-2008-02-01  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6386.  Thanks to John Darrington for review and for the
-       updates to gnumeric-reader.c.
-
-       * dictionary.c (make_hinted_name): New function.
-       (make_numeric_name): New function.
-       (dict_make_unique_var_name): New function.
-
-       * gnumeric-reader.c (devise_name): Removed.
-       (munge_name): Removed.
-       (gnumeric_open_reader): Use new function
-       dict_make_unique_var_name.
-
-       * short-names.c (set_var_short_name_suffix): Use new function
-       str_format_26adic.
-
-2008-01-19  John Darrington <john@darrington.wattle.id.au>
-
-       * settings.c settings.h: Moved static variables into a 
-       single struct.  Renamed functions to have a settings_ prefix.
-
-2008-01-14  John Darrington <john@darrington.wattle.id.au>
-
-       * data-out.c (output_AHEX): Corrected number of bytes in
-       call to output_hex.  Closes bug #22011
-
-2008-01-02  John Darrington <john@darrington.wattle.id.au>
-
-       * variable.c variable.h: Replaced var_get_value_name with 
-       var_append_value_name which doesn't use any static data.
-        Thanks to Ben for review.
-
-2007-12-07  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6302.
-
-       * casegrouper.c (casegrouper_get_next_group): Cause a casegrouper
-       made from an empty casereader produce a casegrouper with no
-       groups, instead of one with one group that has no cases.
-
-       * casereader.c (casereader_is_empty): New function.
-
-2007-12-06  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6303.
-
-       * sys-file-reader.c (read_display_parameters): Handle variable
-       display parameters record with only 2 data items per variable.
-       Reported by Guido Gay <gay@irer.it>.
-
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       * identifier.c (lex_id_match_n): New function.
-       (lex_id_match): Reimplement in terms of lex_id_match_n.
-
-2007-11-24  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk (src_data_libdata_a_SOURCES): Add val-type.h, to fix
-       make distcheck.
-
-2007-11-24  Ben Pfaff  <blp@gnu.org>
-
-       Fix warning reported when reading back system files that include
-       very long string variables.  Thanks to Guido Gay <gay@irer.it> for
-       reporting this bug.
-
-       * short-names.c (short_names_assign): Fix dumb typo, in which `i'
-       was written where `j' was meant.
-
-2007-11-18  Ben Pfaff  <blp@gnu.org>
-
-       Properly write variables that include a range of missing values to
-       system files.  Thanks to Guido Gay <gay@irer.it> for reporting
-       this bug.
-
-       * sys-file-writer.c (write_variable): Correctly calculate
-       n_missing_values field when writing variables that include a range
-       of missing values.
-
-2007-11-10  Ben Pfaff  <blp@gnu.org>
-
-       Cleanups and bug fixes devised while writing up documentation.
-       Patch #6262.
-
-       * automake.mk (src_data_libdata_a_SOURCES): Add new files.
-
-       * dict-class.c: New file.
-       (dict_class_from_id): Move here.
-       (dict_class_to_name): Move here.
-
-       * dict-class.h: New file.
-       (enum dict_class): Move here.  Change from consecutive integers to
-       consecutive bits, to make testing for any of multiple values
-       easier.  Add new DC_ALL constant.
-
-       * dictionary.c (struct dictionary): Change `case_limit' from
-       size_t to casenumber.
-       (dict_get_vars): Make final argument an enum dict_class.
-       (dict_get_vars_mutable): Ditto.
-       (dict_get_case_limit): Change return value to casenumber.
-       (dict_set_case_limit): Change final argument to a casenumber.
-       (dict_unset_split_var): Add assertion.  Rephrase slightly.
-       (dict_set_label): Use xstrndup to simplify.
-
-       * format.c (fmt_step_width): AHEX format also needs 2-byte
-       stepping.
-       (fmt_set_style): Simplify assertions.
-
-       * missing-values.c (mv_add_num_range): Rename mv_add_range.
-       Simplify implementation.
-       (mv_has_value): Simplify implementation.
-       (mv_pop_value): Remove the first value, not the last, to avoid
-       having GET followed by SAVE reverse the order of missing values.
-       (mv_peek_value): Rename mv_get_value.  Simplify assertion.
-       (mv_has_range): Simplify implementation.
-       (mv_peek_range): Rename mv_get_range.
-       (can_resize_string): Removed.
-       (mv_is_resizable): Use value_is_resizable.
-       (mv_resize): Use value_resize.
-
-       * short-names.h (SHORT_NAME_LEN): Move here.
-
-       * val-type.h: New file, for definitions related to type and width
-       of abstract values.  Before, these definitions were mixed among
-       those related to "union value" and those related to variables.
-       (macro SYSMIS): Move here.
-       (macro LOWEST): Move here.
-       (macro HIGHEST): Move here.
-       (macro MAX_STRING); Move here.
-       (enum val_type): New enum with values VAL_NUMERIC and VAL_STRING.
-       Replaces enum var_type that had values VAR_NUMERIC and VAR_STRING.
-       All references updated.
-       (val_type_is_valid): New function.  Replaces var_type_is_valid.
-       All references updated.
-       (val_type_from_width): New function.  Replaces
-       var_type_from_width.  All references updated.
-
-       * value-labels.c (val_labs_copy): Renamed val_labs_clone.  All
-       references updated.
-       (val_labs_can_set_width): Use value_is_resizable.
-       (val_labs_add): Simply return false if the value labels set is too
-       wide, instead of having undefined behavior.
-       (val_labs_replace): Ditto.
-       (val_labs_replace): Ditto.
-       (val_labs_first): Set iterator to null if iteration is complete.
-       (val_labs_first_sorted): Ditto.
-       (val_labs_done): Become a no-op if the iterator is null.
-
-       * value.c (value_is_resizable): New function.
-       (value_resize): New function.
-
-       * variable.c (var_get_dict_class): New function.
-
-       * variable.h (macro LONG_NAME_LEN): Rename VAR_NAME_LEN.  Update
-       all references.
-
-2007-11-08  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c: Make formatted data parsing locale-independent.
-       (parse_number): Use c_strtod instead of strtod, to avoid
-       locale-specific behavior.
-       (parse_Z): Ditto.
-
-2007-11-06  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6256: add support for binary, 360 file formats.  Reviewed
-       by John Darrington.
-
-       * data-in.c (struct data_in): Add `encoding' member.
-       (data_in): Add `encoding' parameter, and re-encode the data passed
-       in where appropriate.  Update all callers to pass it in.
-       (parse_A): Implement EBCDIC recoding wart described in manual.
-       (parse_AHEX): Implement EBCDIC recoding.
-
-       * data-out.c (data_out_legacy): New function.
-       (data_out): Make into a wrapper around data_out_legacy.
-
-       * file-handle-def.c (struct file_handle): New member `encoding'.
-       (fh_create_file): Set encoding.
-       (fh_default_properties): Set default encoding.
-       (fh_get_legacy_encoding): New function.
-
-       * file-handle-def.h (enum fh_mode): New modes FH_MODE_FIXED
-       (that replaces FH_MODE_BINARY), FH_MODE_VARIABLE,
-       FH_MODE_360_VARIABLE, FH_MODE_360_SPANNED.
-       (struct fh_properties): New member `encoding'.
-
-2007-11-05  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6258.  Reviewed by John Darrington.
-
-       * file-handle-def.c (fh_lock): Add comment that TYPE should be
-       marked with N_() in the caller.  Added these markings to each
-       caller too.  Should make i18n easier.
-       Suggested by Chusslove Illich <caslav.ilic@gmx.net>.
-
-2007-11-03  Ben Pfaff  <blp@gnu.org>
-
-       Allow output files to overwrite input files (bug #21280).
-
-       * file-handle-def.c: Separate locking of files for input and for
-       output, to allow both to take place at once.  Also, distinguish a
-       file handle from the identity of the underlying file, because the
-       identity of a file changes over time and the file handle can't
-       represent two different identities.
-       (struct file_handle): Remove `next', `open_cnt', `deleted',
-       `type', `open_mode', `aux', `identity' members.  Change `id' from
-       char array to char *.  Add `ref_cnt' member.
-       (file_handle_from_ll) New function.
-       (file_handles) Removed.
-       (named_handles) New variable.
-       (fh_init) Initialize named_handles.
-       (fh_done) Remove name from all named_handles.
-       (free_handle) Updated for modified struct file_handle.
-       (unname_handle) New function.
-       (fh_ref) New function.
-       (fh_from_file_name) Removed.
-       (fh_unref) New function.
-       (fh_unname) New function.
-       (fh_from_id) Rewritten.
-       (create_handle) Updated for modified struct file_handle.
-       (fh_inline_file) Increment the handle's ref count.
-       (fh_create_file) Updated for modified struct file_handle.
-       (fh_create_scratch) Ditto.
-       (fh_free) Removed.
-       (mode_name) Removed.
-       (fh_open) Removed.
-       (fh_close) Removed.
-       (fh_is_open) Removed.
-       (fh_get_id) Updated for modified struct file_handle.
-       (fh_get_default_handle) Increment the handle's ref count.
-       (fh_set_default_handle) Handle ref counts.
-       (struct fh_lock) New structure.
-       (locks) New static var.
-       (fh_lock) New function.
-       (fh_unlock) New function.
-       (fh_lock_get_aux) New function.
-       (fh_lock_set_aux) New function.
-       (fh_is_locked) New function.
-       (make_key) New function.
-       (free_key) New function.
-       (compare_fh_locks) New function.
-       (hash_fh_lock) New function.
-
-       * file-handle-def.h (enum fh_access) New enum.
-
-       * file-name.c: Made file_identity the same in all supported
-       environments.
-       (struct file_identity): New `name' member.
-       (fn_get_identity): For a file that doesn't exist, get the
-       dev/inode of its directory plus its name.  If even the directory
-       doesn't exist, just use its name.  Merge the Windows
-       implementation into the Unix one.
-       (fn_compare_file_identities): Rewritten.  Merge the Windows
-       implementation into the Unix one.
-       (fn_hash_identity): New function.
-
-       * make-file.c (struct replace_file): New structure.
-       (all_files): New static var.
-       (replace_file_start): New function.
-       (replace_file_commit): New function.
-       (replace_file_abort): New function.
-       (free_replace_file): New function.
-       (unlink_replace_files): New function.
-
-       * por-file-reader.c (struct pfm_reader): Add `lock' member.
-       (close_reader): Unlock file.
-       (pfm_open_reader): Lock file.
-
-       * por-file-writer.c (struct pfm_writer): Add fh_lock, replace_file
-       members.
-       (pfm_open_writer): Lock file and prepare for its replacement.
-       (close_writer): Unlock file.
-
-       * scratch-handle.h (struct scratch_handle): Add unique_id so that
-       different generations of a scratch file can be distinguished.
-
-       * scratch-reader.c (scratch_reader_open): Verify that the file is
-       a scratch file.
-
-       * scratch-writer.c (struct scratch_writer): Add `lock' and `dict',
-       remove scratch_handle member.
-       (scratch_writer_open): Lock handle.  Prepare to replace handle
-       data, instead of doing it immediately.
-       (scratch_writer_casewriter_destroy): Replace handle data and
-       unlock handle.
-
-       * sys-file-reader.c (struct sfm_reader): Add `lock' member.
-       (sfm_open_reader): Lock file.
-       (close_reader): Unlock file.
-
-       * sys-file-writer.c (struct sfm_writer): Add fh_lock, replace_file
-       members.
-       (sfm_open_writer): Lock file and prepare for its replacement.
-       (close_writer): Unlock file.
-
-2007-11-02  Ben Pfaff  <blp@gnu.org>
-
-       * data-out.c (output_number): Use isfinite (from C99) instead of
-       gsl_isfinite, since we now have universal support for it in
-       gnulib.
-       (output_infinite): Ditto.
-       [!HAVE_ROUND] (round): Remove definition, since we now have a
-       replacement in gnulib.
-
-2007-10-27  John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.c: Fixed bug in dict_clone, where the vardict.dict member
-       wasn't initialised correctly. Closes bugs #21330 and 21397
-
-
-2007-10-08  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #21280.  Thanks to John Darrington for review.
-
-       * file-name.c (create_stream): New function.
-
-       * por-file-writer.c (pfm_open_writer): Use fh_open to open the
-       file handle before creating the file, to ensure that we don't
-       truncate a file that we're reading.  Make code easier to read by
-       using create_stream.
-
-       * sys-file-write.c (sfm_open_writer): Ditto.
-
-2007-10-01  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #21192.  Thanks to John Darrington for review.
-
-       * casereader.c (casereader_read): Decrement case_cnt before
-       calling the casereader's "read" member function, so that we
-       interact properly with lazy_casereader.
-
-       * datasheet.c: Add regression test for above bug fix.
-       (clone_datasheet): New function.
-       (lazy_callback): New function.
-       (check_datasheet_casereader): New function.
-       (check_datasheet): Check datasheet contents are reported correctly
-       through an ordinary casereader and a lazy casereader.
-       (clone_model): Use clone_datasheet.
-
-2007-09-24  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6210.  Reviewed by John Darrington.
-       * settings.c: Drop "long view", which is not needed any longer.
-       (static var long_view): Removed.
-       (force_long_view): Removed.
-       (get_viewwidth): Removed.
-       (init_viewport): Removed long_view reference.
-
-2007-09-19  John Darrington <john@darrington.wattle.id.au>
-       
-       * settings.c settings.h: Changed viewport's length and width to be 
-       owned by the user interface which uses the data library.  This allows
-       better abstraction, and makes dynamically adjustable dimensions easier.
-       
-2007-09-18  Ben Pfaff  <blp@gnu.org>
-
-       * procedure.c (proc_extract_active_file_data): New function.
-
-       * lazy-casereader.h: New file.
-
-       * lazy-casereader.c: New file.
-
-       * casereader.c (casereader_dynamic_cast): New function.
-
-2007-09-14  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c (dict_clone): Copy case indexes from cloned
-       dictionary.  Fixes bug #21061.  Reviewed by John Darrington.
-
-2007-09-13  John Darrington <john@darrington.wattle.id.au>
-
-       * value.c value.h (create_value): New function.
-
-2007-09-12  Ben Pfaff  <blp@gnu.org>
-
-       Make it clear that translator casereader and casewriter translate
-       functions are supposed to destroy their input case.
-       
-       * casereader-translator.c (struct casereader_translator): Change
-       input case parameter of translate member function from const
-       struct ccase * to struct ccase *.
-       (casereader_create_translator): Ditto, for translate parameter.
-
-       * casewriter-translator.c (struct casewriter_translator): Ditto.
-       (casewriter_create_translator): Ditto.
-
-2007-08-27  John Darrington <john@darrington.wattle.id.au>
-       
-       * sys-file-reader.c (read_display_parameters): Force display width 
-       to 8, if the sys file says 0 (like SPSS does).
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c (dict_dump): New function.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       Drop dict_compactor in favor of using the new struct case_map.
-
-       * dictionary.c (struct copy_map): Removed.
-       (struct dict_compactor): Removed.
-       (dict_make_compactor): Removed.
-       (dict_compactor_compact): Removed.
-       (dict_compactor_destroy): Removed.
-
-       * procedure.c (struct data_set): Change `compactor' member to be a
-       struct case_map *.
-       (proc_open): Use case_map_to_compact_dict instead of
-       dict_make_compactor.
-       (proc_casereader_read): Use case_map_execute instead of
-       dict_compactor_compact.
-       (proc_commit): Use case_map_destroy instead of
-       dict_compactor_destroy.
-
-       * scratch-writer.c (struct scratch_writer): Change `compactor'
-       member to be a struct case_map *.
-       (scratch_writer_open): Use case_map_to_compact_dict instead of
-       dict_make_compactor.
-       (scratch_writer_casewriter_write): Use case_map_execute instead of
-       dict_compactor_compact.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add case-map.c, case-map.h.
-
-       * case-map.c: New file.
-
-       * case-map.h: New file.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c (dict_compact_values): Don't delete scratch
-       variables as well as compacting case indexes.  Update all callers.
-       (dict_get_compacted_value_cnt): Rename dict_count_values and
-       change interface.  Update all callers.
-       (dict_get_compacted_value_cnt): Remove.
-       (dict_compacting_would_shrink): Remove.
-       (dict_compacting_would_change): Remove.
-       (dict_make_compactor): Add new parameter.  Update all callers.
-       
-       * procedure.c (proc_casereader_read): Use casewriter_get_value_cnt
-       instead of dict_count_values, changing an O(N) operation into
-       O(1).
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * casereader.c (casereader_read): Don't require cases read by a
-       casereader to be exactly the expected size: as long as they're big
-       enough, it's OK.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       Make casewriters keep track of the number of `union value's in
-       each case.  This is useful for two reasons: casewriter_write can
-       then check that the case being written is large enough, and later
-       recipients of the casewriter can determine the size of the case.
-       
-       * casewriter-translator.c (casewriter_create_translator): Add
-       value_cnt parameter.
-       
-       * casewriter.c (struct casewriter): Add value_cnt member.
-       (casewriter_write): Check that the case passed in is big enough.
-       (casewriter_get_value_cnt): New function.
-       (casewriter_create): Add value_cnt parameter.
-
-2007-08-09  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug reported by Jason Stover.
-       * settings.c: Move get_termcap_viewport and in particular the
-       #include for <curses.h> to the end of the file.  curses.h
-       redefines bool on some systems (e.g. OpenBSD), which causes
-       disagreement between uses of bool before its inclusion and
-       afterward.
-       Tested by Jason Stover.
-
-2007-07-29  Ben Pfaff  <blp@gnu.org>
-
-       Provisional fix for bug #18692 and bug #20161.  Reviewed by John
-       Darrington.
-
-       * file-name.c (fn_open): Only pass "r" or "w" to popen as mode
-       argument (never "rb" or "wb") because SUSv3 says that only those
-       modes are defined, and glibc in fact rejects other modes.
-
-       Open portable files with fn_open so that they can be read from
-       pipes.  Fix missing fh_close call to go along with fh_open.
-       Report an error if the file close reports an error.
-       * por-file-reader.c (close_reader): New function.
-       (por_file_casereader_destroy): Use close_reader.
-       (pfm_open_reader): Open file with fn_open.
-
-2007-07-28  Ben Pfaff  <blp@gnu.org>
-
-       Make PSPP able to read all the portable files I could find on the
-       web.  Thanks to John Darrington for review.  Bug #17620.
-       * por-file-reader.c (struct pfm_reader): New member `line_length'.
-       (error): Print file offset in hexadecimal.
-       (warning): New function.
-       (advance): Treat lines less than 80 bytes long as padded to 80
-       bytes with spaces.
-       (pfm_open_reader): Call read_documents if we find an "E" record.
-       (convert_format): Convert invalid formats to the default format
-       instead of aborting reading the file.
-       (read_variables): Rename duplicate variable names instead of
-       aborting reading the file.
-       (read_value_label): Allow string variables of different widths to
-       be assigned value labels in the same record.  Replace duplicate
-       value labels instead of aborting.
-       (read_documents): New function.
-
-       * por-file-writer.c (pfm_open_writer): Call write_documents if the
-       dictionary has documents.
-       (write_documents): New function.
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       Fix bugs related to bug #17213.
-
-       * settings.c: Use HAVE_LIBNCURSES instead of HAVE_LIBTERMCAP,
-       since the former is what config.h has.  Include the needed ncurses
-       headers.
-       (static var echo) Rename to `do_echo' because the original name is
-       the same as an ncurses identifier.
-       (get_termcap_viewport) Use error instead of msg.
-
-       * file-name.c (fn_interp_vars): Fix interpolation of $VARS.
-       (fn_close): Don't close stdin, stdout, stderr.
-
-2007-07-26 John Darrington <john@darrington.wattle.id.au>
-
-       * procedure.c procedure.h: Added callbacks which get invoked whenever 
-       a dataset's transformation chain changes.
-
-2007-07-24  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #6113.
-       * sys-file-writer.c (write_variable_display_parameters): Use new
-       var_default_display_width function to choose display width of
-       segments after the first one in a given variable.
-       * variable.c (var_create): Use var_default_display_width to pick
-       new variable's display width.
-       (var_default_display_width): New function.
-       Reviewed by John Darrington.
-
-2007-07-24  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #20427.
-       * por-file-writer.c (write_variables): Write weight variable.
-       Reviewed by John Darrington.
-
-2007-07-23  Ben Pfaff  <blp@gnu.org>
-
-       Improvements to system file reader and writer.
-       
-        First, move all detailed knowledge of very long strings into
-       sys-file-private.[ch], so that this nasty stuff can be isolated.
-
-       * sys-file-private.c (REAL_VLS_CHUNK): New macro.
-       (EFFECTIVE_VLS_CHUNK): New macro.
-       (min_int): New function.
-       (max_int): New function.
-       (sfm_width_to_bytes): Rewrite.
-       (sfm_width_to_octs): New function.
-       (sfm_segment_alloc_width): New function.
-       (sfm_segment_alloc_bytes): New function.
-       (sfm_segment_used_bytes): New function.
-       (sfm_segment_offset): New function.
-       (sfm_segment_effective_offset): New function.
-       (sfm_dictionary_to_sfm_vars): New function.
-
-       * sys-file-private.h (MIN_VERY_LONG_STRING): Removed.
-       (EFFECTIVE_LONG_STRING_LENGTH): Removed.
-       (struct sfm_var): New structure.
-
-        Next, improvements to the system file reader.
-
-       * sys-file-reader.h (struct sfm_read_info): Changed `case_cnt' to
-       type casenumber.  Added `version_major', `version_minor',
-       `version_revision'.
-
-       * sys-file-reader.c (struct sfm_reader): Replaced `flt64_cnt' by
-       `oct_cnt'.  Rename `vars', `var_cnt' to `sfm_vars', `sfm_var_cnt'.
-       Change `case_cnt' to type casenumber.  Removed `has_vls'.
-       (struct sfm_var): Removed.
-       (sfm_open_reader): Don't warn on wrong case size if the file was
-       written by SPSS 13, which tends to get it wrong.  Use
-       sfm_dictionary_to_sfm_vars.
-       (read_header): Always output system file info.
-       (read_variable_record): Simplify code for reading missing values.
-       (read_machine_int32_info): Save version numbers from system file
-       into info struct passed as new argument.
-       (read_long_string_map): Restructured to use new sys-file-private
-       functions.
-       (read_value_labels): Use size_overflow_p.
-       (sys_file_casereader_read): Get rid of distinction between fast
-       and slow paths.  Use information provided by sys-file-primate's
-       struct sfm_var to simplify code.
-       (skip_whole_strings): New function.
-       (read_int32): Renamed read_int.  Changed return value to int.
-       Updated all callers.
-       (read_flt64): Renamed read_float.  Changed return value to
-       double.  Updated all callers.
-       (int32_to_native): Removed.  Changed callers to use
-       integer_convert.
-       (flt64_to_double): Removed.  Changed callers to use float_convert.
-       
-        Finally, get rid of int32, flt64 terminology and types in system
-       file writer.  The former wasn't very useful since a POSIX "int"
-       can hold the whole range of int32 and we generally didn't have a
-       need for it to be exactly-32-bits, just at-least-32-bits.  The
-       latter was inconvenient because we had to assume that it could be
-       different from double and thereby convert special values SYSMIS,
-       HIGHEST, LOWEST to and from it in multiple places.  Instead, now
-       we just use "int" and "double" in most places, and do conversions,
-       if necessary, very close to where we do I/O.  This change meant
-       that the writer code couldn't represent records in the file as C
-       structs any longer, but that's no great loss.  The code actually
-       seems to be more readable without them.
-
-       Simplify the compression buffering code: only buffer as much as
-       necessary, which is no more than eight 8-byte units at any given
-       time.
-
-       * sys-file-writer.c (typedef flt64): Removed.
-       (macro second_lowest_flt64): Removed.
-       (struct sysfile_header): Removed.
-       (struct sysfile_variable): Removed.
-       (struct sfm_writer): Removed `needs_translation', `has_vls',
-       `flt64_cnt'.  Changed `compress' to type bool and `case_cnt' to
-       type casenumber.  Renamed `vars' to `sfm_vars', `var_cnt' to
-       `sfm_var_cnt'.  Replaced `buf', `end', `ptr', `x', `y' for
-       compression buffering by `opcodes', `opcode_cnt', `data',
-       `data_cnt'.  Renamed `var_cnt_vls' as `segment_cnt'.
-       (sfm_open_writer): Use sfm_dictionary_to_sfm_vars.  Use simple
-       data writer functions instead of structures.
-       (calc_oct_idx): New function.
-       (write_header): Use simple data writer functions instead of
-       structures.
-       (write_format_spec): Renamed write_format.  New argument.
-       (write_variable_continuation_records): New function.
-       (write_variable): Use simple data writer functions instead of
-       structures.  Use write_variable_continuation_records.  Write
-       entire very long string instead of requiring caller to understand
-       them.
-       (write_value_labels): Use simple data writer functions instead of
-       structures.
-       (write_documents): Ditto.
-       (write_variable_display_parameters): Use sys-file-private
-       functions to simplify.  Use simple data writer functions instead
-       of structures.
-       (write_vls_length_table): Use simple data writer functions instead
-       of structures.
-       (write_longvar_table): Ditto.
-       (write_rec_7_34): Break into new functions
-       write_integer_info_record, write_float_info_record.  Use simple
-       data writer functions instead of structures.
-       (buf_write): Removed.
-       (append_string_max): Removed.
-       (ensure_buf_space): Removed.
-       (sys_file_casewriter_write): Get rid of the distinction between
-       fast and slow paths, which didn't seem to be too useful.  Use new
-       functions write_case_uncompressed, write_case_compressed.
-       (put_instruction): Removed.
-       (put_element): Removed.
-       (write_compressed_data): Removed.
-       (close_writer): Use flush_compressed.  Only write case count to
-       system file if it will fit in the field.
-       (write_case_compressed): New function.
-       (write_case_uncompressed): New function.
-       (flush_compressed): New function.
-       (put_cmp_opcode): New function.
-       (put_cmp_number): New function.
-       (write_int): New function.
-       (convert_double_to_output_format): New function.
-       (write_float): New function.
-       (write_value): New function.
-       (write_string): New function.
-       (write_bytes): New function.
-       (write_zeros): New function.
-       (write_spaces): New function.
-
-       Reviewed by John Darrington.
-
-2007-07-22  Ben Pfaff  <blp@gnu.org>
-
-       Don't try to write very long strings to portable files.  The
-       format does not support it.
-
-       * por-file-writer.c (MAX_POR_WIDTH): New macro.
-       (pfm_open_writer): Limit output width to MAX_POR_WIDTH.
-       (write_format): Add arg to take width to resize format to.
-       (write_value): Limit width of value written to MAX_POR_WIDTH.
-       (write_variables): Limit width of variable and its output formats
-       to MAX_POR_WIDTH.
-       Reviewed by John Darrington.
-
-2007-07-22  Ben Pfaff  <blp@gnu.org>
-
-       * sys-file-reader.c (read_variable_to_value_map): Use max_warnings
-       local variable instead of literal 5.
-       Reviewed by John Darrington.
-       
-2007-07-22  Ben Pfaff  <blp@gnu.org>
-
-       Fix problems with uniqueness of short names in system files with
-       very long string variables.  Now a variable may have multiple
-       short names.
-       
-       * automake.mk (src_data_libdata_a_SOURCES): Add new files
-       short-names.c, short-names.h.
-
-       * dictionary.c (dict_clone): Clone all the short names.
-       (compare_strings): Move into short-names.c.
-       (hash_strings): Ditto.
-       (set_var_short_name_suffix): Ditto.
-       (dict_assign_short_names): Ditto, rename short_names_assign,
-       change to assign all short names.
-       
-       * por-file-writer.c (write_variables): Use short_names_assign
-       instead of dict_assign_short_names.
-
-       * short-names.c: New file.
-
-       * short-names.h: New file.
-
-       * sys-file-private.c (sfm_width_to_segments): New function.
-
-       * sys-file-reader.c (read_long_var_name_map): Save and restore all
-       the short names, not just the first one.
-       
-       * sys-file-writer.c (cont_var_name): Removed.
-       (sfm_open_writer): Use short_names_assign instead of
-       dict_assign_short_names.  Use unique short names assigned by
-       short_names_assign instead of those generated by cont_var_name.
-
-       * variable.c (struct variable): Remove `short_name' member,
-       replace by `short_names' and `short_name_cnt'.
-       (var_create) Initialize new members.
-       (var_get_short_name_cnt): New function.
-       (var_get_short_name): Now takes an index argument.  Changed most
-       callers to pass 0.
-       (var_set_short_name): Ditto.
-       (var_clear_short_name): Renamed var_clear_short_names, changed to
-       clear all short names.
-       
-       Reviewed by John Darrington.
-
-2007-07-22  Ben Pfaff  <blp@gnu.org>
-
-       * variable.c (var_set_width): Use new var_set_width function.
-
-       * missing-values.c (mv_n_values): Drop assertion, which was not
-       needed.
-
-       * format.c (fmt_default_for_width): New function.
-       (fmt_resize): New function.
-
-       Reviewed by John Darrington.
-
-2007-07-18 John Darrington <john@darrington.wattle.id.au>
-
-       * datasheet.c (datasheet_delete_columns): Added assertion to check
-       we're not deleting outside the range of the sheet.  
-
-       
-       * dictionary.c dictionary.h variable.c: Added the ability for string
-       variables to be resized.
-       
-       * vardict.h: Added some prototypes (moved from dictionary.h) as
-       these should only be called by variable.c
-
-
-2007-07-14 John Darrington <john@darrington.wattle.id.au>
-
-       * sfm-reader.c: Respect case_cnt field in file header.
-
-2007-07-01 John Darrington <john@darrington.wattle.id.au>
-
-       * transformation.c transformation.h (trns_chain_execute): Changed the 
-       signature (Patch #6057)
-
-2007-06-10  Ben Pfaff  <blp@gnu.org>
-
-       * casereader-filter.c (casereader_filter_destroy): Make sure to
-       write all the remaining excluded cases to the casewriter, if any.
-
-       * caseinit.c (init_list_destroy): Rewrite.
-       (init_list_clear): Ditto.
-
-       * casegrouper.c (casegrouper_get_next_group): Always set *reader
-       to null when returning false.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Actually implement the new procedure code and adapt all of its
-       clients to match.  Also adapt all of the other case sources and
-       sinks in the tree and their clients to use the
-       casereader/casewriter infrastructure.
-
-       * automake.mk: Add and remove files.
-
-       * any-reader.c: Change into a casereader.
-       * por-file-reader.c: Ditto.
-       * scratch-reader.c: Ditto.
-       * sys-file-reader.c: Ditto.
-
-       * any-writer.c: Change into a casewriter.
-       * por-file-writer.c: Ditto.
-       * scratch-writer.c: Ditto.
-       * sys-file-writer.c: Ditto.
-
-       * procedure.c: Change to use casereader, casewriter, caseinit, and
-       other new infrastructure.
-
-       * scratch-handle.c: Adapt to new infrastructure.
-
-       * case-sink.c: Removed, now dead code.
-       * case-sink.h: Ditto.
-       * case-source.c: Ditto.
-       * case-source.h: Ditto.
-       * casefile-factory.c: Ditto.
-       * casefile-private.h: Ditto.
-       * casefile.c: Ditto.
-       * casefile.h: Ditto.
-       * casefilter.c: Ditto.
-       * casefilter.h: Ditto.
-       * fastfile.c: Ditto.
-       * fastfile.h: Ditto.
-       * fastfile-factory.c: Ditto.
-       * fastfile-factory.h: Ditto.
-       * storage-stream.c: Ditto.
-       * storage-stream.h: Ditto.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Add datasheet code.
-
-       * automake.mk: Add new files.
-
-       * datasheet.c: New file.
-
-       * datasheet.h: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Until now, the procedure code has provided a case to the
-       case_source, which has filled in the data values that come from
-       the active file.  "Left" data values that don't come from the
-       active file naturally stay the same from case to case, because the
-       procedure code keeps using that same case.
-
-       One of the compromises that comes with the new procedure code is
-       that the active file allocates and provides its own case, which
-       the procedure code then has to resize to provide room for any
-       other variables that should go in the case and then fill in the
-       values of "left" variables.  Then, when we're done with that case,
-       we have to save the values of "left" variables to copy into the
-       next case read from the active file.
-
-       The caseinit code helps with this.
-
-       * automake.mk: Add new files.
-
-       * caseinit.c: New file. 
-
-       * caseinit.h: New file. 
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * value.h (value_cnt_from_width): New function.
-
-       * variable.c (var_get_value_cnt): Use new function.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Add casegrouper, to allow cases read from a given casereader to be
-       broken into groups, each of which has its own casereader.
-       Generally cases are grouped based on having equal values for some
-       set of variables.
-
-       * automake.mk: Add new files.
-
-       * casegrouper.c: New file.
-
-       * casegrouper.h: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Add interface to lexicographical ordering of cases.
-
-       * automake.mk: Add new files.
-
-       * case-ordering.c: New file.
-
-       * case-ordering.h: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Add casereaders and casewriters, the basis of the new data processing
-       implementation.  A casereader is a uniform interface to reading cases
-       from a data source; a casewriter is a uniform interface to writing
-       cases to a data sink.
-
-       * automake.mk: Add new files.
-       
-       * casereader-filter.c: New file.
-       
-       * casereader-provider.h: New file.
-
-       * casereader-translator.c: New file.
-       
-       * casereader.c: New file.
-       
-       * casereader.h: New file.
-       
-       * casewriter-provider.h: New file.
-       
-       * casewriter-translator.c: New file.
-       
-       * casewriter.c: New file.
-       
-       * casewriter.h: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       "casewindow" data structure that extends the deque (from libpspp)
-       of cases with the ability to dump cases to disk if we get too many
-       of them in memory.
-
-       * automake.mk: Add new files.
-
-       * casewindow.c: New file.
-
-       * casewindow.h: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       sparse_cases data structure that augments a sparse_array of cases
-       with the ability to dump cases to disk if we get too many cases in
-       memory.
-
-       * automake.mk: Add new files.
-
-       * sparse-cases.c: New file.
-
-       * sparse-cases.h: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adds a low-level on-disk case array data structure.
-       
-       * automake.mk: Add new files.
-
-       * case-tmpfile.c: New file.
-
-       * case-tmpfile.h: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       In a couple of places we calculate the maximum number of cases to
-       keep in memory based on the user-defined workspace.  Enable
-       centralizing the calculation through a new function.
-       
-       * settings.c (get_workspace_cases): New function.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       The casenumber type is defined in transformations.h, but case.h is
-       a more sensible place.  Move it.
-
-       * case.h (CASENUMBER_MAX): New macro.
-       (typedef casenumber): Move here, from transformations.h.
-
-2007-06-03  Ben Pfaff  <blp@gnu.org>
-
-       Slightly generalize case_to_values and case_from_values functions.
-
-       * case.c (case_to_values): Rename case_copy_out, change interface.
-       (case_from_values): Rename case_copy_in, change interface.
-
-       * fastfile.c (fastfilereader_get_next_case): Update caller.
-       (write_case_to_disk): Ditto.
-
-2007-06-02  Ben Pfaff  <blp@gnu.org>
-
-       Clean up after a forgotten part of patch #5829.
-       
-       * casedeque.h: Remove unused file.
-
-       * automake.mk: Remove casedeque.h from sources.
-
-2007-05-10  Jason Stover  <jhs@math.gcsu.edu>
-
-       * category.c: Removed redundant #include
-
-2007-05-06  Ben Pfaff  <blp@gnu.org>
-
-       Abstract the documents within a dictionary a little better.
-       Thanks to John Darrington for suggestion, initial version, and
-       review.  Patch #5917.
-
-       * dictionary.c (struct dictionary): Change `documents' member from
-       char * to struct string.
-       (dict_clear): Destroy struct string.
-       (dict_get_documents): Convert struct string to char *.
-       (dict_set_documents): Set struct string.  Pad to 80-character
-       multiple.
-       (dict_clear_documents): New function.
-       (dict_add_document_line): New function.
-       (dict_get_document_line_cnt): New function.
-       (dict_get_document_line): New function.
-
-       * dictionary.h (macro DOC_LINE_LENGTH): New macro.
-
-       * sys-file-reader.c (read_documents): Use new document functions.
-
-2007-04-19 John Darrington <john@darrington.wattle.id.au>
-
-       * sys-file-reader.c: When reading a system file which has no 
-       long name table, automatically create one where the long names 
-       are the lower case versions of the short names.
-       
-2007-04-22  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c (dict_set_split_vars): dict_destroy expects that
-       dict_clear will free most data related to the dictionary.
-       dict_clear does a decent job, except that dict_set_split_vars on
-       some systems won't actually free the dict's "split" member.
-       Instead, it'll allocate a 1-byte region.  Fix this.
-
-       * value.c (value_copy): New function.
-       (value_set_missing): Ditto.
-
-2007-04-22 John Darrington <john@darrington.wattle.id.au>
-
-       * Deleted existing category.h and moved cat-routines.h into 
-       category.h  Encapsulated struct cat_vals better.
-
-2007-04-19 John Darrington <john@darrington.wattle.id.au>
-
-       * sys-file-reader.c: When reading a system file which has no 
-       long name table, automatically create one where the long names 
-       are the lower case versions of the short names.
-       
-2007-04-16 John Darrington <john@darrington.wattle.id.au>
-
-       * sys-file-reader.c: Some versions of Other Software seem to 
-        produce system files with string  variables' measure set to 
-       zero.  We'll assume these are supposed to be nominal variables.
-
-2007-03-30  Ben Pfaff  <blp@gnu.org>
-
-       * procedure.c: Adapt to new deque data structure.
-
-Mon Feb 19 10:53:21 2007  John McCabe-Dansted <gmatht@gmail.com>
-                         Ben Pfaff <blp@gnu.org>
-
-       * file-name.c: Mingw compatibility fixes.
-       (fn_search_path): Use ISSLASH instead of comparing against '/'
-       directly.
-       (fn_dir_name): Use dir_name from gnulib.
-       (fn_is_absolute): Use IS_ABSOLUTE_FILE_NAME from gnulib.
-       (fn_get_identity): Use GetFullPathName instead of canonicalize
-       from gnulib, because the latter does not fully support
-       Windows-style path names.  Use this implementation based on the
-       detected presence of Windows instead of the absence of Unix, since
-       the new implementation is Windows-specific.
-       (fn_compare_file_identities): In Windows implementation, compare
-       names case-insensitively.
-
-Sun Feb 18 13:28:02 2007  Ben Pfaff  <blp@gnu.org>
-
-       * make-file.c: Don't include mkstemp.h, because gnulib now causes
-       <stdlib.h> to have the same effect.
-
-Sun Feb 18 11:20:24 2007  Ben Pfaff  <blp@gnu.org>
-
-       * por-file-reader.c: Add missing _() around messages.
-
-Sun Feb 11 20:44:13 2007  Ben Pfaff  <blp@gnu.org>
-
-       * make-file.c: Include "mkstemp.h", without which linking on
-       mingw32 fails.
-
-Thu Feb  8 14:59:05 2007  Ben Pfaff  <blp@gnu.org>
-       Reduce platform dependence.
-       * file-name.c (fn_tilde_expand): Removed, and removed calls to it.
-       Everywhere we using this, we really should have just depended on
-       the shell to expand tildes.
-       (fn_search_path): Simplify, given that we don't do tilde expansion
-       any longer.
-       (fn_normalize): Removed.  Caller changed to use the canonicalize
-       module from gnulib.
-       (fn_get_cwd): Removed.  Only user was fn_normalize.
-       (fn_is_absolute): Really only test for absolute names.
-       (fn_is_special): Use pipe files if HAVE_POPEN, not if we're in
-       unix.
-       (fn_readlink): Removed, as it was only used fn_normalize.
-       (fn_exists): Assume the stat function is available; gnulib does.
-       (fn_open): Use pipe files if HAVE_POPEN, not if we're in unix.
-Sat Feb  3 21:52:17 2007  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c (dict_create_vector_assert): New function.
-
-Wed Feb  7 21:25:15 2007  Ben Pfaff  <blp@gnu.org>
-
-       * file-name.c (fn_normalize): Correct name of function
-       fn_is_special.  Thanks to John McCabe-Dansted <gmatht@gmail.com>
-       for pointing this out.
-
-Thu Feb  1 16:53:37 2007  Ben Pfaff  <blp@gnu.org>
-
-       We are using a single member in struct file_handle, the "name"
-       field, for more than one purpose.  When it begins with '"', it's a
-       file name; otherwise, it's a token that can be used to identify
-       it.  When that assertion fires, it's because we searched for the
-       name case-sensitively as a file name (so that there was no match),
-       and then we try to insert it case-insensitively as a token, which
-       fails because duplicates aren't allowed.
-
-       Solution: break the two purposes into two separate fields.  This
-       fixes the problem and likely makes the code easier to read too.
-
-       Fixes bug #18922.  Thanks to John Darrington for bug report and
-       review.
-
-       * file-handle-def.c (struct file_handle): New `id' member.
-       (fh_from_name): Rename fh_from_id.  Update all callers.
-       (create_handle): New `id' parameter.  Update all callers.
-       (fh_create_file): Ditto.
-       (fh_get_id): New function.
-
-Mon Jan 15 16:18:10 2007  Ben Pfaff  <blp@gnu.org>
-
-       * case.c (case_is_null): Change return type to bool.
-
-Mon Jan 15 10:57:28 2007  Ben Pfaff  <blp@gnu.org>
-
-       Add debugging code.
-       
-       * case.c (case_clone) [DEBUGGING]: When debugging, don't use
-       reference counting to share data.  This makes it easy for
-       valgrind, etc. to find accesses to cases that have been destroyed
-       but have been kept around by another user's ref-count.  This often
-       happens when the data set is small enough to find in memory; if a
-       bigger data set that would overflow to disk were used, then data
-       corruption would occur.
-
-Mon Jan 15 10:55:18 2007  Ben Pfaff  <blp@gnu.org>
-
-       Simplify code.
-
-       * case.c (case_unshare): Make it check internally whether the
-       ref_cnt is greater than 1, so that the callers don't have to.
-       Update callers not to check.
-
-Mon Jan 15 10:53:01 2007  Ben Pfaff  <blp@gnu.org>
-
-       Before, I was thinking that I might want to get rid of reference
-       counting at some point.  Now, I'm pretty sure that it's here to
-       stay.  Thus, because we have to store the value_cnt anyway for
-       reference-counted cases, we might as well expose it to users.
-
-       * case.c (case_get_value_cnt): New function.
-       (case_resize): Drop OLD_CNT argument.  Update all callers.  Only
-       resize case if its size actually changed.
-
-       * casefile.c (casefile_append_xfer): Use case_get_value_cnt
-       instead of peeking inside struct case directly.
-       (casefile_append): Ditto.
-
-Mon Jan 15 10:50:22 2007  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of the inlines for the case functions, which made the
-       header file hard to read.  (Also, in testing with "-O2 -DNDEBUG",
-       the inlines didn't speed up "make check" at all, which is not a
-       perfect benchmark but seems indicative.)
-       
-       * case.c: Remove #ifdef DEBUGGING...#endif around many function
-       definitions.  Remove some assertions on nonnull pointers that were
-       redundant with a pointer dereference soon after in the function.
-       Also:
-       (struct case_data): Move definition here from case.h.
-       (case_data): Ditto.
-       (case_num): Ditto.
-       (case_str): Ditto.
-       (case_data_wr): Ditto.
-       
-Sun Jan 14 21:41:12 2007  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add casedeque.h to sources.
-       
-       * casedeque.h: New file.
-
-       * procedure.c: (struct dataset) Change lag_count, lag_head,
-       lag_queue member into single struct casedeque member.  Update all
-       users to use the casedeque instead.
-       (lag_case) Removed.
-
-Sun Jan 14 21:43:12 2007  Ben Pfaff  <blp@gnu.org>
-
-       * procedure.c: Simplify lagged cases interface.  Updated all
-       clients--well, the only client--to use the simplified interface.
-       (dataset_n_lag) Removed.
-       (dataset_set_n_lag) Removed.
-       (dataset_need_lag) New function.
-
-Tue Jan  9 07:20:05 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.c procedure.c: More changes to ensure that callbacks occur
-       whenever appropriate, but only when the dataset/dictionary is in a 
-       consistent state.
-
-Sun Jan  7 08:33:04 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.c dictionary.h : Added callbacks for change of filter and 
-       split variables.  Refactored some code to ensure that callbacks get
-       invoked when appropriate.
-
-       * procedure.c (proc_cancel_temporary_transformations): Make sure that 
-       replace_dict callback occurs when permanent_dict replaces the current
-       dictionary.
-
-Wed Jan  3 11:02:11 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.c dictionary.h : Added callback for when the weight 
-       variable of a dictionary changes.
-
-Mon Jan  1 10:36:26 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.c dictionary.h : Added replace_source and replace_dict
-       callbacks, and functions to deal with them.
-
-Fri Dec 22 13:56:08 2006  Ben Pfaff  <blp@gnu.org>
-
-       Simplify missing value handling.
-
-       * missing-values.h (enum mv_class): New type.
-       (enum mv_type): Moved definition into missing-values.c and renamed
-       each MV_* to MVT_*, to distinguish them from the exposed mv_class
-       enums.  Updated all uses.
-       (struct missing_values): Changed type of `type' from `enum
-       mv_type' to `int' because the definition is no longer exposed.
-       
-       * missing-values.c (mv_is_value_missing): Add new enum mv_class
-       parameter.  Update all callers.
-       (mv_is_num_missing): Ditto.
-       (mv_is_str_missing): Ditto.
-       (mv_is_value_user_missing): Removed.  Changed callers to use
-       mv_is_value_missing.
-       (mv_is_num_user_missing): Removed.  Changed callers to use
-       mv_is_num_missing.
-       (mv_is_str_user_missing): Removed.  Changed callers to use
-       mv_is_str_missing.
-       (mv_is_value_system_missing): Removed.  Changed callers to use
-       mv_is_value_missing.
-       (mv_set_type): Removed.  Changed callers to use mv_clear.
-       (mv_clear): New function.
-       
-       * variable.c (var_is_value_missing): Add new enum mv_class
-       parameter.  Update all callers.
-       (var_is_num_missing): Ditto.
-       (var_is_str_missing): Ditto.
-       (var_is_value_user_missing): Removed.  Changed callers to use
-       var_is_value_missing.
-       (var_is_num_user_missing): Removed.  Changed callers to use
-       var_is_num_missing.
-       (var_is_str_user_missing): Removed.  Changed callers to use
-       var_is_str_missing.
-       (var_is_value_system_missing): Removed.  Changed callers to use
-       var_is_value_missing.
-       
-       * casefilter.c (struct casefilter): Use enum mv_class in place of
-       bool.
-       (casefilter_variable_missing): Adapt to new member.
-       (casefilter_create): Change signature to take enum mv_class,
-       update callers.
-
-Fri Dec 22 20:08:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * casefile-factory.h fastfile-factory.c fastfile-factory.h: New files.
-
-       * case-sink.c case-sink.h procedure.c procedure.h 
-          storage-stream.c: Now uses the factory.
-       
-Sat Dec 16 22:05:18 2006  Ben Pfaff  <blp@gnu.org>
-
-       Make it possible to pull cases from the active file with a
-       function call, instead of requiring indirection through a callback
-       function.
-
-       * case-source.h (struct case_source_class): Change ->read function
-       to return a single case, instead of calling a callback function
-       for each case.  Change ->destroy function to return an error
-       status.
-
-       * case-source.c (free_case_source): Pass along the value returned
-       by the case_source ->destroy function.
-
-       * procedure.c (struct write_case_data): Removed.
-       (struct dataset): Added some members to track procedure state.
-       (procedure): Optimize the trivial case at this level.
-       (internal_procedure): Re-implement in terms of proc_open,
-       proc_read, proc_close.
-       (proc_open) New function.
-       (proc_read) New function.
-       (proc_close) New function.
-       (write_case) Moved into proc_read.
-       (close_active_file) Moved closing of data source into proc_close.
-
-       * storage-source.c: Rewrote to conform with modified
-       case_source_class interface.
-
-       * transformations.c (trns_chain_execute): Added argument to allow
-       starting execution from an arbitrary transformation.  Updated
-       callers.
-
-       * transformations.h (enum TRNS_NEXT_CASE) Renamed TRNS_END_CASE.
-
-Sat Dec 16 14:09:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sys-file-reader.c (read_display_parameters): Don't assume that
-       MEASURE_* and ALIGN_* have the same values found in system files.
-
-       * sys-file-writer.c (write_variable_display_parameters): Ditto.
-
-       * variable.h: Change MEASURE_NOMINAL, MEASURE_ORDINAL,
-       MEASURE_SCALE to be 0-based instead of 1-based.  This also fixes
-       the value of n_MEASURES, which was off by 1 (at least from my
-       point of view).
-
-Sat Dec 16 12:17:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * dictionary.c dictionary.h vardict.h variable.c: Added optional
-               callbacks which are invoked when the dictionary or its 
-               variables are changed.  
-       
-       * missing-values.c missing-values.h value-labels.c: Tidied up
-               consistency checks, and made some of them return false 
-               instead of assert-failing. 
-
-Wed Dec 13 19:30:11 2006  Ben Pfaff  <blp@gnu.org>
-
-       * calendar.c (calendar_days_in_month): New function.
-
-Mon Dec 11 07:53:39 2006  Ben Pfaff  <blp@gnu.org>
-
-       * value-labels.c (hash_int_val_lab): Only hash as many bytes as
-       the value label's width.
-
-Sun Dec 10 14:21:29 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sfm-private.h: Move contents into sys-file-writer.c, which is
-       the only remaining user.  Removed Borland C++-specific directives.
-       
-       * sys-file-reader.c: Clean up and rewrite entire file.  The
-       rewritten version is simpler and better abstracted, and should be
-       easier to maintain and extend.  It avoids using structures to read
-       file data, which is prone to padding variations among compilers.
-       It should also handle non-IEEE 754 system files, although I
-       haven't been able to find any.  It has been tested against many
-       .sav files obtained from the Web and found to produce the same
-       results as the earlier version of the code, or in some cases
-       improved results.  It is more tolerant of format variations found
-       in the wild.
-
-       * sys-file-reader.h (struct sfm_read_info): Removed `big_endian'
-       member, putting an enum integer_format in its place.  New member
-       `float_format'.  Changed `compressed' member to type bool.
-
-Sun Dec 10 13:48:53 2006  Ben Pfaff  <blp@gnu.org>
-
-       * dictionary.c (dict_delete_consecutive_vars): New function.
-
-Sat Dec  9 20:08:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       * file-name.c (fn_search_path): Remove prefix arg that was unused
-       by any caller.  Updated all callers.
-
-Sat Dec  9 20:04:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format.c (fmt_dollar_template): Use user's decimal point
-       character.  Add assertion.
-
-Sat Dec  9 20:02:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format.c (fmt_dollar_template): New function, based on
-       dollar_format_template from var-type-dialog.c.
-
-Sat Dec  9 18:05:59 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-out.c (output_scientific): Fix bad assumption that "buf" is
-       null-terminated.
-       
-Sat Dec  9 17:23:23 2006  Ben Pfaff  <blp@gnu.org>
-
-       Finish converting struct variable to an opaque type.  In this
-       phase, we add remaining setter and getter functions, convert the
-       remaining PSPP code to use them, and do a bunch of cleanup.  The
-       resulting changes are pervasive but mostly trivial, and only the
-       notable changes are logged.
-       
-       * automake.mk (src_data_libdata_a_SOURCES): Add the new source
-       files.
-       
-       * case.c (case_data): Renamed case_data_idx.
-       (case_num): Renamed case_num_idx.
-       (case_str): Renamed case_str_idx.
-       (case_data_rw): Renamed case_data_rw_idx.
-
-       * case.h (case_data): New function with old name and an interface
-       that takes a variable instead of an index, which is easier to
-       use.  Updated all callers to use the new interface, or to use the
-       new *_idx function (see above).
-       (case_num): Ditto.
-       (case_str): Ditto.
-       (case_data_rw): Ditto.
-       
-       * category.c (cat_stored_values_destroy): Changed interface to
-       take a struct cat_vals * instead of a struct variable *.
-
-       * dictionary.c (dict_clone): Use new vector_clone function.     
-       (dict_clear) Use new var_destroy function.
-       (add_var) New function.
-       (dict_create_var) Rewrite in terms of dict_create_var_assert.
-       (dict_create_var_assert) Rewrite in terms of add_var.
-       (dict_clone_var) Rewrite in terms of dict_clone_var_assert.
-       (dict_clone_var_assert) Rewrite in terms of var_clone, add_var.
-       (dict_lookup_var) Use new var_create, var_destroy functions.
-       (dict_contains_var) Rewrite in terms of new vardict functionality.
-       (set_var_dict_index) New function.
-       (set_var_case_index) New function.
-       (reindex_vars) New function.
-       (dict_delete_var) Rewrite in terms of new vardict functionality.
-       (dict_reorder_var) Ditto.
-       (dict_reorder_vars) Ditto.
-       (rename_var) New function.
-       (dict_rename_var) Use rename_var.
-       (dict_rename_vars) Use pool to simplify code.  Use rename_var.
-       (dict_get_compacted_idx_to_fv) Rename
-       dict_get_compacted_dict_index_to_case_index, update callers.
-       (dict_create_vector) Use new vector_create function.
-       (dict_clear_vectors) Use new vector_destroy function.
-       (set_var_short_name_suffix) Move here from variable.c, renamed
-       from var_set_short_name_suffix, make static, update caller.
-
-       * sys-file-private.c: New file.  
-       (sfm_width_to_bytes) Moved here from variable.c, renamed from
-       width_to_bytes, update callers.
-
-       * sys-file-private.h: New file.  Later it will supplant
-       sfm-private.h; for now it supplements it.
-       (macro MIN_VERY_LONG_STRING) New macro.
-       (macro EFFECTIVE_LONG_STRING_LENGTH) New macro, from value.h.
-
-       * sys-file-reader.c: Use MIN_VERY_LONG_STRING - 1 where
-       MAX_LONG_STRING was used before.
-
-       * sys-file-writer.c: Ditto.
-
-       * value-labels.c: Change the paradigm here to be that a null
-       pointer is OK for a struct val_labs * in most cases; it just
-       represents an empty set of value labels.
-       (val_labs_copy) A copy of a null set is a null set.
-       (val_labs_count) A null set has 0 labels.
-       (val_labs_replace) Change return type to void.  Rewrite for
-       simplicity.
-       (val_labs_find) A null set does not contain the value.
-       (value_to_string) Moved to variable.c, renamed var_get_value_name,
-       transposed argument order, updated all callers.
-
-       * value.c: New file.
-       (value_dup) Moved here from variable.c.
-       (compare_values) Ditto.
-       (hash_value) Ditto.
-
-       * value.h: (macro MAX_SHORT_STRING) Rewrote for simplicity.
-       (macro MAX_LONG_STRING) Removed, because it was only interesting
-       for system files, not for general code.
-       (macro MAX_VERY_LONG_STRING) Ditto.
-       (macro EFFECTIVE_LONG_STRING_LENGTH) Moved to sys-file-private.h.
-       (macro MAX_ELEMS_PER_VALUE) Removed, as it was unused.
-
-       * vardict.h: New file, for an interface between variables and
-       their dictionaries.
-
-       * variable.c: A lot of functions were moved around, for better
-       organization.
-       (struct variable) Move definition here, from variable.h.
-       (var_type_adj) Removed--makes i18n hard.
-       (var_type_noun) Ditto.
-       (var_create) New function.
-       (var_clone) New function.
-       (var_destroy) New function.
-       (var_set_name) Assert that variable is not in a dictionary.
-       (compare_var_names) Rename compare_vars_by_name and fix a couple
-       of callers who thought the args were strings.
-       (hash_var_name) Rename hash_var_by_name.
-       (compare_var_ptr_names) Rename compare_var_ptrs_by_name.
-       (hash_var_ptr_name) Rename hash_var_ptr_by_name.
-       (var_is_very_long_string) Removed, because it was only interesting
-       to system file code.
-       (var_set_missing_values) Allow the argument to be the wrong width,
-       as long as we can resize it.  Simplify callers who were doing the
-       resizing themselves.
-       (var_get_value_labels) New function.
-       (var_has_value_labels) New function.
-       (var_set_value_labels) New function.
-       (alloc_value_labels) New function.
-       (var_add_value_label) New function.
-       (var_replace_value_label) New function.
-       (var_clear_value_labels) New function.
-       (var_lookup_value_label) New function.
-       (var_get_value_name) Moved here from variable.c, renamed from
-       var_get_value_name, transposed argument order, updated all
-       callers.
-       (var_to_string) Moved here, from variable-label.c.
-       (var_set_leave) New function.
-       (var_get_leave) New function.
-       (var_must_leave) New function.
-       (var_set_short_name_suffix) Moved to dictionary.c, renamed
-       set_var_short_name_suffix.
-       (var_get_dict_index) New function.
-       (var_get_case_index) New function.
-       (var_get_obs_vals) New function.
-       (var_set_obs_vals) New function.
-       (var_has_obs_vals) New function.
-       (var_get_vardict) New function.
-       (var_set_vardict) New function.
-       (var_has_vardict) New function.
-       (var_clear_vardict) New function.
-       (value_dup) Moved to value.c.
-       (compare_values) Ditto.
-       (hash_value) Ditto.
-
-       * variable.h: (enum NUMERIC) Rename VAR_NUMERIC, update all users.
-       (enum ALPHA) Rename VAR_STRING, update all users.
-
-       * vector.c: New file.
-       (struct vector) Moved here, from variable.h.
-       (check_widths) New function.
-       (vector_create) New function.
-       (vector_clone) New function.
-       (vector_destroy) New function.
-       (vector_get_name) New function.
-       (vector_get_var) New function.
-       (vector_get_var_cnt) New function.
-       (compare_vector_ptrs_by_name) New function.
-
-       * vector.h: New file.
-
-Sun Dec 10 11:32:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * casefilter.c (casefilter_variable_missing): Avoided comparision of
-       string variables to SYSMIS.  Thanks to Ben Pfaff for reporting this
-       problem.
-
-Sat Dec  9 07:18:03 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * value-labels.c (destroy_atoms): New function.
-       * value-labels.c (atom_create): Call destroy_atoms in atexit handler.
-
-Thu Dec  7 17:38:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       Thanks to Jason Stover for pointing out this problem.
-       
-       * data-out.c (output_number): Use gsl_finite from GSL, which is
-       portable, instead of isfinite, which is not.
-       (power256) Ditto.
-
-Thu Dec  7 15:22:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * variable.c variable.h (value_dup): New function.
-
-Mon Dec  4 22:20:17 2006  Ben Pfaff  <blp@gnu.org>
-
-       Start converting struct variable to an opaque type.  In this
-       phase, we add a bunch of setter and getter functions and convert
-       most of the PSPP code to use them.  The resulting changes are
-       pervasive but mostly trivial, and only the notable changes are
-       logged.
-       
-       * format.c (fmt_equal): New function.
-       
-       * variable.c (var_type_is_valid): New function.
-       (measure_is_valid) Moved here, from format.c.
-       (alignment_is_valid) Moved here, from format.c.
-       (var_get_name) New function.
-       (var_set_name) New function.
-       (width_to_type) New function.
-       (var_get_type) New function.
-       (var_get_width) New function.
-       (var_set_width) New function.
-       (var_is_numeric) New function.
-       (var_is_alpha) New function.
-       (var_is_short_string) New function.
-       (var_is_long_string) New function.
-       (var_is_very_long_string) New function.
-       (var_get_missing_values) New function.
-       (var_set_missing_values) New function.
-       (var_clear_missing_values) New function.
-       (var_has_missing_values) New function.
-       (var_is_value_missing) New function.
-       (var_is_num_missing) New function.
-       (var_is_str_missing) New function.
-       (var_is_value_user_missing) New function.
-       (var_is_num_user_missing) New function.
-       (var_is_str_user_missing) New function.
-       (var_is_value_system_missing) New function.
-       (var_get_print_format) New function.
-       (var_set_print_format) New function.
-       (var_get_write_format) New function.
-       (var_set_write_format) New function.
-       (var_set_both_formats) New function.
-       (var_get_label) New function.
-       (var_set_label) New function.
-       (var_clear_label) New function.
-       (var_has_label) New function.
-       (var_get_measure) New function.
-       (var_set_measure) New function.
-       (var_get_display_width) New function.
-       (var_set_display_width) New function.
-       (var_get_alignment) New function.
-       (var_set_alignment) New function.
-       (var_get_value_cnt) New function.
-       (var_get_leave) New function.
-       (var_get_short_name) New function.
-
-       * variable.h: (struct variable) Removed "type" and "nv" members;
-       they are now computed from "width" where needed.
-
-Mon Dec  4 21:38:40 2006  Ben Pfaff  <blp@gnu.org>
-
-       * missing-values.c (mv_resize): Don't write beyond end of the
-       allocated buffer when resizing a long string.
-
-Sat Dec  2 16:28:32 2006  Ben Pfaff  <blp@gnu.org>
-
-       Clean up identifier code: don't require identifier enumerations to
-       be in a particular order; make better use of string library;
-       expose less of the internals.
-               
-       * identifier.c: (lex_skip_identifier) Rename lex_id_get_length,
-       change interface.  Updated all callers.
-       (lex_id_match) Change interface to use struct substring, update
-       all callers.
-       (lex_id_match_len) Removed.  Update callers to use lex_id_match.
-       (global array keywords[]) Make static, change form.  Update all
-       users to use lex_id_name instead.
-       (lex_is_keyword) New function.
-       (lex_id_to_token) Change interface to use struct substring, update
-       all callers.
-       (lex_id_name) New function.
-
-       * identifier.h: (T_FIRST_KEYWORD) Removed.  Changed users to call
-       lex_is_keyword instead.
-       (T_LAST_KEYWORD) Removed.
-       (T_N_KEYWORDS) Removed.
-       
-Sat Nov 18 20:46:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format.c: (fmt_date_template) Distinguish characters for which a
-       space is output and any date delimiter is allowed on input, from
-       those for which a space is output and only a space is allowed on
-       input.  The former is represented by X, the latter by a space.
-       Also, drop distinction between h and H, changing the former to the
-       latter.
-
-       * data-in.c: Completely rewrite internals to conform to SPSS input
-       formats as closely as possible.
-       (data_in) Changed external interface by replacing the structure
-       that was used as a single argument by a set of arguments.  Updated
-       all callers.
-       (data_in_finite_line) Removed.  Converted all callers to use plain
-       data_in.
-       (data_in_get_integer_format) New function.
-       (data_in_set_integer_format) New function.
-       (data_in_get_float_format) New function.
-       (data_in_set_float_format) New function.
-
-       * data-in.h: (enums DI_IGNORE_ERROR, DI_IMPLIED_DECIMALS) Removed.
-       (struct data_in) Removed.
-
-       * data-out.c: (output_date) Drop each component from the input as
-       it is output, to allow us to drop the distinction between h (a
-       count of hours) and H (the hour of day) template characters.
-       Also, handle new X template character.
-       (output_scientific) Follow more rational rule on when to drop
-       fraction introduced between SPSS 13 and 15.  Updated test case to
-       match new behavior.
-
-Sat Nov 11 11:41:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix buffer overflow reported by John Darrington.
-
-       * data-out.c (output_bcd_integer): In case of SYSMIS, etc.,
-       realize that DIGITS is a count of nibbles, not of bytes.
-
-Sat Nov  4 15:59:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       * calendar.c (calendar_offset_to_gregorian) Also return the
-       year-of-day.  Change callers to new interface.
-
-       * data-out.c: Completely rewrite internals to conform to SPSS
-       output formats as completely as possible.
-       (data_out) Change interface to put input parameters before output
-       parameters, for consistency with the style I now prefer.  Update
-       all callers.
-       (data_out_get_integer_format) New public function.
-       (data_out_set_integer_format) New public function.
-       (data_out_get_float_format) New public function.
-       (data_out_set_float_format) New public function.
-
-       * data-out.h: New file.  Move prototype for data_out here, from
-       format.h.
-
-       * format.c: (fmt_step_width) Use equality comparison instead of
-       bitwise and, for clarity.
-       (fmt_is_string) Ditto.
-       (fmt_input_to_output) Fix categories that are translated to F
-       format.
-
-Sun Nov  5 08:29:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * casefilter.c casefilter.h (new files), casefile.c casefile.h 
-       casefile-private.h: Added casefilter to assist commands with missing 
-       values.
-
-Sat Nov  4 11:47:09 2006  Ben Pfaff  <blp@gnu.org>
-
-       Implement SET ERRORS, SHOW ERRORS.  Fixes bug #17609.
-       
-       * settings.c: (route_errors_to_terminal) New variable.
-       (route_errors_to_listing) New variable. 
-       (get_error_routing_to_terminal) New function.
-       (set_error_routing_to_terminal) New function.
-       (get_error_routing_to_listing) New function.
-       (set_error_routing_to_listing) New function.
-
-       * settings.h: (SET_ROUTE_* enums) Removed, because unused.
-
-Tue Oct 31 19:58:27 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format.c: Completely rewrite, to achieve better abstraction.
-       Rewrite all references to formats in other files.
-       
-       * format.def: Rewrite and reorganize.
-
-       * settings.c: Move everything related to custom currency formats
-       into format.[ch], changing them in form, so as to group related
-       code and definitions better.  Changed all references to use the
-       new functions.
-       (static var decimal) Removed.
-       (static var grouping) Removed.
-       (static var cc) Removed.
-       (get_decimal) Removed.
-       (set_decimal) Removed.
-       (get_grouping) Removed.
-       (set_grouping) Removed.
-       (get_cc) Removed.
-       (set_cc) Removed.
-
-       * settings.h: (macro CC_CNT) Removed.
-       (macro CC_WIDTH) Removed.
-       (struct custom_currency) Removed.
-
-Tue Oct 31 19:56:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c (data_in): Use switch statement instead of table, to
-       avoid dependence on the order of the FMT_* enums.
-
-Tue Oct 31 19:35:36 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-out.c: (num_to_string) Removed, because it was dead code.
-
-Tue Oct 31 18:09:24 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-in.c (parse_trailer): Fix error message.
-
-Sat Oct 28 11:56:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format.c (fmt_is_binary): New function.
-
-Thu Oct 19 22:59:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * procedure.c procedure.h: Encapsulated the static data into a single
-       struct.  
-
-Sat Oct 14 16:56:44 2006  Ben Pfaff  <blp@gnu.org>
-
-       * casefile.c (casereader_read_xfer): Always initialize the case,
-       even on an error condition.
-
-Wed Sep 27 09:37:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * procedure.c (case_limit_trns_proc): Fixed buglet which rendered the 
-       entire function useless.
-
-Mon Sep 25 17:11:46 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * casefile-private.h casefile.c casefile.h fastfile.c: Created new
-       casereader method casereader_clone.   
-       
-       * procedure.c pransformations.h: Introduced new type casenum_t
-
-Thu Sep 21 07:00:30 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable.c: (width_to_bytes) Rephrase code for clarify.
-
-Sun Jul 16 19:52:03 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format.c: (fmt_type_from_string) New function.
-       (fmt_to_string) Include decimals in output if the format has
-       decimals, even if the format type does not.  This way, we can
-       accurately reproduce incorrect formats in user output.
-       (check_common_specifier) Make the check for a bad format type an
-       assertion, so we get bug reports if they show up.  Fix message.
-       Check for decimal places with a format type that doesn't allow
-       them.
-       (check_input_specifier) Remove check for FMT_X, which has been
-       deleted.
-       (check_output_specifier) Ditto. 
-
-       * format.def: Remove FMT_T, FMT_X, FMT_DESCEND, FMT_NEWREC.
-
-       * format.h: (macro FMT_TYPE_LEN_MAX) New macro.
-       (struct fmt_desc) Use FMT_TYPE_LEN_MAX in definition.
-       (enum fmt_parse_flags) Removed.
-
-Mon Jul 17 18:26:21 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * casefile.c casefile.h: Converted to  an abstract base class.
-       * casefile-private.h fastfile.c fastfile.h: New files.
-       * automake.mk procedure.c scratch-writer.c storage-stream.c
-
-Wed Jul 12 21:02:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       * procedure.c (internal_procedure): Create sink_case with only as
-       many values as the compacted dictionary.
-
-Wed Jul 12 21:01:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       Remove "debugging" code that caused plenty of false positives and
-       no true positives.
-       
-       * case.h (struct ccase): [DEBUGGING] Remove `this' member.
-
-       * case.c: Remove all references to `this' member.
-
-Thu Jul  6 19:09:53 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix link error noted by Jason Stover.
-       
-       * storage-stream.c: Include <assert.h>.
-
-Tue Jul  4 08:47:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
-       ALL) and additional underlying system file issues.
-
-       Thanks to John Darrington for review.
-
-       First problem: var_hash points to variables not owned by the
-       sys-file-reader, which the caller may free or modify.  Use an
-       array of sfm_vars instead, as done earlier (e.g. CVS version
-       1.12).
-       
-       * sys-file-reader.c (struct sfm_reader): Remove var_hash, svars
-       members and remove all code that references it.  Add vars, var_cnt
-       members.  Remove fix_specials member, which was unused.
-       (struct sfm_var) Remove name member, which was unused.
-       (sfm_close_reader) Free vars member instead of var_hash.
-       (compare_var_shortnames) Removed.
-       (hash_var_shortname) Removed.
-       (sfm_open_reader) Fill out vars array.
-       (compare_var_index) Removed.
-       (sfm_read_case) Use vars instead of var_hash.
-       
-       Second problem: we're confused about when we actually have very
-       long strings, causing us to choose incorrectly between slow path
-       and fast path in sfm_read_case.
-
-       * sys-file-reader.c: (sfm_open_reader) Only mark has_vls if we
-       have very long strings, not when we have long variable names,
-       which is an unrelated feature.
-
-Tue Jun 27 12:06:49 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable.h: Move var_set and variable parsing declarations to
-       new header, src/language/lexer/variable-parser.h.  Modified lots
-       of files to include the new header.
-
-Sun Jun 25 22:39:32 2006  Ben Pfaff  <blp@gnu.org>
-
-       * value-labels.c (value_to_string): When there's no value label,
-       format the variable according to its print format, instead of
-       always effectively using A or F format.
-
-Mon Jun 19 18:05:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * casefile.c (casefile_get_random_reader): Nasty hack to get around 
-       the mode assertion.
-
-       * format.c: Removed tortological assertion.
-
-Fri Jun  9 12:20:09 2006  Ben Pfaff  <blp@gnu.org>
-
-       Reform string library.
-       
-       * file-name.c (fn_interp_vars): Change interface to take a
-       substring as input.  Updated all users.
-       
-Fri Jun  9 12:11:24 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format.c (measure_is_valid): Really return false when m >=
-       n_MEASURES.
-
-Tue Jun  6 18:46:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       Implement random access to casefiles, for use in GUI.
-       
-       * casefile.c: (struct casereader) Add `random', `file_ofs',
-       `buffer_ofs' members.
-       (casefile_get_random_reader) New function.
-       (read_open_file) Break part into new function
-       seek_and_fill_buffer().
-       (fill_buffer) Update buffer_ofs, file_ofs.
-       (casereader_seek) New function.
-
-Tue May 30 19:52:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * settings.c: Added call to i18n{done, init}.
-
-Tue May  9 21:09:17 2006  Ben Pfaff  <blp@gnu.org>
-
-       * procedure.h: Add WARN_UNUSED_RESULT to procedure function
-       prototypes.
-
-Tue May  9 21:08:05 2006  Ben Pfaff  <blp@gnu.org>
-
-       * casefile.c: Convert many uses of `int' to `bool'.
-
-Sat May  6 22:49:43 2006  Ben Pfaff  <blp@gnu.org>
-
-       * transformations.c (trns_chain_destroy): Destroy chain's trns
-       member, to fix memory leak.
-
-Sat May  6 22:48:30 2006  Ben Pfaff  <blp@gnu.org>
-
-       * storage-stream.c (storage_source_decapsulate): Destroy case
-       source to fix memory leak.
-
-Sat May  6 22:46:47 2006  Ben Pfaff  <blp@gnu.org>
-
-       * scratch-reader.c (scratch_reader_read_case): Copy into existing
-       case passed as argument instead of initializing the argument as a
-       case.  Fixes memory leak that showed up in
-       tests/command/aggregate.sh with scratch files.
-
-Sat May  6 22:45:55 2006  Ben Pfaff  <blp@gnu.org>
-
-       * procedure.c (proc_done): Destroy default_dict, to fix memory
-       leak.
-
-Sat May  6 22:44:44 2006  Ben Pfaff  <blp@gnu.org>
-
-       Simplify procedure_with_splits().
-       
-       * procedure.c (struct split_aux_data): Removed case_count member.
-       (procedure_with_splits) Don't initialize case_count.
-       (split_procedure_case_func) Check whether prev_case is null
-       instead of case_count.
-       (split_procedure_end_func) Ditto.
-
-Sat May  6 22:42:23 2006  Ben Pfaff  <blp@gnu.org>
-
-       * case.c (case_move): Do nothing if dst and src are the same
-       object.
-       (case_try_create) Merge two similar cases.
-       (case_copy) Unshare only if data must be actually copied.
-
-Sun May  7 10:04:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * data-in.c data-out.c dictionary.c sys-file-reader.c
-       sys-file-writer.c variable.c variable.h:  Reworked very long string
-       support for better encapsulation.
-
-Sat May  6 19:02:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * value-labels.c (val_labs_can_set_width): New function.
-       (val_labs_set_width) Clear labels if increasing width to long
-       string.
-       (val_labs_destroy) Remove unneeded test for null.
-       
-Sat May  6 16:14:08 2006  Ben Pfaff  <blp@gnu.org>
-
-       * value-labels.h: Remove unneeded dependency on variable.h.
-
-Sat May  6 15:58:36 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of `char *c' member in union value, for cleanliness.
-       
-       * value.h: (union value) Remove `c' member.
-
-Sat May  6 15:36:59 2006  Ben Pfaff  <blp@gnu.org>
-
-       Make dictionary compacting functions a little more general.
-       
-       * sys-file-writer.c (sfm_open_writer): Use
-       dict_compacting_would_change().
-       (does_dict_need_translation) Removed.
-
-Sat May  6 15:35:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       Make dictionary compacting functions a little more general.
-       
-       * dictionary.c (dict_needs_compaction): Rename
-       dict_compacting_would_shrink().  Update all callers.
-       (dict_compacting_would_change) New function.
-       
-Sat May  6 14:25:49 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sys-file-writer.c: (does_dict_need_translation) Fix bug:
-       inverted return value (!).
-
-Sat May  6 13:37:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  
-
-       * procedure.c: Search and replace "vfm" by "proc".  Notably:
-       (static var vfm_source) Rename proc_source.  Update all
-       references.
-       (static var vfm_sink) Rename proc_sink.  Update all references.
-       
-Sat May  6 12:38:55 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, remove
-       PROCESS IF, which was deprecated anyway and can be easily
-       simulated with TEMPORARY followed by SELECT IF.
-
-       * procedure.c: (open_active_file) Don't call
-       add_process_if_trns().
-       (discard_variables) Get rid of redundant call to
-       proc_cancel_all_transformations().
-       (add_process_if_trns) Removed.
-       (process_if_trns_proc) Removed.
-       (process_if_trns_free) Removed.
-
-Sat May  6 10:58:05 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, add
-       `const' to the case passed to procedure()'s callback.
-
-       Updated all users of procedure() as well.
-       
-       * procedure.c: (struct write_case_data) Add "const" to ccase
-       parameter for case_func member.
-       (procedure) Add "const" to ccase parameter for proc_func
-       parameter.
-       (multipass_case_func) Make ccase parameter const.
-       (internal_procedure) Add "const" to ccase parameter for case_func
-       parameter.
-       (split_procedure_case_func) Make ccase parameter const.
-       (multipass_split_case_func) Make ccase parameter const.
-       
-Sat May  6 10:30:33 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       the output code for SPLIT FILE groups in procedure.c, which really
-       shouldn't be doing any output.  Move it into the individual
-       procedures instead.  This also adds some flexibility.
-
-       Updated many users of procedure_with_splits() and
-       multipass_procedure_with_splits() to call
-       output_split_file_values() and to deal with increased use of
-       const.
-
-       * procedure.c: (struct split_aux_data) Add "const struct ccase *"
-       parameter to begin_func member.
-       (procedure_with_splits) Add "const struct ccase *" parameter to
-       begin_func parameter.  Make ccase parameter const in proc_func
-       parameter.
-       (split_procedure_case_func) Don't dump split file group.  Pass
-       case to begin_func.
-       (dump_splits) Moved to language/dictionary/split-file.c as
-       output_split_file_values().
-       (struct multipass_split_aux_data) Add "const struct ccase *"
-       parameter to split_func member.
-       (multipass_procedure_with_splits) Add "const struct ccase *"
-       parameter to split_func parameter.
-       (multipass_split_case_func) Save new SPLIT FILE case before
-       outputting case.
-       (multipass_split_output) Pass saved SPLIT FILE case to split_func.
-       
-Fri May  5 22:48:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  Change
-       internal_procedure() so that it calls open_active_file() and
-       close_active_file(), which isolates most of the actual procedure
-       functionality.
-
-       * procedure.c: (struct write_case_data) Rename `proc_func' member
-       to `case_func' and update all references.
-       (procedure) Rewrite as one-line wrapper around
-       internal_procedure().
-       (struct multipass_aux_data) New.
-       (multipass_callback) Renamed multipass_case_func().  Use struct
-       multipass_aux_data as auxiliary data.
-       (multipass_end_func) New function.
-       (multipass_procedure) Rewrite as wrapper for internal_procedure()
-       that uses multipass_case_func, multipass_end_func.
-       (internal_procedure) Add `end_func' argument.  Move optimization
-       of trivial case in here.  Move call to open_active_file() and
-       close_active_file() in here.  Now assert that vfm_source is
-       non-null.
-       (procedure_with_splits_callback) Rename
-       split_procedure_case_func().
-       (split_procedure_end_func) New function.
-       (multipass_split_callback) Rename multipass_split_case_func.
-       (multipass_split_end_func) New function.
-       (discard_variables) No need to test for nonnull vfm_source.
-
-Fri May  5 21:34:02 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  Get rid of unused member.
-
-       * procedure.c: (struct write_case_data) Remove `cases_analyzed'
-       member.
-       (write_case) Don't increment cases_analyzed.
-
-Thu May  4 21:50:11 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, move
-       procedure.c and procedure.h from src to src/data.  Update
-       makefiles and #includes accordingly.
-
-       * procedure.c: Moved here from src/.
-
-       * procedure.h: Moved here from src/.
-
-Wed May  3 22:42:12 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       many global variables, consolidating procedure execution in
-       procedure.c.  Encapsulate transformations in new "struct
-       trns_chain".  Also, change implementation of N OF CASES, FILTER,
-       and PROCESS IF from special cases to transformations.
-        
-       * automake.mk: (src_data_libdata_a_SOURCES) Add transformations.c,
-       transformations.h.
-
-       * dictionary.c: (global variable default_dict) Move to
-       src/procedure.c.
-
-       * variable.h: (TRNS_*) Move to transformations.h.
-       (struct transformation) Move to transformations.c.
-
-Thu May  4 13:47:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * sys-file-reader.c: Fixed invalid read problems.
-
-Tue May  2 15:57:10 2006  Ben Pfaff  <blp@gnu.org>
-
-       * storage-stream.c: Add missing function comments.
-
-Tue May  2 15:50:21 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, add some
-       new, needed functionality to storage-stream.
-
-       * storage-stream.c: (storage_source_decapsulate) New function.
-
-Tue May  2 15:43:36 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable.c (width_to_bytes): Declarations must precede
-       statements for C90 compliance.
-
-Tue May  2 10:42:05 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * data-out.c, data-in.c, variable.c, variable.h: New functions 
-       copy_mangle and copy_demangle for reading/writing cases; emulates the 
-       way SPSS deals with strings > 255 bytes.
-
-       * sys-file-reader.c sys-file-writer.c: Added support for Record 7, 
-       subtype 14 needed for strings longer than 255 bytes.
-
-       * dictionary.c, format.def, value.c : Updated to use MAX_STRING 
-        instead of literal values. Also fixed some constness issues.
-
-       * format.h: Constness
-
-       * sfm-private.h: Renamed the case_size identifier, since I discovered 
-        that SPSS's respect for this variable is very nominal.
-
-Mon May  1 15:45:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       Change case limit type from int to size_t.
-
-       * dictionary.c: (struct dictionary) Change type of case_limit
-       member.
-       (dict_get_case_limit) Change return type.
-       (dict_set_case_limit) Change parameter type.
-
-Wed Apr 26 20:01:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable.h: (struct variable) Rename `reinit' member as `leave'
-       and invert sense.  Fix up all references.
-
-Wed Apr 26 19:39:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, break
-       procedure.c into multiple files.
-       
-       * automake.mk: (src_data_libdata_a_SOURCES) Add all the new files.
-
-       * case-sink.c: New file.
-
-       * case-sink.h: New file.
-       
-       * case-source.c: New file.
-
-       * case-source.h: New file.
-       
-       * storage-stream.c: New file.
-
-       * storage-stream.h: New file.
-
-Wed Apr 26 14:55:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable.h: (struct variable) Remove `init' member and all
-       references to it from other files.  It was initialized in several
-       places, but nothing really ever used it for anything worthwhile.
-       Thanks to Jason Stover for pointing out how confusing this
-       member is.
-
-Sun Apr 23 22:04:45 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, get rid
-       of message "titles" and put the message text in `struct error'.
-       Now `struct error' encapsulates a message more properly.
-       
-       * casefile.c: (io_error) Use err_msg() instead of err_vmsg().
-       Format message ourselves.
-
-       * data-in.c: (vdls_error) Ditto.
-
-       * por-file-reader.c: (error) Ditto.
-
-       * sys-file-reader.c: (corrupt_msg) Ditto.
-
-Sun Apr 16 18:49:51 2006  Ben Pfaff  <blp@gnu.org>
-
-       GNU standards require "file name" instead of "filename" in
-       documentation.  It's nice for our code to follow the convention
-       too.
-       
-       * casefile.c: (struct casefile) Rename `filename' member to
-       `file_name'.  Updated all references.
-
-       * file-name.c: [!unix] (struct file_identity) Rename
-       normalized_filename member to normalized_file_name.  Updated all
-       references.
-
-Sun Apr 16 18:35:33 2006  Ben Pfaff  <blp@gnu.org>
-
-       We don't really support anything but Unix-like environments well,
-       so we might as well de-obfuscate by writing directory and path
-       separators explicitly.
-
-       * file-name.h: (macro DIR_SEPARATOR) Removed.  Changed all usages
-       to just '/'.
-       (macro PATH_SEPARATOR) Removed.  Changed all usages to just ':'.
-       (macro DIR_SEPARATOR_STRING) Removed.  Changed all usages to just
-       "/".
-       (macro PATH_SEPARATOR_STRING) Removed.  Changed all usages to just
-       ":"
-
-Sun Apr 16 18:28:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       GNU standards require "file name" instead of "filename" in
-       documentation.  It's nice for our code to follow the convention
-       too.
-       
-       * filename.c: Rename to file-name.c.
-
-       * filename.h: Rename to file-name.h.  Update all inclusions.
-       Update header guards.
-
-       * automake.mk: Update file names.
-
-Sun Apr 16 16:42:47 2006  Ben Pfaff  <blp@gnu.org>
-
-       * filename.c: (fn_dirname) Renamed fn_dir_name(), all references
-       updated.
-       (fn_basename) Removed (dead code).
-       (fn_absolute_p) Renamed fn_is_absolute(), all references updated.
-       (fn_special_p) Renamed fn_is_special(), all references updated.
-       (fn_exists_p) Renamed fn_exists(), all references updated.
-
-Sun Apr 16 16:33:58 2006  Ben Pfaff  <blp@gnu.org>
-
-       * filename.c: (fn_tilde_expand) Rewrite for cleaner code.  
-       Also, now it only tilde-expands file names, not paths.
-       (fn_search_path) Tilde-expand one directory at a time.
-
-Sun Apr 16 16:28:06 2006  Ben Pfaff  <blp@gnu.org>
-
-       * filename.c: (fn_search_path) rewrite for cleaner code.  Also,
-       get rid of non-Unixlike version of the code, which has probably
-       never been tested.
-       (fn_prepend_dir) Removed (dead code).
-
-       * filename.h: (macro DIR_SEPARATOR_STRING) New.
-       (macro PATH_SEPARATOR_STRING) New.
-Sun Apr 16 16:05:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, we get
-       rid of VM() and the other msg() support for "verbosity", replacing
-       it by a new function verbose_msg().
-
-       * filename.c: (fn_search_path) Use verbose_msg() instead of
-       msg(VM(), ...).  
-
-Sat Apr 15 19:53:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sfm-private.h: Get rid of #defines after #error, which makes no
-       sense.
-
-Sat Apr 15 19:48:57 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of our own int32 type in favor of the standard int32_t
-       type.
-       
-       * sfm-private.h: (int32 macro) Don't define this anymore.  Do
-       include <stdint.h>.
-
-       * sys-file-reader.c: Use int32_t instead of int32 throughout.
-       
-       * sys-file-writer.c: Use int32_t instead of int32 throughout.
-
-Sat Apr 15 19:36:47 2006  Ben Pfaff  <blp@gnu.org>
-
-       Remove ill-considered file routines that are no longer used.
-       
-       * filename.c: (fn_open_ext) Removed.
-       (fn_close_ext) Removed.
-
-       * filename.h: (struct file_ext) Removed.
-
-Mon Apr  3 13:22:39 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable.c (var_is_valid_name): Move declarations before code
-       for C90 compliance.
-
-Tue Apr  4 15:28:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * filename.ch (fn_interp_vars): Fixed small buglet.
-
-Tue Mar 28 13:47:16 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * filename.[ch] (fn_interp_vars): Changed the signature and semantics
-       so as to modify the string inline.   Thus makeing it easier to
-       destroy the results when no longer needed.
-       
-2006-03-25  Jason Stover  <jhs@math.gcsu.edu>
-
-       * category.c (cat_stored_values_destroy): Fixed memory leak.
-
-Fri Mar 24 18:15:41 2006  Ben Pfaff  <blp@gnu.org>
-
-       Add some missing frees.  Thanks to John Darrington for reporting
-       these.
-
-       * any-writer.c (any_writer_close): Free writer.
-
-       * any-reader.c (any_reader_close): Free reader.
-
-Mon Mar 20 16:33:53 2006  Ben Pfaff  <blp@gnu.org>
-
-       * por-file-reader.c: (error) Mark as NO_RETURN.
-
-Sat Mar 11 15:06:07 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * settings.c: Changed default value of scompress to true.
-
-Sat Mar  4 13:22:51 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sfm-private.h: Include variable.h, to get SHORT_NAME_LEN.
-
-       * value.h: Remove check on MAX_SHORT_STRING, which I don't think
-       really applies.
-
-       * variable.h: Move definition of SHORT_NAME_LEN, LONG_NAME_LEN
-       here from pref.h.orig.
-
-Sat Mar  4 12:50:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * sys-file-reader.c: Fixed bug reading compressed files.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * Numerous renames.  See src/ChangeLog for details.
-       
-       * Moved files from src directory
diff --git a/src/data/OChangeLog b/src/data/OChangeLog
new file mode 100644 (file)
index 0000000..ef91902
--- /dev/null
@@ -0,0 +1,2541 @@
+2008-07-25  Ben Pfaff  <blp@gnu.org>
+
+       * casereader-translator.c (struct casereader_arithmetic_sequence):
+       New struct.
+       (casereader_create_arithmetic_sequence): New function.
+       (cas_translate): New function.
+       (cas_destroy): New function.
+
+2008-07-26  John Darrington <john@darrington.wattle.id.au>
+
+       * case-ordering.c case-ordering.h: Removed the value_cnt
+       associated with the ordering structure.
+
+2008-07-16  Jason Stover  <jhs@math.gcsu.edu>
+
+       * category.c (cat_get_category_count): New function.
+
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * data-out.c (output_infinite): Use gsl_isnan instead of isnan,
+       and gsl_isinf instead of isinf, as a stopgap measure for
+       portability until appropriate gnulib modules are available.
+
+       * por-file-writer.c (format_trig_double): Similarly, use
+       gsl_finite instead of finite.
+
+2008-03-18  John Darrington <john@darrington.wattle.id.au>
+
+       * data-in.c: If category is custom currency, then use
+       numeric format for input.
+
+2008-03-06  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c (var_name_is_insertable): New function.
+       (make_hinted_name): Don't accept variable names that match PSPP
+       keywords.  Thanks to Jason Stover for reporting the problem.
+
+2008-03-06  Ben Pfaff  <blp@gnu.org>
+
+       * format-guesser.c (syntax): Require month names to be spelled out
+       as English words, so that single characters that happen to be
+       Roman numerals don't get detected as months.  Thanks to John
+       Darrington for reporting this bug.
+
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6441.  Reviewed by John Darrington.
+
+       * format.c (fmt_fix): New function.
+       (fmt_fix_input): New function.
+       (fmt_fix_output): New function.
+
+       * format.def: Correct minimum width for DATETIME format.  It was
+       7, should have been 17.
+
+       * automake.mk: Add new files.
+
+       * format-guesser.c: New file.
+
+       * format-guesser.h: New file.
+
+2008-02-18  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6426.  Reviewed by John Darrington.
+       
+       * format.c (min_width): Renamed fmt_min_width and made public.
+       Updated all references.
+       (max_width): Renamed fmt_max_width and made public.  Updated all
+       references.
+       (max_decimals): Renamed fmt_max_decimals and made public.  Updated
+       all references.
+       (var_create): Use the new functions for default variable
+       attributes below.
+       (var_default_formats): New function.
+       (var_default_measure): New function.
+       (var_default_alignment): New function.
+
+       * format.h (macro FMT_MAX_NUMERIC_WIDTH): New macro.
+
+2008-02-09  Ben Pfaff  <blp@gnu.org>
+
+       Add a couple of extensions to GET DATA TYPE=TXT.  Patch #6412.
+       Thanks to John Darrington for review.
+
+       * data-in.c (data_in): Add new argument to designate the last
+       column of the data field being parsed, for use in error messages.
+       Update all callers.
+
+       * data-parser (struct data_parser): New member `quote_escape'.
+       (data_parser_create): Initialize quote_escape.
+       (data_parser_set_quotes): New function.
+       (cut_field): Support escaped quotes.
+       (parse_delimited_span): Ditto.
+       (parse_delimited_no_span): Ditto.
+
+       * get-data.c (parse_get_txt): Support ESCAPE extension subcommand
+       in enhanced mode.  Only support multiple quote characters in
+       enhanced mode.
+
+2008-02-06  John Darrington <john@darrington.wattle.id.au>
+
+       psql-reader.c psql-reader.h: Read more than one tuple at
+       once.  Fix bug reading a query which returns no data. Fix bug
+       when transformation followed a reader.
+       Ask the server for the number of records in the query, for the
+       benefit of the gui.
+
+2008-02-05  John Darrington <john@darrington.wattle.id.au>
+
+       psql-reader.c: So yesterday they release postgresql 8.3.0
+       which has money represented with 64 bits.  They must get
+       paid more than me.
+
+2008-02-02  John Darrington <john@darrington.wattle.id.au>
+
+       psql-reader.c psql-reader.h: New files.  Thanks to Ben Pfaff
+       for reviewing this code.
+       
+2008-02-02  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6347.
+
+       * sys-file-reader.c (read_variable_record): Allow missing values
+       to be specified on long string variables, but warn about them
+       because PSPP does not yet support them.
+       (read_extension_record): Ignore extension records 20 and 21, which
+       PSPP does not yet support.
+       (read_header): Fix error message when floating-point format cannot
+       be identified.
+
+2008-02-01  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6386.  Thanks to John Darrington for review and for the
+       updates to gnumeric-reader.c.
+
+       * dictionary.c (make_hinted_name): New function.
+       (make_numeric_name): New function.
+       (dict_make_unique_var_name): New function.
+
+       * gnumeric-reader.c (devise_name): Removed.
+       (munge_name): Removed.
+       (gnumeric_open_reader): Use new function
+       dict_make_unique_var_name.
+
+       * short-names.c (set_var_short_name_suffix): Use new function
+       str_format_26adic.
+
+2008-01-19  John Darrington <john@darrington.wattle.id.au>
+
+       * settings.c settings.h: Moved static variables into a 
+       single struct.  Renamed functions to have a settings_ prefix.
+
+2008-01-14  John Darrington <john@darrington.wattle.id.au>
+
+       * data-out.c (output_AHEX): Corrected number of bytes in
+       call to output_hex.  Closes bug #22011
+
+2008-01-02  John Darrington <john@darrington.wattle.id.au>
+
+       * variable.c variable.h: Replaced var_get_value_name with 
+       var_append_value_name which doesn't use any static data.
+        Thanks to Ben for review.
+
+2007-12-07  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6302.
+
+       * casegrouper.c (casegrouper_get_next_group): Cause a casegrouper
+       made from an empty casereader produce a casegrouper with no
+       groups, instead of one with one group that has no cases.
+
+       * casereader.c (casereader_is_empty): New function.
+
+2007-12-06  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6303.
+
+       * sys-file-reader.c (read_display_parameters): Handle variable
+       display parameters record with only 2 data items per variable.
+       Reported by Guido Gay <gay@irer.it>.
+
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       * identifier.c (lex_id_match_n): New function.
+       (lex_id_match): Reimplement in terms of lex_id_match_n.
+
+2007-11-24  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk (src_data_libdata_a_SOURCES): Add val-type.h, to fix
+       make distcheck.
+
+2007-11-24  Ben Pfaff  <blp@gnu.org>
+
+       Fix warning reported when reading back system files that include
+       very long string variables.  Thanks to Guido Gay <gay@irer.it> for
+       reporting this bug.
+
+       * short-names.c (short_names_assign): Fix dumb typo, in which `i'
+       was written where `j' was meant.
+
+2007-11-18  Ben Pfaff  <blp@gnu.org>
+
+       Properly write variables that include a range of missing values to
+       system files.  Thanks to Guido Gay <gay@irer.it> for reporting
+       this bug.
+
+       * sys-file-writer.c (write_variable): Correctly calculate
+       n_missing_values field when writing variables that include a range
+       of missing values.
+
+2007-11-10  Ben Pfaff  <blp@gnu.org>
+
+       Cleanups and bug fixes devised while writing up documentation.
+       Patch #6262.
+
+       * automake.mk (src_data_libdata_a_SOURCES): Add new files.
+
+       * dict-class.c: New file.
+       (dict_class_from_id): Move here.
+       (dict_class_to_name): Move here.
+
+       * dict-class.h: New file.
+       (enum dict_class): Move here.  Change from consecutive integers to
+       consecutive bits, to make testing for any of multiple values
+       easier.  Add new DC_ALL constant.
+
+       * dictionary.c (struct dictionary): Change `case_limit' from
+       size_t to casenumber.
+       (dict_get_vars): Make final argument an enum dict_class.
+       (dict_get_vars_mutable): Ditto.
+       (dict_get_case_limit): Change return value to casenumber.
+       (dict_set_case_limit): Change final argument to a casenumber.
+       (dict_unset_split_var): Add assertion.  Rephrase slightly.
+       (dict_set_label): Use xstrndup to simplify.
+
+       * format.c (fmt_step_width): AHEX format also needs 2-byte
+       stepping.
+       (fmt_set_style): Simplify assertions.
+
+       * missing-values.c (mv_add_num_range): Rename mv_add_range.
+       Simplify implementation.
+       (mv_has_value): Simplify implementation.
+       (mv_pop_value): Remove the first value, not the last, to avoid
+       having GET followed by SAVE reverse the order of missing values.
+       (mv_peek_value): Rename mv_get_value.  Simplify assertion.
+       (mv_has_range): Simplify implementation.
+       (mv_peek_range): Rename mv_get_range.
+       (can_resize_string): Removed.
+       (mv_is_resizable): Use value_is_resizable.
+       (mv_resize): Use value_resize.
+
+       * short-names.h (SHORT_NAME_LEN): Move here.
+
+       * val-type.h: New file, for definitions related to type and width
+       of abstract values.  Before, these definitions were mixed among
+       those related to "union value" and those related to variables.
+       (macro SYSMIS): Move here.
+       (macro LOWEST): Move here.
+       (macro HIGHEST): Move here.
+       (macro MAX_STRING); Move here.
+       (enum val_type): New enum with values VAL_NUMERIC and VAL_STRING.
+       Replaces enum var_type that had values VAR_NUMERIC and VAR_STRING.
+       All references updated.
+       (val_type_is_valid): New function.  Replaces var_type_is_valid.
+       All references updated.
+       (val_type_from_width): New function.  Replaces
+       var_type_from_width.  All references updated.
+
+       * value-labels.c (val_labs_copy): Renamed val_labs_clone.  All
+       references updated.
+       (val_labs_can_set_width): Use value_is_resizable.
+       (val_labs_add): Simply return false if the value labels set is too
+       wide, instead of having undefined behavior.
+       (val_labs_replace): Ditto.
+       (val_labs_replace): Ditto.
+       (val_labs_first): Set iterator to null if iteration is complete.
+       (val_labs_first_sorted): Ditto.
+       (val_labs_done): Become a no-op if the iterator is null.
+
+       * value.c (value_is_resizable): New function.
+       (value_resize): New function.
+
+       * variable.c (var_get_dict_class): New function.
+
+       * variable.h (macro LONG_NAME_LEN): Rename VAR_NAME_LEN.  Update
+       all references.
+
+2007-11-08  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: Make formatted data parsing locale-independent.
+       (parse_number): Use c_strtod instead of strtod, to avoid
+       locale-specific behavior.
+       (parse_Z): Ditto.
+
+2007-11-06  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6256: add support for binary, 360 file formats.  Reviewed
+       by John Darrington.
+
+       * data-in.c (struct data_in): Add `encoding' member.
+       (data_in): Add `encoding' parameter, and re-encode the data passed
+       in where appropriate.  Update all callers to pass it in.
+       (parse_A): Implement EBCDIC recoding wart described in manual.
+       (parse_AHEX): Implement EBCDIC recoding.
+
+       * data-out.c (data_out_legacy): New function.
+       (data_out): Make into a wrapper around data_out_legacy.
+
+       * file-handle-def.c (struct file_handle): New member `encoding'.
+       (fh_create_file): Set encoding.
+       (fh_default_properties): Set default encoding.
+       (fh_get_legacy_encoding): New function.
+
+       * file-handle-def.h (enum fh_mode): New modes FH_MODE_FIXED
+       (that replaces FH_MODE_BINARY), FH_MODE_VARIABLE,
+       FH_MODE_360_VARIABLE, FH_MODE_360_SPANNED.
+       (struct fh_properties): New member `encoding'.
+
+2007-11-05  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6258.  Reviewed by John Darrington.
+
+       * file-handle-def.c (fh_lock): Add comment that TYPE should be
+       marked with N_() in the caller.  Added these markings to each
+       caller too.  Should make i18n easier.
+       Suggested by Chusslove Illich <caslav.ilic@gmx.net>.
+
+2007-11-03  Ben Pfaff  <blp@gnu.org>
+
+       Allow output files to overwrite input files (bug #21280).
+
+       * file-handle-def.c: Separate locking of files for input and for
+       output, to allow both to take place at once.  Also, distinguish a
+       file handle from the identity of the underlying file, because the
+       identity of a file changes over time and the file handle can't
+       represent two different identities.
+       (struct file_handle): Remove `next', `open_cnt', `deleted',
+       `type', `open_mode', `aux', `identity' members.  Change `id' from
+       char array to char *.  Add `ref_cnt' member.
+       (file_handle_from_ll) New function.
+       (file_handles) Removed.
+       (named_handles) New variable.
+       (fh_init) Initialize named_handles.
+       (fh_done) Remove name from all named_handles.
+       (free_handle) Updated for modified struct file_handle.
+       (unname_handle) New function.
+       (fh_ref) New function.
+       (fh_from_file_name) Removed.
+       (fh_unref) New function.
+       (fh_unname) New function.
+       (fh_from_id) Rewritten.
+       (create_handle) Updated for modified struct file_handle.
+       (fh_inline_file) Increment the handle's ref count.
+       (fh_create_file) Updated for modified struct file_handle.
+       (fh_create_scratch) Ditto.
+       (fh_free) Removed.
+       (mode_name) Removed.
+       (fh_open) Removed.
+       (fh_close) Removed.
+       (fh_is_open) Removed.
+       (fh_get_id) Updated for modified struct file_handle.
+       (fh_get_default_handle) Increment the handle's ref count.
+       (fh_set_default_handle) Handle ref counts.
+       (struct fh_lock) New structure.
+       (locks) New static var.
+       (fh_lock) New function.
+       (fh_unlock) New function.
+       (fh_lock_get_aux) New function.
+       (fh_lock_set_aux) New function.
+       (fh_is_locked) New function.
+       (make_key) New function.
+       (free_key) New function.
+       (compare_fh_locks) New function.
+       (hash_fh_lock) New function.
+
+       * file-handle-def.h (enum fh_access) New enum.
+
+       * file-name.c: Made file_identity the same in all supported
+       environments.
+       (struct file_identity): New `name' member.
+       (fn_get_identity): For a file that doesn't exist, get the
+       dev/inode of its directory plus its name.  If even the directory
+       doesn't exist, just use its name.  Merge the Windows
+       implementation into the Unix one.
+       (fn_compare_file_identities): Rewritten.  Merge the Windows
+       implementation into the Unix one.
+       (fn_hash_identity): New function.
+
+       * make-file.c (struct replace_file): New structure.
+       (all_files): New static var.
+       (replace_file_start): New function.
+       (replace_file_commit): New function.
+       (replace_file_abort): New function.
+       (free_replace_file): New function.
+       (unlink_replace_files): New function.
+
+       * por-file-reader.c (struct pfm_reader): Add `lock' member.
+       (close_reader): Unlock file.
+       (pfm_open_reader): Lock file.
+
+       * por-file-writer.c (struct pfm_writer): Add fh_lock, replace_file
+       members.
+       (pfm_open_writer): Lock file and prepare for its replacement.
+       (close_writer): Unlock file.
+
+       * scratch-handle.h (struct scratch_handle): Add unique_id so that
+       different generations of a scratch file can be distinguished.
+
+       * scratch-reader.c (scratch_reader_open): Verify that the file is
+       a scratch file.
+
+       * scratch-writer.c (struct scratch_writer): Add `lock' and `dict',
+       remove scratch_handle member.
+       (scratch_writer_open): Lock handle.  Prepare to replace handle
+       data, instead of doing it immediately.
+       (scratch_writer_casewriter_destroy): Replace handle data and
+       unlock handle.
+
+       * sys-file-reader.c (struct sfm_reader): Add `lock' member.
+       (sfm_open_reader): Lock file.
+       (close_reader): Unlock file.
+
+       * sys-file-writer.c (struct sfm_writer): Add fh_lock, replace_file
+       members.
+       (sfm_open_writer): Lock file and prepare for its replacement.
+       (close_writer): Unlock file.
+
+2007-11-02  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c (output_number): Use isfinite (from C99) instead of
+       gsl_isfinite, since we now have universal support for it in
+       gnulib.
+       (output_infinite): Ditto.
+       [!HAVE_ROUND] (round): Remove definition, since we now have a
+       replacement in gnulib.
+
+2007-10-27  John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c: Fixed bug in dict_clone, where the vardict.dict member
+       wasn't initialised correctly. Closes bugs #21330 and 21397
+
+
+2007-10-08  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #21280.  Thanks to John Darrington for review.
+
+       * file-name.c (create_stream): New function.
+
+       * por-file-writer.c (pfm_open_writer): Use fh_open to open the
+       file handle before creating the file, to ensure that we don't
+       truncate a file that we're reading.  Make code easier to read by
+       using create_stream.
+
+       * sys-file-write.c (sfm_open_writer): Ditto.
+
+2007-10-01  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #21192.  Thanks to John Darrington for review.
+
+       * casereader.c (casereader_read): Decrement case_cnt before
+       calling the casereader's "read" member function, so that we
+       interact properly with lazy_casereader.
+
+       * datasheet.c: Add regression test for above bug fix.
+       (clone_datasheet): New function.
+       (lazy_callback): New function.
+       (check_datasheet_casereader): New function.
+       (check_datasheet): Check datasheet contents are reported correctly
+       through an ordinary casereader and a lazy casereader.
+       (clone_model): Use clone_datasheet.
+
+2007-09-24  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6210.  Reviewed by John Darrington.
+       * settings.c: Drop "long view", which is not needed any longer.
+       (static var long_view): Removed.
+       (force_long_view): Removed.
+       (get_viewwidth): Removed.
+       (init_viewport): Removed long_view reference.
+
+2007-09-19  John Darrington <john@darrington.wattle.id.au>
+       
+       * settings.c settings.h: Changed viewport's length and width to be 
+       owned by the user interface which uses the data library.  This allows
+       better abstraction, and makes dynamically adjustable dimensions easier.
+       
+2007-09-18  Ben Pfaff  <blp@gnu.org>
+
+       * procedure.c (proc_extract_active_file_data): New function.
+
+       * lazy-casereader.h: New file.
+
+       * lazy-casereader.c: New file.
+
+       * casereader.c (casereader_dynamic_cast): New function.
+
+2007-09-14  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c (dict_clone): Copy case indexes from cloned
+       dictionary.  Fixes bug #21061.  Reviewed by John Darrington.
+
+2007-09-13  John Darrington <john@darrington.wattle.id.au>
+
+       * value.c value.h (create_value): New function.
+
+2007-09-12  Ben Pfaff  <blp@gnu.org>
+
+       Make it clear that translator casereader and casewriter translate
+       functions are supposed to destroy their input case.
+       
+       * casereader-translator.c (struct casereader_translator): Change
+       input case parameter of translate member function from const
+       struct ccase * to struct ccase *.
+       (casereader_create_translator): Ditto, for translate parameter.
+
+       * casewriter-translator.c (struct casewriter_translator): Ditto.
+       (casewriter_create_translator): Ditto.
+
+2007-08-27  John Darrington <john@darrington.wattle.id.au>
+       
+       * sys-file-reader.c (read_display_parameters): Force display width 
+       to 8, if the sys file says 0 (like SPSS does).
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c (dict_dump): New function.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       Drop dict_compactor in favor of using the new struct case_map.
+
+       * dictionary.c (struct copy_map): Removed.
+       (struct dict_compactor): Removed.
+       (dict_make_compactor): Removed.
+       (dict_compactor_compact): Removed.
+       (dict_compactor_destroy): Removed.
+
+       * procedure.c (struct data_set): Change `compactor' member to be a
+       struct case_map *.
+       (proc_open): Use case_map_to_compact_dict instead of
+       dict_make_compactor.
+       (proc_casereader_read): Use case_map_execute instead of
+       dict_compactor_compact.
+       (proc_commit): Use case_map_destroy instead of
+       dict_compactor_destroy.
+
+       * scratch-writer.c (struct scratch_writer): Change `compactor'
+       member to be a struct case_map *.
+       (scratch_writer_open): Use case_map_to_compact_dict instead of
+       dict_make_compactor.
+       (scratch_writer_casewriter_write): Use case_map_execute instead of
+       dict_compactor_compact.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add case-map.c, case-map.h.
+
+       * case-map.c: New file.
+
+       * case-map.h: New file.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c (dict_compact_values): Don't delete scratch
+       variables as well as compacting case indexes.  Update all callers.
+       (dict_get_compacted_value_cnt): Rename dict_count_values and
+       change interface.  Update all callers.
+       (dict_get_compacted_value_cnt): Remove.
+       (dict_compacting_would_shrink): Remove.
+       (dict_compacting_would_change): Remove.
+       (dict_make_compactor): Add new parameter.  Update all callers.
+       
+       * procedure.c (proc_casereader_read): Use casewriter_get_value_cnt
+       instead of dict_count_values, changing an O(N) operation into
+       O(1).
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * casereader.c (casereader_read): Don't require cases read by a
+       casereader to be exactly the expected size: as long as they're big
+       enough, it's OK.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       Make casewriters keep track of the number of `union value's in
+       each case.  This is useful for two reasons: casewriter_write can
+       then check that the case being written is large enough, and later
+       recipients of the casewriter can determine the size of the case.
+       
+       * casewriter-translator.c (casewriter_create_translator): Add
+       value_cnt parameter.
+       
+       * casewriter.c (struct casewriter): Add value_cnt member.
+       (casewriter_write): Check that the case passed in is big enough.
+       (casewriter_get_value_cnt): New function.
+       (casewriter_create): Add value_cnt parameter.
+
+2007-08-09  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug reported by Jason Stover.
+       * settings.c: Move get_termcap_viewport and in particular the
+       #include for <curses.h> to the end of the file.  curses.h
+       redefines bool on some systems (e.g. OpenBSD), which causes
+       disagreement between uses of bool before its inclusion and
+       afterward.
+       Tested by Jason Stover.
+
+2007-07-29  Ben Pfaff  <blp@gnu.org>
+
+       Provisional fix for bug #18692 and bug #20161.  Reviewed by John
+       Darrington.
+
+       * file-name.c (fn_open): Only pass "r" or "w" to popen as mode
+       argument (never "rb" or "wb") because SUSv3 says that only those
+       modes are defined, and glibc in fact rejects other modes.
+
+       Open portable files with fn_open so that they can be read from
+       pipes.  Fix missing fh_close call to go along with fh_open.
+       Report an error if the file close reports an error.
+       * por-file-reader.c (close_reader): New function.
+       (por_file_casereader_destroy): Use close_reader.
+       (pfm_open_reader): Open file with fn_open.
+
+2007-07-28  Ben Pfaff  <blp@gnu.org>
+
+       Make PSPP able to read all the portable files I could find on the
+       web.  Thanks to John Darrington for review.  Bug #17620.
+       * por-file-reader.c (struct pfm_reader): New member `line_length'.
+       (error): Print file offset in hexadecimal.
+       (warning): New function.
+       (advance): Treat lines less than 80 bytes long as padded to 80
+       bytes with spaces.
+       (pfm_open_reader): Call read_documents if we find an "E" record.
+       (convert_format): Convert invalid formats to the default format
+       instead of aborting reading the file.
+       (read_variables): Rename duplicate variable names instead of
+       aborting reading the file.
+       (read_value_label): Allow string variables of different widths to
+       be assigned value labels in the same record.  Replace duplicate
+       value labels instead of aborting.
+       (read_documents): New function.
+
+       * por-file-writer.c (pfm_open_writer): Call write_documents if the
+       dictionary has documents.
+       (write_documents): New function.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Fix bugs related to bug #17213.
+
+       * settings.c: Use HAVE_LIBNCURSES instead of HAVE_LIBTERMCAP,
+       since the former is what config.h has.  Include the needed ncurses
+       headers.
+       (static var echo) Rename to `do_echo' because the original name is
+       the same as an ncurses identifier.
+       (get_termcap_viewport) Use error instead of msg.
+
+       * file-name.c (fn_interp_vars): Fix interpolation of $VARS.
+       (fn_close): Don't close stdin, stdout, stderr.
+
+2007-07-26 John Darrington <john@darrington.wattle.id.au>
+
+       * procedure.c procedure.h: Added callbacks which get invoked whenever 
+       a dataset's transformation chain changes.
+
+2007-07-24  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #6113.
+       * sys-file-writer.c (write_variable_display_parameters): Use new
+       var_default_display_width function to choose display width of
+       segments after the first one in a given variable.
+       * variable.c (var_create): Use var_default_display_width to pick
+       new variable's display width.
+       (var_default_display_width): New function.
+       Reviewed by John Darrington.
+
+2007-07-24  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #20427.
+       * por-file-writer.c (write_variables): Write weight variable.
+       Reviewed by John Darrington.
+
+2007-07-23  Ben Pfaff  <blp@gnu.org>
+
+       Improvements to system file reader and writer.
+       
+        First, move all detailed knowledge of very long strings into
+       sys-file-private.[ch], so that this nasty stuff can be isolated.
+
+       * sys-file-private.c (REAL_VLS_CHUNK): New macro.
+       (EFFECTIVE_VLS_CHUNK): New macro.
+       (min_int): New function.
+       (max_int): New function.
+       (sfm_width_to_bytes): Rewrite.
+       (sfm_width_to_octs): New function.
+       (sfm_segment_alloc_width): New function.
+       (sfm_segment_alloc_bytes): New function.
+       (sfm_segment_used_bytes): New function.
+       (sfm_segment_offset): New function.
+       (sfm_segment_effective_offset): New function.
+       (sfm_dictionary_to_sfm_vars): New function.
+
+       * sys-file-private.h (MIN_VERY_LONG_STRING): Removed.
+       (EFFECTIVE_LONG_STRING_LENGTH): Removed.
+       (struct sfm_var): New structure.
+
+        Next, improvements to the system file reader.
+
+       * sys-file-reader.h (struct sfm_read_info): Changed `case_cnt' to
+       type casenumber.  Added `version_major', `version_minor',
+       `version_revision'.
+
+       * sys-file-reader.c (struct sfm_reader): Replaced `flt64_cnt' by
+       `oct_cnt'.  Rename `vars', `var_cnt' to `sfm_vars', `sfm_var_cnt'.
+       Change `case_cnt' to type casenumber.  Removed `has_vls'.
+       (struct sfm_var): Removed.
+       (sfm_open_reader): Don't warn on wrong case size if the file was
+       written by SPSS 13, which tends to get it wrong.  Use
+       sfm_dictionary_to_sfm_vars.
+       (read_header): Always output system file info.
+       (read_variable_record): Simplify code for reading missing values.
+       (read_machine_int32_info): Save version numbers from system file
+       into info struct passed as new argument.
+       (read_long_string_map): Restructured to use new sys-file-private
+       functions.
+       (read_value_labels): Use size_overflow_p.
+       (sys_file_casereader_read): Get rid of distinction between fast
+       and slow paths.  Use information provided by sys-file-primate's
+       struct sfm_var to simplify code.
+       (skip_whole_strings): New function.
+       (read_int32): Renamed read_int.  Changed return value to int.
+       Updated all callers.
+       (read_flt64): Renamed read_float.  Changed return value to
+       double.  Updated all callers.
+       (int32_to_native): Removed.  Changed callers to use
+       integer_convert.
+       (flt64_to_double): Removed.  Changed callers to use float_convert.
+       
+        Finally, get rid of int32, flt64 terminology and types in system
+       file writer.  The former wasn't very useful since a POSIX "int"
+       can hold the whole range of int32 and we generally didn't have a
+       need for it to be exactly-32-bits, just at-least-32-bits.  The
+       latter was inconvenient because we had to assume that it could be
+       different from double and thereby convert special values SYSMIS,
+       HIGHEST, LOWEST to and from it in multiple places.  Instead, now
+       we just use "int" and "double" in most places, and do conversions,
+       if necessary, very close to where we do I/O.  This change meant
+       that the writer code couldn't represent records in the file as C
+       structs any longer, but that's no great loss.  The code actually
+       seems to be more readable without them.
+
+       Simplify the compression buffering code: only buffer as much as
+       necessary, which is no more than eight 8-byte units at any given
+       time.
+
+       * sys-file-writer.c (typedef flt64): Removed.
+       (macro second_lowest_flt64): Removed.
+       (struct sysfile_header): Removed.
+       (struct sysfile_variable): Removed.
+       (struct sfm_writer): Removed `needs_translation', `has_vls',
+       `flt64_cnt'.  Changed `compress' to type bool and `case_cnt' to
+       type casenumber.  Renamed `vars' to `sfm_vars', `var_cnt' to
+       `sfm_var_cnt'.  Replaced `buf', `end', `ptr', `x', `y' for
+       compression buffering by `opcodes', `opcode_cnt', `data',
+       `data_cnt'.  Renamed `var_cnt_vls' as `segment_cnt'.
+       (sfm_open_writer): Use sfm_dictionary_to_sfm_vars.  Use simple
+       data writer functions instead of structures.
+       (calc_oct_idx): New function.
+       (write_header): Use simple data writer functions instead of
+       structures.
+       (write_format_spec): Renamed write_format.  New argument.
+       (write_variable_continuation_records): New function.
+       (write_variable): Use simple data writer functions instead of
+       structures.  Use write_variable_continuation_records.  Write
+       entire very long string instead of requiring caller to understand
+       them.
+       (write_value_labels): Use simple data writer functions instead of
+       structures.
+       (write_documents): Ditto.
+       (write_variable_display_parameters): Use sys-file-private
+       functions to simplify.  Use simple data writer functions instead
+       of structures.
+       (write_vls_length_table): Use simple data writer functions instead
+       of structures.
+       (write_longvar_table): Ditto.
+       (write_rec_7_34): Break into new functions
+       write_integer_info_record, write_float_info_record.  Use simple
+       data writer functions instead of structures.
+       (buf_write): Removed.
+       (append_string_max): Removed.
+       (ensure_buf_space): Removed.
+       (sys_file_casewriter_write): Get rid of the distinction between
+       fast and slow paths, which didn't seem to be too useful.  Use new
+       functions write_case_uncompressed, write_case_compressed.
+       (put_instruction): Removed.
+       (put_element): Removed.
+       (write_compressed_data): Removed.
+       (close_writer): Use flush_compressed.  Only write case count to
+       system file if it will fit in the field.
+       (write_case_compressed): New function.
+       (write_case_uncompressed): New function.
+       (flush_compressed): New function.
+       (put_cmp_opcode): New function.
+       (put_cmp_number): New function.
+       (write_int): New function.
+       (convert_double_to_output_format): New function.
+       (write_float): New function.
+       (write_value): New function.
+       (write_string): New function.
+       (write_bytes): New function.
+       (write_zeros): New function.
+       (write_spaces): New function.
+
+       Reviewed by John Darrington.
+
+2007-07-22  Ben Pfaff  <blp@gnu.org>
+
+       Don't try to write very long strings to portable files.  The
+       format does not support it.
+
+       * por-file-writer.c (MAX_POR_WIDTH): New macro.
+       (pfm_open_writer): Limit output width to MAX_POR_WIDTH.
+       (write_format): Add arg to take width to resize format to.
+       (write_value): Limit width of value written to MAX_POR_WIDTH.
+       (write_variables): Limit width of variable and its output formats
+       to MAX_POR_WIDTH.
+       Reviewed by John Darrington.
+
+2007-07-22  Ben Pfaff  <blp@gnu.org>
+
+       * sys-file-reader.c (read_variable_to_value_map): Use max_warnings
+       local variable instead of literal 5.
+       Reviewed by John Darrington.
+       
+2007-07-22  Ben Pfaff  <blp@gnu.org>
+
+       Fix problems with uniqueness of short names in system files with
+       very long string variables.  Now a variable may have multiple
+       short names.
+       
+       * automake.mk (src_data_libdata_a_SOURCES): Add new files
+       short-names.c, short-names.h.
+
+       * dictionary.c (dict_clone): Clone all the short names.
+       (compare_strings): Move into short-names.c.
+       (hash_strings): Ditto.
+       (set_var_short_name_suffix): Ditto.
+       (dict_assign_short_names): Ditto, rename short_names_assign,
+       change to assign all short names.
+       
+       * por-file-writer.c (write_variables): Use short_names_assign
+       instead of dict_assign_short_names.
+
+       * short-names.c: New file.
+
+       * short-names.h: New file.
+
+       * sys-file-private.c (sfm_width_to_segments): New function.
+
+       * sys-file-reader.c (read_long_var_name_map): Save and restore all
+       the short names, not just the first one.
+       
+       * sys-file-writer.c (cont_var_name): Removed.
+       (sfm_open_writer): Use short_names_assign instead of
+       dict_assign_short_names.  Use unique short names assigned by
+       short_names_assign instead of those generated by cont_var_name.
+
+       * variable.c (struct variable): Remove `short_name' member,
+       replace by `short_names' and `short_name_cnt'.
+       (var_create) Initialize new members.
+       (var_get_short_name_cnt): New function.
+       (var_get_short_name): Now takes an index argument.  Changed most
+       callers to pass 0.
+       (var_set_short_name): Ditto.
+       (var_clear_short_name): Renamed var_clear_short_names, changed to
+       clear all short names.
+       
+       Reviewed by John Darrington.
+
+2007-07-22  Ben Pfaff  <blp@gnu.org>
+
+       * variable.c (var_set_width): Use new var_set_width function.
+
+       * missing-values.c (mv_n_values): Drop assertion, which was not
+       needed.
+
+       * format.c (fmt_default_for_width): New function.
+       (fmt_resize): New function.
+
+       Reviewed by John Darrington.
+
+2007-07-18 John Darrington <john@darrington.wattle.id.au>
+
+       * datasheet.c (datasheet_delete_columns): Added assertion to check
+       we're not deleting outside the range of the sheet.  
+
+       
+       * dictionary.c dictionary.h variable.c: Added the ability for string
+       variables to be resized.
+       
+       * vardict.h: Added some prototypes (moved from dictionary.h) as
+       these should only be called by variable.c
+
+
+2007-07-14 John Darrington <john@darrington.wattle.id.au>
+
+       * sfm-reader.c: Respect case_cnt field in file header.
+
+2007-07-01 John Darrington <john@darrington.wattle.id.au>
+
+       * transformation.c transformation.h (trns_chain_execute): Changed the 
+       signature (Patch #6057)
+
+2007-06-10  Ben Pfaff  <blp@gnu.org>
+
+       * casereader-filter.c (casereader_filter_destroy): Make sure to
+       write all the remaining excluded cases to the casewriter, if any.
+
+       * caseinit.c (init_list_destroy): Rewrite.
+       (init_list_clear): Ditto.
+
+       * casegrouper.c (casegrouper_get_next_group): Always set *reader
+       to null when returning false.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Actually implement the new procedure code and adapt all of its
+       clients to match.  Also adapt all of the other case sources and
+       sinks in the tree and their clients to use the
+       casereader/casewriter infrastructure.
+
+       * automake.mk: Add and remove files.
+
+       * any-reader.c: Change into a casereader.
+       * por-file-reader.c: Ditto.
+       * scratch-reader.c: Ditto.
+       * sys-file-reader.c: Ditto.
+
+       * any-writer.c: Change into a casewriter.
+       * por-file-writer.c: Ditto.
+       * scratch-writer.c: Ditto.
+       * sys-file-writer.c: Ditto.
+
+       * procedure.c: Change to use casereader, casewriter, caseinit, and
+       other new infrastructure.
+
+       * scratch-handle.c: Adapt to new infrastructure.
+
+       * case-sink.c: Removed, now dead code.
+       * case-sink.h: Ditto.
+       * case-source.c: Ditto.
+       * case-source.h: Ditto.
+       * casefile-factory.c: Ditto.
+       * casefile-private.h: Ditto.
+       * casefile.c: Ditto.
+       * casefile.h: Ditto.
+       * casefilter.c: Ditto.
+       * casefilter.h: Ditto.
+       * fastfile.c: Ditto.
+       * fastfile.h: Ditto.
+       * fastfile-factory.c: Ditto.
+       * fastfile-factory.h: Ditto.
+       * storage-stream.c: Ditto.
+       * storage-stream.h: Ditto.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Add datasheet code.
+
+       * automake.mk: Add new files.
+
+       * datasheet.c: New file.
+
+       * datasheet.h: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Until now, the procedure code has provided a case to the
+       case_source, which has filled in the data values that come from
+       the active file.  "Left" data values that don't come from the
+       active file naturally stay the same from case to case, because the
+       procedure code keeps using that same case.
+
+       One of the compromises that comes with the new procedure code is
+       that the active file allocates and provides its own case, which
+       the procedure code then has to resize to provide room for any
+       other variables that should go in the case and then fill in the
+       values of "left" variables.  Then, when we're done with that case,
+       we have to save the values of "left" variables to copy into the
+       next case read from the active file.
+
+       The caseinit code helps with this.
+
+       * automake.mk: Add new files.
+
+       * caseinit.c: New file. 
+
+       * caseinit.h: New file. 
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * value.h (value_cnt_from_width): New function.
+
+       * variable.c (var_get_value_cnt): Use new function.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Add casegrouper, to allow cases read from a given casereader to be
+       broken into groups, each of which has its own casereader.
+       Generally cases are grouped based on having equal values for some
+       set of variables.
+
+       * automake.mk: Add new files.
+
+       * casegrouper.c: New file.
+
+       * casegrouper.h: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Add interface to lexicographical ordering of cases.
+
+       * automake.mk: Add new files.
+
+       * case-ordering.c: New file.
+
+       * case-ordering.h: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Add casereaders and casewriters, the basis of the new data processing
+       implementation.  A casereader is a uniform interface to reading cases
+       from a data source; a casewriter is a uniform interface to writing
+       cases to a data sink.
+
+       * automake.mk: Add new files.
+       
+       * casereader-filter.c: New file.
+       
+       * casereader-provider.h: New file.
+
+       * casereader-translator.c: New file.
+       
+       * casereader.c: New file.
+       
+       * casereader.h: New file.
+       
+       * casewriter-provider.h: New file.
+       
+       * casewriter-translator.c: New file.
+       
+       * casewriter.c: New file.
+       
+       * casewriter.h: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       "casewindow" data structure that extends the deque (from libpspp)
+       of cases with the ability to dump cases to disk if we get too many
+       of them in memory.
+
+       * automake.mk: Add new files.
+
+       * casewindow.c: New file.
+
+       * casewindow.h: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       sparse_cases data structure that augments a sparse_array of cases
+       with the ability to dump cases to disk if we get too many cases in
+       memory.
+
+       * automake.mk: Add new files.
+
+       * sparse-cases.c: New file.
+
+       * sparse-cases.h: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adds a low-level on-disk case array data structure.
+       
+       * automake.mk: Add new files.
+
+       * case-tmpfile.c: New file.
+
+       * case-tmpfile.h: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       In a couple of places we calculate the maximum number of cases to
+       keep in memory based on the user-defined workspace.  Enable
+       centralizing the calculation through a new function.
+       
+       * settings.c (get_workspace_cases): New function.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       The casenumber type is defined in transformations.h, but case.h is
+       a more sensible place.  Move it.
+
+       * case.h (CASENUMBER_MAX): New macro.
+       (typedef casenumber): Move here, from transformations.h.
+
+2007-06-03  Ben Pfaff  <blp@gnu.org>
+
+       Slightly generalize case_to_values and case_from_values functions.
+
+       * case.c (case_to_values): Rename case_copy_out, change interface.
+       (case_from_values): Rename case_copy_in, change interface.
+
+       * fastfile.c (fastfilereader_get_next_case): Update caller.
+       (write_case_to_disk): Ditto.
+
+2007-06-02  Ben Pfaff  <blp@gnu.org>
+
+       Clean up after a forgotten part of patch #5829.
+       
+       * casedeque.h: Remove unused file.
+
+       * automake.mk: Remove casedeque.h from sources.
+
+2007-05-10  Jason Stover  <jhs@math.gcsu.edu>
+
+       * category.c: Removed redundant #include
+
+2007-05-06  Ben Pfaff  <blp@gnu.org>
+
+       Abstract the documents within a dictionary a little better.
+       Thanks to John Darrington for suggestion, initial version, and
+       review.  Patch #5917.
+
+       * dictionary.c (struct dictionary): Change `documents' member from
+       char * to struct string.
+       (dict_clear): Destroy struct string.
+       (dict_get_documents): Convert struct string to char *.
+       (dict_set_documents): Set struct string.  Pad to 80-character
+       multiple.
+       (dict_clear_documents): New function.
+       (dict_add_document_line): New function.
+       (dict_get_document_line_cnt): New function.
+       (dict_get_document_line): New function.
+
+       * dictionary.h (macro DOC_LINE_LENGTH): New macro.
+
+       * sys-file-reader.c (read_documents): Use new document functions.
+
+2007-04-19 John Darrington <john@darrington.wattle.id.au>
+
+       * sys-file-reader.c: When reading a system file which has no 
+       long name table, automatically create one where the long names 
+       are the lower case versions of the short names.
+       
+2007-04-22  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c (dict_set_split_vars): dict_destroy expects that
+       dict_clear will free most data related to the dictionary.
+       dict_clear does a decent job, except that dict_set_split_vars on
+       some systems won't actually free the dict's "split" member.
+       Instead, it'll allocate a 1-byte region.  Fix this.
+
+       * value.c (value_copy): New function.
+       (value_set_missing): Ditto.
+
+2007-04-22 John Darrington <john@darrington.wattle.id.au>
+
+       * Deleted existing category.h and moved cat-routines.h into 
+       category.h  Encapsulated struct cat_vals better.
+
+2007-04-19 John Darrington <john@darrington.wattle.id.au>
+
+       * sys-file-reader.c: When reading a system file which has no 
+       long name table, automatically create one where the long names 
+       are the lower case versions of the short names.
+       
+2007-04-16 John Darrington <john@darrington.wattle.id.au>
+
+       * sys-file-reader.c: Some versions of Other Software seem to 
+        produce system files with string  variables' measure set to 
+       zero.  We'll assume these are supposed to be nominal variables.
+
+2007-03-30  Ben Pfaff  <blp@gnu.org>
+
+       * procedure.c: Adapt to new deque data structure.
+
+Mon Feb 19 10:53:21 2007  John McCabe-Dansted <gmatht@gmail.com>
+                         Ben Pfaff <blp@gnu.org>
+
+       * file-name.c: Mingw compatibility fixes.
+       (fn_search_path): Use ISSLASH instead of comparing against '/'
+       directly.
+       (fn_dir_name): Use dir_name from gnulib.
+       (fn_is_absolute): Use IS_ABSOLUTE_FILE_NAME from gnulib.
+       (fn_get_identity): Use GetFullPathName instead of canonicalize
+       from gnulib, because the latter does not fully support
+       Windows-style path names.  Use this implementation based on the
+       detected presence of Windows instead of the absence of Unix, since
+       the new implementation is Windows-specific.
+       (fn_compare_file_identities): In Windows implementation, compare
+       names case-insensitively.
+
+Sun Feb 18 13:28:02 2007  Ben Pfaff  <blp@gnu.org>
+
+       * make-file.c: Don't include mkstemp.h, because gnulib now causes
+       <stdlib.h> to have the same effect.
+
+Sun Feb 18 11:20:24 2007  Ben Pfaff  <blp@gnu.org>
+
+       * por-file-reader.c: Add missing _() around messages.
+
+Sun Feb 11 20:44:13 2007  Ben Pfaff  <blp@gnu.org>
+
+       * make-file.c: Include "mkstemp.h", without which linking on
+       mingw32 fails.
+
+Thu Feb  8 14:59:05 2007  Ben Pfaff  <blp@gnu.org>
+       Reduce platform dependence.
+       * file-name.c (fn_tilde_expand): Removed, and removed calls to it.
+       Everywhere we using this, we really should have just depended on
+       the shell to expand tildes.
+       (fn_search_path): Simplify, given that we don't do tilde expansion
+       any longer.
+       (fn_normalize): Removed.  Caller changed to use the canonicalize
+       module from gnulib.
+       (fn_get_cwd): Removed.  Only user was fn_normalize.
+       (fn_is_absolute): Really only test for absolute names.
+       (fn_is_special): Use pipe files if HAVE_POPEN, not if we're in
+       unix.
+       (fn_readlink): Removed, as it was only used fn_normalize.
+       (fn_exists): Assume the stat function is available; gnulib does.
+       (fn_open): Use pipe files if HAVE_POPEN, not if we're in unix.
+Sat Feb  3 21:52:17 2007  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c (dict_create_vector_assert): New function.
+
+Wed Feb  7 21:25:15 2007  Ben Pfaff  <blp@gnu.org>
+
+       * file-name.c (fn_normalize): Correct name of function
+       fn_is_special.  Thanks to John McCabe-Dansted <gmatht@gmail.com>
+       for pointing this out.
+
+Thu Feb  1 16:53:37 2007  Ben Pfaff  <blp@gnu.org>
+
+       We are using a single member in struct file_handle, the "name"
+       field, for more than one purpose.  When it begins with '"', it's a
+       file name; otherwise, it's a token that can be used to identify
+       it.  When that assertion fires, it's because we searched for the
+       name case-sensitively as a file name (so that there was no match),
+       and then we try to insert it case-insensitively as a token, which
+       fails because duplicates aren't allowed.
+
+       Solution: break the two purposes into two separate fields.  This
+       fixes the problem and likely makes the code easier to read too.
+
+       Fixes bug #18922.  Thanks to John Darrington for bug report and
+       review.
+
+       * file-handle-def.c (struct file_handle): New `id' member.
+       (fh_from_name): Rename fh_from_id.  Update all callers.
+       (create_handle): New `id' parameter.  Update all callers.
+       (fh_create_file): Ditto.
+       (fh_get_id): New function.
+
+Mon Jan 15 16:18:10 2007  Ben Pfaff  <blp@gnu.org>
+
+       * case.c (case_is_null): Change return type to bool.
+
+Mon Jan 15 10:57:28 2007  Ben Pfaff  <blp@gnu.org>
+
+       Add debugging code.
+       
+       * case.c (case_clone) [DEBUGGING]: When debugging, don't use
+       reference counting to share data.  This makes it easy for
+       valgrind, etc. to find accesses to cases that have been destroyed
+       but have been kept around by another user's ref-count.  This often
+       happens when the data set is small enough to find in memory; if a
+       bigger data set that would overflow to disk were used, then data
+       corruption would occur.
+
+Mon Jan 15 10:55:18 2007  Ben Pfaff  <blp@gnu.org>
+
+       Simplify code.
+
+       * case.c (case_unshare): Make it check internally whether the
+       ref_cnt is greater than 1, so that the callers don't have to.
+       Update callers not to check.
+
+Mon Jan 15 10:53:01 2007  Ben Pfaff  <blp@gnu.org>
+
+       Before, I was thinking that I might want to get rid of reference
+       counting at some point.  Now, I'm pretty sure that it's here to
+       stay.  Thus, because we have to store the value_cnt anyway for
+       reference-counted cases, we might as well expose it to users.
+
+       * case.c (case_get_value_cnt): New function.
+       (case_resize): Drop OLD_CNT argument.  Update all callers.  Only
+       resize case if its size actually changed.
+
+       * casefile.c (casefile_append_xfer): Use case_get_value_cnt
+       instead of peeking inside struct case directly.
+       (casefile_append): Ditto.
+
+Mon Jan 15 10:50:22 2007  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of the inlines for the case functions, which made the
+       header file hard to read.  (Also, in testing with "-O2 -DNDEBUG",
+       the inlines didn't speed up "make check" at all, which is not a
+       perfect benchmark but seems indicative.)
+       
+       * case.c: Remove #ifdef DEBUGGING...#endif around many function
+       definitions.  Remove some assertions on nonnull pointers that were
+       redundant with a pointer dereference soon after in the function.
+       Also:
+       (struct case_data): Move definition here from case.h.
+       (case_data): Ditto.
+       (case_num): Ditto.
+       (case_str): Ditto.
+       (case_data_wr): Ditto.
+       
+Sun Jan 14 21:41:12 2007  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add casedeque.h to sources.
+       
+       * casedeque.h: New file.
+
+       * procedure.c: (struct dataset) Change lag_count, lag_head,
+       lag_queue member into single struct casedeque member.  Update all
+       users to use the casedeque instead.
+       (lag_case) Removed.
+
+Sun Jan 14 21:43:12 2007  Ben Pfaff  <blp@gnu.org>
+
+       * procedure.c: Simplify lagged cases interface.  Updated all
+       clients--well, the only client--to use the simplified interface.
+       (dataset_n_lag) Removed.
+       (dataset_set_n_lag) Removed.
+       (dataset_need_lag) New function.
+
+Tue Jan  9 07:20:05 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c procedure.c: More changes to ensure that callbacks occur
+       whenever appropriate, but only when the dataset/dictionary is in a 
+       consistent state.
+
+Sun Jan  7 08:33:04 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c dictionary.h : Added callbacks for change of filter and 
+       split variables.  Refactored some code to ensure that callbacks get
+       invoked when appropriate.
+
+       * procedure.c (proc_cancel_temporary_transformations): Make sure that 
+       replace_dict callback occurs when permanent_dict replaces the current
+       dictionary.
+
+Wed Jan  3 11:02:11 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c dictionary.h : Added callback for when the weight 
+       variable of a dictionary changes.
+
+Mon Jan  1 10:36:26 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c dictionary.h : Added replace_source and replace_dict
+       callbacks, and functions to deal with them.
+
+Fri Dec 22 13:56:08 2006  Ben Pfaff  <blp@gnu.org>
+
+       Simplify missing value handling.
+
+       * missing-values.h (enum mv_class): New type.
+       (enum mv_type): Moved definition into missing-values.c and renamed
+       each MV_* to MVT_*, to distinguish them from the exposed mv_class
+       enums.  Updated all uses.
+       (struct missing_values): Changed type of `type' from `enum
+       mv_type' to `int' because the definition is no longer exposed.
+       
+       * missing-values.c (mv_is_value_missing): Add new enum mv_class
+       parameter.  Update all callers.
+       (mv_is_num_missing): Ditto.
+       (mv_is_str_missing): Ditto.
+       (mv_is_value_user_missing): Removed.  Changed callers to use
+       mv_is_value_missing.
+       (mv_is_num_user_missing): Removed.  Changed callers to use
+       mv_is_num_missing.
+       (mv_is_str_user_missing): Removed.  Changed callers to use
+       mv_is_str_missing.
+       (mv_is_value_system_missing): Removed.  Changed callers to use
+       mv_is_value_missing.
+       (mv_set_type): Removed.  Changed callers to use mv_clear.
+       (mv_clear): New function.
+       
+       * variable.c (var_is_value_missing): Add new enum mv_class
+       parameter.  Update all callers.
+       (var_is_num_missing): Ditto.
+       (var_is_str_missing): Ditto.
+       (var_is_value_user_missing): Removed.  Changed callers to use
+       var_is_value_missing.
+       (var_is_num_user_missing): Removed.  Changed callers to use
+       var_is_num_missing.
+       (var_is_str_user_missing): Removed.  Changed callers to use
+       var_is_str_missing.
+       (var_is_value_system_missing): Removed.  Changed callers to use
+       var_is_value_missing.
+       
+       * casefilter.c (struct casefilter): Use enum mv_class in place of
+       bool.
+       (casefilter_variable_missing): Adapt to new member.
+       (casefilter_create): Change signature to take enum mv_class,
+       update callers.
+
+Fri Dec 22 20:08:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile-factory.h fastfile-factory.c fastfile-factory.h: New files.
+
+       * case-sink.c case-sink.h procedure.c procedure.h 
+          storage-stream.c: Now uses the factory.
+       
+Sat Dec 16 22:05:18 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make it possible to pull cases from the active file with a
+       function call, instead of requiring indirection through a callback
+       function.
+
+       * case-source.h (struct case_source_class): Change ->read function
+       to return a single case, instead of calling a callback function
+       for each case.  Change ->destroy function to return an error
+       status.
+
+       * case-source.c (free_case_source): Pass along the value returned
+       by the case_source ->destroy function.
+
+       * procedure.c (struct write_case_data): Removed.
+       (struct dataset): Added some members to track procedure state.
+       (procedure): Optimize the trivial case at this level.
+       (internal_procedure): Re-implement in terms of proc_open,
+       proc_read, proc_close.
+       (proc_open) New function.
+       (proc_read) New function.
+       (proc_close) New function.
+       (write_case) Moved into proc_read.
+       (close_active_file) Moved closing of data source into proc_close.
+
+       * storage-source.c: Rewrote to conform with modified
+       case_source_class interface.
+
+       * transformations.c (trns_chain_execute): Added argument to allow
+       starting execution from an arbitrary transformation.  Updated
+       callers.
+
+       * transformations.h (enum TRNS_NEXT_CASE) Renamed TRNS_END_CASE.
+
+Sat Dec 16 14:09:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sys-file-reader.c (read_display_parameters): Don't assume that
+       MEASURE_* and ALIGN_* have the same values found in system files.
+
+       * sys-file-writer.c (write_variable_display_parameters): Ditto.
+
+       * variable.h: Change MEASURE_NOMINAL, MEASURE_ORDINAL,
+       MEASURE_SCALE to be 0-based instead of 1-based.  This also fixes
+       the value of n_MEASURES, which was off by 1 (at least from my
+       point of view).
+
+Sat Dec 16 12:17:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c dictionary.h vardict.h variable.c: Added optional
+               callbacks which are invoked when the dictionary or its 
+               variables are changed.  
+       
+       * missing-values.c missing-values.h value-labels.c: Tidied up
+               consistency checks, and made some of them return false 
+               instead of assert-failing. 
+
+Wed Dec 13 19:30:11 2006  Ben Pfaff  <blp@gnu.org>
+
+       * calendar.c (calendar_days_in_month): New function.
+
+Mon Dec 11 07:53:39 2006  Ben Pfaff  <blp@gnu.org>
+
+       * value-labels.c (hash_int_val_lab): Only hash as many bytes as
+       the value label's width.
+
+Sun Dec 10 14:21:29 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sfm-private.h: Move contents into sys-file-writer.c, which is
+       the only remaining user.  Removed Borland C++-specific directives.
+       
+       * sys-file-reader.c: Clean up and rewrite entire file.  The
+       rewritten version is simpler and better abstracted, and should be
+       easier to maintain and extend.  It avoids using structures to read
+       file data, which is prone to padding variations among compilers.
+       It should also handle non-IEEE 754 system files, although I
+       haven't been able to find any.  It has been tested against many
+       .sav files obtained from the Web and found to produce the same
+       results as the earlier version of the code, or in some cases
+       improved results.  It is more tolerant of format variations found
+       in the wild.
+
+       * sys-file-reader.h (struct sfm_read_info): Removed `big_endian'
+       member, putting an enum integer_format in its place.  New member
+       `float_format'.  Changed `compressed' member to type bool.
+
+Sun Dec 10 13:48:53 2006  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c (dict_delete_consecutive_vars): New function.
+
+Sat Dec  9 20:08:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       * file-name.c (fn_search_path): Remove prefix arg that was unused
+       by any caller.  Updated all callers.
+
+Sat Dec  9 20:04:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format.c (fmt_dollar_template): Use user's decimal point
+       character.  Add assertion.
+
+Sat Dec  9 20:02:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format.c (fmt_dollar_template): New function, based on
+       dollar_format_template from var-type-dialog.c.
+
+Sat Dec  9 18:05:59 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c (output_scientific): Fix bad assumption that "buf" is
+       null-terminated.
+       
+Sat Dec  9 17:23:23 2006  Ben Pfaff  <blp@gnu.org>
+
+       Finish converting struct variable to an opaque type.  In this
+       phase, we add remaining setter and getter functions, convert the
+       remaining PSPP code to use them, and do a bunch of cleanup.  The
+       resulting changes are pervasive but mostly trivial, and only the
+       notable changes are logged.
+       
+       * automake.mk (src_data_libdata_a_SOURCES): Add the new source
+       files.
+       
+       * case.c (case_data): Renamed case_data_idx.
+       (case_num): Renamed case_num_idx.
+       (case_str): Renamed case_str_idx.
+       (case_data_rw): Renamed case_data_rw_idx.
+
+       * case.h (case_data): New function with old name and an interface
+       that takes a variable instead of an index, which is easier to
+       use.  Updated all callers to use the new interface, or to use the
+       new *_idx function (see above).
+       (case_num): Ditto.
+       (case_str): Ditto.
+       (case_data_rw): Ditto.
+       
+       * category.c (cat_stored_values_destroy): Changed interface to
+       take a struct cat_vals * instead of a struct variable *.
+
+       * dictionary.c (dict_clone): Use new vector_clone function.     
+       (dict_clear) Use new var_destroy function.
+       (add_var) New function.
+       (dict_create_var) Rewrite in terms of dict_create_var_assert.
+       (dict_create_var_assert) Rewrite in terms of add_var.
+       (dict_clone_var) Rewrite in terms of dict_clone_var_assert.
+       (dict_clone_var_assert) Rewrite in terms of var_clone, add_var.
+       (dict_lookup_var) Use new var_create, var_destroy functions.
+       (dict_contains_var) Rewrite in terms of new vardict functionality.
+       (set_var_dict_index) New function.
+       (set_var_case_index) New function.
+       (reindex_vars) New function.
+       (dict_delete_var) Rewrite in terms of new vardict functionality.
+       (dict_reorder_var) Ditto.
+       (dict_reorder_vars) Ditto.
+       (rename_var) New function.
+       (dict_rename_var) Use rename_var.
+       (dict_rename_vars) Use pool to simplify code.  Use rename_var.
+       (dict_get_compacted_idx_to_fv) Rename
+       dict_get_compacted_dict_index_to_case_index, update callers.
+       (dict_create_vector) Use new vector_create function.
+       (dict_clear_vectors) Use new vector_destroy function.
+       (set_var_short_name_suffix) Move here from variable.c, renamed
+       from var_set_short_name_suffix, make static, update caller.
+
+       * sys-file-private.c: New file.  
+       (sfm_width_to_bytes) Moved here from variable.c, renamed from
+       width_to_bytes, update callers.
+
+       * sys-file-private.h: New file.  Later it will supplant
+       sfm-private.h; for now it supplements it.
+       (macro MIN_VERY_LONG_STRING) New macro.
+       (macro EFFECTIVE_LONG_STRING_LENGTH) New macro, from value.h.
+
+       * sys-file-reader.c: Use MIN_VERY_LONG_STRING - 1 where
+       MAX_LONG_STRING was used before.
+
+       * sys-file-writer.c: Ditto.
+
+       * value-labels.c: Change the paradigm here to be that a null
+       pointer is OK for a struct val_labs * in most cases; it just
+       represents an empty set of value labels.
+       (val_labs_copy) A copy of a null set is a null set.
+       (val_labs_count) A null set has 0 labels.
+       (val_labs_replace) Change return type to void.  Rewrite for
+       simplicity.
+       (val_labs_find) A null set does not contain the value.
+       (value_to_string) Moved to variable.c, renamed var_get_value_name,
+       transposed argument order, updated all callers.
+
+       * value.c: New file.
+       (value_dup) Moved here from variable.c.
+       (compare_values) Ditto.
+       (hash_value) Ditto.
+
+       * value.h: (macro MAX_SHORT_STRING) Rewrote for simplicity.
+       (macro MAX_LONG_STRING) Removed, because it was only interesting
+       for system files, not for general code.
+       (macro MAX_VERY_LONG_STRING) Ditto.
+       (macro EFFECTIVE_LONG_STRING_LENGTH) Moved to sys-file-private.h.
+       (macro MAX_ELEMS_PER_VALUE) Removed, as it was unused.
+
+       * vardict.h: New file, for an interface between variables and
+       their dictionaries.
+
+       * variable.c: A lot of functions were moved around, for better
+       organization.
+       (struct variable) Move definition here, from variable.h.
+       (var_type_adj) Removed--makes i18n hard.
+       (var_type_noun) Ditto.
+       (var_create) New function.
+       (var_clone) New function.
+       (var_destroy) New function.
+       (var_set_name) Assert that variable is not in a dictionary.
+       (compare_var_names) Rename compare_vars_by_name and fix a couple
+       of callers who thought the args were strings.
+       (hash_var_name) Rename hash_var_by_name.
+       (compare_var_ptr_names) Rename compare_var_ptrs_by_name.
+       (hash_var_ptr_name) Rename hash_var_ptr_by_name.
+       (var_is_very_long_string) Removed, because it was only interesting
+       to system file code.
+       (var_set_missing_values) Allow the argument to be the wrong width,
+       as long as we can resize it.  Simplify callers who were doing the
+       resizing themselves.
+       (var_get_value_labels) New function.
+       (var_has_value_labels) New function.
+       (var_set_value_labels) New function.
+       (alloc_value_labels) New function.
+       (var_add_value_label) New function.
+       (var_replace_value_label) New function.
+       (var_clear_value_labels) New function.
+       (var_lookup_value_label) New function.
+       (var_get_value_name) Moved here from variable.c, renamed from
+       var_get_value_name, transposed argument order, updated all
+       callers.
+       (var_to_string) Moved here, from variable-label.c.
+       (var_set_leave) New function.
+       (var_get_leave) New function.
+       (var_must_leave) New function.
+       (var_set_short_name_suffix) Moved to dictionary.c, renamed
+       set_var_short_name_suffix.
+       (var_get_dict_index) New function.
+       (var_get_case_index) New function.
+       (var_get_obs_vals) New function.
+       (var_set_obs_vals) New function.
+       (var_has_obs_vals) New function.
+       (var_get_vardict) New function.
+       (var_set_vardict) New function.
+       (var_has_vardict) New function.
+       (var_clear_vardict) New function.
+       (value_dup) Moved to value.c.
+       (compare_values) Ditto.
+       (hash_value) Ditto.
+
+       * variable.h: (enum NUMERIC) Rename VAR_NUMERIC, update all users.
+       (enum ALPHA) Rename VAR_STRING, update all users.
+
+       * vector.c: New file.
+       (struct vector) Moved here, from variable.h.
+       (check_widths) New function.
+       (vector_create) New function.
+       (vector_clone) New function.
+       (vector_destroy) New function.
+       (vector_get_name) New function.
+       (vector_get_var) New function.
+       (vector_get_var_cnt) New function.
+       (compare_vector_ptrs_by_name) New function.
+
+       * vector.h: New file.
+
+Sun Dec 10 11:32:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * casefilter.c (casefilter_variable_missing): Avoided comparision of
+       string variables to SYSMIS.  Thanks to Ben Pfaff for reporting this
+       problem.
+
+Sat Dec  9 07:18:03 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * value-labels.c (destroy_atoms): New function.
+       * value-labels.c (atom_create): Call destroy_atoms in atexit handler.
+
+Thu Dec  7 17:38:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       Thanks to Jason Stover for pointing out this problem.
+       
+       * data-out.c (output_number): Use gsl_finite from GSL, which is
+       portable, instead of isfinite, which is not.
+       (power256) Ditto.
+
+Thu Dec  7 15:22:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * variable.c variable.h (value_dup): New function.
+
+Mon Dec  4 22:20:17 2006  Ben Pfaff  <blp@gnu.org>
+
+       Start converting struct variable to an opaque type.  In this
+       phase, we add a bunch of setter and getter functions and convert
+       most of the PSPP code to use them.  The resulting changes are
+       pervasive but mostly trivial, and only the notable changes are
+       logged.
+       
+       * format.c (fmt_equal): New function.
+       
+       * variable.c (var_type_is_valid): New function.
+       (measure_is_valid) Moved here, from format.c.
+       (alignment_is_valid) Moved here, from format.c.
+       (var_get_name) New function.
+       (var_set_name) New function.
+       (width_to_type) New function.
+       (var_get_type) New function.
+       (var_get_width) New function.
+       (var_set_width) New function.
+       (var_is_numeric) New function.
+       (var_is_alpha) New function.
+       (var_is_short_string) New function.
+       (var_is_long_string) New function.
+       (var_is_very_long_string) New function.
+       (var_get_missing_values) New function.
+       (var_set_missing_values) New function.
+       (var_clear_missing_values) New function.
+       (var_has_missing_values) New function.
+       (var_is_value_missing) New function.
+       (var_is_num_missing) New function.
+       (var_is_str_missing) New function.
+       (var_is_value_user_missing) New function.
+       (var_is_num_user_missing) New function.
+       (var_is_str_user_missing) New function.
+       (var_is_value_system_missing) New function.
+       (var_get_print_format) New function.
+       (var_set_print_format) New function.
+       (var_get_write_format) New function.
+       (var_set_write_format) New function.
+       (var_set_both_formats) New function.
+       (var_get_label) New function.
+       (var_set_label) New function.
+       (var_clear_label) New function.
+       (var_has_label) New function.
+       (var_get_measure) New function.
+       (var_set_measure) New function.
+       (var_get_display_width) New function.
+       (var_set_display_width) New function.
+       (var_get_alignment) New function.
+       (var_set_alignment) New function.
+       (var_get_value_cnt) New function.
+       (var_get_leave) New function.
+       (var_get_short_name) New function.
+
+       * variable.h: (struct variable) Removed "type" and "nv" members;
+       they are now computed from "width" where needed.
+
+Mon Dec  4 21:38:40 2006  Ben Pfaff  <blp@gnu.org>
+
+       * missing-values.c (mv_resize): Don't write beyond end of the
+       allocated buffer when resizing a long string.
+
+Sat Dec  2 16:28:32 2006  Ben Pfaff  <blp@gnu.org>
+
+       Clean up identifier code: don't require identifier enumerations to
+       be in a particular order; make better use of string library;
+       expose less of the internals.
+               
+       * identifier.c: (lex_skip_identifier) Rename lex_id_get_length,
+       change interface.  Updated all callers.
+       (lex_id_match) Change interface to use struct substring, update
+       all callers.
+       (lex_id_match_len) Removed.  Update callers to use lex_id_match.
+       (global array keywords[]) Make static, change form.  Update all
+       users to use lex_id_name instead.
+       (lex_is_keyword) New function.
+       (lex_id_to_token) Change interface to use struct substring, update
+       all callers.
+       (lex_id_name) New function.
+
+       * identifier.h: (T_FIRST_KEYWORD) Removed.  Changed users to call
+       lex_is_keyword instead.
+       (T_LAST_KEYWORD) Removed.
+       (T_N_KEYWORDS) Removed.
+       
+Sat Nov 18 20:46:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: (fmt_date_template) Distinguish characters for which a
+       space is output and any date delimiter is allowed on input, from
+       those for which a space is output and only a space is allowed on
+       input.  The former is represented by X, the latter by a space.
+       Also, drop distinction between h and H, changing the former to the
+       latter.
+
+       * data-in.c: Completely rewrite internals to conform to SPSS input
+       formats as closely as possible.
+       (data_in) Changed external interface by replacing the structure
+       that was used as a single argument by a set of arguments.  Updated
+       all callers.
+       (data_in_finite_line) Removed.  Converted all callers to use plain
+       data_in.
+       (data_in_get_integer_format) New function.
+       (data_in_set_integer_format) New function.
+       (data_in_get_float_format) New function.
+       (data_in_set_float_format) New function.
+
+       * data-in.h: (enums DI_IGNORE_ERROR, DI_IMPLIED_DECIMALS) Removed.
+       (struct data_in) Removed.
+
+       * data-out.c: (output_date) Drop each component from the input as
+       it is output, to allow us to drop the distinction between h (a
+       count of hours) and H (the hour of day) template characters.
+       Also, handle new X template character.
+       (output_scientific) Follow more rational rule on when to drop
+       fraction introduced between SPSS 13 and 15.  Updated test case to
+       match new behavior.
+
+Sat Nov 11 11:41:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix buffer overflow reported by John Darrington.
+
+       * data-out.c (output_bcd_integer): In case of SYSMIS, etc.,
+       realize that DIGITS is a count of nibbles, not of bytes.
+
+Sat Nov  4 15:59:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * calendar.c (calendar_offset_to_gregorian) Also return the
+       year-of-day.  Change callers to new interface.
+
+       * data-out.c: Completely rewrite internals to conform to SPSS
+       output formats as completely as possible.
+       (data_out) Change interface to put input parameters before output
+       parameters, for consistency with the style I now prefer.  Update
+       all callers.
+       (data_out_get_integer_format) New public function.
+       (data_out_set_integer_format) New public function.
+       (data_out_get_float_format) New public function.
+       (data_out_set_float_format) New public function.
+
+       * data-out.h: New file.  Move prototype for data_out here, from
+       format.h.
+
+       * format.c: (fmt_step_width) Use equality comparison instead of
+       bitwise and, for clarity.
+       (fmt_is_string) Ditto.
+       (fmt_input_to_output) Fix categories that are translated to F
+       format.
+
+Sun Nov  5 08:29:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * casefilter.c casefilter.h (new files), casefile.c casefile.h 
+       casefile-private.h: Added casefilter to assist commands with missing 
+       values.
+
+Sat Nov  4 11:47:09 2006  Ben Pfaff  <blp@gnu.org>
+
+       Implement SET ERRORS, SHOW ERRORS.  Fixes bug #17609.
+       
+       * settings.c: (route_errors_to_terminal) New variable.
+       (route_errors_to_listing) New variable. 
+       (get_error_routing_to_terminal) New function.
+       (set_error_routing_to_terminal) New function.
+       (get_error_routing_to_listing) New function.
+       (set_error_routing_to_listing) New function.
+
+       * settings.h: (SET_ROUTE_* enums) Removed, because unused.
+
+Tue Oct 31 19:58:27 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: Completely rewrite, to achieve better abstraction.
+       Rewrite all references to formats in other files.
+       
+       * format.def: Rewrite and reorganize.
+
+       * settings.c: Move everything related to custom currency formats
+       into format.[ch], changing them in form, so as to group related
+       code and definitions better.  Changed all references to use the
+       new functions.
+       (static var decimal) Removed.
+       (static var grouping) Removed.
+       (static var cc) Removed.
+       (get_decimal) Removed.
+       (set_decimal) Removed.
+       (get_grouping) Removed.
+       (set_grouping) Removed.
+       (get_cc) Removed.
+       (set_cc) Removed.
+
+       * settings.h: (macro CC_CNT) Removed.
+       (macro CC_WIDTH) Removed.
+       (struct custom_currency) Removed.
+
+Tue Oct 31 19:56:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c (data_in): Use switch statement instead of table, to
+       avoid dependence on the order of the FMT_* enums.
+
+Tue Oct 31 19:35:36 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c: (num_to_string) Removed, because it was dead code.
+
+Tue Oct 31 18:09:24 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c (parse_trailer): Fix error message.
+
+Sat Oct 28 11:56:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format.c (fmt_is_binary): New function.
+
+Thu Oct 19 22:59:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * procedure.c procedure.h: Encapsulated the static data into a single
+       struct.  
+
+Sat Oct 14 16:56:44 2006  Ben Pfaff  <blp@gnu.org>
+
+       * casefile.c (casereader_read_xfer): Always initialize the case,
+       even on an error condition.
+
+Wed Sep 27 09:37:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * procedure.c (case_limit_trns_proc): Fixed buglet which rendered the 
+       entire function useless.
+
+Mon Sep 25 17:11:46 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile-private.h casefile.c casefile.h fastfile.c: Created new
+       casereader method casereader_clone.   
+       
+       * procedure.c pransformations.h: Introduced new type casenum_t
+
+Thu Sep 21 07:00:30 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable.c: (width_to_bytes) Rephrase code for clarify.
+
+Sun Jul 16 19:52:03 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: (fmt_type_from_string) New function.
+       (fmt_to_string) Include decimals in output if the format has
+       decimals, even if the format type does not.  This way, we can
+       accurately reproduce incorrect formats in user output.
+       (check_common_specifier) Make the check for a bad format type an
+       assertion, so we get bug reports if they show up.  Fix message.
+       Check for decimal places with a format type that doesn't allow
+       them.
+       (check_input_specifier) Remove check for FMT_X, which has been
+       deleted.
+       (check_output_specifier) Ditto. 
+
+       * format.def: Remove FMT_T, FMT_X, FMT_DESCEND, FMT_NEWREC.
+
+       * format.h: (macro FMT_TYPE_LEN_MAX) New macro.
+       (struct fmt_desc) Use FMT_TYPE_LEN_MAX in definition.
+       (enum fmt_parse_flags) Removed.
+
+Mon Jul 17 18:26:21 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile.c casefile.h: Converted to  an abstract base class.
+       * casefile-private.h fastfile.c fastfile.h: New files.
+       * automake.mk procedure.c scratch-writer.c storage-stream.c
+
+Wed Jul 12 21:02:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       * procedure.c (internal_procedure): Create sink_case with only as
+       many values as the compacted dictionary.
+
+Wed Jul 12 21:01:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       Remove "debugging" code that caused plenty of false positives and
+       no true positives.
+       
+       * case.h (struct ccase): [DEBUGGING] Remove `this' member.
+
+       * case.c: Remove all references to `this' member.
+
+Thu Jul  6 19:09:53 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix link error noted by Jason Stover.
+       
+       * storage-stream.c: Include <assert.h>.
+
+Tue Jul  4 08:47:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
+       ALL) and additional underlying system file issues.
+
+       Thanks to John Darrington for review.
+
+       First problem: var_hash points to variables not owned by the
+       sys-file-reader, which the caller may free or modify.  Use an
+       array of sfm_vars instead, as done earlier (e.g. CVS version
+       1.12).
+       
+       * sys-file-reader.c (struct sfm_reader): Remove var_hash, svars
+       members and remove all code that references it.  Add vars, var_cnt
+       members.  Remove fix_specials member, which was unused.
+       (struct sfm_var) Remove name member, which was unused.
+       (sfm_close_reader) Free vars member instead of var_hash.
+       (compare_var_shortnames) Removed.
+       (hash_var_shortname) Removed.
+       (sfm_open_reader) Fill out vars array.
+       (compare_var_index) Removed.
+       (sfm_read_case) Use vars instead of var_hash.
+       
+       Second problem: we're confused about when we actually have very
+       long strings, causing us to choose incorrectly between slow path
+       and fast path in sfm_read_case.
+
+       * sys-file-reader.c: (sfm_open_reader) Only mark has_vls if we
+       have very long strings, not when we have long variable names,
+       which is an unrelated feature.
+
+Tue Jun 27 12:06:49 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable.h: Move var_set and variable parsing declarations to
+       new header, src/language/lexer/variable-parser.h.  Modified lots
+       of files to include the new header.
+
+Sun Jun 25 22:39:32 2006  Ben Pfaff  <blp@gnu.org>
+
+       * value-labels.c (value_to_string): When there's no value label,
+       format the variable according to its print format, instead of
+       always effectively using A or F format.
+
+Mon Jun 19 18:05:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile.c (casefile_get_random_reader): Nasty hack to get around 
+       the mode assertion.
+
+       * format.c: Removed tortological assertion.
+
+Fri Jun  9 12:20:09 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reform string library.
+       
+       * file-name.c (fn_interp_vars): Change interface to take a
+       substring as input.  Updated all users.
+       
+Fri Jun  9 12:11:24 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format.c (measure_is_valid): Really return false when m >=
+       n_MEASURES.
+
+Tue Jun  6 18:46:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       Implement random access to casefiles, for use in GUI.
+       
+       * casefile.c: (struct casereader) Add `random', `file_ofs',
+       `buffer_ofs' members.
+       (casefile_get_random_reader) New function.
+       (read_open_file) Break part into new function
+       seek_and_fill_buffer().
+       (fill_buffer) Update buffer_ofs, file_ofs.
+       (casereader_seek) New function.
+
+Tue May 30 19:52:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * settings.c: Added call to i18n{done, init}.
+
+Tue May  9 21:09:17 2006  Ben Pfaff  <blp@gnu.org>
+
+       * procedure.h: Add WARN_UNUSED_RESULT to procedure function
+       prototypes.
+
+Tue May  9 21:08:05 2006  Ben Pfaff  <blp@gnu.org>
+
+       * casefile.c: Convert many uses of `int' to `bool'.
+
+Sat May  6 22:49:43 2006  Ben Pfaff  <blp@gnu.org>
+
+       * transformations.c (trns_chain_destroy): Destroy chain's trns
+       member, to fix memory leak.
+
+Sat May  6 22:48:30 2006  Ben Pfaff  <blp@gnu.org>
+
+       * storage-stream.c (storage_source_decapsulate): Destroy case
+       source to fix memory leak.
+
+Sat May  6 22:46:47 2006  Ben Pfaff  <blp@gnu.org>
+
+       * scratch-reader.c (scratch_reader_read_case): Copy into existing
+       case passed as argument instead of initializing the argument as a
+       case.  Fixes memory leak that showed up in
+       tests/command/aggregate.sh with scratch files.
+
+Sat May  6 22:45:55 2006  Ben Pfaff  <blp@gnu.org>
+
+       * procedure.c (proc_done): Destroy default_dict, to fix memory
+       leak.
+
+Sat May  6 22:44:44 2006  Ben Pfaff  <blp@gnu.org>
+
+       Simplify procedure_with_splits().
+       
+       * procedure.c (struct split_aux_data): Removed case_count member.
+       (procedure_with_splits) Don't initialize case_count.
+       (split_procedure_case_func) Check whether prev_case is null
+       instead of case_count.
+       (split_procedure_end_func) Ditto.
+
+Sat May  6 22:42:23 2006  Ben Pfaff  <blp@gnu.org>
+
+       * case.c (case_move): Do nothing if dst and src are the same
+       object.
+       (case_try_create) Merge two similar cases.
+       (case_copy) Unshare only if data must be actually copied.
+
+Sun May  7 10:04:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * data-in.c data-out.c dictionary.c sys-file-reader.c
+       sys-file-writer.c variable.c variable.h:  Reworked very long string
+       support for better encapsulation.
+
+Sat May  6 19:02:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * value-labels.c (val_labs_can_set_width): New function.
+       (val_labs_set_width) Clear labels if increasing width to long
+       string.
+       (val_labs_destroy) Remove unneeded test for null.
+       
+Sat May  6 16:14:08 2006  Ben Pfaff  <blp@gnu.org>
+
+       * value-labels.h: Remove unneeded dependency on variable.h.
+
+Sat May  6 15:58:36 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of `char *c' member in union value, for cleanliness.
+       
+       * value.h: (union value) Remove `c' member.
+
+Sat May  6 15:36:59 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make dictionary compacting functions a little more general.
+       
+       * sys-file-writer.c (sfm_open_writer): Use
+       dict_compacting_would_change().
+       (does_dict_need_translation) Removed.
+
+Sat May  6 15:35:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make dictionary compacting functions a little more general.
+       
+       * dictionary.c (dict_needs_compaction): Rename
+       dict_compacting_would_shrink().  Update all callers.
+       (dict_compacting_would_change) New function.
+       
+Sat May  6 14:25:49 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sys-file-writer.c: (does_dict_need_translation) Fix bug:
+       inverted return value (!).
+
+Sat May  6 13:37:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  
+
+       * procedure.c: Search and replace "vfm" by "proc".  Notably:
+       (static var vfm_source) Rename proc_source.  Update all
+       references.
+       (static var vfm_sink) Rename proc_sink.  Update all references.
+       
+Sat May  6 12:38:55 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, remove
+       PROCESS IF, which was deprecated anyway and can be easily
+       simulated with TEMPORARY followed by SELECT IF.
+
+       * procedure.c: (open_active_file) Don't call
+       add_process_if_trns().
+       (discard_variables) Get rid of redundant call to
+       proc_cancel_all_transformations().
+       (add_process_if_trns) Removed.
+       (process_if_trns_proc) Removed.
+       (process_if_trns_free) Removed.
+
+Sat May  6 10:58:05 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, add
+       `const' to the case passed to procedure()'s callback.
+
+       Updated all users of procedure() as well.
+       
+       * procedure.c: (struct write_case_data) Add "const" to ccase
+       parameter for case_func member.
+       (procedure) Add "const" to ccase parameter for proc_func
+       parameter.
+       (multipass_case_func) Make ccase parameter const.
+       (internal_procedure) Add "const" to ccase parameter for case_func
+       parameter.
+       (split_procedure_case_func) Make ccase parameter const.
+       (multipass_split_case_func) Make ccase parameter const.
+       
+Sat May  6 10:30:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       the output code for SPLIT FILE groups in procedure.c, which really
+       shouldn't be doing any output.  Move it into the individual
+       procedures instead.  This also adds some flexibility.
+
+       Updated many users of procedure_with_splits() and
+       multipass_procedure_with_splits() to call
+       output_split_file_values() and to deal with increased use of
+       const.
+
+       * procedure.c: (struct split_aux_data) Add "const struct ccase *"
+       parameter to begin_func member.
+       (procedure_with_splits) Add "const struct ccase *" parameter to
+       begin_func parameter.  Make ccase parameter const in proc_func
+       parameter.
+       (split_procedure_case_func) Don't dump split file group.  Pass
+       case to begin_func.
+       (dump_splits) Moved to language/dictionary/split-file.c as
+       output_split_file_values().
+       (struct multipass_split_aux_data) Add "const struct ccase *"
+       parameter to split_func member.
+       (multipass_procedure_with_splits) Add "const struct ccase *"
+       parameter to split_func parameter.
+       (multipass_split_case_func) Save new SPLIT FILE case before
+       outputting case.
+       (multipass_split_output) Pass saved SPLIT FILE case to split_func.
+       
+Fri May  5 22:48:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  Change
+       internal_procedure() so that it calls open_active_file() and
+       close_active_file(), which isolates most of the actual procedure
+       functionality.
+
+       * procedure.c: (struct write_case_data) Rename `proc_func' member
+       to `case_func' and update all references.
+       (procedure) Rewrite as one-line wrapper around
+       internal_procedure().
+       (struct multipass_aux_data) New.
+       (multipass_callback) Renamed multipass_case_func().  Use struct
+       multipass_aux_data as auxiliary data.
+       (multipass_end_func) New function.
+       (multipass_procedure) Rewrite as wrapper for internal_procedure()
+       that uses multipass_case_func, multipass_end_func.
+       (internal_procedure) Add `end_func' argument.  Move optimization
+       of trivial case in here.  Move call to open_active_file() and
+       close_active_file() in here.  Now assert that vfm_source is
+       non-null.
+       (procedure_with_splits_callback) Rename
+       split_procedure_case_func().
+       (split_procedure_end_func) New function.
+       (multipass_split_callback) Rename multipass_split_case_func.
+       (multipass_split_end_func) New function.
+       (discard_variables) No need to test for nonnull vfm_source.
+
+Fri May  5 21:34:02 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  Get rid of unused member.
+
+       * procedure.c: (struct write_case_data) Remove `cases_analyzed'
+       member.
+       (write_case) Don't increment cases_analyzed.
+
+Thu May  4 21:50:11 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, move
+       procedure.c and procedure.h from src to src/data.  Update
+       makefiles and #includes accordingly.
+
+       * procedure.c: Moved here from src/.
+
+       * procedure.h: Moved here from src/.
+
+Wed May  3 22:42:12 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       many global variables, consolidating procedure execution in
+       procedure.c.  Encapsulate transformations in new "struct
+       trns_chain".  Also, change implementation of N OF CASES, FILTER,
+       and PROCESS IF from special cases to transformations.
+        
+       * automake.mk: (src_data_libdata_a_SOURCES) Add transformations.c,
+       transformations.h.
+
+       * dictionary.c: (global variable default_dict) Move to
+       src/procedure.c.
+
+       * variable.h: (TRNS_*) Move to transformations.h.
+       (struct transformation) Move to transformations.c.
+
+Thu May  4 13:47:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * sys-file-reader.c: Fixed invalid read problems.
+
+Tue May  2 15:57:10 2006  Ben Pfaff  <blp@gnu.org>
+
+       * storage-stream.c: Add missing function comments.
+
+Tue May  2 15:50:21 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, add some
+       new, needed functionality to storage-stream.
+
+       * storage-stream.c: (storage_source_decapsulate) New function.
+
+Tue May  2 15:43:36 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable.c (width_to_bytes): Declarations must precede
+       statements for C90 compliance.
+
+Tue May  2 10:42:05 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * data-out.c, data-in.c, variable.c, variable.h: New functions 
+       copy_mangle and copy_demangle for reading/writing cases; emulates the 
+       way SPSS deals with strings > 255 bytes.
+
+       * sys-file-reader.c sys-file-writer.c: Added support for Record 7, 
+       subtype 14 needed for strings longer than 255 bytes.
+
+       * dictionary.c, format.def, value.c : Updated to use MAX_STRING 
+        instead of literal values. Also fixed some constness issues.
+
+       * format.h: Constness
+
+       * sfm-private.h: Renamed the case_size identifier, since I discovered 
+        that SPSS's respect for this variable is very nominal.
+
+Mon May  1 15:45:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       Change case limit type from int to size_t.
+
+       * dictionary.c: (struct dictionary) Change type of case_limit
+       member.
+       (dict_get_case_limit) Change return type.
+       (dict_set_case_limit) Change parameter type.
+
+Wed Apr 26 20:01:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable.h: (struct variable) Rename `reinit' member as `leave'
+       and invert sense.  Fix up all references.
+
+Wed Apr 26 19:39:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, break
+       procedure.c into multiple files.
+       
+       * automake.mk: (src_data_libdata_a_SOURCES) Add all the new files.
+
+       * case-sink.c: New file.
+
+       * case-sink.h: New file.
+       
+       * case-source.c: New file.
+
+       * case-source.h: New file.
+       
+       * storage-stream.c: New file.
+
+       * storage-stream.h: New file.
+
+Wed Apr 26 14:55:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable.h: (struct variable) Remove `init' member and all
+       references to it from other files.  It was initialized in several
+       places, but nothing really ever used it for anything worthwhile.
+       Thanks to Jason Stover for pointing out how confusing this
+       member is.
+
+Sun Apr 23 22:04:45 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, get rid
+       of message "titles" and put the message text in `struct error'.
+       Now `struct error' encapsulates a message more properly.
+       
+       * casefile.c: (io_error) Use err_msg() instead of err_vmsg().
+       Format message ourselves.
+
+       * data-in.c: (vdls_error) Ditto.
+
+       * por-file-reader.c: (error) Ditto.
+
+       * sys-file-reader.c: (corrupt_msg) Ditto.
+
+Sun Apr 16 18:49:51 2006  Ben Pfaff  <blp@gnu.org>
+
+       GNU standards require "file name" instead of "filename" in
+       documentation.  It's nice for our code to follow the convention
+       too.
+       
+       * casefile.c: (struct casefile) Rename `filename' member to
+       `file_name'.  Updated all references.
+
+       * file-name.c: [!unix] (struct file_identity) Rename
+       normalized_filename member to normalized_file_name.  Updated all
+       references.
+
+Sun Apr 16 18:35:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       We don't really support anything but Unix-like environments well,
+       so we might as well de-obfuscate by writing directory and path
+       separators explicitly.
+
+       * file-name.h: (macro DIR_SEPARATOR) Removed.  Changed all usages
+       to just '/'.
+       (macro PATH_SEPARATOR) Removed.  Changed all usages to just ':'.
+       (macro DIR_SEPARATOR_STRING) Removed.  Changed all usages to just
+       "/".
+       (macro PATH_SEPARATOR_STRING) Removed.  Changed all usages to just
+       ":"
+
+Sun Apr 16 18:28:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       GNU standards require "file name" instead of "filename" in
+       documentation.  It's nice for our code to follow the convention
+       too.
+       
+       * filename.c: Rename to file-name.c.
+
+       * filename.h: Rename to file-name.h.  Update all inclusions.
+       Update header guards.
+
+       * automake.mk: Update file names.
+
+Sun Apr 16 16:42:47 2006  Ben Pfaff  <blp@gnu.org>
+
+       * filename.c: (fn_dirname) Renamed fn_dir_name(), all references
+       updated.
+       (fn_basename) Removed (dead code).
+       (fn_absolute_p) Renamed fn_is_absolute(), all references updated.
+       (fn_special_p) Renamed fn_is_special(), all references updated.
+       (fn_exists_p) Renamed fn_exists(), all references updated.
+
+Sun Apr 16 16:33:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       * filename.c: (fn_tilde_expand) Rewrite for cleaner code.  
+       Also, now it only tilde-expands file names, not paths.
+       (fn_search_path) Tilde-expand one directory at a time.
+
+Sun Apr 16 16:28:06 2006  Ben Pfaff  <blp@gnu.org>
+
+       * filename.c: (fn_search_path) rewrite for cleaner code.  Also,
+       get rid of non-Unixlike version of the code, which has probably
+       never been tested.
+       (fn_prepend_dir) Removed (dead code).
+
+       * filename.h: (macro DIR_SEPARATOR_STRING) New.
+       (macro PATH_SEPARATOR_STRING) New.
+Sun Apr 16 16:05:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, we get
+       rid of VM() and the other msg() support for "verbosity", replacing
+       it by a new function verbose_msg().
+
+       * filename.c: (fn_search_path) Use verbose_msg() instead of
+       msg(VM(), ...).  
+
+Sat Apr 15 19:53:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sfm-private.h: Get rid of #defines after #error, which makes no
+       sense.
+
+Sat Apr 15 19:48:57 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of our own int32 type in favor of the standard int32_t
+       type.
+       
+       * sfm-private.h: (int32 macro) Don't define this anymore.  Do
+       include <stdint.h>.
+
+       * sys-file-reader.c: Use int32_t instead of int32 throughout.
+       
+       * sys-file-writer.c: Use int32_t instead of int32 throughout.
+
+Sat Apr 15 19:36:47 2006  Ben Pfaff  <blp@gnu.org>
+
+       Remove ill-considered file routines that are no longer used.
+       
+       * filename.c: (fn_open_ext) Removed.
+       (fn_close_ext) Removed.
+
+       * filename.h: (struct file_ext) Removed.
+
+Mon Apr  3 13:22:39 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable.c (var_is_valid_name): Move declarations before code
+       for C90 compliance.
+
+Tue Apr  4 15:28:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * filename.ch (fn_interp_vars): Fixed small buglet.
+
+Tue Mar 28 13:47:16 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * filename.[ch] (fn_interp_vars): Changed the signature and semantics
+       so as to modify the string inline.   Thus makeing it easier to
+       destroy the results when no longer needed.
+       
+2006-03-25  Jason Stover  <jhs@math.gcsu.edu>
+
+       * category.c (cat_stored_values_destroy): Fixed memory leak.
+
+Fri Mar 24 18:15:41 2006  Ben Pfaff  <blp@gnu.org>
+
+       Add some missing frees.  Thanks to John Darrington for reporting
+       these.
+
+       * any-writer.c (any_writer_close): Free writer.
+
+       * any-reader.c (any_reader_close): Free reader.
+
+Mon Mar 20 16:33:53 2006  Ben Pfaff  <blp@gnu.org>
+
+       * por-file-reader.c: (error) Mark as NO_RETURN.
+
+Sat Mar 11 15:06:07 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * settings.c: Changed default value of scompress to true.
+
+Sat Mar  4 13:22:51 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sfm-private.h: Include variable.h, to get SHORT_NAME_LEN.
+
+       * value.h: Remove check on MAX_SHORT_STRING, which I don't think
+       really applies.
+
+       * variable.h: Move definition of SHORT_NAME_LEN, LONG_NAME_LEN
+       here from pref.h.orig.
+
+Sat Mar  4 12:50:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * sys-file-reader.c: Fixed bug reading compressed files.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * Numerous renames.  See src/ChangeLog for details.
+       
+       * Moved files from src directory
index 064d668b2d9a9f23d984c5ea75cd893e6e09f691..a6d18581483500dee9fb219cfa1e91bce800669a 100644 (file)
@@ -103,3 +103,5 @@ src_data_libdata_a_SOURCES = \
        src/data/variable.c \
        src/data/vector.c \
        src/data/vector.h
+
+EXTRA_DIST += src/data/OChangeLog
diff --git a/src/language/ChangeLog b/src/language/ChangeLog
deleted file mode 100644 (file)
index a32af12..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6441.  Reviewed by John Darrington.
-
-       * command.def: Add DEBUG FORMAT GUESSER command.
-
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: Add GET DATA command.
-
-2007-11-05  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6258.  Reviewed by John Darrington.
-
-       * command.c (report_state_mismatch): Replace code to construct an
-       error message from bits and pieces by a switch statement that
-       hard-codes each possible error.  Makes i18n easier.
-       Suggested by Chusslove Illich <caslav.ilic@gmx.net>.
-
-2007-09-22  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21128.  Reviewed by John Darrington.
-
-       * command.def: Add DEBUG PAPER SIZE command.
-
-2007-09-05  John Darrington <john@darrington.wattle.id.au>
-
-       * command.c (do_parse_command): Translate CMD_FAILURE into
-       CMD_CASCADING_FAILURE, if the ERRMODE_STOP is set on the syntax
-       source. 
-       
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: Add DEBUG DATASHEET command.  Remove DEBUG CASEFILE
-       command.
-
-2007-03-18  Ben Pfaff  <blp@gnu.org>
-
-       * syntax-string-source.c (close): Rename to do_close to avoid
-       conflict with POSIX function of the same name.
-
-Thu Feb  8 15:04:42 2007  Ben Pfaff  <blp@gnu.org>
-
-       Reduce platform dependence.
-
-       * command.c (shell): Always define this function, instead of only
-       in unix, but make it a stub when fork or execl is not available.
-       (run_command): Move parsing code into cmd_host.
-       (cmd_host): Drop unix dependence now that the shell function is
-       always defined. 
-
-Sun Jan 21 15:31:52 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * command.c command.h: Renamed cmd_parse to cmd_parse_in_state.
-       New function cmd_parse.
-
-Wed Dec 13 21:02:51 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: Add DELETE VARS.
-
-Sat Dec 16 22:15:55 2006  Ben Pfaff  <blp@gnu.org>
-
-       Make it possible to pull cases from the active file with a
-       function call, instead of requiring indirection through a callback
-       function.
-
-       * command.def: Marked MATRIX DATA as unimplemented.
-
-Sun Dec  3 11:59:10 2006  Ben Pfaff  <blp@gnu.org>
-
-       * syntax-file.c (read_syntax_file): Always read GETL_BATCH lines.
-
-Wed Nov 29 19:35:44 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * command.c: Updated to reflect changed function names.
-
-       * line-buffer.c line-buffer.h: Removed.  Guts of it moved to
-       libpspp/getl.[ch] The rest moved to files listed below.
-
-       * syntax-file.c syntax-file.h prompt.c prompt.h: New files.
-
-Wed Nov 22 06:26:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: HOST command needs F_KEEP_FINAL_TOKEN.
-
-Sat Oct 28 16:15:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * linebuffer.c linebuffer.h: Moved getl_buf from here, into
-       lexer/lexer.c
-
-Thu Oct 26 20:19:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command.def: Add DEBUG FLOAT FORMAT.
-
-Fri Oct 20 10:59:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * command.def: Added additional unimpl commands.
-
-Sun Oct 15 19:38:55 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command.c: (do_parse_command) Issue an error for unimplemented
-       commands, instead of silently ignoring them.  Reported by John
-       Darrington.
-
-Wed Jun 28 11:38:23 2006  Ben Pfaff  <blp@gnu.org>
-
-       Don't offer both the full and abbreviated names for a single
-       command in command name completion.
-       
-       * command.c: (enum flags) Add F_ABBREV flag.
-       (cmd_complete) Ignore command with F_ABBREV flag set.
-
-       * command.def: Add F_ABBREV to N, Q, SORT commands.
-
-Tue Jun 27 22:36:38 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix regression in command name completion reported by John
-       Darrington.  Now completion is again state-dependent and occurs
-       only on the first line of a command.
-       
-       * command.c (do_parse_command): Move reading the first token of
-       the command here, from execute_command and cmd_input_program.
-       Call set_completion_state and getl_set_prompt_style here.
-       (do_parse_command) Use in_correct_state instead of
-       verify_valid_command.
-       (verify_valid_command) Break into two new functions,
-       in_correct_state and report_state_mismatch.
-       (set_completion_state) New function.
-       (cmd_complete) New function.
-       [HAVE_READLINE] (pspp_attempted_completion_function) Removed.
-       [HAVE_READLINE] (command_generator) Removed.
-
-       * line-buffer.c: (struct getl_source) Change `interactive' member
-       signature to take enum getl_prompt_style instead of const char *.
-       (create_interactive_source) Ditto, for parameter type.
-       (getl_append_interactive) Ditto.
-       (read_line_from_source) Pass get_prompt_style() to interactive
-       function instead of get_prompt().
-       (get_prompt) Removed.
-       (get_prompt_style) New function.
-       
-Sat May  6 13:25:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, remove
-       PROCESS IF, which was deprecated anyway and can be easily
-       simulated with TEMPORARY followed by SELECT IF.
-
-       * command.def: Removed PROCESS IF.
-
-Mon May  1 18:17:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       Further clean up the CMD_* command result codes.
-       
-       * command.c (cmd_result_is_valid): New function.
-       (cmd_result_is_success) Assert that argument is valid.  Simplified
-       check to one for a positive result.
-       (cmd_result_is_failure) Assert that argument is valid.  Simplified
-       check to one for a negative result.
-       (do_parse_command) Check that command's returned result is valid.
-
-       * command.h: (enum cmd_result) Renamed CMD_QUIT to CMD_FINISH and
-       updated all users.  Removed CMD_END_SUBLOOP in favor of new
-       CMD_PRIVATE_FIRST...CMD_PRIVATE_LAST range.  Changed failure codes
-       to have negative values.
-
-Mon May  1 15:56:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       Remove vestiges of FILE TYPE support. 
-       
-       * command.def: Mark FILE TYPE, RECORD TYPE unimplemented.
-
-Wed Apr 26 21:13:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       CLEAR TRANSFORMATIONS is unsafe as implemented.  It's a fair
-       amount of work to implement it correctly, so make it
-       unimplemented.
-               
-       * command.c: (cmd_clear_transformations) Removed.
-
-       * command.def: Mark CLEAR TRANSFORMATIONS as unimplemented.
-
-Wed Apr 26 13:06:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       Work on readline completion.
-
-       * command.c: (pspp_completion_function) Removed.
-       (pspp_attempted_completion_function) New function.
-       (command_generator) New function.
-
-Wed Apr 26 13:04:48 2006  Ben Pfaff  <blp@gnu.org>
-
-       Improve the way we handle the various parsing "states".  Until now
-       we've hard-coded the state transitions in the command definition
-       file, but that's error-prone and, worse, it's redundant--we can
-       figure out what state we're in anyhow.  We can cleanly handle
-       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
-       
-       * command.c: (cmd_result_is_success) New function.
-       (cmd_result_is_failure) New function.
-       (enum states) New enum.
-       (enum flags) New enum.
-       (struct command) Add states, flags members.  Remove transition,
-       skip_entire_name, debug members.  Renamed func member as function.
-       (macro DEFCMD) Removed.
-       (macro DBGCMD) Removed.
-       (macro SPCCMD) Removed.
-       (macro UNIMPL) Removed.
-       (macro DEF_CMD) New.
-       (macro UNIMPL_CMD) New.
-       (macro COMMAND_CNT) Changed to static const var, renamed
-       command_cnt.  Updated all references.
-       (FILE_TYPE_okay) Removed.
-       (cmd_parse) Rewrote in terms of do_parse_command().
-       (do_parse_command) New function.
-       (find_command) New function.
-       (unknown_command_error) Use struct string to simplify code.
-       (parse_command_name) Recognize comment command names.  Handle
-       flags.  Don't reject testing-mode-only commands here--let higher
-       level do it.
-       (verify_valid_command) New function.
-       (cmd_comment) New function.
-
-       * command.def: Completely rewritten and now sensibly organized.
-
-       * command.h: (enum STATE_*) Renamed CMD_STATE_*.
-       (CMD_*) Now "enum cmd_result".  Added CMD_QUIT.  New
-       CMD_END_SUBLOOP.  Removed CMD_TRAILING_GARBAGE, CMD_PART_SUCCESS,
-       CMD_PART_SUCCESS_MAYBE and replaced all references by CMD_FAILURE.
-       Added CMD_NOT_IMPLEMENTED.
-        (macro DEFCMD) Removed.
-       (macro DBGCMD) Removed.
-       (macro SPCCMD) Removed.
-       (macro UNIMPL) Removed.
-       (macro DEF_CMD) New.
-       (macro UNIMPL_CMD) New.
-
-Mon Apr  3 11:03:36 2006  Ben Pfaff  <blp@gnu.org>
-
-       * list.q: (write_all_headers) Adapt to new html and output
-       internals.
-       (clean_up) Ditto.
-       (write_varname) Ditto.
-       (write_fallback_headers) Ditto.
-       (determine_layout) Ditto.
-       (list_cases) Ditto.
-       
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/OChangeLog b/src/language/OChangeLog
new file mode 100644 (file)
index 0000000..a32af12
--- /dev/null
@@ -0,0 +1,250 @@
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6441.  Reviewed by John Darrington.
+
+       * command.def: Add DEBUG FORMAT GUESSER command.
+
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Add GET DATA command.
+
+2007-11-05  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6258.  Reviewed by John Darrington.
+
+       * command.c (report_state_mismatch): Replace code to construct an
+       error message from bits and pieces by a switch statement that
+       hard-codes each possible error.  Makes i18n easier.
+       Suggested by Chusslove Illich <caslav.ilic@gmx.net>.
+
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * command.def: Add DEBUG PAPER SIZE command.
+
+2007-09-05  John Darrington <john@darrington.wattle.id.au>
+
+       * command.c (do_parse_command): Translate CMD_FAILURE into
+       CMD_CASCADING_FAILURE, if the ERRMODE_STOP is set on the syntax
+       source. 
+       
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Add DEBUG DATASHEET command.  Remove DEBUG CASEFILE
+       command.
+
+2007-03-18  Ben Pfaff  <blp@gnu.org>
+
+       * syntax-string-source.c (close): Rename to do_close to avoid
+       conflict with POSIX function of the same name.
+
+Thu Feb  8 15:04:42 2007  Ben Pfaff  <blp@gnu.org>
+
+       Reduce platform dependence.
+
+       * command.c (shell): Always define this function, instead of only
+       in unix, but make it a stub when fork or execl is not available.
+       (run_command): Move parsing code into cmd_host.
+       (cmd_host): Drop unix dependence now that the shell function is
+       always defined. 
+
+Sun Jan 21 15:31:52 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * command.c command.h: Renamed cmd_parse to cmd_parse_in_state.
+       New function cmd_parse.
+
+Wed Dec 13 21:02:51 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Add DELETE VARS.
+
+Sat Dec 16 22:15:55 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make it possible to pull cases from the active file with a
+       function call, instead of requiring indirection through a callback
+       function.
+
+       * command.def: Marked MATRIX DATA as unimplemented.
+
+Sun Dec  3 11:59:10 2006  Ben Pfaff  <blp@gnu.org>
+
+       * syntax-file.c (read_syntax_file): Always read GETL_BATCH lines.
+
+Wed Nov 29 19:35:44 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * command.c: Updated to reflect changed function names.
+
+       * line-buffer.c line-buffer.h: Removed.  Guts of it moved to
+       libpspp/getl.[ch] The rest moved to files listed below.
+
+       * syntax-file.c syntax-file.h prompt.c prompt.h: New files.
+
+Wed Nov 22 06:26:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: HOST command needs F_KEEP_FINAL_TOKEN.
+
+Sat Oct 28 16:15:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * linebuffer.c linebuffer.h: Moved getl_buf from here, into
+       lexer/lexer.c
+
+Thu Oct 26 20:19:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Add DEBUG FLOAT FORMAT.
+
+Fri Oct 20 10:59:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * command.def: Added additional unimpl commands.
+
+Sun Oct 15 19:38:55 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command.c: (do_parse_command) Issue an error for unimplemented
+       commands, instead of silently ignoring them.  Reported by John
+       Darrington.
+
+Wed Jun 28 11:38:23 2006  Ben Pfaff  <blp@gnu.org>
+
+       Don't offer both the full and abbreviated names for a single
+       command in command name completion.
+       
+       * command.c: (enum flags) Add F_ABBREV flag.
+       (cmd_complete) Ignore command with F_ABBREV flag set.
+
+       * command.def: Add F_ABBREV to N, Q, SORT commands.
+
+Tue Jun 27 22:36:38 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix regression in command name completion reported by John
+       Darrington.  Now completion is again state-dependent and occurs
+       only on the first line of a command.
+       
+       * command.c (do_parse_command): Move reading the first token of
+       the command here, from execute_command and cmd_input_program.
+       Call set_completion_state and getl_set_prompt_style here.
+       (do_parse_command) Use in_correct_state instead of
+       verify_valid_command.
+       (verify_valid_command) Break into two new functions,
+       in_correct_state and report_state_mismatch.
+       (set_completion_state) New function.
+       (cmd_complete) New function.
+       [HAVE_READLINE] (pspp_attempted_completion_function) Removed.
+       [HAVE_READLINE] (command_generator) Removed.
+
+       * line-buffer.c: (struct getl_source) Change `interactive' member
+       signature to take enum getl_prompt_style instead of const char *.
+       (create_interactive_source) Ditto, for parameter type.
+       (getl_append_interactive) Ditto.
+       (read_line_from_source) Pass get_prompt_style() to interactive
+       function instead of get_prompt().
+       (get_prompt) Removed.
+       (get_prompt_style) New function.
+       
+Sat May  6 13:25:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, remove
+       PROCESS IF, which was deprecated anyway and can be easily
+       simulated with TEMPORARY followed by SELECT IF.
+
+       * command.def: Removed PROCESS IF.
+
+Mon May  1 18:17:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       Further clean up the CMD_* command result codes.
+       
+       * command.c (cmd_result_is_valid): New function.
+       (cmd_result_is_success) Assert that argument is valid.  Simplified
+       check to one for a positive result.
+       (cmd_result_is_failure) Assert that argument is valid.  Simplified
+       check to one for a negative result.
+       (do_parse_command) Check that command's returned result is valid.
+
+       * command.h: (enum cmd_result) Renamed CMD_QUIT to CMD_FINISH and
+       updated all users.  Removed CMD_END_SUBLOOP in favor of new
+       CMD_PRIVATE_FIRST...CMD_PRIVATE_LAST range.  Changed failure codes
+       to have negative values.
+
+Mon May  1 15:56:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       Remove vestiges of FILE TYPE support. 
+       
+       * command.def: Mark FILE TYPE, RECORD TYPE unimplemented.
+
+Wed Apr 26 21:13:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       CLEAR TRANSFORMATIONS is unsafe as implemented.  It's a fair
+       amount of work to implement it correctly, so make it
+       unimplemented.
+               
+       * command.c: (cmd_clear_transformations) Removed.
+
+       * command.def: Mark CLEAR TRANSFORMATIONS as unimplemented.
+
+Wed Apr 26 13:06:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       Work on readline completion.
+
+       * command.c: (pspp_completion_function) Removed.
+       (pspp_attempted_completion_function) New function.
+       (command_generator) New function.
+
+Wed Apr 26 13:04:48 2006  Ben Pfaff  <blp@gnu.org>
+
+       Improve the way we handle the various parsing "states".  Until now
+       we've hard-coded the state transitions in the command definition
+       file, but that's error-prone and, worse, it's redundant--we can
+       figure out what state we're in anyhow.  We can cleanly handle
+       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
+       
+       * command.c: (cmd_result_is_success) New function.
+       (cmd_result_is_failure) New function.
+       (enum states) New enum.
+       (enum flags) New enum.
+       (struct command) Add states, flags members.  Remove transition,
+       skip_entire_name, debug members.  Renamed func member as function.
+       (macro DEFCMD) Removed.
+       (macro DBGCMD) Removed.
+       (macro SPCCMD) Removed.
+       (macro UNIMPL) Removed.
+       (macro DEF_CMD) New.
+       (macro UNIMPL_CMD) New.
+       (macro COMMAND_CNT) Changed to static const var, renamed
+       command_cnt.  Updated all references.
+       (FILE_TYPE_okay) Removed.
+       (cmd_parse) Rewrote in terms of do_parse_command().
+       (do_parse_command) New function.
+       (find_command) New function.
+       (unknown_command_error) Use struct string to simplify code.
+       (parse_command_name) Recognize comment command names.  Handle
+       flags.  Don't reject testing-mode-only commands here--let higher
+       level do it.
+       (verify_valid_command) New function.
+       (cmd_comment) New function.
+
+       * command.def: Completely rewritten and now sensibly organized.
+
+       * command.h: (enum STATE_*) Renamed CMD_STATE_*.
+       (CMD_*) Now "enum cmd_result".  Added CMD_QUIT.  New
+       CMD_END_SUBLOOP.  Removed CMD_TRAILING_GARBAGE, CMD_PART_SUCCESS,
+       CMD_PART_SUCCESS_MAYBE and replaced all references by CMD_FAILURE.
+       Added CMD_NOT_IMPLEMENTED.
+        (macro DEFCMD) Removed.
+       (macro DBGCMD) Removed.
+       (macro SPCCMD) Removed.
+       (macro UNIMPL) Removed.
+       (macro DEF_CMD) New.
+       (macro UNIMPL_CMD) New.
+
+Mon Apr  3 11:03:36 2006  Ben Pfaff  <blp@gnu.org>
+
+       * list.q: (write_all_headers) Adapt to new html and output
+       internals.
+       (clean_up) Ditto.
+       (write_varname) Ditto.
+       (write_fallback_headers) Ditto.
+       (determine_layout) Ditto.
+       (list_cases) Ditto.
+       
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 4b467dedda05ca3d96e93f282b90710b8f53f2bd..d5ebb10e15fdefdfe85e3a2b71535ba8099cf16d 100644 (file)
@@ -40,3 +40,5 @@ nodist_src_language_liblanguage_a_SOURCES = \
        $(src_language_stats_built_sources)  \
        $(language_tests_built_sources) \
        $(expressions_built_sources)
+
+EXTRA_DIST += src/language/OChangeLog
diff --git a/src/language/control/ChangeLog b/src/language/control/ChangeLog
deleted file mode 100644 (file)
index 3421bdf..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6512.
-       
-       * loop.c (loop_trns_proc): Use gsl_finite instead of finite, , as
-       a stopgap measure for portability until appropriate gnulib modules
-       are available.
-
-2007-09-23  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21111.  Reviewed by John Darrington.
-
-       * do-if.c: Fix ELSE and ELSE IF clauses.
-       (add_clause): Drop TARGET_INDEX argument and figure out the target
-       of the jump on our own.  The caller couldn't compensate for the
-       inserted BREAK transformation.  Updated all callers.
-
-Fri Feb  2 22:41:43 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * repeat.c (parse_numbers): Fixed bug parseing ranges vs. lists.
-       Ensured that floats are accepted in lists, but not in ranges.
-
-Tue Dec 19 08:12:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix LOOP.  Thanks to Daniel Williams
-       <Daniel.E.Williams@state.or.us> for reporting one of the bugs
-       fixed here.
-       
-       * loop.c (cmd_loop): Keep track of whether we created the index
-       variable and delete it if parsing fails, instead of creating it
-       after parsing the IF clause.  This allows the index variable to be
-       used in the IF clause.  This incidentally fixes a segfault when no
-       index variable was used.  Also, return CMD_CASCADING_FAILURE if we
-       fail.
-       (parse_if_clause): Don't allow more than one IF clause.
-       (parse_index_clause): Don't allow more than one index clause.
-       Create the index variable if it doesn't exist.
-       (end_loop_trns_proc): Invert the sense of END LOOP's IF clause.
-
-Sat Dec  9 20:12:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       * repeat.c (parse_lines): Issue an error when attempting to nest
-       DO REPEAT in compatibility mode.
-
-Sat Dec  2 17:01:59 2006  Ben Pfaff  <blp@gnu.org>
-
-       Significant cleanup to DO REPEAT.
-       
-       * repeat.c: (struct line_list) Rename struct repeat_line.  Use
-       struct ll instead of explicit "next" pointer.  Make "file_name"
-       const.  Change "const char *line" to "struct substring text".  Add
-       `syntax' member.  Update all references.
-       (enum repeat_entry_type) Rename repeat_macro_type, update all
-       references.
-       (struct repeat_entry) Rename struct repeat_macro.  Use struct ll
-       instead of explicit "next" pointer.  Change "char[] id" to "struct
-       substring name".  Change "char **replacement" to "struct substring
-       *replacements".  Update all references.
-       (struct repeat_block) Use struct ll_list for lists of lines,
-       macros.  Change "cur_line" to struct ll *.
-       (cmd_do_repeat) Don't bother adding an empty getl source at all.
-       This saves special-casing an empty source in repeat_read.
-       (parse_specification) Use new find_macro function.
-       (find_macro) New function.
-       (skip_indentor) Removed.
-       (recognize_keyword) Change interface, update callers.
-       (recognize_do_repeat) Ditto.
-       (recognize_end_repeat) Ditto.
-       (parse_lines) Use lex_preprocess_line to preprocess the input line
-       to check for DO REPEAT and END REPEAT, instead of coding it
-       inline.
-       (parse_ids) Need to make a copy of the array parsed by
-       parse_mixed_vars_pool, instead of using it verbatim, because we're
-       using struct substring now.
-       (add_replacement) Use struct substring in interface, instead of
-       const char *, and update all callers.
-       (find_substitution) Rewrite using substring, in terms of
-       find_macro.
-       (do_repeat_filter) Use struct substring to simplify code.
-       (current_line) New function.
-       
-Sat Dec  2 16:40:12 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix lack of ->name and ->location in DO REPEAT's getl_interface.
-       See bug #15702.
-
-       * repeat.c: (cmd_do_repeat) Initialize name, location in
-       getl_interface.
-       (do_repeat_read) Adjust semantics of cur_line so that, after the
-       call, it points to the line just returned, instead of to the next
-       line to be returned.  Thus, do_repeat_name and do_repeat_location
-       can use cur_line to obtain the info they need.
-       (do_repeat_name) New function.
-       (do_repeat_location) New function.
-
-Thu Nov 30 22:01:27 2006  Ben Pfaff  <blp@gnu.org>
-
-       * repeat.c (do_repeat_read): Properly handle empty DO REPEAT...END
-       REPEAT block.  Fixes bug #18407.  Thanks to John Darrington for
-       reporting this bug.
-
-Sat Oct 28 16:18:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * repeat.c: Eliminated references to extern variable getl_buf.
-
-Sun May  7 18:18:33 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix memory leaks.
-       
-       * repeat.c: (parse_ids) Take pool parameter and allocate all
-       memory from pool.  Reduce implementation from loop to single call
-       to parse_mixed_vars_pool().
-       (store_numeric) Removed.
-       (add_replacement) New function.
-       (parse_numbers) Take pool parameter and allocate all memory from
-       pool.  Require ranges to be in increasing order.
-       (parse_strings) Take pool parameter and allocate all memory from
-       pool.
-
-Wed May  3 22:45:41 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       many global variables, consolidating procedure execution in
-       procedure.c.  Encapsulate transformations in new "struct
-       trns_chain".  Also, change implementation of N OF CASES, FILTER,
-       and PROCESS IF from special cases to transformations.
-        
-       * do-if.c: (cmd_do_if) Use finalizer to ensure control stack gets
-       cleared.
-       (do_if_finalize_func) New function.
-
-       * loop.c: (create_loop_trns) Use finalizer to ensure control stack gets
-       cleared.
-       (loop_trns_finalize) New function.
-
-       * temporary.c: (global var temporary) Removed.  Changed references
-       to use proc_make_temporary_transformations_permanent() or
-       proc_in_temporary_transformations().
-       (global var temp_dict) Removed.
-       (global var temp_trns) Removed.
-       (cmd_temporary) Reimplement in terms of
-       proc_in_temporary_transformations() and
-       proc_start_temporary_transformations().
-       (cancel_temporary) Moved to procedure.c, renamed
-       proc_cancel_temporary_transformations().
-               
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/control/OChangeLog b/src/language/control/OChangeLog
new file mode 100644 (file)
index 0000000..3421bdf
--- /dev/null
@@ -0,0 +1,149 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+       
+       * loop.c (loop_trns_proc): Use gsl_finite instead of finite, , as
+       a stopgap measure for portability until appropriate gnulib modules
+       are available.
+
+2007-09-23  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21111.  Reviewed by John Darrington.
+
+       * do-if.c: Fix ELSE and ELSE IF clauses.
+       (add_clause): Drop TARGET_INDEX argument and figure out the target
+       of the jump on our own.  The caller couldn't compensate for the
+       inserted BREAK transformation.  Updated all callers.
+
+Fri Feb  2 22:41:43 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * repeat.c (parse_numbers): Fixed bug parseing ranges vs. lists.
+       Ensured that floats are accepted in lists, but not in ranges.
+
+Tue Dec 19 08:12:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix LOOP.  Thanks to Daniel Williams
+       <Daniel.E.Williams@state.or.us> for reporting one of the bugs
+       fixed here.
+       
+       * loop.c (cmd_loop): Keep track of whether we created the index
+       variable and delete it if parsing fails, instead of creating it
+       after parsing the IF clause.  This allows the index variable to be
+       used in the IF clause.  This incidentally fixes a segfault when no
+       index variable was used.  Also, return CMD_CASCADING_FAILURE if we
+       fail.
+       (parse_if_clause): Don't allow more than one IF clause.
+       (parse_index_clause): Don't allow more than one index clause.
+       Create the index variable if it doesn't exist.
+       (end_loop_trns_proc): Invert the sense of END LOOP's IF clause.
+
+Sat Dec  9 20:12:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       * repeat.c (parse_lines): Issue an error when attempting to nest
+       DO REPEAT in compatibility mode.
+
+Sat Dec  2 17:01:59 2006  Ben Pfaff  <blp@gnu.org>
+
+       Significant cleanup to DO REPEAT.
+       
+       * repeat.c: (struct line_list) Rename struct repeat_line.  Use
+       struct ll instead of explicit "next" pointer.  Make "file_name"
+       const.  Change "const char *line" to "struct substring text".  Add
+       `syntax' member.  Update all references.
+       (enum repeat_entry_type) Rename repeat_macro_type, update all
+       references.
+       (struct repeat_entry) Rename struct repeat_macro.  Use struct ll
+       instead of explicit "next" pointer.  Change "char[] id" to "struct
+       substring name".  Change "char **replacement" to "struct substring
+       *replacements".  Update all references.
+       (struct repeat_block) Use struct ll_list for lists of lines,
+       macros.  Change "cur_line" to struct ll *.
+       (cmd_do_repeat) Don't bother adding an empty getl source at all.
+       This saves special-casing an empty source in repeat_read.
+       (parse_specification) Use new find_macro function.
+       (find_macro) New function.
+       (skip_indentor) Removed.
+       (recognize_keyword) Change interface, update callers.
+       (recognize_do_repeat) Ditto.
+       (recognize_end_repeat) Ditto.
+       (parse_lines) Use lex_preprocess_line to preprocess the input line
+       to check for DO REPEAT and END REPEAT, instead of coding it
+       inline.
+       (parse_ids) Need to make a copy of the array parsed by
+       parse_mixed_vars_pool, instead of using it verbatim, because we're
+       using struct substring now.
+       (add_replacement) Use struct substring in interface, instead of
+       const char *, and update all callers.
+       (find_substitution) Rewrite using substring, in terms of
+       find_macro.
+       (do_repeat_filter) Use struct substring to simplify code.
+       (current_line) New function.
+       
+Sat Dec  2 16:40:12 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix lack of ->name and ->location in DO REPEAT's getl_interface.
+       See bug #15702.
+
+       * repeat.c: (cmd_do_repeat) Initialize name, location in
+       getl_interface.
+       (do_repeat_read) Adjust semantics of cur_line so that, after the
+       call, it points to the line just returned, instead of to the next
+       line to be returned.  Thus, do_repeat_name and do_repeat_location
+       can use cur_line to obtain the info they need.
+       (do_repeat_name) New function.
+       (do_repeat_location) New function.
+
+Thu Nov 30 22:01:27 2006  Ben Pfaff  <blp@gnu.org>
+
+       * repeat.c (do_repeat_read): Properly handle empty DO REPEAT...END
+       REPEAT block.  Fixes bug #18407.  Thanks to John Darrington for
+       reporting this bug.
+
+Sat Oct 28 16:18:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * repeat.c: Eliminated references to extern variable getl_buf.
+
+Sun May  7 18:18:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix memory leaks.
+       
+       * repeat.c: (parse_ids) Take pool parameter and allocate all
+       memory from pool.  Reduce implementation from loop to single call
+       to parse_mixed_vars_pool().
+       (store_numeric) Removed.
+       (add_replacement) New function.
+       (parse_numbers) Take pool parameter and allocate all memory from
+       pool.  Require ranges to be in increasing order.
+       (parse_strings) Take pool parameter and allocate all memory from
+       pool.
+
+Wed May  3 22:45:41 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       many global variables, consolidating procedure execution in
+       procedure.c.  Encapsulate transformations in new "struct
+       trns_chain".  Also, change implementation of N OF CASES, FILTER,
+       and PROCESS IF from special cases to transformations.
+        
+       * do-if.c: (cmd_do_if) Use finalizer to ensure control stack gets
+       cleared.
+       (do_if_finalize_func) New function.
+
+       * loop.c: (create_loop_trns) Use finalizer to ensure control stack gets
+       cleared.
+       (loop_trns_finalize) New function.
+
+       * temporary.c: (global var temporary) Removed.  Changed references
+       to use proc_make_temporary_transformations_permanent() or
+       proc_in_temporary_transformations().
+       (global var temp_dict) Removed.
+       (global var temp_trns) Removed.
+       (cmd_temporary) Reimplement in terms of
+       proc_in_temporary_transformations() and
+       proc_start_temporary_transformations().
+       (cancel_temporary) Moved to procedure.c, renamed
+       proc_cancel_temporary_transformations().
+               
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 89ff7feeb69cafc9659e633ad3d4ea416b5c9181..e12813abdbb68eea3a2779f70f4e8a3df28b25f7 100644 (file)
@@ -10,3 +10,4 @@ language_control_sources = \
        src/language/control/repeat.c \
        src/language/control/repeat.h
 
+EXTRA_DIST += src/language/control/OChangeLog
diff --git a/src/language/data-io/ChangeLog b/src/language/data-io/ChangeLog
deleted file mode 100644 (file)
index 1eda1c0..0000000
+++ /dev/null
@@ -1,637 +0,0 @@
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6512.
-
-       * inpt-pgm.c (reread_trns_proc): Use gsl_finite instead of finite,
-       as a stopgap measure for portability until appropriate gnulib
-       modules are available.
-
-2008-02-06 John Darrington <john@darrington.wattle.id.au>
-
-       * get-data.c: Add a /BSIZE subcommand to PSQL reader.
-
-2008-02-02 John Darrington <john@darrington.wattle.id.au>
-
-       * get-data.c (cmd_get_data): Support PSQL type.
-
-2007-12-07  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6302.
-
-       * data-parser.c (data_parser_make_active_file): Fix case count
-       argument to casereader_create_sequential, which fixes data reading
-       in the GUI.
-       Provided by John Darrington.
-
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       Move DATA LIST parsing into generic infrastructure, and generalize
-       it slightly.  Then, use the same infrastructure to implement GET
-       DATA/TYPE=TXT.
-
-       * data-parser.c: New file.
-
-       * data-parser.h: New file.
-
-       * data-list.c (struct dls_var_spec): Removed.
-       (ll_to_dls_var_spec): Removed.
-       (enum dls_type): Removed.
-       (struct data_list_pgm): Rename struct data_list_trns.  Remove
-       pool, specs, type, record_cnt, delims, skip_records, value_cnt
-       members.  Add new `parser' member.
-       (cmd_data_list): Use data-parser infrastructure.
-       (parse_fixed): Ditto.
-       (parse_free): Ditto.
-       (dump_fixed_table): Removed.
-       (dump_free_table): Removed.
-       (cut_field): Removed.
-       (read_from_data_list): Removed.
-       (read_from_data_list_fixed): Removed.
-       (read_from_data_list_free): Removed.
-       (read_from_data_list_list): Removed.
-       (data_list_trns_free): Rename arguments for clarity.
-       (data_list_trns_proc): Ditto.
-       (data_list_casereader_read): Removed.
-       (data_list_casereader_destroy): Removed.
-       (data_list_casereader_class): Removed.
-
-       * get-data.c (cmd_get_data): Support TXT type.
-       (set_type): New function.
-       (parse_get_txt): New function.
-
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       * placement-parser.c (parse_column): New function.
-       (parse_column_range): Add `base' argument.  Update all callers.
-       
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       Make GET DATA a separate command, instead of something invoked
-       indirectly from GET.
-
-       * automake.mk: Remove get-data.h from sources.
-
-       * get-data.h: Removed.
-
-       * get-data.c (parse_get_data_command): Rename cmd_get_data.
-
-       * get.c (parse_read_command): No longer any need to check for DATA
-       keyword.
-
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       * src/language/data-io/data-reader.c (struct dfm_reader): New
-       `file_size' member to support dfm_get_percent_read.
-       (dfm_open_reader): Initialize file_size.
-       (dfm_get_percent_read): New function.
-
-2007-11-08  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6256: add support for binary, 360 file formats.  Reviewed
-       by John Darrington.
-
-       * data-reader.c (struct dfm_reader): New member `block_left'.
-       (dfm_open_reader): Initialize block_left.  For FH_MODE_TEXT, open
-       the file in text mode.
-       (read_error): New function.
-       (partial_record): New function.
-       (try_to_read_fully): New function.
-       (enum descriptor_type): New enum.
-       (read_descriptor_word): New function.
-       (corrupt_size): New function.
-       (read_size): New function.
-       (read_file_record): Implement new modes.
-       (read_record): Now take care of tracking line numbers here.
-       (dfm_reader_get_legacy_encoding): New function.
-
-       * data-writer.c (dfm_put_record): Implement new modes.
-       (dfm_writer_get_legacy_encoding): New function.
-
-       * file-handle.q: Parse new formats.
-       (cmd_file_handle): Set up new formats.
-
-       * print.c (struct print_trns): New member `encoding'.
-       (internal_cmd_print): Set encoding.
-       (print_trns_proc): Recode output data if necessary.
-       (flush_records): Recode leader byte.
-
-2007-11-03  Ben Pfaff  <blp@gnu.org>
-
-       Allow output files to overwrite input files (bug #21280).
-
-       * data-list.c (cmd_data_list): Manage file handle reference
-       counts.
-
-       * data-reader.c (struct dfm_reader): Add `lock' member.
-       (dfm_close_reader): Simplify, as reference counting is now
-       separate from locking.
-       (dfm_open_reader): Lock file.
-
-       * data-writer.c (struct dfm_writer): Add fh_lock, replace_file
-       members.
-       (dfm_open_writer): Lock file and prepare for replacement.
-       (dfm_close_writer): Unlock file and replace it.
-
-       * file-handle.q (cmd_close_file_handle): Use fh_unname.
-       (fh_parse): Don't distinguish existing handles for a given file
-       name from new ones.  Manage file handle reference counts.
-
-       * get.c (parse_read_command): Manage file handle reference counts.
-       (parse_write_command): Ditto.
-       (mtf_close_all_files): Ditto.
-
-       * inpt-pgm.c (cmd_reread): Manage file handle reference counts.
-
-       * print-space.c (cmd_print_space): Manage file handle reference
-       counts.
-
-       * print.c (internal_cmd_print): Manage file handle reference
-       counts.
-
-2007-11-03 John Darrington <john@darrington.wattle.id.au>
-
-       * get.c: Add GET DATA command variant.
-
-       * get-data.c get-data.h (new files): Added support for
-        GET DATA /TYPE='gnm'  command.
-
-2007-09-23  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21111.  Reviewed by John Darrington.
-
-       * data-list.c (data_list_trns_proc): Properly set retval when END
-       subcommand is in use.
-       (cmd_data_list): Don't allow END subcommand to be used with DATA
-       LIST FREE or LIST.
-
-2007-09-12  Ben Pfaff  <blp@gnu.org>
-
-       * get.c (get_translate_case): Change input case parameter from
-       const struct ccase * to struct ccase *, to match change in
-       casereader and casewriter translators.  Destroy input case, to fix
-       memory leak.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * get.c (parse_read_command): Compact the values in the target
-       dictionary, to save space.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * get.c (struct case_map): Move into new file src/data/case-map.c.
-       (start_case_map): Ditto, and rename case_map_prepare_dict.
-       (finish_case_map): Ditto, and rename case_map_from_dict.
-       (map_case): Ditto, and rename case_map_execute.
-       (destroy_case_map): Ditto, and rename case_map_destroy.
-       (case_map_get_value_cnt): Ditto.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * get.c (case_map_get_value_cnt): New function.
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #17100.
-       * data-list.c (read_from_data_list_fixed): Handle multi-record
-       DATA LIST correctly.
-
-2007-07-11  Ben Pfaff  <blp@gnu.org>
-
-       * get.c (map_case): Create destination case instead of leaving it
-       undefined.  Fixes bug #20285.
-       Reviewed by John Darrington.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: Essentially rewrite MATCH FILES to support FIRST and
-       LAST.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adapt case sources, sinks, and clients of procedure code to the
-       new infrastructure.
-       
-       * data-list.c: Make DATA LIST into a casereader.
-
-       * get.c: Change GET, IMPORT, SAVE, EXPORT to use casereaders,
-       casewriters.
-
-       * inpt-pgm.c: Use caseinit code.  Turn INPUT PROGRAM into a
-       casereader.
-
-       * list.q: Adapt to new procedure code.
-
-2007-05-06  Ben Pfaff  <blp@gnu.org>
-
-       Abstract the documents within a dictionary a little better.
-       Thanks to John Darrington for suggestion, initial version, and
-       review.  Patch #5917.
-
-       * get.c (mtf_merge_dictionary): Simplify creating merged document.
-
-       * sys-file-info.c (display_documents): Use new
-       dict_get_document_line_cnt and dict_get_document_line functions.
-
-Thu Feb  1 16:56:02 2007  Ben Pfaff  <blp@gnu.org>
-
-       * file-handle.q (fh_parse): Update to new fh_create_file
-       prototype.
-
-Sat Dec 16 22:16:18 2006  Ben Pfaff  <blp@gnu.org>
-
-       Make it possible to pull cases from the active file with a
-       function call, instead of requiring indirection through a callback
-       function.
-
-       * automake.mk: Removed matrix-data.c.
-
-       * matrix-data.c: Removed.
-
-       * data-list.c (data_list_source_read): Conform with new
-       case_source_class interface.
-       (data_list_source_destroy): Ditto.
-
-       * get.c (case_reader_source_class): Ditto.
-       (case_reader_source_destroy): Ditto.
-       (parse_output_proc): Take advantage of new procedure interface.
-       (output_proc): Removed.
-       (struct mtf_file): Add "struct ccase *" member to allow use of new
-       procedure interface.
-       (cmd_match_files): Take advantage of new procedure interface.
-       (mtf_processing_finish): Removed.
-       (mtf_read_nonactive_records): Renamed mtf_read_records.  Now reads
-       from every file, without any exception for the active file.
-       (mtf_compare_BY_values): Simplify for new interface.
-       (mtf_processing): Simplify for new interface.
-
-       * inpt-pgm.c (is_valid_state): New function.
-       (input_program_source_read): Conform with new case_source_class
-       interface.
-       (input_program_source_destroy): Ditto.
-       (end_case_trns_proc): Now just needs to return TRNS_END_CASE.
-
-Sat Dec  9 18:43:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       * list.q (cmd_list): Use new var_create, var_destroy functions.
-
-Thu Nov 30 21:51:58 2006  Ben Pfaff  <blp@gnu.org>
-
-       * inpt-pgm.c (cmd_reread): Always return error code upon detecting
-       syntax error.  Fixes bug #18419.  Thanks to John Darrington for
-       reporting this bug.
-
-Sun Nov 19 09:17:45 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-list.c (parse_free): Follow documented (but odd) rule that
-       N format is treated as F format for free-field input.
-       
-       * data-reader.c (read_file_record): Drop new-line character from
-       input text lines.  This is symmetrical with the recently changed
-       dfm_put_record semantics.
-
-Thu Nov  2 20:56:03 2006  Ben Pfaff  <blp@gnu.org>
-
-       Implement SKIP keyword on DATA LIST.  Fixes bug #17099.
-       
-       * data-list.c: (struct data_list_pgm) Add `skip_records' members.
-       (cmd_data_list) Set skip_records based on user input.
-       (data_list_source_read) Skip records requested by user.
-
-Tue Oct 31 20:04:06 2006  Ben Pfaff  <blp@gnu.org>
-
-       * placement-parser.c: (PRS_TYPE_T) Now that struct fmt_spec uses
-       an enum fmt_type for its type member, we can't depend on the
-       ability to put negative values into that member as out-of-band
-       values, because enum fmt_type might be an unsigned type.  So use
-       values around SCHAR_MAX instead, because we know that SCHAR_MAX
-       will fit into any type, signed or unsigned, and there aren't
-       nearly that many format types.
-       (parse_var_placements) Add for_input parameter to specify whether
-       we're parsing input or output formats.  Update all callers.
-       (fixed_parse_columns) Ditto.
-       (fixed_parse_fortran) Ditto.
-       
-Tue Oct 31 18:21:48 2006  Ben Pfaff  <blp@gnu.org>
-
-       * print-space.c (print_space_trns_proc): Let dfm_put_record add
-       the new-line character, to match dfm_put_record change below.
-
-Sat Oct 28 11:57:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-writer.c (struct dfm_writer): Removed `bounce' member, and
-       all references to it.
-       (dfm_put_record) Change semantics so that it adds formatting
-       itself, such as new-line characters, instead of putting that
-       responsibility on the caller.  Also, pad binary records with
-       spaces instead of zeros, for compatibility.
-
-       * print.c (struct prt_out_spec) New member `sysmis_as_spaces'.
-       (struct print_trns) Remove `omit_new_lines' and all references,
-       since dfm_put_record() is taking care of that.  Add
-       `include_prefix'.
-       (internal_cmd_print) Allow an empty set of data to print.  Set
-       include_prefix.
-       (parse_specs) Allow an empty set of data to print.
-       (parse_variable_argument) Only add space with PRINT command.  Set
-       sysmis_as_spaces.
-       (print_trns_proc) Indent records if include_prefix is set, for
-       compatibility.  Output SYSMIS as spaces if sysmis_as_spaces is
-       set.  Put "1" in first column if PRINT EJECT is used with an
-       external output file.
-       (flush_records) Ditto.
-
-Sat Oct 28 16:19:57 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * data-reader.c: Eliminated references to extern variable getl_buf
-
-Sat Aug  5 08:25:07 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #17329 in REREAD parsing, reported by John Darrington.
-
-       * inpt-pgm.c (cmd_reread): Fix file handle parsing.
-
-Mon Jul 31 10:32:31 2006  Ben Pfaff  <blp@gnu.org>
-
-       * print.c (parse_specs): Allow a comma between specifications.
-
-Sun Jul 16 19:57:10 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: (src_language_data_io_libdata_io_a_SOURCE) Add
-       print-space.c, placement-parser.c, placement-parser.h.
-
-       * data-list.c: Basically rewrote the whole thing.  Broke out a lot
-       of code into placement-parser.c.  Code is much cleaner now.
-
-       * placement-parser.c: New file.
-
-       * placement-parser.h: New file.
-
-       * print.c: Basically rewrote the whole thing.  Broke out PRINT
-       SPACE into print-space.c.  Code is much cleaner now.
-
-       * print-space.c: New file.
-
-Sat Jul  1 17:39:40 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #11612, "q2c documentation does not agree with code".
-       
-       * list.q: Audit use of q2c "+" prefixes that indicate that a
-       command may appear multiple times.
-
-Sat Jul  1 20:44:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #15786: System File Creation crashes if directoy is
-       nonexistent.
-       
-       * get.c (parse_write_command): Check that the any_writer open
-       succeeds.
-
-Tue Jun 27 22:44:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix regression in command name completion reported by John
-       Darrington.  Now completion is again state-dependent and occurs
-       only on the first line of a command.
-       
-       * inpt-pgm.c: (cmd_input_program) Reading of first token in
-       command moved into cmd_parse.
-
-Fri Jun  9 13:56:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       Reform string library.
-       
-       * matrix-data.c (context): Use dynamic string.
-       (another_token) Deal with changed dfm_get_record() interface.
-       (mget_token) Ditto.
-       (force_eol) Ditto.
-
-       * data-list.c (struct data_list_pgm) Delete delims, delim_cnt
-       members, replacing them by struct string delims.  Update all
-       references to use struct string functions.
-       (cut_field) Change interface to avoid needing "end_blank", by
-       getting the data-reader to remember that state for us.  Change
-       internals to use substring.  Update both callers.
-
-       * data-reader.c (read_file_record): Use ds_read_stream().
-       (dfm_get_record) Change interface to return substring.  Updated
-       all callers.
-       (dfm_expand_tabs) Use ds_find_char().  Now maintain position
-       relative to end-of-line.  Use ds_swap().
-       (dfm_reread_record) Don't limit position by line length.
-       (dfm_column_start) Make parameter const.
-       (dfm_columns_past_end) New function.
-       (dfm_get_column) New function.
-
-Thu May 25 18:26:26 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * print.c (print_trns_free): Made the code agree with the comment, by
-       not freeing PRT.  Has the side effect that the command no longer
-       crashes on invalid syntax.
-
-Tue May  9 20:55:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       * get.c (cmd_match_files): Fix memory leak replacing default_dict.
-
-Sat May  6 22:25:09 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix segfault.
-       
-       * list.q (write_fallback_headers): (write_fallback_headers)
-       Properly record width of leader and pass it to write_varname().
-
-Sat May  6 19:03:13 2006  Ben Pfaff  <blp@gnu.org>
-
-       * get.c: (mtf_merge_dictionary) Fix value label memory leak.
-
-Sat May  6 13:51:16 2006  Ben Pfaff  <blp@gnu.org>
-
-       Use a casefile, instead of a case sink, for MATCH FILES output.
-       It's more straightforward, although it has the same effect.
-       
-       * get.c: (struct mtf_proc) Replace `sink' case sink member by
-       `output' casefile member.
-       (cmd_match_files) Work with casefile instead of sink.
-       (mtf_processing) Add case to casefile instead of sink.
-
-Sat May  6 10:43:07 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       the output code for SPLIT FILE groups in procedure.c, which really
-       shouldn't be doing any output.  Move it into the individual
-       procedures instead.  This also adds some flexibility.
-
-       * list.q (write_all_headers): Call output_split_file_values().
-
-Wed May  3 23:00:17 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       many global variables, consolidating procedure execution in
-       procedure.c.  Encapsulate transformations in new "struct
-       trns_chain".  Also, change implementation of N OF CASES, FILTER,
-       and PROCESS IF from special cases to transformations.
-        
-       * data-list.c: (data_list_trns_proc) Return TRNS_END_FILE at end
-       of file.  (Why didn't we do this before?)
-       (cmd_match_files) Direct procedure output to null sink.
-       Use discard_variables() instead of indirect version.
-
-       * inpt-pgm.c: Use transformation chain.
-       (struct input_program_pgm) Add trns_chain member.
-       (cmd_input_program) Initialize trns_chain member and capture
-       transformations with proc_capture_transformations().
-       (input_program_source_read) Use trns_chain_execute().
-       (destroy_input_program) Destroy input chain.
-
-Tue May  2 10:39:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * list.q Changed from using fixed length char buffers to struct 
-       string so that any length variables can be used.
-
-Mon May  1 18:21:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       Further clean up the CMD_* command result codes.
-       
-       * (enum cmd_result_extensions) New.  Add CMD_END_INPUT_PROGRAM and
-       CMD_END_CASE result codes.
-       (struct input_program_pgm) Added case_nr, write_case, wc_data
-       members for use by END CASE transformation.
-       (emit_END_CASE) New function.
-       (cmd_input_program) Interpret CMD_END_CASE by outputting an END
-       CASE transformation.  If none is output by the input program
-       itself, add one automatically at the end.  Change lack of
-       variables from warning to error.
-       (cmd_end_input_program) Return CMD_END_INPUT_PROGRAM instead of
-       CMD_END_SUBLOOP.
-       (input_program_source_read) No longer any need to special-case END
-       CASE.  Handle TRNS_DROP_CASE properly.  Initialize new members in
-       inp for use by END CASE transformation.
-       (destroy_input_program) New function.
-       (input_program_source_destroy) Just call destroy_input_program().
-       (cmd_end_case) Just return CMD_END_CASE.
-       (end_case_trns_proc) No longer a stub handled by
-       input_program_source_read().  Actually output the case and
-       increment the case number.
-
-Mon May  1 16:06:30 2006  Ben Pfaff  <blp@gnu.org>
-
-       Remove vestiges of REPEATING DATA support.
-       
-       * data-list.c: (struct rpd_num_or_var) Removed.
-       (struct repeating_data_trns) Removed.
-       (cmd_repeating_data) Removed.
-       (find_variable_input_spec) Removed.
-       (parse_num_or_var) Removed.
-       (parse_repeating_data) Removed.
-       (realize_value) Removed.
-       (struct rpd_parse_info) Removed.
-       (rpd_parse_record) Removed.
-       (repeating_data_trns_proc) Removed.
-       (repeating_data_trns_free) Removed.
-       (repeating_data_set_write_case) Removed.
-       (rpd_msg) Removed.
-
-       * inpt-pgm.c: (input_program_source_read) Don't deal with
-       REPEATING DATA.
-
-       * data-list.h: Removed.
-
-       * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Removed
-       data-list.h.
-
-Mon May  1 15:58:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       Remove vestiges of FILE TYPE support. 
-       
-       * data-list.c: (cmd_data_list) Don't check for FILE TYPE.
-       (cmd_repeating_data) Ditto.
-       
-       * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Remove
-       file-type.c, file-type.h.
-
-       * file-type.c: Removed.
-       
-       * file-type.h: Removed.
-
-Wed Apr 26 13:16:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       Improve the way we handle the various parsing "states".  Until now
-       we've hard-coded the state transitions in the command definition
-       file, but that's error-prone and, worse, it's redundant--we can
-       figure out what state we're in anyhow.  We can cleanly handle
-       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
-       
-       * data-list.c: (cmd_data_list) Use in_file_type() or
-       in_input_program() in place of case_source_is_class() or
-       case_source_is_complex().
-
-       * file-type.c: NB: Not really fixed except minimally to compile,
-       because it doesn't work anyway.
-       (in_file_type) New function.
-       (cmd_record_type) No need to check that we're in FILE TYPE.
-       (cmd_end_file_type) Ditto.
-       (var file_type_source_class) Make static.
-
-       * get.c: (cmd_match_files) Check vfm_source instead of pgm_state.
-
-       * inpt-pgm.c: (in_input_program) New function.
-       (cmd_input_program) Rewrite to include nested command processing
-       loop.
-       (cmd_end_input_program) Just return CMD_END_SUBLOOP.
-       (var input_program_source_class) Make static.
-       (cmd_end_case) No need to check that we're in INPUT PROGRAM.
-       (cmd_end_file) Ditto.
-       
-       * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Add
-       file-type.h, inpt-pgm.h.
-
-       * file-type.h: New file.
-
-       * inpt-pgm.h: New file.
-
-Tue Apr 25 13:11:55 2006  Ben Pfaff  <blp@gnu.org>
-
-       * print.c: Don't special-case MS-DOS line terminators.
-       (macro LINE_END_WIDTH) Removed.
-       (alloc_line) Line ends are 1 byte.
-       (print_trns_proc) Just output \n for line end.
-
-Sun Apr 23 22:05:58 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, get rid
-       of message "titles" and put the message text in `struct error'.
-       Now `struct error' encapsulates a message more properly.
-       
-       * data-list.c: (macro RPD_ERR) Removed.
-       (rpd_msg) New function.  Updated all references to tmsg() to call
-       this function instead.
-
-Sat Apr 15 19:38:13 2006  Ben Pfaff  <blp@gnu.org>
-
-       Remove last users of struct file_ext so we can get rid of it
-       entirely.
-       
-       * data-reader.c: (struct dfm_reader) Change file member from
-       struct file_ext to FILE *.  Updated all references.
-       (dfm_close_reader) Close file with fn_close() instead of
-       fn_close_ext().  Also, make a copy of the file name from the file
-       handle before closing it, because we can't extract it after we
-       close the file.
-       (dfm_open_reader) Open file with fn_open() instead of
-       fn_open_ext().
-
-       * data-writer.c: (struct dfm_writer) Change file member 
-       struct file_ext to FILE *.  Updated all references.
-       (dfm_close_writer) Close file with fn_close() instead of
-       fn_close_ext().  Also, make a copy of the file name from the file
-       handle before closing it, because we can't extract it after we
-       close the file.
-       (dfm_open_writer) Open file with fn_open() instead of
-       fn_open_ext().
-
-Sat Apr 15 18:00:32 2006  Ben Pfaff  <blp@gnu.org>
-
-       * data-list.c: Add prototype to suppress warning for
-       cmd_repeating_data().
-       
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/data-io/OChangeLog b/src/language/data-io/OChangeLog
new file mode 100644 (file)
index 0000000..1eda1c0
--- /dev/null
@@ -0,0 +1,637 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * inpt-pgm.c (reread_trns_proc): Use gsl_finite instead of finite,
+       as a stopgap measure for portability until appropriate gnulib
+       modules are available.
+
+2008-02-06 John Darrington <john@darrington.wattle.id.au>
+
+       * get-data.c: Add a /BSIZE subcommand to PSQL reader.
+
+2008-02-02 John Darrington <john@darrington.wattle.id.au>
+
+       * get-data.c (cmd_get_data): Support PSQL type.
+
+2007-12-07  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6302.
+
+       * data-parser.c (data_parser_make_active_file): Fix case count
+       argument to casereader_create_sequential, which fixes data reading
+       in the GUI.
+       Provided by John Darrington.
+
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       Move DATA LIST parsing into generic infrastructure, and generalize
+       it slightly.  Then, use the same infrastructure to implement GET
+       DATA/TYPE=TXT.
+
+       * data-parser.c: New file.
+
+       * data-parser.h: New file.
+
+       * data-list.c (struct dls_var_spec): Removed.
+       (ll_to_dls_var_spec): Removed.
+       (enum dls_type): Removed.
+       (struct data_list_pgm): Rename struct data_list_trns.  Remove
+       pool, specs, type, record_cnt, delims, skip_records, value_cnt
+       members.  Add new `parser' member.
+       (cmd_data_list): Use data-parser infrastructure.
+       (parse_fixed): Ditto.
+       (parse_free): Ditto.
+       (dump_fixed_table): Removed.
+       (dump_free_table): Removed.
+       (cut_field): Removed.
+       (read_from_data_list): Removed.
+       (read_from_data_list_fixed): Removed.
+       (read_from_data_list_free): Removed.
+       (read_from_data_list_list): Removed.
+       (data_list_trns_free): Rename arguments for clarity.
+       (data_list_trns_proc): Ditto.
+       (data_list_casereader_read): Removed.
+       (data_list_casereader_destroy): Removed.
+       (data_list_casereader_class): Removed.
+
+       * get-data.c (cmd_get_data): Support TXT type.
+       (set_type): New function.
+       (parse_get_txt): New function.
+
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       * placement-parser.c (parse_column): New function.
+       (parse_column_range): Add `base' argument.  Update all callers.
+       
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       Make GET DATA a separate command, instead of something invoked
+       indirectly from GET.
+
+       * automake.mk: Remove get-data.h from sources.
+
+       * get-data.h: Removed.
+
+       * get-data.c (parse_get_data_command): Rename cmd_get_data.
+
+       * get.c (parse_read_command): No longer any need to check for DATA
+       keyword.
+
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       * src/language/data-io/data-reader.c (struct dfm_reader): New
+       `file_size' member to support dfm_get_percent_read.
+       (dfm_open_reader): Initialize file_size.
+       (dfm_get_percent_read): New function.
+
+2007-11-08  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6256: add support for binary, 360 file formats.  Reviewed
+       by John Darrington.
+
+       * data-reader.c (struct dfm_reader): New member `block_left'.
+       (dfm_open_reader): Initialize block_left.  For FH_MODE_TEXT, open
+       the file in text mode.
+       (read_error): New function.
+       (partial_record): New function.
+       (try_to_read_fully): New function.
+       (enum descriptor_type): New enum.
+       (read_descriptor_word): New function.
+       (corrupt_size): New function.
+       (read_size): New function.
+       (read_file_record): Implement new modes.
+       (read_record): Now take care of tracking line numbers here.
+       (dfm_reader_get_legacy_encoding): New function.
+
+       * data-writer.c (dfm_put_record): Implement new modes.
+       (dfm_writer_get_legacy_encoding): New function.
+
+       * file-handle.q: Parse new formats.
+       (cmd_file_handle): Set up new formats.
+
+       * print.c (struct print_trns): New member `encoding'.
+       (internal_cmd_print): Set encoding.
+       (print_trns_proc): Recode output data if necessary.
+       (flush_records): Recode leader byte.
+
+2007-11-03  Ben Pfaff  <blp@gnu.org>
+
+       Allow output files to overwrite input files (bug #21280).
+
+       * data-list.c (cmd_data_list): Manage file handle reference
+       counts.
+
+       * data-reader.c (struct dfm_reader): Add `lock' member.
+       (dfm_close_reader): Simplify, as reference counting is now
+       separate from locking.
+       (dfm_open_reader): Lock file.
+
+       * data-writer.c (struct dfm_writer): Add fh_lock, replace_file
+       members.
+       (dfm_open_writer): Lock file and prepare for replacement.
+       (dfm_close_writer): Unlock file and replace it.
+
+       * file-handle.q (cmd_close_file_handle): Use fh_unname.
+       (fh_parse): Don't distinguish existing handles for a given file
+       name from new ones.  Manage file handle reference counts.
+
+       * get.c (parse_read_command): Manage file handle reference counts.
+       (parse_write_command): Ditto.
+       (mtf_close_all_files): Ditto.
+
+       * inpt-pgm.c (cmd_reread): Manage file handle reference counts.
+
+       * print-space.c (cmd_print_space): Manage file handle reference
+       counts.
+
+       * print.c (internal_cmd_print): Manage file handle reference
+       counts.
+
+2007-11-03 John Darrington <john@darrington.wattle.id.au>
+
+       * get.c: Add GET DATA command variant.
+
+       * get-data.c get-data.h (new files): Added support for
+        GET DATA /TYPE='gnm'  command.
+
+2007-09-23  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21111.  Reviewed by John Darrington.
+
+       * data-list.c (data_list_trns_proc): Properly set retval when END
+       subcommand is in use.
+       (cmd_data_list): Don't allow END subcommand to be used with DATA
+       LIST FREE or LIST.
+
+2007-09-12  Ben Pfaff  <blp@gnu.org>
+
+       * get.c (get_translate_case): Change input case parameter from
+       const struct ccase * to struct ccase *, to match change in
+       casereader and casewriter translators.  Destroy input case, to fix
+       memory leak.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * get.c (parse_read_command): Compact the values in the target
+       dictionary, to save space.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * get.c (struct case_map): Move into new file src/data/case-map.c.
+       (start_case_map): Ditto, and rename case_map_prepare_dict.
+       (finish_case_map): Ditto, and rename case_map_from_dict.
+       (map_case): Ditto, and rename case_map_execute.
+       (destroy_case_map): Ditto, and rename case_map_destroy.
+       (case_map_get_value_cnt): Ditto.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * get.c (case_map_get_value_cnt): New function.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #17100.
+       * data-list.c (read_from_data_list_fixed): Handle multi-record
+       DATA LIST correctly.
+
+2007-07-11  Ben Pfaff  <blp@gnu.org>
+
+       * get.c (map_case): Create destination case instead of leaving it
+       undefined.  Fixes bug #20285.
+       Reviewed by John Darrington.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: Essentially rewrite MATCH FILES to support FIRST and
+       LAST.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adapt case sources, sinks, and clients of procedure code to the
+       new infrastructure.
+       
+       * data-list.c: Make DATA LIST into a casereader.
+
+       * get.c: Change GET, IMPORT, SAVE, EXPORT to use casereaders,
+       casewriters.
+
+       * inpt-pgm.c: Use caseinit code.  Turn INPUT PROGRAM into a
+       casereader.
+
+       * list.q: Adapt to new procedure code.
+
+2007-05-06  Ben Pfaff  <blp@gnu.org>
+
+       Abstract the documents within a dictionary a little better.
+       Thanks to John Darrington for suggestion, initial version, and
+       review.  Patch #5917.
+
+       * get.c (mtf_merge_dictionary): Simplify creating merged document.
+
+       * sys-file-info.c (display_documents): Use new
+       dict_get_document_line_cnt and dict_get_document_line functions.
+
+Thu Feb  1 16:56:02 2007  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.q (fh_parse): Update to new fh_create_file
+       prototype.
+
+Sat Dec 16 22:16:18 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make it possible to pull cases from the active file with a
+       function call, instead of requiring indirection through a callback
+       function.
+
+       * automake.mk: Removed matrix-data.c.
+
+       * matrix-data.c: Removed.
+
+       * data-list.c (data_list_source_read): Conform with new
+       case_source_class interface.
+       (data_list_source_destroy): Ditto.
+
+       * get.c (case_reader_source_class): Ditto.
+       (case_reader_source_destroy): Ditto.
+       (parse_output_proc): Take advantage of new procedure interface.
+       (output_proc): Removed.
+       (struct mtf_file): Add "struct ccase *" member to allow use of new
+       procedure interface.
+       (cmd_match_files): Take advantage of new procedure interface.
+       (mtf_processing_finish): Removed.
+       (mtf_read_nonactive_records): Renamed mtf_read_records.  Now reads
+       from every file, without any exception for the active file.
+       (mtf_compare_BY_values): Simplify for new interface.
+       (mtf_processing): Simplify for new interface.
+
+       * inpt-pgm.c (is_valid_state): New function.
+       (input_program_source_read): Conform with new case_source_class
+       interface.
+       (input_program_source_destroy): Ditto.
+       (end_case_trns_proc): Now just needs to return TRNS_END_CASE.
+
+Sat Dec  9 18:43:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       * list.q (cmd_list): Use new var_create, var_destroy functions.
+
+Thu Nov 30 21:51:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       * inpt-pgm.c (cmd_reread): Always return error code upon detecting
+       syntax error.  Fixes bug #18419.  Thanks to John Darrington for
+       reporting this bug.
+
+Sun Nov 19 09:17:45 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-list.c (parse_free): Follow documented (but odd) rule that
+       N format is treated as F format for free-field input.
+       
+       * data-reader.c (read_file_record): Drop new-line character from
+       input text lines.  This is symmetrical with the recently changed
+       dfm_put_record semantics.
+
+Thu Nov  2 20:56:03 2006  Ben Pfaff  <blp@gnu.org>
+
+       Implement SKIP keyword on DATA LIST.  Fixes bug #17099.
+       
+       * data-list.c: (struct data_list_pgm) Add `skip_records' members.
+       (cmd_data_list) Set skip_records based on user input.
+       (data_list_source_read) Skip records requested by user.
+
+Tue Oct 31 20:04:06 2006  Ben Pfaff  <blp@gnu.org>
+
+       * placement-parser.c: (PRS_TYPE_T) Now that struct fmt_spec uses
+       an enum fmt_type for its type member, we can't depend on the
+       ability to put negative values into that member as out-of-band
+       values, because enum fmt_type might be an unsigned type.  So use
+       values around SCHAR_MAX instead, because we know that SCHAR_MAX
+       will fit into any type, signed or unsigned, and there aren't
+       nearly that many format types.
+       (parse_var_placements) Add for_input parameter to specify whether
+       we're parsing input or output formats.  Update all callers.
+       (fixed_parse_columns) Ditto.
+       (fixed_parse_fortran) Ditto.
+       
+Tue Oct 31 18:21:48 2006  Ben Pfaff  <blp@gnu.org>
+
+       * print-space.c (print_space_trns_proc): Let dfm_put_record add
+       the new-line character, to match dfm_put_record change below.
+
+Sat Oct 28 11:57:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-writer.c (struct dfm_writer): Removed `bounce' member, and
+       all references to it.
+       (dfm_put_record) Change semantics so that it adds formatting
+       itself, such as new-line characters, instead of putting that
+       responsibility on the caller.  Also, pad binary records with
+       spaces instead of zeros, for compatibility.
+
+       * print.c (struct prt_out_spec) New member `sysmis_as_spaces'.
+       (struct print_trns) Remove `omit_new_lines' and all references,
+       since dfm_put_record() is taking care of that.  Add
+       `include_prefix'.
+       (internal_cmd_print) Allow an empty set of data to print.  Set
+       include_prefix.
+       (parse_specs) Allow an empty set of data to print.
+       (parse_variable_argument) Only add space with PRINT command.  Set
+       sysmis_as_spaces.
+       (print_trns_proc) Indent records if include_prefix is set, for
+       compatibility.  Output SYSMIS as spaces if sysmis_as_spaces is
+       set.  Put "1" in first column if PRINT EJECT is used with an
+       external output file.
+       (flush_records) Ditto.
+
+Sat Oct 28 16:19:57 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * data-reader.c: Eliminated references to extern variable getl_buf
+
+Sat Aug  5 08:25:07 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #17329 in REREAD parsing, reported by John Darrington.
+
+       * inpt-pgm.c (cmd_reread): Fix file handle parsing.
+
+Mon Jul 31 10:32:31 2006  Ben Pfaff  <blp@gnu.org>
+
+       * print.c (parse_specs): Allow a comma between specifications.
+
+Sun Jul 16 19:57:10 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: (src_language_data_io_libdata_io_a_SOURCE) Add
+       print-space.c, placement-parser.c, placement-parser.h.
+
+       * data-list.c: Basically rewrote the whole thing.  Broke out a lot
+       of code into placement-parser.c.  Code is much cleaner now.
+
+       * placement-parser.c: New file.
+
+       * placement-parser.h: New file.
+
+       * print.c: Basically rewrote the whole thing.  Broke out PRINT
+       SPACE into print-space.c.  Code is much cleaner now.
+
+       * print-space.c: New file.
+
+Sat Jul  1 17:39:40 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #11612, "q2c documentation does not agree with code".
+       
+       * list.q: Audit use of q2c "+" prefixes that indicate that a
+       command may appear multiple times.
+
+Sat Jul  1 20:44:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #15786: System File Creation crashes if directoy is
+       nonexistent.
+       
+       * get.c (parse_write_command): Check that the any_writer open
+       succeeds.
+
+Tue Jun 27 22:44:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix regression in command name completion reported by John
+       Darrington.  Now completion is again state-dependent and occurs
+       only on the first line of a command.
+       
+       * inpt-pgm.c: (cmd_input_program) Reading of first token in
+       command moved into cmd_parse.
+
+Fri Jun  9 13:56:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reform string library.
+       
+       * matrix-data.c (context): Use dynamic string.
+       (another_token) Deal with changed dfm_get_record() interface.
+       (mget_token) Ditto.
+       (force_eol) Ditto.
+
+       * data-list.c (struct data_list_pgm) Delete delims, delim_cnt
+       members, replacing them by struct string delims.  Update all
+       references to use struct string functions.
+       (cut_field) Change interface to avoid needing "end_blank", by
+       getting the data-reader to remember that state for us.  Change
+       internals to use substring.  Update both callers.
+
+       * data-reader.c (read_file_record): Use ds_read_stream().
+       (dfm_get_record) Change interface to return substring.  Updated
+       all callers.
+       (dfm_expand_tabs) Use ds_find_char().  Now maintain position
+       relative to end-of-line.  Use ds_swap().
+       (dfm_reread_record) Don't limit position by line length.
+       (dfm_column_start) Make parameter const.
+       (dfm_columns_past_end) New function.
+       (dfm_get_column) New function.
+
+Thu May 25 18:26:26 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * print.c (print_trns_free): Made the code agree with the comment, by
+       not freeing PRT.  Has the side effect that the command no longer
+       crashes on invalid syntax.
+
+Tue May  9 20:55:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       * get.c (cmd_match_files): Fix memory leak replacing default_dict.
+
+Sat May  6 22:25:09 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix segfault.
+       
+       * list.q (write_fallback_headers): (write_fallback_headers)
+       Properly record width of leader and pass it to write_varname().
+
+Sat May  6 19:03:13 2006  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (mtf_merge_dictionary) Fix value label memory leak.
+
+Sat May  6 13:51:16 2006  Ben Pfaff  <blp@gnu.org>
+
+       Use a casefile, instead of a case sink, for MATCH FILES output.
+       It's more straightforward, although it has the same effect.
+       
+       * get.c: (struct mtf_proc) Replace `sink' case sink member by
+       `output' casefile member.
+       (cmd_match_files) Work with casefile instead of sink.
+       (mtf_processing) Add case to casefile instead of sink.
+
+Sat May  6 10:43:07 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       the output code for SPLIT FILE groups in procedure.c, which really
+       shouldn't be doing any output.  Move it into the individual
+       procedures instead.  This also adds some flexibility.
+
+       * list.q (write_all_headers): Call output_split_file_values().
+
+Wed May  3 23:00:17 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       many global variables, consolidating procedure execution in
+       procedure.c.  Encapsulate transformations in new "struct
+       trns_chain".  Also, change implementation of N OF CASES, FILTER,
+       and PROCESS IF from special cases to transformations.
+        
+       * data-list.c: (data_list_trns_proc) Return TRNS_END_FILE at end
+       of file.  (Why didn't we do this before?)
+       (cmd_match_files) Direct procedure output to null sink.
+       Use discard_variables() instead of indirect version.
+
+       * inpt-pgm.c: Use transformation chain.
+       (struct input_program_pgm) Add trns_chain member.
+       (cmd_input_program) Initialize trns_chain member and capture
+       transformations with proc_capture_transformations().
+       (input_program_source_read) Use trns_chain_execute().
+       (destroy_input_program) Destroy input chain.
+
+Tue May  2 10:39:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * list.q Changed from using fixed length char buffers to struct 
+       string so that any length variables can be used.
+
+Mon May  1 18:21:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       Further clean up the CMD_* command result codes.
+       
+       * (enum cmd_result_extensions) New.  Add CMD_END_INPUT_PROGRAM and
+       CMD_END_CASE result codes.
+       (struct input_program_pgm) Added case_nr, write_case, wc_data
+       members for use by END CASE transformation.
+       (emit_END_CASE) New function.
+       (cmd_input_program) Interpret CMD_END_CASE by outputting an END
+       CASE transformation.  If none is output by the input program
+       itself, add one automatically at the end.  Change lack of
+       variables from warning to error.
+       (cmd_end_input_program) Return CMD_END_INPUT_PROGRAM instead of
+       CMD_END_SUBLOOP.
+       (input_program_source_read) No longer any need to special-case END
+       CASE.  Handle TRNS_DROP_CASE properly.  Initialize new members in
+       inp for use by END CASE transformation.
+       (destroy_input_program) New function.
+       (input_program_source_destroy) Just call destroy_input_program().
+       (cmd_end_case) Just return CMD_END_CASE.
+       (end_case_trns_proc) No longer a stub handled by
+       input_program_source_read().  Actually output the case and
+       increment the case number.
+
+Mon May  1 16:06:30 2006  Ben Pfaff  <blp@gnu.org>
+
+       Remove vestiges of REPEATING DATA support.
+       
+       * data-list.c: (struct rpd_num_or_var) Removed.
+       (struct repeating_data_trns) Removed.
+       (cmd_repeating_data) Removed.
+       (find_variable_input_spec) Removed.
+       (parse_num_or_var) Removed.
+       (parse_repeating_data) Removed.
+       (realize_value) Removed.
+       (struct rpd_parse_info) Removed.
+       (rpd_parse_record) Removed.
+       (repeating_data_trns_proc) Removed.
+       (repeating_data_trns_free) Removed.
+       (repeating_data_set_write_case) Removed.
+       (rpd_msg) Removed.
+
+       * inpt-pgm.c: (input_program_source_read) Don't deal with
+       REPEATING DATA.
+
+       * data-list.h: Removed.
+
+       * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Removed
+       data-list.h.
+
+Mon May  1 15:58:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       Remove vestiges of FILE TYPE support. 
+       
+       * data-list.c: (cmd_data_list) Don't check for FILE TYPE.
+       (cmd_repeating_data) Ditto.
+       
+       * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Remove
+       file-type.c, file-type.h.
+
+       * file-type.c: Removed.
+       
+       * file-type.h: Removed.
+
+Wed Apr 26 13:16:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       Improve the way we handle the various parsing "states".  Until now
+       we've hard-coded the state transitions in the command definition
+       file, but that's error-prone and, worse, it's redundant--we can
+       figure out what state we're in anyhow.  We can cleanly handle
+       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
+       
+       * data-list.c: (cmd_data_list) Use in_file_type() or
+       in_input_program() in place of case_source_is_class() or
+       case_source_is_complex().
+
+       * file-type.c: NB: Not really fixed except minimally to compile,
+       because it doesn't work anyway.
+       (in_file_type) New function.
+       (cmd_record_type) No need to check that we're in FILE TYPE.
+       (cmd_end_file_type) Ditto.
+       (var file_type_source_class) Make static.
+
+       * get.c: (cmd_match_files) Check vfm_source instead of pgm_state.
+
+       * inpt-pgm.c: (in_input_program) New function.
+       (cmd_input_program) Rewrite to include nested command processing
+       loop.
+       (cmd_end_input_program) Just return CMD_END_SUBLOOP.
+       (var input_program_source_class) Make static.
+       (cmd_end_case) No need to check that we're in INPUT PROGRAM.
+       (cmd_end_file) Ditto.
+       
+       * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Add
+       file-type.h, inpt-pgm.h.
+
+       * file-type.h: New file.
+
+       * inpt-pgm.h: New file.
+
+Tue Apr 25 13:11:55 2006  Ben Pfaff  <blp@gnu.org>
+
+       * print.c: Don't special-case MS-DOS line terminators.
+       (macro LINE_END_WIDTH) Removed.
+       (alloc_line) Line ends are 1 byte.
+       (print_trns_proc) Just output \n for line end.
+
+Sun Apr 23 22:05:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, get rid
+       of message "titles" and put the message text in `struct error'.
+       Now `struct error' encapsulates a message more properly.
+       
+       * data-list.c: (macro RPD_ERR) Removed.
+       (rpd_msg) New function.  Updated all references to tmsg() to call
+       this function instead.
+
+Sat Apr 15 19:38:13 2006  Ben Pfaff  <blp@gnu.org>
+
+       Remove last users of struct file_ext so we can get rid of it
+       entirely.
+       
+       * data-reader.c: (struct dfm_reader) Change file member from
+       struct file_ext to FILE *.  Updated all references.
+       (dfm_close_reader) Close file with fn_close() instead of
+       fn_close_ext().  Also, make a copy of the file name from the file
+       handle before closing it, because we can't extract it after we
+       close the file.
+       (dfm_open_reader) Open file with fn_open() instead of
+       fn_open_ext().
+
+       * data-writer.c: (struct dfm_writer) Change file member 
+       struct file_ext to FILE *.  Updated all references.
+       (dfm_close_writer) Close file with fn_close() instead of
+       fn_close_ext().  Also, make a copy of the file name from the file
+       handle before closing it, because we can't extract it after we
+       close the file.
+       (dfm_open_writer) Open file with fn_open() instead of
+       fn_open_ext().
+
+Sat Apr 15 18:00:32 2006  Ben Pfaff  <blp@gnu.org>
+
+       * data-list.c: Add prototype to suppress warning for
+       cmd_repeating_data().
+       
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 9cb6b837ec6d4c1c26c55dc7671245cfcc4e62d0..db209be836078494018396feaf61c164a3b8dc39 100644 (file)
@@ -26,3 +26,4 @@ all_q_sources += $(src_language_data_io_built_sources:.c=.q)
 EXTRA_DIST += $(src_language_data_io_built_sources:.c=.q)
 CLEANFILES += $(src_language_data_io_built_sources)
 
+EXTRA_DIST += src/language/data-io/OChangeLog
diff --git a/src/language/dictionary/ChangeLog b/src/language/dictionary/ChangeLog
deleted file mode 100644 (file)
index 20778a2..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-2008-03-16  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6452.  Reviewed by John Darrington.
-
-       * variable-display.c (cmd_variable_width): Fix parsing bug.  Also,
-       limit variable display widths to within range 1 thru 2 *
-       MAX_STRING.
-
-2007-11-11  Ben Pfaff  <blp@gnu.org>
-
-       * sys-file-info.c (display_variables): Fix DISPLAY LABELS.  Thanks
-       to Guido Gay <gay@irer.it> for reporting this bug.
-
-2007-11-03  Ben Pfaff  <blp@gnu.org>
-
-       Allow output files to overwrite input files (bug #21280).
-
-       * apply-dictionary.c (cmd_apply_dictionary): Manage file handle
-       reference counts.
-
-       * sys-file-info.c (cmd_sysfile_info): Manage file handle reference
-       counts.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       Output variable measurement level, alignment, and display width as
-       part of DISPLAY DICTIONARY and SYSFILE INFO output.  Bug #13019.
-       Reviewed by John Darrington.
-       * sys-file-info.c (cmd_sysfile_info): Allow space for new rows of
-       info in output.
-       (display_variables): Ditto.
-       (describe_variable): Output variable measurement level, alignment,
-       and display width as part of DISPLAY DICTIONARY and SYSFILE INFO
-       output.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adapt case sources, sinks, and clients of procedure code to the
-       new infrastructure.
-       
-       * apply-dictionary.c: Now any_reader_open returns a casereader.
-
-       * sys-file-open.c: Now sfm_reader_open returns a casereader.
-
-Sat Feb  3 21:52:35 2007  Ben Pfaff  <blp@gnu.org>
-
-       * vector.c (cmd_vector): Add support for specifying an output
-       format in the short form of the command, fixing bug #18706.
-       Rewrite to get rid of weird data structure and simplify.
-
-       * sys-file-info.c (display_vectors): For DISPLAY VECTORS, display,
-       in addition to the names of vectors, the names, positions, and
-       print formats of the variables contained in the vectors.
-
-Wed Dec 13 20:59:54 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add delete-variables.c
-
-       * delete-variables.c (cmd_delete_variables): New function, in new
-       file.
-       
-Sun Dec 10 13:55:58 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sys-file-info.c (cmd_sysfile_info): Report floating-point format
-       used in system file.
-
-Sat Dec  9 18:44:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable-label.c: Move to src/data/variable.c.
-       
-       * vector.c (cmd_vector): Use PV_SAME_WIDTH in parse_variables
-       call, because string variables in a vector must have the same
-       width.
-
-Thu Nov 30 22:06:21 2006  Ben Pfaff  <blp@gnu.org>
-
-       * value-labels.c (get_label): Allow commas between values and
-       labels and between value labels.  Fixes bug #18303.  Thanks to
-       John Darrington for reporting this bug.
-
-Sat Nov  4 16:04:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * numeric.c: (cmd_string) Check that output format is valid.
-       Simplify parsing.
-
-Wed Nov  1 20:50:54 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sys-file-info.c: (cmd_display) Use compare_var_ptr_names to
-       compare "struct variable **"s, not compare_var_names.  Fixes bug
-       #17423.
-
-Sat May  6 19:03:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       * apply-dictionary.c: (cmd_apply_dictionary) Use new function
-       val_labs_can_set_width().
-
-Sat May  6 10:43:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       the output code for SPLIT FILE groups in procedure.c, which really
-       shouldn't be doing any output.  Move it into the individual
-       procedures instead.  This also adds some flexibility.
-
-       * split-file.c (output_split_file_values): New function.
-
-Sat May  6 10:42:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       the output code for SPLIT FILE groups in procedure.c, which really
-       shouldn't be doing any output.  Move it into the individual
-       procedures instead.  This also adds some flexibility.
-
-       * automake.mk (src_language_dictionary_libcmddict_a_SOURCES): Add
-       split-file.h.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/dictionary/OChangeLog b/src/language/dictionary/OChangeLog
new file mode 100644 (file)
index 0000000..20778a2
--- /dev/null
@@ -0,0 +1,118 @@
+2008-03-16  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6452.  Reviewed by John Darrington.
+
+       * variable-display.c (cmd_variable_width): Fix parsing bug.  Also,
+       limit variable display widths to within range 1 thru 2 *
+       MAX_STRING.
+
+2007-11-11  Ben Pfaff  <blp@gnu.org>
+
+       * sys-file-info.c (display_variables): Fix DISPLAY LABELS.  Thanks
+       to Guido Gay <gay@irer.it> for reporting this bug.
+
+2007-11-03  Ben Pfaff  <blp@gnu.org>
+
+       Allow output files to overwrite input files (bug #21280).
+
+       * apply-dictionary.c (cmd_apply_dictionary): Manage file handle
+       reference counts.
+
+       * sys-file-info.c (cmd_sysfile_info): Manage file handle reference
+       counts.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       Output variable measurement level, alignment, and display width as
+       part of DISPLAY DICTIONARY and SYSFILE INFO output.  Bug #13019.
+       Reviewed by John Darrington.
+       * sys-file-info.c (cmd_sysfile_info): Allow space for new rows of
+       info in output.
+       (display_variables): Ditto.
+       (describe_variable): Output variable measurement level, alignment,
+       and display width as part of DISPLAY DICTIONARY and SYSFILE INFO
+       output.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adapt case sources, sinks, and clients of procedure code to the
+       new infrastructure.
+       
+       * apply-dictionary.c: Now any_reader_open returns a casereader.
+
+       * sys-file-open.c: Now sfm_reader_open returns a casereader.
+
+Sat Feb  3 21:52:35 2007  Ben Pfaff  <blp@gnu.org>
+
+       * vector.c (cmd_vector): Add support for specifying an output
+       format in the short form of the command, fixing bug #18706.
+       Rewrite to get rid of weird data structure and simplify.
+
+       * sys-file-info.c (display_vectors): For DISPLAY VECTORS, display,
+       in addition to the names of vectors, the names, positions, and
+       print formats of the variables contained in the vectors.
+
+Wed Dec 13 20:59:54 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add delete-variables.c
+
+       * delete-variables.c (cmd_delete_variables): New function, in new
+       file.
+       
+Sun Dec 10 13:55:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sys-file-info.c (cmd_sysfile_info): Report floating-point format
+       used in system file.
+
+Sat Dec  9 18:44:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable-label.c: Move to src/data/variable.c.
+       
+       * vector.c (cmd_vector): Use PV_SAME_WIDTH in parse_variables
+       call, because string variables in a vector must have the same
+       width.
+
+Thu Nov 30 22:06:21 2006  Ben Pfaff  <blp@gnu.org>
+
+       * value-labels.c (get_label): Allow commas between values and
+       labels and between value labels.  Fixes bug #18303.  Thanks to
+       John Darrington for reporting this bug.
+
+Sat Nov  4 16:04:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * numeric.c: (cmd_string) Check that output format is valid.
+       Simplify parsing.
+
+Wed Nov  1 20:50:54 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sys-file-info.c: (cmd_display) Use compare_var_ptr_names to
+       compare "struct variable **"s, not compare_var_names.  Fixes bug
+       #17423.
+
+Sat May  6 19:03:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       * apply-dictionary.c: (cmd_apply_dictionary) Use new function
+       val_labs_can_set_width().
+
+Sat May  6 10:43:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       the output code for SPLIT FILE groups in procedure.c, which really
+       shouldn't be doing any output.  Move it into the individual
+       procedures instead.  This also adds some flexibility.
+
+       * split-file.c (output_split_file_values): New function.
+
+Sat May  6 10:42:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       the output code for SPLIT FILE groups in procedure.c, which really
+       shouldn't be doing any output.  Move it into the individual
+       procedures instead.  This also adds some flexibility.
+
+       * automake.mk (src_language_dictionary_libcmddict_a_SOURCES): Add
+       split-file.h.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index a33a84f978b374c627ea31add0e3f689ed2133b4..825832a26cd966556da4426b276f6055b1b61678 100644 (file)
@@ -17,3 +17,4 @@ language_dictionary_sources = \
  src/language/dictionary/variable-display.c \
  src/language/dictionary/weight.c
 
+EXTRA_DIST += src/language/dictionary/OChangeLog
diff --git a/src/language/expressions/ChangeLog b/src/language/expressions/ChangeLog
deleted file mode 100644 (file)
index 18c9441..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6512.
-
-       * evaluate.c (expr_evaluate): Use gsl_finite instead of finite, as
-       a stopgap measure for portability until appropriate gnulib modules
-       are available.
-
-       * helpers.h (copy_string): Ditto.
-
-2007-10-12  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6224.
-
-       * helpers.c: Don't need our own trunc function implementation
-       anymore, since we now use the one from gnulib.
-
-2007-07-17  Ben Pfaff  <blp@gnu.org>
-
-       Patch #19335.  Reviewed by John Darrington.
-
-       * evaluate.h.pl: Use strict and all warnings.  Fix warnings that
-       this triggers.
-
-       * evaluate.inc.pl: Ditto.
-
-       * generate.pl: Ditto.
-
-       * operations.h.pl: Ditto.
-
-       * optimize.inc.pl: Ditto.
-
-       * parse.inc.pl: Ditto.
-
-2007-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * parse.c (expr_get_function): New function.
-       (expr_get_function_cnt): New function.
-       (expr_operation_get_name): New function.
-       (expr_operation_get_prototype): New function.
-       (expr_operation_get_arg_cnt): New function.
-
-Thu Feb  1 06:59:27 2007  Ben Pfaff  <blp@gnu.org>
-
-       * parse.c (parse_function): Accept TO in any case for use with
-       n-ary functions.  Fixes bug #18923.  Thanks to John Darrington for
-       reporting this bug.
-
-Sat Dec 16 12:20:14 2006  Ben Pfaff  <blp@gnu.org>
-
-       * operations.def: Reverse order of arguments to DATEDIFF, for
-       compatibility.  Thanks to Daniel Williams
-       <Daniel.E.Williams@state.or.us> for reporting this bug.
-
-Wed Dec 13 19:30:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       Implement support for DATESUM, DATEDIFF expression functions.  See
-       patch #5637.
-       
-       * helpers.c (enum date_unit): New enum.
-       [!HAVE_TRUNC] (trunc): New function.
-       (recognize_unit): New function.
-       (year_diff): New function.
-       (month_diff): New function.
-       (quarter_diff): New function.
-       (date_unit_duration): New function.
-       (expr_date_difference): New function.
-       (enum date_sum_method): New function.
-       (recognize_method): New function.
-       (add_months): New function.
-       (expr_date_sum): New function.
-       
-       * operations.def: Implement DATESUM, DATEDIFF functions.  Mark
-       VALUELABEL no_abbrev.
-
-Sun Dec 10 16:49:33 2006  Ben Pfaff  <blp@gnu.org>
-
-       * operations.def: Implement VALUELABEL function.  Add DATEDIFF,
-       DATESUM unimplemented stubs.
-
-       * parse.c (type_coercion_core): Add support for OP_var type, which
-       is a name for a numeric or string variable.
-       (is_compatible) New function.
-       (check_operator) Only require values to be compatible with their
-       expected types, not identical.
-       (is_valid_node) Ditto.
-       (compare_names) Always return mismatch if the command name can't
-       be abbreviated.
-       (lookup_function_helper) Pass the new OPF_NO_ABBREV flag to the
-       comparison function.
-
-       * generate.pl (init_all_types): Add support for a type just called
-       "var" that may be a numeric or string variable name.  Also, add a
-       no_abbrev option that prevents a function name from being
-       abbreviated (in case of naming conflict otherwise).
-       
-       * parse.inc.pl: Output OPF_NO_ABBREV flag.
-
-       * private.h: Add OPF_NO_ABBREV flag.
-
-Wed Jul 12 21:03:17 2006  Ben Pfaff  <blp@gnu.org>
-
-       * evaluate.c (cmd_debug_evaluate): Don't try to resize a null
-       case.
-
-Fri Jun  9 13:59:15 2006  Ben Pfaff  <blp@gnu.org>
-
-       Reform string library.
-       
-       * generate.pl (init_all_types): `struct fixed_string' is now
-       `struct substring'.
-
-Sun May  7 10:05:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * evaluate.c: Removed call to copy_mangle, and replaced with the
-       original buf_copy_rpad.
-
-Mon May  1 15:11:48 2006  Ben Pfaff  <blp@gnu.org>
-
-       Prohibit LAG following TEMPORARY.  This both matches SPSS behavior
-       and fixes a bug: we saved the cases for LAG before TEMPORARY but
-       allowed access to variables created afterward anyhow (which could
-       cause a segfault).
-
-       * generate.pl: Parse "perm_only" flag on operations.
-
-       * operations.def: Add "perm_only" flag to LAG operations.
-
-       * parse.c: Disallow OPF_PERM_ONLY operations after TEMPORARY.
-
-       * parse.inc.pl: Output OPF_PERM_ONLY flag for "perm_only"
-       operations.
-
-       * private.h: Add OPF_PERM_ONLY flag.
-
-Sun Apr 23 22:06:45 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, get rid
-       of message "titles" and put the message text in `struct error'.
-       Now `struct error' encapsulates a message more properly.
-       
-       * helpers.c: (expr_error) Use err_msg() instead of err_vmsg().
-       Format message ourselves.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/expressions/OChangeLog b/src/language/expressions/OChangeLog
new file mode 100644 (file)
index 0000000..18c9441
--- /dev/null
@@ -0,0 +1,147 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * evaluate.c (expr_evaluate): Use gsl_finite instead of finite, as
+       a stopgap measure for portability until appropriate gnulib modules
+       are available.
+
+       * helpers.h (copy_string): Ditto.
+
+2007-10-12  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6224.
+
+       * helpers.c: Don't need our own trunc function implementation
+       anymore, since we now use the one from gnulib.
+
+2007-07-17  Ben Pfaff  <blp@gnu.org>
+
+       Patch #19335.  Reviewed by John Darrington.
+
+       * evaluate.h.pl: Use strict and all warnings.  Fix warnings that
+       this triggers.
+
+       * evaluate.inc.pl: Ditto.
+
+       * generate.pl: Ditto.
+
+       * operations.h.pl: Ditto.
+
+       * optimize.inc.pl: Ditto.
+
+       * parse.inc.pl: Ditto.
+
+2007-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * parse.c (expr_get_function): New function.
+       (expr_get_function_cnt): New function.
+       (expr_operation_get_name): New function.
+       (expr_operation_get_prototype): New function.
+       (expr_operation_get_arg_cnt): New function.
+
+Thu Feb  1 06:59:27 2007  Ben Pfaff  <blp@gnu.org>
+
+       * parse.c (parse_function): Accept TO in any case for use with
+       n-ary functions.  Fixes bug #18923.  Thanks to John Darrington for
+       reporting this bug.
+
+Sat Dec 16 12:20:14 2006  Ben Pfaff  <blp@gnu.org>
+
+       * operations.def: Reverse order of arguments to DATEDIFF, for
+       compatibility.  Thanks to Daniel Williams
+       <Daniel.E.Williams@state.or.us> for reporting this bug.
+
+Wed Dec 13 19:30:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       Implement support for DATESUM, DATEDIFF expression functions.  See
+       patch #5637.
+       
+       * helpers.c (enum date_unit): New enum.
+       [!HAVE_TRUNC] (trunc): New function.
+       (recognize_unit): New function.
+       (year_diff): New function.
+       (month_diff): New function.
+       (quarter_diff): New function.
+       (date_unit_duration): New function.
+       (expr_date_difference): New function.
+       (enum date_sum_method): New function.
+       (recognize_method): New function.
+       (add_months): New function.
+       (expr_date_sum): New function.
+       
+       * operations.def: Implement DATESUM, DATEDIFF functions.  Mark
+       VALUELABEL no_abbrev.
+
+Sun Dec 10 16:49:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       * operations.def: Implement VALUELABEL function.  Add DATEDIFF,
+       DATESUM unimplemented stubs.
+
+       * parse.c (type_coercion_core): Add support for OP_var type, which
+       is a name for a numeric or string variable.
+       (is_compatible) New function.
+       (check_operator) Only require values to be compatible with their
+       expected types, not identical.
+       (is_valid_node) Ditto.
+       (compare_names) Always return mismatch if the command name can't
+       be abbreviated.
+       (lookup_function_helper) Pass the new OPF_NO_ABBREV flag to the
+       comparison function.
+
+       * generate.pl (init_all_types): Add support for a type just called
+       "var" that may be a numeric or string variable name.  Also, add a
+       no_abbrev option that prevents a function name from being
+       abbreviated (in case of naming conflict otherwise).
+       
+       * parse.inc.pl: Output OPF_NO_ABBREV flag.
+
+       * private.h: Add OPF_NO_ABBREV flag.
+
+Wed Jul 12 21:03:17 2006  Ben Pfaff  <blp@gnu.org>
+
+       * evaluate.c (cmd_debug_evaluate): Don't try to resize a null
+       case.
+
+Fri Jun  9 13:59:15 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reform string library.
+       
+       * generate.pl (init_all_types): `struct fixed_string' is now
+       `struct substring'.
+
+Sun May  7 10:05:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * evaluate.c: Removed call to copy_mangle, and replaced with the
+       original buf_copy_rpad.
+
+Mon May  1 15:11:48 2006  Ben Pfaff  <blp@gnu.org>
+
+       Prohibit LAG following TEMPORARY.  This both matches SPSS behavior
+       and fixes a bug: we saved the cases for LAG before TEMPORARY but
+       allowed access to variables created afterward anyhow (which could
+       cause a segfault).
+
+       * generate.pl: Parse "perm_only" flag on operations.
+
+       * operations.def: Add "perm_only" flag to LAG operations.
+
+       * parse.c: Disallow OPF_PERM_ONLY operations after TEMPORARY.
+
+       * parse.inc.pl: Output OPF_PERM_ONLY flag for "perm_only"
+       operations.
+
+       * private.h: Add OPF_PERM_ONLY flag.
+
+Sun Apr 23 22:06:45 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, get rid
+       of message "titles" and put the message text in `struct error'.
+       Now `struct error' encapsulates a message more properly.
+       
+       * helpers.c: (expr_error) Use err_msg() instead of err_vmsg().
+       Format message ourselves.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 630445dfb7999862c4f4aae606ea3235e618721e..bc4e830d7ffefc010cf3283d6f237fb8dc58a880 100644 (file)
@@ -37,3 +37,5 @@ generate_from_pl = $(MKDIR_P) `dirname $@` && \
 
 .inc.pl.inc:
        $(generate_from_pl)
+
+EXTRA_DIST += src/language/expressions/OChangeLog
diff --git a/src/language/lexer/ChangeLog b/src/language/lexer/ChangeLog
deleted file mode 100644 (file)
index aea10c5..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c (lex_match_id_n): New function.
-       (lex_match_id): Reimplement in terms of lex_match_id_n.
-
-2007-08-16  Ben Pfaff  <blp@gnu.org>
-
-       Implement journaling.  Bug #17240.
-       
-       * lexer.c (lex_get_line_raw): Pass the line read to journal_write.
-
-2007-06-03  Ben Pfaff  <blp@gnu.org>
-
-       Implement missing functions for subcommand integer lists.
-       
-       * subcommand-list.c (subc_list_int_create): New function.
-       (subc_list_int_push): New function.
-       (subc_list_int_count): New function.
-       (subc_list_int_at): New function.
-       (subc_list_int_destroy): New function.
-
-2007-05-06  Ben Pfaff  <blp@gnu.org>
-
-       Abstract the documents within a dictionary a little better.
-       Thanks to John Darrington for suggestion, initial version, and
-       review.  Patch #5917.
-
-       * lexer.c (lex_entire_line): Add const to parameter.
-       (lex_entire_line_ds): Ditto.
-       (lex_rest_of_line): Drop end_dot parameter.  Update all callers to
-       use lex_end_dot instead.
-       (lex_end_dot): New function.
-
-2007-05-03  John Darrington <john@darrington.wattle.id.au>
-       
-       * lexer.c lexer.h: Added lex_is_string function.
-       
-2007-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c: Fully support lists of integer values.  Add support for
-       lists of string values.  Add some more needed declarations to
-       headers.
-
-Fri Feb 16 11:14:42 2007  Ben Pfaff  <blp@gnu.org>
-
-       Better support cross-compiling by using CC_FOR_BUILD and
-       EXEEXT_FOR_BUILD for q2c.
-       
-       * automake.mk: Use EXEEXT_FOR_BUILD and CC_FOR_BUILD to build and
-       clean q2c.
-
-       * q2c.c: Avoid external dependencies, besides the standard C
-       library.
-
-Sun Feb 11 20:31:51 2007  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c: Make q2c link under mingw32, by eliminating the
-       dependency on localtime.  Gnulib replaces localtime by a fixed
-       version, but we don't link q2c against gnulib.  q2c only uses
-       localtime to put the time of processing into the output file,
-       which I've never in practice found to be useful, so the patch just
-       drops this feature.
-
-Wed Dec 13 21:00:24 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable-parser.c (parse_variables): If not successful, set
-       output pointer to NULL and output count to 0.
-
-Sat Dec  9 18:46:11 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable-parser.h: New PV_SAME_WIDTH variable parsing option.
-
-       * variable-parser.c (add_variable): Implement new PV_SAME_WIDTH
-       option.
-       (parse_var_set_vars) Ditto.
-       (array_var_set_lookup_var_idx) Use new var_create, var_destroy
-       functions.
-
-Sat Dec  2 21:19:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       General clean-up.
-       
-       * lexer.c: (lex_token_name) Don't use a static buffer or, rather,
-       use a separate static buffer for each possible answer.
-       (lex_token_representation) Now use lex_token_name as building
-       block.  Previously this broke lex_force_match because it uses
-       lex_token_name in a call to lex_error, which in turn uses
-       lex_token_representation.
-       (lex_force_match_id) Use lex_match_id as building block, to
-       simplify.
-       (parse_id) Rewrite to work with modified lex_id_to_token and
-       lex_id_get_length.  The computation of rest_of_line is a bit of an
-       abomination but it will get fixed later.
-       
-Sat Dec  2 20:16:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c (struct lexer): Change function signature for
-       `read_line' to take an "enum getl_syntax *" instead of "bool *".
-       (lex_create) Ditto, for argument.
-       (lex_preprocess_line) New function.
-       (lex_get_line_raw) New arg, to allow caller to obtain getl_syntax
-       of the line read.
-       (lex_get_line) Use lex_get_line_raw and lex_preprocess_line to
-       simplify.
-
-Sun Nov 19 09:20:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       * range-parser.c (parse_num_range): Because data_in takes an enum
-       fmt_type now, not a struct fmt_spec, change the type of the
-       corresponding argument.  Updated all callers.
-       (parse_number) Ditto.
-
-Sun Nov 12 06:34:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * format-parser.c format-parser.h lexer.c lexer.h q2c.c range-parser.c
-         range-parser.h subcommand-list.c variable-parser.c
-         variable-parser.h:
-
-       Encapsulated the lexer into an object, and updated everything
-       accordingly.
-
-Tue Oct 31 18:09:32 2006  Ben Pfaff  <blp@gnu.org>
-
-       * range-parser.c (parse_number): Fix error message.
-
-Sat Oct 28 16:17:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * lexer.c lexer.h: Added a line_buffer (previously an external
-       reference called getl_buf). 
-
-Thu Oct 26 20:18:03 2006  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c (parse_string): Make lexing of binary, hex, and octal
-       strings work (fixes bug #17948).  Allow null bytes in strings, now
-       that there's a use for them (see tests/formats/float-format.sh).
-
-Sun Jul 16 21:03:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       * format-parser.h: New file.  Moved prototypes of format-parser.c
-       functions here, from lexer.h.
-
-       * format-parser.c: (parse_format_specifier_name) Rewrote and
-       changed semantics.
-       (parse_abstract_format_specifier) New function.
-       (parse_format_specifier) Rewrote in terms of
-       parse_abstract_format_specifier.  Removed "options" parameter, so
-       callers had to be updated.  Callers that didn't want messages
-       emitted were changed to use the new msg_disable/msg_enable
-       functions.
-
-       * variables-parser.c: (parse_variables_pool) New function.
-       (register_vars_pool) New function.
-       (parse_DATA_LIST_vars_pool) New function.
-       (parse_mixed_vars_pool) Use register_vars_pool.  Assert that
-       PV_APPEND is not in the options.
-       
-Sat Jul  1 17:40:38 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #11612, "q2c documentation does not agree with code".
-       
-       * q2c.c (parse_subcommand): Make "+" mean ARITY_MANY, absence
-       mean ARITY_ONCE_ONLY.
-
-Tue Jul  4 09:45:12 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
-       ALL) and additional underlying system file issues.
-       
-       * variable-parser.c (add_variable): Move test earlier for clarity
-       and efficiency.
-       (parse_var_set_vars) Accept ALL within a variable list, not just
-       at the beginning of one.
-
-Tue Jun 27 22:54:30 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk (src_language_lexer_liblexer_a_SOURCES): Add
-       variable-parser.h.
-
-Tue Jun 27 19:15:33 2006  Ben Pfaff  <blp@gnu.org>
-
-       Add auxiliary data pointer to q2c parse_<command> function, and
-       pass it along to the custom parser functions.
-
-       Updated all uses of custom functions in all the existing .q files.
-       
-       * q2c.c (dump_declarations): Include auxiliary parameter in
-       function prototypes.
-       (dump_subcommand) Include aux arg in calls to custom functions.
-       (dump_parser) Include aux param in parse_<command> function
-       definition.  Include aux arg in calls to custom functions.
-
-Tue Jun 27 12:07:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       * variable-parser.h: New header.  Moved the var_set and variable
-       parsing declarations here.
-
-       * q2c.c (main): Emit include for new variable-parser.h header.
-
-Sun Jun 25 22:41:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c (dump_free): For SBC_DBL_LIST, enclose the output code in
-       curly braces, because it contains a variable declaration and might
-       not be at the beginning of a block.
-
-Fri Jun  9 14:02:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       Reform string library.
-       
-       * q2c.c (dump_subcommand): ds_c_str() became ds_cstr(), in
-       generated code.
-
-Wed Apr 26 13:30:41 2006  Ben Pfaff  <blp@gnu.org>
-
-       * lexer.c: (lex_discard_rest_of_command) New function.
-
-Mon Apr 24 14:12:08 2006  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c: Use exit.h from gnulib instead of checking for and
-       defining EXIT_SUCCESS and EXIT_FAILURE by hand.
-
-Sat Apr 15 14:30:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c: Change DEBUGGING macro to DUMP_TOKENS for clarity and to
-       avoid dumping all the tokens to stdout when --enable-debug is
-       passed to configure.
-
-Fri Mar 10 08:29:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       * q2c.c: (dump_free) Free proper member for var list, instead of
-       hard-coding to v_variables.  Thanks to Jason Stover for reporting
-       this bug.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/lexer/OChangeLog b/src/language/lexer/OChangeLog
new file mode 100644 (file)
index 0000000..aea10c5
--- /dev/null
@@ -0,0 +1,235 @@
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c (lex_match_id_n): New function.
+       (lex_match_id): Reimplement in terms of lex_match_id_n.
+
+2007-08-16  Ben Pfaff  <blp@gnu.org>
+
+       Implement journaling.  Bug #17240.
+       
+       * lexer.c (lex_get_line_raw): Pass the line read to journal_write.
+
+2007-06-03  Ben Pfaff  <blp@gnu.org>
+
+       Implement missing functions for subcommand integer lists.
+       
+       * subcommand-list.c (subc_list_int_create): New function.
+       (subc_list_int_push): New function.
+       (subc_list_int_count): New function.
+       (subc_list_int_at): New function.
+       (subc_list_int_destroy): New function.
+
+2007-05-06  Ben Pfaff  <blp@gnu.org>
+
+       Abstract the documents within a dictionary a little better.
+       Thanks to John Darrington for suggestion, initial version, and
+       review.  Patch #5917.
+
+       * lexer.c (lex_entire_line): Add const to parameter.
+       (lex_entire_line_ds): Ditto.
+       (lex_rest_of_line): Drop end_dot parameter.  Update all callers to
+       use lex_end_dot instead.
+       (lex_end_dot): New function.
+
+2007-05-03  John Darrington <john@darrington.wattle.id.au>
+       
+       * lexer.c lexer.h: Added lex_is_string function.
+       
+2007-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c: Fully support lists of integer values.  Add support for
+       lists of string values.  Add some more needed declarations to
+       headers.
+
+Fri Feb 16 11:14:42 2007  Ben Pfaff  <blp@gnu.org>
+
+       Better support cross-compiling by using CC_FOR_BUILD and
+       EXEEXT_FOR_BUILD for q2c.
+       
+       * automake.mk: Use EXEEXT_FOR_BUILD and CC_FOR_BUILD to build and
+       clean q2c.
+
+       * q2c.c: Avoid external dependencies, besides the standard C
+       library.
+
+Sun Feb 11 20:31:51 2007  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c: Make q2c link under mingw32, by eliminating the
+       dependency on localtime.  Gnulib replaces localtime by a fixed
+       version, but we don't link q2c against gnulib.  q2c only uses
+       localtime to put the time of processing into the output file,
+       which I've never in practice found to be useful, so the patch just
+       drops this feature.
+
+Wed Dec 13 21:00:24 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable-parser.c (parse_variables): If not successful, set
+       output pointer to NULL and output count to 0.
+
+Sat Dec  9 18:46:11 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable-parser.h: New PV_SAME_WIDTH variable parsing option.
+
+       * variable-parser.c (add_variable): Implement new PV_SAME_WIDTH
+       option.
+       (parse_var_set_vars) Ditto.
+       (array_var_set_lookup_var_idx) Use new var_create, var_destroy
+       functions.
+
+Sat Dec  2 21:19:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       General clean-up.
+       
+       * lexer.c: (lex_token_name) Don't use a static buffer or, rather,
+       use a separate static buffer for each possible answer.
+       (lex_token_representation) Now use lex_token_name as building
+       block.  Previously this broke lex_force_match because it uses
+       lex_token_name in a call to lex_error, which in turn uses
+       lex_token_representation.
+       (lex_force_match_id) Use lex_match_id as building block, to
+       simplify.
+       (parse_id) Rewrite to work with modified lex_id_to_token and
+       lex_id_get_length.  The computation of rest_of_line is a bit of an
+       abomination but it will get fixed later.
+       
+Sat Dec  2 20:16:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c (struct lexer): Change function signature for
+       `read_line' to take an "enum getl_syntax *" instead of "bool *".
+       (lex_create) Ditto, for argument.
+       (lex_preprocess_line) New function.
+       (lex_get_line_raw) New arg, to allow caller to obtain getl_syntax
+       of the line read.
+       (lex_get_line) Use lex_get_line_raw and lex_preprocess_line to
+       simplify.
+
+Sun Nov 19 09:20:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       * range-parser.c (parse_num_range): Because data_in takes an enum
+       fmt_type now, not a struct fmt_spec, change the type of the
+       corresponding argument.  Updated all callers.
+       (parse_number) Ditto.
+
+Sun Nov 12 06:34:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * format-parser.c format-parser.h lexer.c lexer.h q2c.c range-parser.c
+         range-parser.h subcommand-list.c variable-parser.c
+         variable-parser.h:
+
+       Encapsulated the lexer into an object, and updated everything
+       accordingly.
+
+Tue Oct 31 18:09:32 2006  Ben Pfaff  <blp@gnu.org>
+
+       * range-parser.c (parse_number): Fix error message.
+
+Sat Oct 28 16:17:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * lexer.c lexer.h: Added a line_buffer (previously an external
+       reference called getl_buf). 
+
+Thu Oct 26 20:18:03 2006  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c (parse_string): Make lexing of binary, hex, and octal
+       strings work (fixes bug #17948).  Allow null bytes in strings, now
+       that there's a use for them (see tests/formats/float-format.sh).
+
+Sun Jul 16 21:03:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       * format-parser.h: New file.  Moved prototypes of format-parser.c
+       functions here, from lexer.h.
+
+       * format-parser.c: (parse_format_specifier_name) Rewrote and
+       changed semantics.
+       (parse_abstract_format_specifier) New function.
+       (parse_format_specifier) Rewrote in terms of
+       parse_abstract_format_specifier.  Removed "options" parameter, so
+       callers had to be updated.  Callers that didn't want messages
+       emitted were changed to use the new msg_disable/msg_enable
+       functions.
+
+       * variables-parser.c: (parse_variables_pool) New function.
+       (register_vars_pool) New function.
+       (parse_DATA_LIST_vars_pool) New function.
+       (parse_mixed_vars_pool) Use register_vars_pool.  Assert that
+       PV_APPEND is not in the options.
+       
+Sat Jul  1 17:40:38 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #11612, "q2c documentation does not agree with code".
+       
+       * q2c.c (parse_subcommand): Make "+" mean ARITY_MANY, absence
+       mean ARITY_ONCE_ONLY.
+
+Tue Jul  4 09:45:12 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
+       ALL) and additional underlying system file issues.
+       
+       * variable-parser.c (add_variable): Move test earlier for clarity
+       and efficiency.
+       (parse_var_set_vars) Accept ALL within a variable list, not just
+       at the beginning of one.
+
+Tue Jun 27 22:54:30 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk (src_language_lexer_liblexer_a_SOURCES): Add
+       variable-parser.h.
+
+Tue Jun 27 19:15:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       Add auxiliary data pointer to q2c parse_<command> function, and
+       pass it along to the custom parser functions.
+
+       Updated all uses of custom functions in all the existing .q files.
+       
+       * q2c.c (dump_declarations): Include auxiliary parameter in
+       function prototypes.
+       (dump_subcommand) Include aux arg in calls to custom functions.
+       (dump_parser) Include aux param in parse_<command> function
+       definition.  Include aux arg in calls to custom functions.
+
+Tue Jun 27 12:07:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       * variable-parser.h: New header.  Moved the var_set and variable
+       parsing declarations here.
+
+       * q2c.c (main): Emit include for new variable-parser.h header.
+
+Sun Jun 25 22:41:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c (dump_free): For SBC_DBL_LIST, enclose the output code in
+       curly braces, because it contains a variable declaration and might
+       not be at the beginning of a block.
+
+Fri Jun  9 14:02:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reform string library.
+       
+       * q2c.c (dump_subcommand): ds_c_str() became ds_cstr(), in
+       generated code.
+
+Wed Apr 26 13:30:41 2006  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c: (lex_discard_rest_of_command) New function.
+
+Mon Apr 24 14:12:08 2006  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c: Use exit.h from gnulib instead of checking for and
+       defining EXIT_SUCCESS and EXIT_FAILURE by hand.
+
+Sat Apr 15 14:30:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c: Change DEBUGGING macro to DUMP_TOKENS for clarity and to
+       avoid dumping all the tokens to stdout when --enable-debug is
+       passed to configure.
+
+Fri Mar 10 08:29:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       * q2c.c: (dump_free) Free proper member for var list, instead of
+       hard-coding to v_variables.  Thanks to Jason Stover for reporting
+       this bug.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index f8d6996349752cb186cb31b040022d533710bb64..e0efbb66b8c9bbf1d12b1f59485a20a6a5c295b4 100644 (file)
@@ -21,3 +21,5 @@ src/language/lexer/q2c$(EXEEXT_FOR_BUILD): $(top_srcdir)/src/language/lexer/q2c.
 
 
 CLEANFILES += src/language/lexer/q2c$(EXEEXT_FOR_BUILD)
+
+EXTRA_DIST += src/language/lexer/OChangeLog
diff --git a/src/language/stats/ChangeLog b/src/language/stats/ChangeLog
deleted file mode 100644 (file)
index 9dfdb06..0000000
+++ /dev/null
@@ -1,644 +0,0 @@
-2008-07-24  Jason H Stover  <jhs@math.gcsu.edu>
-
-       * glm.q (run_glm): Dropped weight argument.
-
-2008-07-22  Jason H Stover  <jhs@math.gcsu.edu>
-
-       * glm.q (run_glm): Re-written to form covariance matrix rather
-       than store entire data set in memory.
-
-       * glm.q (data_pass_one): Renamed prepare_categories() to
-       data_pass_one(). Accumulate mean and variance.
-
-2008-06-21  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (reg_stats_coeff): Use new accessor function
-       pspp_coeff_get_sd. Fixed bug 23567. No longer call compute_moments
-       in run_regression. Pass entire design_matrix to pspp_linreg ().
-
-2008-05-29  John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q: Fixed bug where incorrect levels of dereferencing
-       were applied to pointers.
-
-2008-04-09  John Darrington <john@darrington.wattle.id.au>
-
-       * regression.q: Fix display of degrees of freedom.
-
-2008-04-08  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (identify_indep_vars): Don't panic unless
-       n_indep_vars is 0.
-
-2008-03-16  Ben Pfaff  <blp@gnu.org>
-
-       Bug #22037.  Thanks to John Darrington for reporting this bug.
-       
-       * crosstabs.q (calc_general): Only the short string prefix of long
-       string variables are tabulated, so we must not copy or zero out
-       more data than that.
-
-2008-03-10  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (run_regression): Removed code for EXPORT
-       subcommand. Remove use of coefficient 0 as the intercept.
-
-2008-02-14  John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q: Fixed counts of missing variables.  Thanks to 
-       Jason Stover for reporting this problem.
-
-2008-01-02  John Darrington <john@darrington.wattle.id.au>
-
-       *  binomial.c chisquare.c examine.q frequencies.q oneway.q regression.q : updated
-       all users of var_get_value_name to use replacement function var_append_value_name.
-
-2007-12-07  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6302.
-
-       * crosstabs.q (precalc): Initialize data structures even if the
-       first case cannot be read.  
-
-       * frequencies.q (precalc): Ditto.
-
-2007-11-03  Ben Pfaff  <blp@gnu.org>
-
-       Allow output files to overwrite input files (bug #21280).
-
-       * aggregate.c (cmd_aggregate): Manage file handle reference
-       counts.
-
-       * correlations.q (internal_cmd_frequencies): Ditto.
-       (cor_custom_matrix): Ditto.
-
-       * regression.q (regression_custom_export): Ditto.
-       (cmd_regression): Ditto.
-
-2007-10-12  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c (flip_file): No need to conditionally substitute for
-       "fseeko" and "off_t" manually anymore, as gnulib takes care of it
-       for us.
-
-2007-09-21  Jason Stover  <jhs@wonko.gcsu.edu>
-
-       * regression.q (run_regression): Partial fix of memory leak, bug
-       21056.
-
-2007-09-19  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #21108.
-       
-       * aggregate.c (cmd_aggregate): Destroy casereader consistently,
-       even if casereader fails.
-
-       * examine.q (run_examine): Ditto.
-        
-       * glm.q (run_glm): Ditto.
-
-       * oneway.q (run_oneway): Ditto.
-
-       * regression.q (run_regression): Ditto.
-
-       * t-test.q (calculate): Ditto.
-
-       * descriptives.c (calc_descriptives): Ditto.  Also avoid
-       gratuitous casereader_clone.
-
-2007-09-13  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (cmd_regression): Move declaration of models in to
-       definition of cmd_regression.
-
-       * regression.q (run_regression): Free mom to fix memory leak.
-
-2007-09-12  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q (postcalc): Free sorted_tab and the structures that
-       it points to, to plug a memory leak.  Fixes bug #20910.  Thanks to
-       John Darrington for reporting this bug and for review.
-
-2007-09-04  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q (cmd_crosstabs): Free xtab and the structures that
-       it points to, to plug a memory leak.  Fixes bug #18315.
-
-2007-08-15  Jason Stover  <jhs@wonko.gcsu.edu>
-
-       * regression.q (identify_indep_vars): Print an error if dependent
-       and independent variables are the same. Fixes bug 19819.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c: Drop use of dict_get_compacted_dict_index_to_case_index
-       and just use the ordinary case indexes.  There seemed to be no
-       reason for the former method.
-
-2007-08-03  Ben Pfaff  <blp@gnu.org>
-
-       * rank.q (rank_cmd): Instead of sorting by SPLIT FILE vars, group
-       by them.  Fixes bug #17239.
-       Reviewed by John Darrington.
-
-2007-08-01  Ben Pfaff  <blp@gnu.org>
-
-       Clean up handling of median, by treating it almost like any other
-       percentile.  Fixes bug #17424.  Thanks to John Darrington for
-       review.
-       * frequencies.q (internal_cmd_frequencies): Fix handling of bit
-       masks for `stats' variable.  If median is selected, turn it off
-       and add a 50th percentile.
-       (add_percentile): Simplify code a little.
-       (calc_stats): Drop special casing of median.
-       (dump_statistics): Ditto, except that we label the 50th percentile
-       as "50 (Median)" to make it clear that it's also the median.    
-
-2007-07-31  Ben Pfaff  <blp@gnu.org>
-
-       Remove integer mode from FREQUENCIES and incidentally fix bug
-       #17421.  Reviewed by John Darrington.
-       * frequencies.q (int_pool): Rename data_pool.
-       (gen_pool): Rename syntax_pool.
-       (enum FRQM_*): Removed.
-       (struct freq_tab): Removed `mode', `vector', `min', `max',
-       `out_of_range', `sysmis' members.
-       (calc): Delete support for integer mode.
-       (precalc): Ditto.
-       (postprocess_freq_tab): Ditto.
-       (cleanup_freq_tab): Ditto.
-       (frq_custom_variables): Ditto.
-
-2007-07-28 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q: Moved the order in which groups are displayed in the 
-       independent samples case, where a cut point is given.
-
-2007-07-27  Ben Pfaff  <blp@gnu.org>
-
-       * regression.q (run_regression): Move casereader_destroy call so
-       that it always gets called, not just if there was some valid
-       data.  Fixes bug #19581.
-       Reviewed by Jason Stover.
-
-2007-07-24  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c (struct flip_pgm): Remove `case_size' member (now
-       unused).
-       (cmd_flip): Pass var_cnt as number of cases instead of case_cnt,
-       to fix bug #20494.  Don't assign to `case_size' member, which was
-       unused after assignment.
-       (build_dictionary): When NEWNAMES not used, get the number of
-       variables right, to fix bug #20493.
-
-2007-07-10  Jason Stover  <jhs@math.gcsu.edu>
-
-       * glm.q: Initial version of the GLM procedure.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adapt case sources, sinks, and clients of procedure code to the
-       new infrastructure.
-       
-       * aggregate.c: Simplify greatly since everything is more uniform
-       now.
-
-       * autorecode.c: Adapt to new procedure code.
-       * binomial.c: Ditto.
-       * chisquare.c: Ditto.
-       * crosstabs.q: Ditto.
-       * descriptives.c: Ditto.
-       * examine.q: Ditto.
-       * npar-summary.c: Ditto.
-       * frequencies.q: Ditto.
-       * npar.q: Ditto.
-       * oneway.q: Ditto.
-       * regression.q: Ditto.
-       * sort-cases.c: Ditto.
-       * t-test.c: Ditto.
-
-       * sort-criteria.c: Rewrite to output a struct case_ordering.
-       
-       * flip.c: Rewrite to be a casereader.
-
-       * rank.q: Simplify greatly since casereaders are much more
-       flexible than what we had before.
-       
-2007-05-15  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (run_regression): Tell the user when the data
-       contain no valid cases.
-
-2007-05-08  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q: Partial fix of bug which caused a crash if
-       dependent variable and independent variable were the same.
-
-2007-04-16 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q: Changed the output width of reported counts and 
-       degrees of freedom, to avoid truncating these values.  Thanks
-        to Seth Woolley for reporting this problem.  A proper fix involves
-        re-thinking the output driver.
-
-2007-04-12  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (run_regression): Added if (n_data >0) to fix bug
-       19581.
-
-2007-03-29  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (prepare_data): New function.
-
-       * regression.q (compute_moments): New function.
-
-2007-03-18  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q (static var write): Rename write_style to avoid
-       conflict with POSIX function of same name.
-
-2007-03-16  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (run_regression): Added support for moments.
-
-Sat Feb 17 08:16:00 2007  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c (flip_sink_create): Improve error message when temporary
-       file cannot be created.
-
-Tue Feb  6 19:58:03 2007  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c (flip_file): Give better error message on end-of-file.
-
-2007-02-04  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q: Fixed p-value computation in the test for
-       individual regression coefficients.
-
-Mon Jan 15 11:03:20 2007  Ben Pfaff  <blp@gnu.org>
-
-       Fix bugs found by valgrind when --enable-debug is used with the
-       new case code.  These bugs are hidden when the data set is small
-       enough to find in memory; if a bigger data set that would overflow
-       to disk were used, then data corruption would occur.
-
-       * chisquare.c (create_freq_hash): Pass free_freq_mutable_hash to
-       hsh_create as free function.  Make copy of data put into hash.
-
-       * oneway.q (free_value): New function.
-       (run_oneway): Use free_value as arg to hsh_create.  Make copy of
-       data put into hash.
-
-       * rank.q (rank_cases): Don't access data in case after we've given
-       away the case.
-
-Tue Jan  9 19:16:11 2007  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #18739.
-       
-       * aggregate.c (parse_aggregate_functions) Initialize
-       function_name.
-
-Fri Dec 22 14:04:09 2006  Ben Pfaff  <blp@gnu.org>
-
-       Simplify missing value handling.
-       
-       * aggregate.c (struct agr_var): Remove `bool include_missing', add
-       `enum mv_class exclude'.  Remove `int missing', add `bool
-       saw_missing'.  Update users.
-
-       * descriptives.c (struct dsc_trns): Removed `int
-       include_user_missing', add `enum mv_class exclude'.  Update users.
-       (struct dsc_proc): Ditto.
-
-       * examine.q: (static var value_is_missing): Rename
-       `exclude_values', change type to `enum mv_class'.  Update users.
-
-       * rank.q: Ditto.
-
-Fri Dec 22 19:22:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * frequencies.q : Fixed bug #17420, where the table bounds were overun
-       when /FORMAT=nolabels was given.
-
-Wed Dec 20 18:45:31 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * binomial.c binomial.h : New files.  Thanks to Jason Stover 
-          for assistance with these.
-
-       * chisquare.c chisquare.h freq.c freq.h npar-summary.c npar-summary.h 
-         npar.h npar.q: New files.  Implementing NPAR TESTS.
-
-       * frequencies.q  : Moved  structure definitions into freq.[ch]
-
-Sat Dec 16 22:26:44 2006  Ben Pfaff  <blp@gnu.org>
-
-       Make it possible to pull cases from the active file with a
-       function call, instead of requiring indirection through a callback
-       function.
-
-       * aggregate.c (cmd_aggregate): Take advantage of new procedure
-       interface.
-       (agr_to_active_file): Removed.
-       (presorted_agr_to_sysfile): Removed.
-
-       * autorecode.c (cmd_autorecode): Take advantage of new procedure
-       interface.
-       (autorecode_proc_func): Removed.
-
-       * flip.c (struct flip_pgm): New members to allow conformance with
-       new case_source_class interface.
-       (cmd_flip): Adapt to new case_source_class interface.
-       (flip_source_read): Ditto.
-       (flip_source_destroy): Ditto.
-
-Sat Dec 16 12:54:27 2006  Ben Pfaff  <blp@gnu.org>
-
-       * rank.q (rank_custom_variables): Allow grouping variables to be
-       strings.  Fixes bug #18533.  Thanks to John Darrington for review.
-
-Sat Dec  9 18:47:51 2006  Ben Pfaff  <blp@gnu.org>
-
-       * regression.q (is_depvar): Compare variable pointers instead of
-       variable names.
-
-Thu Dec  7 15:26:25 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * examine.q: Allocated the categorical values for the dependent and 
-       independent variables, on the heap.  Hence they can be of any width.
-
-Wed Dec  6 21:14:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       * regression.q (reg_inserted): Compare variable pointers instead
-       of variable indexes.
-
-Mon Dec  4 22:33:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q (insert_summary): Use var_to_string for labeling.
-       (output_pivot_table) Ditto.
-       (submit) Ditto.
-
-       * frequencies.q (setup_z_trns): Ditto.
-       (dump_full) Ditto.
-       (dump_condensed) Ditto.
-       (dump_statistics) Ditto.
-       
-
-Sun Nov  5 08:31:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * t-test.q, oneway.q: Changed to use the new casefilter structure.
-
-Sat Oct 14 16:52:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       * rank.q: (rank_sorted_casefile) Add some missing case_destroy()
-       calls to fix a memory leak.
-
-Sun Oct  8 09:45:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * rank.q: Plugged a small memory leak which occurred under error
-       conditions.
-       
-Sat Oct  7 11:06:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * rank.q: Implemented most of the RANK command.
-
-2006-07-14  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (run_regression): New function to move knowledge of
-       pspp_linreg_cache out of math/coefficient.[ch].
-
-Sat Jul  1 17:41:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #11612, "q2c documentation does not agree with code".
-       
-       * examine.q: Audit use of q2c "+" prefixes that indicate that a
-       command may appear multiple times.
-
-       * frequencies.q: Ditto.
-
-       * oneway.q: Ditto.
-
-       * regression.q: Ditto.
-
-       * t-test.q: Ditto.
-
-Fri Jun 23 14:18:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       Support long string variables on FREQUENCIES, as
-       an extension when in enhanced algorithms mode.  For Greg Hunt
-       <greg@firmansyah.com>.
-       
-       * frequencies.q: (struct freq) Change `v' member from union value
-       to union value *.  Update all references.
-       (struct var_freqs) Add width, print members to represent effective
-       variable width and display format.
-       (calc) Copy entire long string value into the hash table.
-       (frq_custom_variables) Set new width, print members.
-       (hash_value_alpha) Get width from var_freqs.
-       (compare_value_alpha_a) Ditto.
-       (compare_freq_alpha_a) Ditto.
-       (compare_freq_alpha_d) Ditto.
-       (dump_full) Get display format from var_freqs.
-       (dump_condensed) Ditto.
-
-Mon Jun 19 22:07:13 2006  Ben Pfaff  <blp@gnu.org>
-
-       * frequencies.q: (dump_full) Only put the first MAX_SHORT_STRING
-       bytes of string variables into the output cells, seeing as we only
-       copy that many.
-       (dump_condensed) Ditto.
-
-Mon Jun 19 21:52:05 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fixes a bug reported by Greg Hunt <greg@firmansyah.com>.
-       
-       * frequencies.q: (hsh_hash_bytes) We only copy the first
-       MAX_SHORT_STRING bytes of string variables, so we must only
-       compare that many bytes, even if the string variable is longer.
-       (compare_value_alpha_a) Ditto.
-       (compare_freq_alpha_a) Ditto.
-       (compare_freq_alpha_d) Ditto.
-
-2006-05-11  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q: Adjusted code to account for cache->coeff being a
-       pspp_linreg_coeff **.
-
-Sun May  7 18:31:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix memory leak.
-       
-       * aggregate.c (cmd_aggregate): Free default_dict before replacing
-       it.
-
-Sun May  7 17:09:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c (flip_file): Check return value of pool_fclose().
-
-Sat May  6 16:00:13 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of `char *c' member in union value, for cleanliness.
-       
-       * aggregate.c: (union agr_argument) New union.
-       (struct agr_var) Change element type of arg[] from union value to
-       union agr_argument.
-       (parse_aggregate_functions) Change local variable types likewise.
-
-       * autorecode.c: (union arc_value) New union.
-       (struct arc_item) Change "from" from union value to union
-       arc_value.
-       (recode) Change local variable from union value to union
-       arc_value.
-       (autorecode_trns_proc) Ditto.
-       (compare_alpha_value) Ditto.
-       (hash_alpha_value) Ditto.
-       (compare_numeric_value) Ditto.
-       (hash_numeric_value) Ditto.
-       (autorecode_proc_func) Ditto.
-
-Sat May  6 10:43:33 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       the output code for SPLIT FILE groups in procedure.c, which really
-       shouldn't be doing any output.  Move it into the individual
-       procedures instead.  This also adds some flexibility.
-
-       * crosstabs.q (precalc): Call output_split_file_values().
-
-       * descriptives.c (calc_descriptives): Ditto.
-
-       * examine.q (run_examine): Ditto.
-       
-       * frequencies.q (precalc): Ditto.
-
-       * oneway.q (run_oneway): Ditto.
-
-       * regression.q (run_regression): Ditto.
-
-       * t-test.q (calculate): Ditto.
-
-Wed May  3 23:05:31 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       many global variables, consolidating procedure execution in
-       procedure.c.  Encapsulate transformations in new "struct
-       trns_chain".  Also, change implementation of N OF CASES, FILTER,
-       and PROCESS IF from special cases to transformations.
-        
-       * aggregate.c (cmd_aggregate) Use discard_variables().
-       
-2006-04-28  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (regression_trns_resid_proc): Pass only the
-       variables used in the model to (*model->residual)().
-
-       * regression.q (regression_trns_pred_proc): Pass only the
-       variables used in the model to (*model->pred)().
-
-2006-04-26  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q: Added support for multiple transformations.
-       
-       * regression.q (regression_trns_resid_proc): New function.
-
-       * regression.q (regression_trns_pred_proc): New function.
-
-       * regression.q (subcommand_save): Added support for saving
-       predicted values.
-
-       * regression.q (regression_trns_free): New function. 
-
-       * regression.q (reg_get_name): New function.
-
-       * regression.q (reg_save_var): New function.
-
-Tue Apr 25 13:18:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       * rank.q (parse_rank_function): Use SE instead of ME for parse
-       errors.
-
-Tue Apr 25 13:16:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       * flip.c (flip_sink_write): Use snprintf() to simplify a bit of
-       code.
-
-2006-04-21  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (try_name): New function. (Partly copied from
-       try_name in descriptives.c.)
-
-       * regression.q (subcommand_save): Choose residual variable names
-       correctly. 
-
-2006-04-20  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (cmd_regression): Moved call to subcommand_save()
-       outside multipass_procedure_with_splits().
-       
-       * regression.q (regression_trns_proc): Fixed value counter n_vals
-       before calling *model->residual().
-
-2006-04-19  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (regression_trns_proc): Fixed the look-up of the
-       number of variables.
-
-2006-04-18  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (regression_trns_proc): Look up the residual
-       variable in the linear regression cache.
-
-       * regression.q (subcommand_save): Set the residual variable in the
-       linear regression cache.
-
-2006-04-17  Jason Stover  <jason@wonko.gcsu.edu>
-
-       * regression.q (regression_trns_proc): Accept case_idx as an int
-       to match the definition of trns_proc_func.
-
-2006-04-17  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (regression_trns_proc): New function.
-
-       * regression.q (subcommand_save): Create variable residuals and
-       add a transformation to assign values to them. Also free the
-       linreg_cache if the SAVE command was not called. Removed the
-       casereading loop. Placed actual computation of residuals in
-       regression_trns_proc.
-
-       * regression.q (run_regression): Moved call to free
-       pspp_linreg_cache to subcommand_save.
-
-Sat Apr 15 18:01:03 2006  Ben Pfaff  <blp@gnu.org>
-
-       * examine.q (output_examine): Add casts to fix warnings.
-
-2006-04-07  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q (subcommand_save): New function.
-
-2006-04-04  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q: New function reg_has_categorical () to tell
-       whether a pspp_linreg_struct was made with any variables of type
-       ALPHA.
-
-       * regression.q: (subcommand_export): Call
-       reg_print_categorical_encoding() only if the model uses any
-       categorical variables.
-
-Mon Mar 27 16:00:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.q: (output_pivot_table) Drop spurious space from
-       message.
-
-2006-03-15  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.q: Added custom syntax parser for VARIABLES subcommand
-
-       * regression.q: Moved most instructions for run_regression ()
-       inside the loop over dependent variables.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/stats/OChangeLog b/src/language/stats/OChangeLog
new file mode 100644 (file)
index 0000000..9dfdb06
--- /dev/null
@@ -0,0 +1,644 @@
+2008-07-24  Jason H Stover  <jhs@math.gcsu.edu>
+
+       * glm.q (run_glm): Dropped weight argument.
+
+2008-07-22  Jason H Stover  <jhs@math.gcsu.edu>
+
+       * glm.q (run_glm): Re-written to form covariance matrix rather
+       than store entire data set in memory.
+
+       * glm.q (data_pass_one): Renamed prepare_categories() to
+       data_pass_one(). Accumulate mean and variance.
+
+2008-06-21  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (reg_stats_coeff): Use new accessor function
+       pspp_coeff_get_sd. Fixed bug 23567. No longer call compute_moments
+       in run_regression. Pass entire design_matrix to pspp_linreg ().
+
+2008-05-29  John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q: Fixed bug where incorrect levels of dereferencing
+       were applied to pointers.
+
+2008-04-09  John Darrington <john@darrington.wattle.id.au>
+
+       * regression.q: Fix display of degrees of freedom.
+
+2008-04-08  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (identify_indep_vars): Don't panic unless
+       n_indep_vars is 0.
+
+2008-03-16  Ben Pfaff  <blp@gnu.org>
+
+       Bug #22037.  Thanks to John Darrington for reporting this bug.
+       
+       * crosstabs.q (calc_general): Only the short string prefix of long
+       string variables are tabulated, so we must not copy or zero out
+       more data than that.
+
+2008-03-10  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (run_regression): Removed code for EXPORT
+       subcommand. Remove use of coefficient 0 as the intercept.
+
+2008-02-14  John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q: Fixed counts of missing variables.  Thanks to 
+       Jason Stover for reporting this problem.
+
+2008-01-02  John Darrington <john@darrington.wattle.id.au>
+
+       *  binomial.c chisquare.c examine.q frequencies.q oneway.q regression.q : updated
+       all users of var_get_value_name to use replacement function var_append_value_name.
+
+2007-12-07  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6302.
+
+       * crosstabs.q (precalc): Initialize data structures even if the
+       first case cannot be read.  
+
+       * frequencies.q (precalc): Ditto.
+
+2007-11-03  Ben Pfaff  <blp@gnu.org>
+
+       Allow output files to overwrite input files (bug #21280).
+
+       * aggregate.c (cmd_aggregate): Manage file handle reference
+       counts.
+
+       * correlations.q (internal_cmd_frequencies): Ditto.
+       (cor_custom_matrix): Ditto.
+
+       * regression.q (regression_custom_export): Ditto.
+       (cmd_regression): Ditto.
+
+2007-10-12  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c (flip_file): No need to conditionally substitute for
+       "fseeko" and "off_t" manually anymore, as gnulib takes care of it
+       for us.
+
+2007-09-21  Jason Stover  <jhs@wonko.gcsu.edu>
+
+       * regression.q (run_regression): Partial fix of memory leak, bug
+       21056.
+
+2007-09-19  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #21108.
+       
+       * aggregate.c (cmd_aggregate): Destroy casereader consistently,
+       even if casereader fails.
+
+       * examine.q (run_examine): Ditto.
+        
+       * glm.q (run_glm): Ditto.
+
+       * oneway.q (run_oneway): Ditto.
+
+       * regression.q (run_regression): Ditto.
+
+       * t-test.q (calculate): Ditto.
+
+       * descriptives.c (calc_descriptives): Ditto.  Also avoid
+       gratuitous casereader_clone.
+
+2007-09-13  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (cmd_regression): Move declaration of models in to
+       definition of cmd_regression.
+
+       * regression.q (run_regression): Free mom to fix memory leak.
+
+2007-09-12  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q (postcalc): Free sorted_tab and the structures that
+       it points to, to plug a memory leak.  Fixes bug #20910.  Thanks to
+       John Darrington for reporting this bug and for review.
+
+2007-09-04  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q (cmd_crosstabs): Free xtab and the structures that
+       it points to, to plug a memory leak.  Fixes bug #18315.
+
+2007-08-15  Jason Stover  <jhs@wonko.gcsu.edu>
+
+       * regression.q (identify_indep_vars): Print an error if dependent
+       and independent variables are the same. Fixes bug 19819.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c: Drop use of dict_get_compacted_dict_index_to_case_index
+       and just use the ordinary case indexes.  There seemed to be no
+       reason for the former method.
+
+2007-08-03  Ben Pfaff  <blp@gnu.org>
+
+       * rank.q (rank_cmd): Instead of sorting by SPLIT FILE vars, group
+       by them.  Fixes bug #17239.
+       Reviewed by John Darrington.
+
+2007-08-01  Ben Pfaff  <blp@gnu.org>
+
+       Clean up handling of median, by treating it almost like any other
+       percentile.  Fixes bug #17424.  Thanks to John Darrington for
+       review.
+       * frequencies.q (internal_cmd_frequencies): Fix handling of bit
+       masks for `stats' variable.  If median is selected, turn it off
+       and add a 50th percentile.
+       (add_percentile): Simplify code a little.
+       (calc_stats): Drop special casing of median.
+       (dump_statistics): Ditto, except that we label the 50th percentile
+       as "50 (Median)" to make it clear that it's also the median.    
+
+2007-07-31  Ben Pfaff  <blp@gnu.org>
+
+       Remove integer mode from FREQUENCIES and incidentally fix bug
+       #17421.  Reviewed by John Darrington.
+       * frequencies.q (int_pool): Rename data_pool.
+       (gen_pool): Rename syntax_pool.
+       (enum FRQM_*): Removed.
+       (struct freq_tab): Removed `mode', `vector', `min', `max',
+       `out_of_range', `sysmis' members.
+       (calc): Delete support for integer mode.
+       (precalc): Ditto.
+       (postprocess_freq_tab): Ditto.
+       (cleanup_freq_tab): Ditto.
+       (frq_custom_variables): Ditto.
+
+2007-07-28 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q: Moved the order in which groups are displayed in the 
+       independent samples case, where a cut point is given.
+
+2007-07-27  Ben Pfaff  <blp@gnu.org>
+
+       * regression.q (run_regression): Move casereader_destroy call so
+       that it always gets called, not just if there was some valid
+       data.  Fixes bug #19581.
+       Reviewed by Jason Stover.
+
+2007-07-24  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c (struct flip_pgm): Remove `case_size' member (now
+       unused).
+       (cmd_flip): Pass var_cnt as number of cases instead of case_cnt,
+       to fix bug #20494.  Don't assign to `case_size' member, which was
+       unused after assignment.
+       (build_dictionary): When NEWNAMES not used, get the number of
+       variables right, to fix bug #20493.
+
+2007-07-10  Jason Stover  <jhs@math.gcsu.edu>
+
+       * glm.q: Initial version of the GLM procedure.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adapt case sources, sinks, and clients of procedure code to the
+       new infrastructure.
+       
+       * aggregate.c: Simplify greatly since everything is more uniform
+       now.
+
+       * autorecode.c: Adapt to new procedure code.
+       * binomial.c: Ditto.
+       * chisquare.c: Ditto.
+       * crosstabs.q: Ditto.
+       * descriptives.c: Ditto.
+       * examine.q: Ditto.
+       * npar-summary.c: Ditto.
+       * frequencies.q: Ditto.
+       * npar.q: Ditto.
+       * oneway.q: Ditto.
+       * regression.q: Ditto.
+       * sort-cases.c: Ditto.
+       * t-test.c: Ditto.
+
+       * sort-criteria.c: Rewrite to output a struct case_ordering.
+       
+       * flip.c: Rewrite to be a casereader.
+
+       * rank.q: Simplify greatly since casereaders are much more
+       flexible than what we had before.
+       
+2007-05-15  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (run_regression): Tell the user when the data
+       contain no valid cases.
+
+2007-05-08  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q: Partial fix of bug which caused a crash if
+       dependent variable and independent variable were the same.
+
+2007-04-16 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q: Changed the output width of reported counts and 
+       degrees of freedom, to avoid truncating these values.  Thanks
+        to Seth Woolley for reporting this problem.  A proper fix involves
+        re-thinking the output driver.
+
+2007-04-12  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (run_regression): Added if (n_data >0) to fix bug
+       19581.
+
+2007-03-29  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (prepare_data): New function.
+
+       * regression.q (compute_moments): New function.
+
+2007-03-18  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q (static var write): Rename write_style to avoid
+       conflict with POSIX function of same name.
+
+2007-03-16  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (run_regression): Added support for moments.
+
+Sat Feb 17 08:16:00 2007  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c (flip_sink_create): Improve error message when temporary
+       file cannot be created.
+
+Tue Feb  6 19:58:03 2007  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c (flip_file): Give better error message on end-of-file.
+
+2007-02-04  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q: Fixed p-value computation in the test for
+       individual regression coefficients.
+
+Mon Jan 15 11:03:20 2007  Ben Pfaff  <blp@gnu.org>
+
+       Fix bugs found by valgrind when --enable-debug is used with the
+       new case code.  These bugs are hidden when the data set is small
+       enough to find in memory; if a bigger data set that would overflow
+       to disk were used, then data corruption would occur.
+
+       * chisquare.c (create_freq_hash): Pass free_freq_mutable_hash to
+       hsh_create as free function.  Make copy of data put into hash.
+
+       * oneway.q (free_value): New function.
+       (run_oneway): Use free_value as arg to hsh_create.  Make copy of
+       data put into hash.
+
+       * rank.q (rank_cases): Don't access data in case after we've given
+       away the case.
+
+Tue Jan  9 19:16:11 2007  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #18739.
+       
+       * aggregate.c (parse_aggregate_functions) Initialize
+       function_name.
+
+Fri Dec 22 14:04:09 2006  Ben Pfaff  <blp@gnu.org>
+
+       Simplify missing value handling.
+       
+       * aggregate.c (struct agr_var): Remove `bool include_missing', add
+       `enum mv_class exclude'.  Remove `int missing', add `bool
+       saw_missing'.  Update users.
+
+       * descriptives.c (struct dsc_trns): Removed `int
+       include_user_missing', add `enum mv_class exclude'.  Update users.
+       (struct dsc_proc): Ditto.
+
+       * examine.q: (static var value_is_missing): Rename
+       `exclude_values', change type to `enum mv_class'.  Update users.
+
+       * rank.q: Ditto.
+
+Fri Dec 22 19:22:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * frequencies.q : Fixed bug #17420, where the table bounds were overun
+       when /FORMAT=nolabels was given.
+
+Wed Dec 20 18:45:31 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * binomial.c binomial.h : New files.  Thanks to Jason Stover 
+          for assistance with these.
+
+       * chisquare.c chisquare.h freq.c freq.h npar-summary.c npar-summary.h 
+         npar.h npar.q: New files.  Implementing NPAR TESTS.
+
+       * frequencies.q  : Moved  structure definitions into freq.[ch]
+
+Sat Dec 16 22:26:44 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make it possible to pull cases from the active file with a
+       function call, instead of requiring indirection through a callback
+       function.
+
+       * aggregate.c (cmd_aggregate): Take advantage of new procedure
+       interface.
+       (agr_to_active_file): Removed.
+       (presorted_agr_to_sysfile): Removed.
+
+       * autorecode.c (cmd_autorecode): Take advantage of new procedure
+       interface.
+       (autorecode_proc_func): Removed.
+
+       * flip.c (struct flip_pgm): New members to allow conformance with
+       new case_source_class interface.
+       (cmd_flip): Adapt to new case_source_class interface.
+       (flip_source_read): Ditto.
+       (flip_source_destroy): Ditto.
+
+Sat Dec 16 12:54:27 2006  Ben Pfaff  <blp@gnu.org>
+
+       * rank.q (rank_custom_variables): Allow grouping variables to be
+       strings.  Fixes bug #18533.  Thanks to John Darrington for review.
+
+Sat Dec  9 18:47:51 2006  Ben Pfaff  <blp@gnu.org>
+
+       * regression.q (is_depvar): Compare variable pointers instead of
+       variable names.
+
+Thu Dec  7 15:26:25 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q: Allocated the categorical values for the dependent and 
+       independent variables, on the heap.  Hence they can be of any width.
+
+Wed Dec  6 21:14:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       * regression.q (reg_inserted): Compare variable pointers instead
+       of variable indexes.
+
+Mon Dec  4 22:33:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q (insert_summary): Use var_to_string for labeling.
+       (output_pivot_table) Ditto.
+       (submit) Ditto.
+
+       * frequencies.q (setup_z_trns): Ditto.
+       (dump_full) Ditto.
+       (dump_condensed) Ditto.
+       (dump_statistics) Ditto.
+       
+
+Sun Nov  5 08:31:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q, oneway.q: Changed to use the new casefilter structure.
+
+Sat Oct 14 16:52:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       * rank.q: (rank_sorted_casefile) Add some missing case_destroy()
+       calls to fix a memory leak.
+
+Sun Oct  8 09:45:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * rank.q: Plugged a small memory leak which occurred under error
+       conditions.
+       
+Sat Oct  7 11:06:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * rank.q: Implemented most of the RANK command.
+
+2006-07-14  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (run_regression): New function to move knowledge of
+       pspp_linreg_cache out of math/coefficient.[ch].
+
+Sat Jul  1 17:41:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #11612, "q2c documentation does not agree with code".
+       
+       * examine.q: Audit use of q2c "+" prefixes that indicate that a
+       command may appear multiple times.
+
+       * frequencies.q: Ditto.
+
+       * oneway.q: Ditto.
+
+       * regression.q: Ditto.
+
+       * t-test.q: Ditto.
+
+Fri Jun 23 14:18:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       Support long string variables on FREQUENCIES, as
+       an extension when in enhanced algorithms mode.  For Greg Hunt
+       <greg@firmansyah.com>.
+       
+       * frequencies.q: (struct freq) Change `v' member from union value
+       to union value *.  Update all references.
+       (struct var_freqs) Add width, print members to represent effective
+       variable width and display format.
+       (calc) Copy entire long string value into the hash table.
+       (frq_custom_variables) Set new width, print members.
+       (hash_value_alpha) Get width from var_freqs.
+       (compare_value_alpha_a) Ditto.
+       (compare_freq_alpha_a) Ditto.
+       (compare_freq_alpha_d) Ditto.
+       (dump_full) Get display format from var_freqs.
+       (dump_condensed) Ditto.
+
+Mon Jun 19 22:07:13 2006  Ben Pfaff  <blp@gnu.org>
+
+       * frequencies.q: (dump_full) Only put the first MAX_SHORT_STRING
+       bytes of string variables into the output cells, seeing as we only
+       copy that many.
+       (dump_condensed) Ditto.
+
+Mon Jun 19 21:52:05 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fixes a bug reported by Greg Hunt <greg@firmansyah.com>.
+       
+       * frequencies.q: (hsh_hash_bytes) We only copy the first
+       MAX_SHORT_STRING bytes of string variables, so we must only
+       compare that many bytes, even if the string variable is longer.
+       (compare_value_alpha_a) Ditto.
+       (compare_freq_alpha_a) Ditto.
+       (compare_freq_alpha_d) Ditto.
+
+2006-05-11  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q: Adjusted code to account for cache->coeff being a
+       pspp_linreg_coeff **.
+
+Sun May  7 18:31:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix memory leak.
+       
+       * aggregate.c (cmd_aggregate): Free default_dict before replacing
+       it.
+
+Sun May  7 17:09:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c (flip_file): Check return value of pool_fclose().
+
+Sat May  6 16:00:13 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of `char *c' member in union value, for cleanliness.
+       
+       * aggregate.c: (union agr_argument) New union.
+       (struct agr_var) Change element type of arg[] from union value to
+       union agr_argument.
+       (parse_aggregate_functions) Change local variable types likewise.
+
+       * autorecode.c: (union arc_value) New union.
+       (struct arc_item) Change "from" from union value to union
+       arc_value.
+       (recode) Change local variable from union value to union
+       arc_value.
+       (autorecode_trns_proc) Ditto.
+       (compare_alpha_value) Ditto.
+       (hash_alpha_value) Ditto.
+       (compare_numeric_value) Ditto.
+       (hash_numeric_value) Ditto.
+       (autorecode_proc_func) Ditto.
+
+Sat May  6 10:43:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       the output code for SPLIT FILE groups in procedure.c, which really
+       shouldn't be doing any output.  Move it into the individual
+       procedures instead.  This also adds some flexibility.
+
+       * crosstabs.q (precalc): Call output_split_file_values().
+
+       * descriptives.c (calc_descriptives): Ditto.
+
+       * examine.q (run_examine): Ditto.
+       
+       * frequencies.q (precalc): Ditto.
+
+       * oneway.q (run_oneway): Ditto.
+
+       * regression.q (run_regression): Ditto.
+
+       * t-test.q (calculate): Ditto.
+
+Wed May  3 23:05:31 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       many global variables, consolidating procedure execution in
+       procedure.c.  Encapsulate transformations in new "struct
+       trns_chain".  Also, change implementation of N OF CASES, FILTER,
+       and PROCESS IF from special cases to transformations.
+        
+       * aggregate.c (cmd_aggregate) Use discard_variables().
+       
+2006-04-28  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (regression_trns_resid_proc): Pass only the
+       variables used in the model to (*model->residual)().
+
+       * regression.q (regression_trns_pred_proc): Pass only the
+       variables used in the model to (*model->pred)().
+
+2006-04-26  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q: Added support for multiple transformations.
+       
+       * regression.q (regression_trns_resid_proc): New function.
+
+       * regression.q (regression_trns_pred_proc): New function.
+
+       * regression.q (subcommand_save): Added support for saving
+       predicted values.
+
+       * regression.q (regression_trns_free): New function. 
+
+       * regression.q (reg_get_name): New function.
+
+       * regression.q (reg_save_var): New function.
+
+Tue Apr 25 13:18:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * rank.q (parse_rank_function): Use SE instead of ME for parse
+       errors.
+
+Tue Apr 25 13:16:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c (flip_sink_write): Use snprintf() to simplify a bit of
+       code.
+
+2006-04-21  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (try_name): New function. (Partly copied from
+       try_name in descriptives.c.)
+
+       * regression.q (subcommand_save): Choose residual variable names
+       correctly. 
+
+2006-04-20  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (cmd_regression): Moved call to subcommand_save()
+       outside multipass_procedure_with_splits().
+       
+       * regression.q (regression_trns_proc): Fixed value counter n_vals
+       before calling *model->residual().
+
+2006-04-19  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (regression_trns_proc): Fixed the look-up of the
+       number of variables.
+
+2006-04-18  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (regression_trns_proc): Look up the residual
+       variable in the linear regression cache.
+
+       * regression.q (subcommand_save): Set the residual variable in the
+       linear regression cache.
+
+2006-04-17  Jason Stover  <jason@wonko.gcsu.edu>
+
+       * regression.q (regression_trns_proc): Accept case_idx as an int
+       to match the definition of trns_proc_func.
+
+2006-04-17  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (regression_trns_proc): New function.
+
+       * regression.q (subcommand_save): Create variable residuals and
+       add a transformation to assign values to them. Also free the
+       linreg_cache if the SAVE command was not called. Removed the
+       casereading loop. Placed actual computation of residuals in
+       regression_trns_proc.
+
+       * regression.q (run_regression): Moved call to free
+       pspp_linreg_cache to subcommand_save.
+
+Sat Apr 15 18:01:03 2006  Ben Pfaff  <blp@gnu.org>
+
+       * examine.q (output_examine): Add casts to fix warnings.
+
+2006-04-07  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (subcommand_save): New function.
+
+2006-04-04  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q: New function reg_has_categorical () to tell
+       whether a pspp_linreg_struct was made with any variables of type
+       ALPHA.
+
+       * regression.q: (subcommand_export): Call
+       reg_print_categorical_encoding() only if the model uses any
+       categorical variables.
+
+Mon Mar 27 16:00:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.q: (output_pivot_table) Drop spurious space from
+       message.
+
+2006-03-15  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q: Added custom syntax parser for VARIABLES subcommand
+
+       * regression.q: Moved most instructions for run_regression ()
+       inside the loop over dependent variables.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 10738fdcaa147d5d268b89522713b1de974c0c2b..d60cb0dbdb6a15a59fcd31312a147f6b4da15d9e 100644 (file)
@@ -37,3 +37,4 @@ all_q_sources += $(src_language_stats_built_sources:.c=.q)
 EXTRA_DIST += $(src_language_stats_built_sources:.c=.q)
 CLEANFILES += $(src_language_stats_built_sources)
 
+EXTRA_DIST += src/language/stats/OChangeLog
diff --git a/src/language/tests/ChangeLog b/src/language/tests/ChangeLog
deleted file mode 100644 (file)
index d76583f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6441.  Reviewed by John Darrington.
-
-       * automake.mk: Add new file.
-
-       * format-guesser-test.c: New file.
-
-2007-09-22  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21128.  Reviewed by John Darrington.
-
-       * automake.mk: Add new file.
-
-       * paper-size.c: New file.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add new file.
-
-       * datasheet-test.c: New file.
-
-2007-04-22  Ben Pfaff  <blp@gnu.org>
-
-       Implement model checker for testing purposes.
-       
-       Patch #5873.
-       
-       * automake.mk: Add check-model.[ch].
-
-       * check-model.h: New file.
-
-       * check-model.q: New file.
-
-Thu Oct 26 20:19:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add float-format.c.
-
-       * float-format.c: New file.
-
-Sat Oct 14 16:21:45 2006  Ben Pfaff  <blp@gnu.org>
-
-       * casefile-test.c: (test_casereader_clone) Free cases that we
-       read, to avoid memory leak.
-
-Tue Jun  6 18:48:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * casefile-test.c: (test_casefile) Test the new casereader_seek()
-       function.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/tests/OChangeLog b/src/language/tests/OChangeLog
new file mode 100644 (file)
index 0000000..d76583f
--- /dev/null
@@ -0,0 +1,53 @@
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6441.  Reviewed by John Darrington.
+
+       * automake.mk: Add new file.
+
+       * format-guesser-test.c: New file.
+
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * automake.mk: Add new file.
+
+       * paper-size.c: New file.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add new file.
+
+       * datasheet-test.c: New file.
+
+2007-04-22  Ben Pfaff  <blp@gnu.org>
+
+       Implement model checker for testing purposes.
+       
+       Patch #5873.
+       
+       * automake.mk: Add check-model.[ch].
+
+       * check-model.h: New file.
+
+       * check-model.q: New file.
+
+Thu Oct 26 20:19:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add float-format.c.
+
+       * float-format.c: New file.
+
+Sat Oct 14 16:21:45 2006  Ben Pfaff  <blp@gnu.org>
+
+       * casefile-test.c: (test_casereader_clone) Free cases that we
+       read, to avoid memory leak.
+
+Tue Jun  6 18:48:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * casefile-test.c: (test_casefile) Test the new casereader_seek()
+       function.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 5a5423930858afc288105dd3e2d92661a45b492b..00fcab373454eec0bfc6735f1adba97328d0fe63 100644 (file)
@@ -15,3 +15,5 @@ language_tests_sources = \
 all_q_sources += $(language_tests_built_sources:.c=.q)
 EXTRA_DIST += $(language_tests_built_sources:.c=.q)
 CLEANFILES += $(language_tests_built_sources)
+
+EXTRA_DIST += src/language/tests/OChangeLog
diff --git a/src/language/utilities/ChangeLog b/src/language/utilities/ChangeLog
deleted file mode 100644 (file)
index 5701c38..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-2007-09-16  Ben Pfaff  <blp@gnu.org>
-
-       * set.q (show_warranty): Use fputs to print lack-of-warranty
-       statement, instead of msg.  This is because msg now outputs the
-       message to output devices, and the output subsystem is not
-       prepared to deal with table cells that exceed one page in length.
-       Thanks to John Darrington for bug report and review.  Bug #21093.
-       (show_copying) Ditto.
-
-2007-08-16  Ben Pfaff  <blp@gnu.org>
-
-       Implement journaling.  Bug #17240.
-       
-       * set.q: Add LOG subcommand as synonym for JOURNAL.
-       (stc_custom_journal): Implement.
-       (stc_custom_log): New function.
-
-2007-05-06  Ben Pfaff  <blp@gnu.org>
-
-       Abstract the documents within a dictionary a little better.
-       Thanks to John Darrington for suggestion, initial version, and
-       review.  Patch #5917.
-
-       * title.c (add_document_line): Removed.
-       (add_document_trailer): New function.
-       (cmd_document): Rewrite to yield SPSS-like output and to use the
-       updated document API.
-       (cmd_add_documents): Ditto.
-
-2007-05-03 John Darrington <john@darrington.wattle.id.au>
-
-       * title.c: Implemented ADD DOCUMENT command.
-
-Sun Nov 19 09:21:39 2006  Ben Pfaff  <blp@gnu.org>
-
-       * set.q: Add RIB, RRB settings to control binary formats used by
-       data_out.
-       (cmd_set) Implement SET RIB, RRB.
-       (show_rib) New function.
-       (show_rrb) New function.
-       (static var show_table[]) Add SHOW RIB, RRB.
-
-Sat Nov  4 16:05:47 2006  Ben Pfaff  <blp@gnu.org>
-
-       * set.q: Add WIB, WRB settings to control binary formats used by
-       data_out.
-       (cmd_set) Implement SET WIB, WRB.
-       (stc_to_integer_format) New function.
-       (stc_to_float_format) New function.
-       (show_integer_format) New function.
-       (show_float_format) New function.
-       (show_wib) New function.
-       (show_wrb) New function.
-       (static var show_table[]) Add SHOW WIB, WRB.
-
-Sat Nov  4 11:48:23 2006  Ben Pfaff  <blp@gnu.org>
-
-       * set.q: Update ERRORS, MESSAGES, RESULTS command syntax.
-       (cmd_set) Handle ERRORS command.
-       (show_errors) New function.
-       (var show_table[]) Add ERRORS to the table.
-
-Tue Oct 31 20:10:24 2006  Ben Pfaff  <blp@gnu.org>
-
-       * set.q (cmd_set): Drop the `ok' variable, which didn't do
-       anything useful.
-       (extract_cc_token) Adapt to new fmt_number_style.
-       (do_cc) Ditto.
-       (format_cc) Ditto.
-       (show_cc) Change parameter to be an enum fmt_type.  Adjust all
-       callers.
-
-Wed Apr 26 15:06:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       * set.q: Use SN instead of MN for most output from SHOW, because
-       the output is tied to the SHOW command that caused it.
-
-Tue Apr 25 13:21:12 2006  Ben Pfaff  <blp@gnu.org>
-
-       * permissions.c (change_permissions): Use SE instead of ME for
-       errors associated with a syntax file command.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/utilities/OChangeLog b/src/language/utilities/OChangeLog
new file mode 100644 (file)
index 0000000..5701c38
--- /dev/null
@@ -0,0 +1,85 @@
+2007-09-16  Ben Pfaff  <blp@gnu.org>
+
+       * set.q (show_warranty): Use fputs to print lack-of-warranty
+       statement, instead of msg.  This is because msg now outputs the
+       message to output devices, and the output subsystem is not
+       prepared to deal with table cells that exceed one page in length.
+       Thanks to John Darrington for bug report and review.  Bug #21093.
+       (show_copying) Ditto.
+
+2007-08-16  Ben Pfaff  <blp@gnu.org>
+
+       Implement journaling.  Bug #17240.
+       
+       * set.q: Add LOG subcommand as synonym for JOURNAL.
+       (stc_custom_journal): Implement.
+       (stc_custom_log): New function.
+
+2007-05-06  Ben Pfaff  <blp@gnu.org>
+
+       Abstract the documents within a dictionary a little better.
+       Thanks to John Darrington for suggestion, initial version, and
+       review.  Patch #5917.
+
+       * title.c (add_document_line): Removed.
+       (add_document_trailer): New function.
+       (cmd_document): Rewrite to yield SPSS-like output and to use the
+       updated document API.
+       (cmd_add_documents): Ditto.
+
+2007-05-03 John Darrington <john@darrington.wattle.id.au>
+
+       * title.c: Implemented ADD DOCUMENT command.
+
+Sun Nov 19 09:21:39 2006  Ben Pfaff  <blp@gnu.org>
+
+       * set.q: Add RIB, RRB settings to control binary formats used by
+       data_out.
+       (cmd_set) Implement SET RIB, RRB.
+       (show_rib) New function.
+       (show_rrb) New function.
+       (static var show_table[]) Add SHOW RIB, RRB.
+
+Sat Nov  4 16:05:47 2006  Ben Pfaff  <blp@gnu.org>
+
+       * set.q: Add WIB, WRB settings to control binary formats used by
+       data_out.
+       (cmd_set) Implement SET WIB, WRB.
+       (stc_to_integer_format) New function.
+       (stc_to_float_format) New function.
+       (show_integer_format) New function.
+       (show_float_format) New function.
+       (show_wib) New function.
+       (show_wrb) New function.
+       (static var show_table[]) Add SHOW WIB, WRB.
+
+Sat Nov  4 11:48:23 2006  Ben Pfaff  <blp@gnu.org>
+
+       * set.q: Update ERRORS, MESSAGES, RESULTS command syntax.
+       (cmd_set) Handle ERRORS command.
+       (show_errors) New function.
+       (var show_table[]) Add ERRORS to the table.
+
+Tue Oct 31 20:10:24 2006  Ben Pfaff  <blp@gnu.org>
+
+       * set.q (cmd_set): Drop the `ok' variable, which didn't do
+       anything useful.
+       (extract_cc_token) Adapt to new fmt_number_style.
+       (do_cc) Ditto.
+       (format_cc) Ditto.
+       (show_cc) Change parameter to be an enum fmt_type.  Adjust all
+       callers.
+
+Wed Apr 26 15:06:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       * set.q: Use SN instead of MN for most output from SHOW, because
+       the output is tied to the SHOW command that caused it.
+
+Tue Apr 25 13:21:12 2006  Ben Pfaff  <blp@gnu.org>
+
+       * permissions.c (change_permissions): Use SE instead of ME for
+       errors associated with a syntax file command.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 5f66102cbc909e742ffe676895149d95aee3b75c..c4ca92b0bc54bcbb4a1eb8b69e67a49624bff13f 100644 (file)
@@ -16,3 +16,5 @@ all_q_sources += $(src_language_utilities_built_sources:.c=.q)
 EXTRA_DIST += $(src_language_utilities_built_sources:.c=.q)
 CLEANFILES += $(src_language_utilities_built_sources)
 
+
+EXTRA_DIST += src/language/utilities/OChangeLog
diff --git a/src/language/xforms/ChangeLog b/src/language/xforms/ChangeLog
deleted file mode 100644 (file)
index 4e15b1e..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-2007-04-16  Ben Pfaff  <blp@gnu.org>
-
-       * recode.c (parse_map_in): Improve error message when user
-       attempts to use THRU with string variables.
-       Suggested by seth@swoolley.homeip.net.
-
-2007-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * recode.c (parse_mappings): Initialize "out" member of mapping
-       for CONVERT, fixing an uninitialized data bug.
-
-2007-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * recode.c (enlarge_dst_widths): Source isn't null-terminated, so
-       don't pretend it is.
-       (var_is_num_missing): MISSING should include system-missing values
-       too.
-
-Thu Feb  1 16:51:16 2007  Ben Pfaff  <blp@gnu.org>
-
-       * recode.c (find_src_numeric): Handle MAP_SYSMIS case, which was
-       carelessly overlooked until now.  Fixes bug #18917.  Thanks to
-       John Darrington for bug report and review.
-
-Sat Dec  9 18:48:20 2006  Ben Pfaff  <blp@gnu.org>
-
-       * compute.c (struct compute_trns): Remove `fv' member, which was
-       redundant with `variable'.
-
-Thu Nov 30 22:46:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       * compute.c: Fix bug #17422, which reports that a variable created
-       by assignment in a COMPUTE command could not be used in the
-       computation expression.
-       (struct lvalue) Drop `var_name' member in favor of `variable'
-       pointer.  Add `is_new_variable' member to allow us to know whether
-       to delete the variable at destruction time, in case of an error.
-       (lvalue_parse) Create variable whose name is specified, if it does
-       not already exist, as a numeric variable.
-       (lvalue_get_type) Rewrite to work with revised lvalue structure.
-       New `dict' parameter, which propagates back up its call chain.
-       (lvalue_finalize) No need to create variable here since we did so
-       at parse time.
-       (lvalue_destroy) Destroy variable if `is_new_variable' set.
-
-Sat Oct  7 11:04:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * automake.mk fail.c: Added a debug transformation which always fails.
-
-Sat May  6 16:02:55 2006  Ben Pfaff  <blp@gnu.org>
-
-       Get rid of `char *c' member in union value, for cleanliness.
-
-       * recode.c: (union recode_value) New union.
-       (struct map_in) Change x, y types to union recode_value.
-       (struct map_out) Change value type to union recode_value.
-       (find_src_string) Wrap data_in() call so it uses a real `union
-       value'.
-
-Sat May  6 14:08:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       * select-if.c (cmd_filter): Make FILTER without any further
-       keywords turn off filtering, with a warning, for compatibility.
-       Change errors from cascading failures to ordinary failures.  Check
-       for command terminator.
-
-Sat May  6 13:25:57 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, remove
-       PROCESS IF, which was deprecated anyway and can be easily
-       simulated with TEMPORARY followed by SELECT IF.
-
-       * select-if.c (cmd_process_if): Removed.
-       (global var process_if_expr) Removed, along with all references
-       globally.
-
-Tue Apr 25 13:23:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       * select-if.c (cmd_process_if): Use SW instead of MW for warning
-       associated with a syntax file command.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/language/xforms/OChangeLog b/src/language/xforms/OChangeLog
new file mode 100644 (file)
index 0000000..4e15b1e
--- /dev/null
@@ -0,0 +1,84 @@
+2007-04-16  Ben Pfaff  <blp@gnu.org>
+
+       * recode.c (parse_map_in): Improve error message when user
+       attempts to use THRU with string variables.
+       Suggested by seth@swoolley.homeip.net.
+
+2007-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * recode.c (parse_mappings): Initialize "out" member of mapping
+       for CONVERT, fixing an uninitialized data bug.
+
+2007-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * recode.c (enlarge_dst_widths): Source isn't null-terminated, so
+       don't pretend it is.
+       (var_is_num_missing): MISSING should include system-missing values
+       too.
+
+Thu Feb  1 16:51:16 2007  Ben Pfaff  <blp@gnu.org>
+
+       * recode.c (find_src_numeric): Handle MAP_SYSMIS case, which was
+       carelessly overlooked until now.  Fixes bug #18917.  Thanks to
+       John Darrington for bug report and review.
+
+Sat Dec  9 18:48:20 2006  Ben Pfaff  <blp@gnu.org>
+
+       * compute.c (struct compute_trns): Remove `fv' member, which was
+       redundant with `variable'.
+
+Thu Nov 30 22:46:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       * compute.c: Fix bug #17422, which reports that a variable created
+       by assignment in a COMPUTE command could not be used in the
+       computation expression.
+       (struct lvalue) Drop `var_name' member in favor of `variable'
+       pointer.  Add `is_new_variable' member to allow us to know whether
+       to delete the variable at destruction time, in case of an error.
+       (lvalue_parse) Create variable whose name is specified, if it does
+       not already exist, as a numeric variable.
+       (lvalue_get_type) Rewrite to work with revised lvalue structure.
+       New `dict' parameter, which propagates back up its call chain.
+       (lvalue_finalize) No need to create variable here since we did so
+       at parse time.
+       (lvalue_destroy) Destroy variable if `is_new_variable' set.
+
+Sat Oct  7 11:04:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * automake.mk fail.c: Added a debug transformation which always fails.
+
+Sat May  6 16:02:55 2006  Ben Pfaff  <blp@gnu.org>
+
+       Get rid of `char *c' member in union value, for cleanliness.
+
+       * recode.c: (union recode_value) New union.
+       (struct map_in) Change x, y types to union recode_value.
+       (struct map_out) Change value type to union recode_value.
+       (find_src_string) Wrap data_in() call so it uses a real `union
+       value'.
+
+Sat May  6 14:08:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       * select-if.c (cmd_filter): Make FILTER without any further
+       keywords turn off filtering, with a warning, for compatibility.
+       Change errors from cascading failures to ordinary failures.  Check
+       for command terminator.
+
+Sat May  6 13:25:57 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, remove
+       PROCESS IF, which was deprecated anyway and can be easily
+       simulated with TEMPORARY followed by SELECT IF.
+
+       * select-if.c (cmd_process_if): Removed.
+       (global var process_if_expr) Removed, along with all references
+       globally.
+
+Tue Apr 25 13:23:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       * select-if.c (cmd_process_if): Use SW instead of MW for warning
+       associated with a syntax file command.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index d0fe1cb6c03596a990cf26abacee9a5c7abd420b..ddb1021fe20a0b46e6370b1a8a98370d82d91d61 100644 (file)
@@ -8,3 +8,5 @@ language_xforms_sources = \
        src/language/xforms/sample.c \
        src/language/xforms/recode.c \
        src/language/xforms/select-if.c
+
+EXTRA_DIST += src/language/xforms/OChangeLog
diff --git a/src/libpspp/ChangeLog b/src/libpspp/ChangeLog
deleted file mode 100644 (file)
index 229b4f9..0000000
+++ /dev/null
@@ -1,819 +0,0 @@
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6512.
-
-       * hash.c (hsh_hash_int): Use gsl_isnan instead of isnan, as a
-       stopgap measure for portability until appropriate gnulib modules
-       are available.
-
-       * misc.h (macro isinf): Remove implementations of isinf, isnan,
-       and finite, because they were not effective and we are now using
-       the equivalent GSL functions.
-
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6427.  Reviewed by John Darrington.
-
-       * automake.mk: Remove moved files.
-
-       * syntax-gen.c: Moved to src/ui (and rewritten).
-
-       * syntax-gen.h: Ditto.
-
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6441.  Reviewed by John Darrington.
-
-       * str.c (ss_match_char_in): New function.
-
-2008-02-18  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6426.  Thanks to John Darrington for review.
-
-       * str.c (ds_read_line): Add argument to limit the length of the
-       line to be read.  Update all callers.
-
-2008-02-01  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6386.  Thanks to John Darrington for review.
-
-       * str.c (str_format_26adic): New function.
-
-2007-12-24  John Darrington <john@darrington.wattle.id.au>
-
-        * taint.c (taint_destroy): Return true if pointer is null.
-
-2007-11-25  Ben Pfaff  <blp@gnu.org>
-
-       * float-format.c (assemble_number): Only store 32 bits for Z short
-       format.  Partial fix for bug #21590.
-
-2007-11-08  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (ds_read_stream): Change return value semantics to be more
-       useful.  Update all users.
-
-2007-11-03 John Darrington <john@darrington.wattle.id.au>
-
-       * i18n.c i18n.h: Added convertor from UTF8 to system.
-       This is needed for reading gnumeric files (and possibly others).
-
-2007-10-11  Ben Pfaff  <blp@gnu.org>
-
-       * xalloc.h: Removed.  Changed all users to include "xalloc.h" from
-       gnulib instead.
-
-       * xalloc.c: Removed.
-
-2007-10-11  Ben Pfaff  <blp@gnu.org>
-
-       * alloc.h (local_alloc): Removed.  Changed all users to use
-       xmalloca instead.
-       (local_free): Removed.  Changed all users to use freea instead.
-
-2007-10-11  Ben Pfaff  <blp@gnu.org>
-
-       * float-format.c (float_get_lowest): New function.
-       
-       * magic.c: Removed.
-
-       * magic.h: Removed.  Changed all references to NOT_INT,
-       NOT_DOUBLE, and NOT_LONG to use other constants.  Changed
-       references to second_lowest_value to call float_get_lowest.
-
-2007-10-10  Ben Pfaff  <blp@gnu.org>
-
-       We assume IEEE-754 now.
-
-       * float-format.h (enum float_format): Don't check for
-       FPREP_IEEE754 macro any longer.
-
-       * magic.h: Ditto.
-
-2007-09-16  Ben Pfaff  <blp@gnu.org>
-
-       * copyleft.c: Add trailing new-lines to lack-of-warranty
-       statement.
-
-2007-09-05 John Darrington <john@darrington.wattle.id.au>
-
-       * getl.c: Add extra members to struct getl_source, to maintain the
-       error mode and the syntax_mode. 
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       * getl.c (getl_append_source): Add source to *end* of list.
-       Otherwise the list ends up in reverse order.
-
-       * automake.mk (src/libpspp/version.c): Use $HOME instead of ~ in
-       paths.  We don't interpolate ~.
-
-2007-07-22  Ben Pfaff  <blp@gnu.org>
-
-       * str.h: Include xstrndup.h also.
-
-       * float-format.c (float_get_double): New function.
-
-2007-07-06  Ben Pfaff  <blp@gnu.org>
-
-       * copyleft.c (legal): Update startup notice to use format
-       recommended by latest GNU coding standards.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * array.c (binary_search): Fix assertion.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Add error propagation layer.  Patch #5916, slightly revised.
-
-       * automake.mk: Add new files.
-       
-       * taint.c: New file.
-
-       * taint.h: New file.
-
-2007-06-03  Ben Pfaff  <blp@gnu.org>
-
-       Add ability for reverse iteration to tower code.
-       
-       * tower.c (tower_last): New function.
-       (tower_prev): New function.
-       (abt_to_tower_node): New function.
-       (first_node): Use abt_to_tower_node.
-       (last_node): New function.
-       (next_ndoe): Use abt_to_tower_node.
-       (prev_node): New function.
-
-2007-06-03  Ben Pfaff  <blp@gnu.org>
-
-       * tower.c: Cache repeated lookups of a single tower element.  This
-       turns such lookups into O(1) operations without harming the big-O
-       of other operations.
-
-       * tower.h (struct tower): Add members for caching.
-
-       * range-set.c (range_set_clone): New function.
-
-       * array.c (insert_range): New function.
-       (insert_element): New function.
-       (move_range): New function.
-
-2007-04-25  Ben Pfaff  <blp@gnu.org>
-
-       * model-checker.c: Don't use type sighandler_t, which is a GNU
-       extension.  Reported by "Daniel E WILLIAMS"
-       <Daniel.E.Williams@state.or.us>.
-
-2007-04-25 John Darrington <john@darrington.wattle.id.au>
-
-       * i18n.c: Fixed bug converting long strings
-
-2007-04-22  Ben Pfaff  <blp@gnu.org>
-
-       Patch #5884.
-       
-       * ll.h (ll_for_each_reverse): New macro.
-       (ll_for_each_reverse_continue): New macro.
-       (ll_for_each_reverse_safe): New macro.
-       (ll_for_each_safe_reverse_continue): New macro.
-       (ll_for_each_reverse_preremove): New macro.
-       (ll_for_each_reverse_postremove): New macro.
-       (ll_remove__): Removed (dead code).
-       (ll_tail__): New macro.
-       (ll_prev__): New macro.
-
-2007-04-22  Ben Pfaff  <blp@gnu.org>
-
-       Implement model checker for testing purposes.
-
-       Patch #5873.
-       
-       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add
-       model-checker.[ch].  Alphabetize.
-
-       * model-checker.c: New file.
-
-       * model-checker.h: New file.
-
-2007-04-03  Ben Pfaff  <blp@gnu.org>
-
-       Apply patches #5828, #5837, #5841, #5843.
-
-       * abt.c (insert_relative): New function.
-       (abt_insert_after): New function.
-       (abt_insert_before): New function.
-
-       * range-map.c: New file.
-
-       * range-map.h: New file.
-
-       * range-set.c: New file.
-
-       * range-set.h: New file.
-
-       * tower.c: New file.
-
-       * tower.h: New file.
-
-2007-04-01  Ben Pfaff  <blp@gnu.org>
-
-       * bt.c: Need #include <limits.h>.  Thanks to "John McCabe-Dansted"
-       <gmatht@gmail.com> for pointing this out.
-
-2007-03-31  Ben Pfaff  <blp@gnu.org>
-
-       Patch #5827.
-
-       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add bt.c.
-
-       * bt.h: New file.
-
-       * bt.c: New file.
-
-2007-03-30  Ben Pfaff  <blp@gnu.org>
-
-       Patch #5829.
-
-       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add deque.c.
-
-       * deque.h: Completely rewrote.  Adapted client to new interface.
-
-       * deque.c: New file.
-
-2007-03-25  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add
-       sparse-array.[ch].
-
-       * pool.c (pool_zalloc): New function.
-       (pool_calloc): New function.
-
-       * sparse-array.c: New file.
-
-       * sparse-array.h: New file.
-
-Mon Mar  5 20:55:49 CET 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * i18n.c: Cast second argument of iconv using ICONV_CONST
-
-2007-02-22  Ben Pfaff  <blp@gnu.org>
-
-       * string.h: Don't include vsnprintf.h any more, because gnulib has
-       now absorbed it into string.h.
-
-Thu Feb 22 12:25:52 CET 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * syntax-gen.h syntax-gen.c: New files.
-
-Sun Feb 18 11:21:41 2007  Ben Pfaff  <blp@gnu.org>
-
-       * alloc.h: Remove useless parentheses in #if "defined" operator.
-
-       * misc.h: Ditto.
-
-Tue Feb  6 20:00:13 2007  Ben Pfaff  <blp@gnu.org>
-
-       * misc.h [!HAVE_ISINF] (isinf): Define only if isinf is not
-       defined as a macro, because mingw seems to have the macro without
-       the function.
-       [!HAVE_ISNAN] (isnan): Ditto, for symmetry only.
-       [!AHVE_FINITE] (finite): Ditto, for symmetry only.
-
-Tue Feb  6 19:58:46 2007  Ben Pfaff  <blp@gnu.org>
-
-       * compiler.h (PRINTF_FORMAT): Use __printf__ instead of printf to
-       avoid problem with "#define printf libintl_printf" that libintl is
-       fond of doing.
-       (SCANF_FORMAT): Ditto, for symmetry only.
-
-Tue Feb  6 19:47:10 2007  Ben Pfaff  <blp@gnu.org>
-
-       * float-format.h: [FPREP_IEEE754] [WORDS_BIGENDIAN] Add missing
-       comma.
-
-Wed Jan 24 21:13:32 2007  Ben Pfaff  <blp@gnu.org>
-
-       * abt.c: New file.
-
-       * abt.h: New file.
-
-       * automake.mk: Add abt.c, abt.h to sources.
-
-Sun Jan 14 21:44:18 2007  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add deque.h to sources.
-       
-       * deque.h: New file.
-
-Wed Jan 10 06:49:38 2007  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add heap.c, heap.h to sources.
-
-       * heap.c: New file.
-
-       * heap.h: New file.
-
-Sun Dec 10 13:54:03 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (ss_tokenize): Skip the first delimiter character
-       following the token.  Otherwise, changing delimiters from token to
-       token can't have a sensible effect, because we'll get the previous
-       delimiter as part of the next token.
-       (ss_match_string): New function.
-
-Sat Dec  9 18:48:55 2006  Ben Pfaff  <blp@gnu.org>
-
-       * misc.h (macro range): Removed, as it was unused.
-
-Sat Dec  9 07:19:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * array.c: Removed gratuitous #include
-
-Thu Dec  7 20:33:23 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * getl.c getl.h : Changed signature of create function to take a 
-       string indicating the initial include path.
-
-Sun Dec  3 11:36:10 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.h (SS_LITERAL_INITIALIZER): Cast the string literal to "char
-       *".  This normally does nothing but when GCC's -Wwrite-strings is
-       used it fixes a warning that otherwise can't be avoided.
-
-Sun Dec  3 11:35:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (ss_alloc_substring_pool): New function.
-       (ss_alloc_uninit_pool) New function.
-
-Sun Dec  3 11:28:06 2006  Ben Pfaff  <blp@gnu.org>
-
-       * getl.h: (enum getl_syntax) New enumeration to distinguish
-       between "batch" and "interactive" in a clearer way than a bool.
-       (struct getl_interface) Add an arg to "read" to return the
-       intended syntax mode.  Add an arg to "filter" to specify the
-       syntax mode of the line to filter.
-
-       * getl.c (do_read_line): Instead of returning the syntax type of
-       the line read based on whether the source itself is interactive,
-       return it based on whether the line itself should be treated as
-       having batch or interactive syntax.  Also, adapt interface to the
-       new interfaces of lex_init() and getl_interface.
-
-Wed Nov 29 19:35:44 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * getl.c getl.h: New files. Created interface from base of 
-       language/line-buffer.[ch]
-
-       * msg-locator.c msg-locator.h: New files. Moved from
-       language/line-buffer.[ch]
-
-Fri Nov 24 17:27:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * misc.h: (min) Removed.  All references updated to use MIN, from
-       minmax.h provided by gnulib.
-       (max) Ditto (for MAX).
-
-Sun Nov 19 09:22:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (ss_get_long): New function.
-       (ss_compare_case) Ditto.
-       (ss_equals) Ditto.
-       (ss_equals_case) Ditto.
-
-Tue Oct 31 19:28:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.h: [!HAVE_STRCHR] Drop compatibility code, because now we
-       assume a C89 compliant library.  (Gnulib makes this assumption so
-       we might as well too.)
-       [!HAVE_STRRCHR] Ditto.
-
-Thu Oct 26 20:19:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add the new files.
-
-       * legacy-encoding.c: New file.
-
-       * legacy-encoding.h: New file.
-
-       * float-format.c: New file.
-
-       * float-format.h: New file.
-
-       * integer-format.c: New file.
-
-       * integer-format.h: New file.
-
-Sun Oct 15 09:49:50 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * hash.c hash.h: Added hsh_create_pool, a hash which uses a pool
-       for its memory allocation.
-
-Mon Jul 31 15:49:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       * compiler.h: (macro CONST_FUNCTION) New macro.
-       (macro PURE_FUNCTION) New macro.
-
-Sun Jul 16 21:07:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       * message.c: (static int messages_disabled) New variable.
-       (msg_emit) Don't emit the message if messages are disabled.
-       (msg_disable) New function.
-       (msg_enable) New function.
-
-       * str.c: (free_string) New function.
-       (ds_register_pool) New function.
-       (ds_unregister_pool) New function.
-       (ds_set_length) New function.
-
-Mon Jul 10 17:26:58 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * llx.c: #included compiler.h and removed explicit preprocessor cruft.
-
-Fri Jul  7 20:01:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: (src_libpspp_libpspp_a_SOURCES) Add assertion.h.
-       
-       * assertion.h: New file.  Replaced usage of assert(0) and abort()
-       with NOT_REACHED() from this file throughout the source tree.
-
-       * message.c: (request_bug_report_and_abort) Revise message printed
-       to include request to include lines above the message, which
-       should include an assertion failure message in many cases.
-       (msg_assert_fail) Removed.
-
-       * message.h: (assert) Removed.
-       (request_bug_report_and_abort) Mark NO_RETURN.
-
-Mon Jul  3 09:36:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * i18n.c: Made character conversion tolerant of failure to create the 
-       necessary iconv structs.
-
-Sat Jul  1 15:32:54 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: (src_libpspp_libpspp_a_SOURCES) Add new files.
-
-       * ll.c: New file.
-
-       * ll.h: New file.
-
-       * llx.c: New file.
-
-       * llx.h: New file.
-
-Sun Jun 25 22:35:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       Optimize rehashing: we know that none of the entries in the hash
-       table are equal, so we need not compare them to each other during
-       rehashing.
-       
-       * hash.c: (locate_empty_entry) New function.
-       (rehash) Use locate_empty_entry() instead of
-       locate_matching_entry().
-
-Fri Jun  9 14:03:29 2006  Ben Pfaff  <blp@gnu.org>
-
-       Reform string library.
-       
-       * str.c (ss_empty): New function.  Replaces some uses of ls_init()
-       or ls_null().
-       (ss_cstr) New function.  Replaces some uses of ls_init().
-       (ss_buffer) New function.  Replaces some uses of ls_init().
-       (ss_substr) New function.
-       (ss_head) New function.
-       (ss_tail) New function.
-       (ss_alloc_substring) New function.  Replaces use of ls_create().
-       (ss_alloc_uninit) New function.
-       (ss_dealloc) New function.  Replaces use of ls_destroy().
-       (ss_truncate) New function.
-       (ss_rtrim) New function.
-       (ss_ltrim) New function.
-       (ss_trim) New function.
-       (ss_chomp) New function.
-       (ss_separate) New function.
-       (ss_tokenize) New function.
-       (ss_advance) New function.
-       (ds_create) Renamed ds_init_cstr().  Updated all callers.
-       (ss_match_char) New function.
-       (ss_get_char) New function.
-       (ss_get_until) New function.
-       (ss_get_chars) New function.
-       (ss_is_empty) New function.
-       (ss_length) New function.  Replaces ls_length().
-       (ss_data) New function.  Replaces many uses of ls_c_str().
-       (ss_end) New function.  Replaces ls_end().
-       (ss_at) New function.
-       (ss_first) New function.
-       (ss_last) New function.
-       (ss_span) New function.
-       (ss_cspan) New function.
-       (ss_compare) New function.
-       (ss_pointer_to_position) New function.
-       (ss_xstrdup) New function.
-       (ds_init) Renamed ds_init_empty().  All callers updated.
-       (ds_init_string) New function.
-       (ds_init_substring) Changed interface to take a struct substring.
-       Updated all callers.
-       (ds_init_cstr) New function.  Replaces ds_create().  All callers
-       updated.
-       (ds_assign_substring) Changed interface to take a struct
-       substring.  Updated all callers.
-       (ds_assign_buffer) Removed.  Changed all callers to use
-       ds_assign_substring().
-       (ds_assign_c_str) Renamed ds_assign_cstr().  All callers updated.
-       (ds_ss) New function.
-       (ds_substr) New function.
-       (ds_head) New function.
-       (ds_tail) New function.
-       (ds_rtrim) New function.  Replaces ds_rtrim_spaces().  All callers
-       updated.
-       (ds_ltrim) New function.  Replaces ds_ltrim_spaces().  All callers
-       updated.
-       (ds_trim) New function.  Replaces ds_trim_spaces().  All callers
-       updated.
-       (ds_rtrim_spaces) Removed.
-       (ds_ltrim_spaces) Removed.
-       (ds_trim_spaces) Removed.
-       (ds_separate) Changed interface to use substrings.  All callers
-       updated.
-       (ds_tokenize) Changed interface to use substrings.  All callers
-       updated.
-       (ds_c_str) Renamed ds_cstr().  All callers updated.
-       (ds_span) Changed interface to use substring for SKIP_SET and
-       dropped OFS.  All callers updated.
-       (ds_cspan) Changed interface to use substring for STOP_SET and
-       dropped OFS.  All callers updated.
-       (ds_find_char) New function.
-       (ds_compare) New function.
-       (ds_pointer_to_position) New function.
-       (ds_xstrdup) New function.  Replaced all users of
-       xstrdup(ds_c_str(s)) by a call to this function.
-       (ds_gets) Renamed ds_read_line().  All callers updated.
-       (ds_get_config_line) Renamed ds_read_config_line().  All callers
-       updated.
-       (ds_puts) Renamed ds_put_cstr().  All callers updated.
-       (ds_put_substring) New function.  Replaces ds_concat().  All
-       callers updated.
-       (ds_concat) Removed.
-       (ds_append_uninit) Renamed ds_put_uninit().  All callers updated.
-       (ds_printf) Renamed ds_put_format().  All callers updated.
-       (ds_vprintf) Renamed ds_put_vformat().  All callers updated.
-       (ds_putc) Renamed ds_put_char().  All callers updated.
-       (ds_putc_multiple) Renamed ds_put_char_multiple().  All callers
-       updated.
-       (ls_create) Removed.  Replaced by ss_alloc_substring().
-       (ls_create_buffer) Removed.  Replaced by ss_alloc_substring().
-       (ls_init) Removed.  Replaced by ss_buffer().
-       (ls_shallow_copy) Removed.  Just use assignment.
-       (ls_destroy) Removed.  Replaced by ss_dealloc().
-       (ls_null) Removed.
-       (ls_null_p) Removed.
-       (ls_empty_p) Removed.  Replaced by ss_is_empty().
-       (ls_c_str) Removed.
-       (ls_end) Removed.  Replaced by ss_end().
-
-       * str.h (struct fixed_string): Renamed struct substring, updated
-       all users.
-       (CC_SPACES) New macro.
-       (CC_DIGITS) Ditto.
-       (CC_XDIGITS) Ditto.
-       (CC_LETTERS) Ditto.
-       (CC_ALNUM) Ditto.
-       (SS_EMPTY_INITIALIZER) Ditto.
-       (SS_LITERAL_INITIALIZER) Ditto.
-       (struct string) Removed string, length members.  Add substring
-       member.
-       (DS_INITIALIZER) Rename DS_EMPTY_INITIALIZER.
-
-Tue May 30 19:45:12 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * i18n.c i18n.h: New files.
-
-Tue May 16 06:50:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk (src/libpspp/version.c): Removed groff_font_path,
-       which is no longer used.
-
-       * message.c (request_bug_report_and_abort): Don't print
-       groff_font_path, which no longer exists.
-
-       * version.h (locale_dir): Removed groff_font_path.
-
-Sun May 14 22:06:53 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (spprintf): Moved definition of spprintf() here, from
-       str.h.
-
-       * str.h: (nsprintf) Removed.  Changed all users to use sprintf()
-       instead.
-       (nvsprintf) Removed.  Changed all users to use vsprintf() instead.
-
-Sun May 14 20:52:20 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (ds_init): Remove `capacity' argument and just initialize
-       the string to a capacity of zero.  Updated all callers.
-
-Tue May  9 09:56:57 2006  Ben Pfaff  <blp@gnu.org>
-
-       * va_copy.h: Removed.  Now use va_copy() provided by gnulib
-       instead.
-
-       * automake.mk: (src_libpspp_libpspp_a_SOURCES) Removed va_copy.h.
-
-Sun May  7 18:17:32 2006  Ben Pfaff  <blp@gnu.org>
-
-       * pool.c (pool_vasprintf): New function.
-       (pool_asprintf) New function.
-
-Sun May  7 17:09:54 2006  Ben Pfaff  <blp@gnu.org>
-
-       * compiler.h: (macro WARN_UNUSED_RESULT) New macro.
-
-Sun May  7 14:32:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       * va_copy.h: New header.
-
-       * str.c: Use header instead of inlining va_copy() macro
-       implementation.
-
-Sun May  7 10:06:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * array.c array.h: Constness of sort.
-
-Thu May  4 18:01:37 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * message.c message.h: Added functions to create and copy a msg.
-
-Tue May  2 15:41:50 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (ds_append_uninit): No need to add 1 to arg passed to
-       ds_extend(), because the argument does not include space for a
-       null terminator.  Also, fix warning.
-
-Tue Apr 25 11:07:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       Finish reforming error message support.  In this phase, move
-       message.c into libpspp.
-       
-       * message.c: Move here from src/.  Also remove a few unneeded
-       headers.
-
-       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add message.c. 
-
-Tue Apr 25 10:54:44 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, drop
-       actual message printing from core code, substituting a callback,
-       and add the callback to each UI.  Also, move verbose_msg() into
-       its own module.
-
-       * automake.mk (src_libpspp_libpspp_a_SOURCES): Added
-       verbose-msg.c, verbose-msg.h.
-
-       * verbose-msg.c: New file.
-
-       * verbose-msg.h: New file.
-
-Mon Apr 24 17:26:47 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, rename
-       all the message functions and types to start with "msg", except
-       for the ones that will be moving to other modules anyway.
-
-       All references to the identifiers below were updated likewise.
-       
-       * message.h: (enum file_locator) Renamed `enum msg_locator'.
-       (struct error) Renamed `struct msg'.
-       (err_assert_fail) Renamed msg_assert_fail().
-
-Sun Apr 23 22:07:06 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, get rid
-       of message "titles" and put the message text in `struct error'.
-       Now `struct error' encapsulates a message more properly.
-       
-       * message.h: (struct error) Remove `title' member.  Add `text'
-       member.
-       
-Sun Apr 16 20:43:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, we
-       divide the classification of messages along "category" and
-       "severity" axes.
-
-       * message.h: (enum msg_class) Named this set of enumerations.
-       (enum msg_category) New enum: MSG_GENERAL, MSG_SYNTAX, MSG_DATA.
-       (enum msg_severity) New enum: MSG_ERROR, MSG_WARNING, MSG_NOTE.
-       (msg_class_to_category) New inline function.
-       (msg_class_to_severity) New inline function.
-       (msg_class_from_category_and_severity) New inline function.
-       (struct error) Removed `class' member, added `category',
-       `severity'.  Updated all users of this struct to use the new
-       members.
-
-Sun Apr 16 20:33:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c (ds_vprintf): Don't try to write into the string if it is
-       null.
-
-Sun Apr 16 18:52:41 2006  Ben Pfaff  <blp@gnu.org>
-
-       GNU standards require "file name" instead of "filename" in
-       documentation.  It's nice for our code to follow the convention
-       too.
-       
-       * message.h: (struct file_locator) Rename filename member to
-       file_name.  Updated all references.
-
-Sun Apr 16 16:05:43 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, we get
-       rid of VM() and the other msg() support for "verbosity", replacing
-       it by a new function verbose_msg().
-
-       * message.h: (enum ERR_CLASS_COUNT) Renamed ERR_CLASS_CNT.
-       (enum ERR_CLASS_MASK) Removed.
-       (enum ERR_VERBOSITY_SHIFT) Removed.
-       (enum ERR_VERBOSITY_MASK) Removed.
-       (macro VM) Removed.
-
-Sun Apr 16 11:48:07 2006  Ben Pfaff  <blp@gnu.org>
-
-       Start reforming error message support.  In this phase, we get rid
-       of "installation errors" and change all uses of msg() in the
-       output drivers to uses of error() or error_at_line().
-
-       * message.h: Remove IE, IS enums.
-
-Mon Apr  3 11:10:21 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c: (ds_separate) Change interface for cleanliness and
-       consistency with ds_tokenize(), and rewrite to shorten and
-       simplify.  Updated all callers.
-       (ds_tokenize) New function.
-
-Fri Mar 31 10:38:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       Add freaderror() analogous to fwriteerror() in gnulib.
-
-       * freaderror.c: New file.
-
-       * freaderror.h: New file.
-
-Thu Mar 30 16:15:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.c: (ds_create) Adjust capacity selection.
-       (ds_init) Use MAX macro for clarity.
-       (ds_create_substr) Rewrote.
-       (ds_replace) Renamed ds_assign_c_str(), reimplemented.  Changed
-       all callers to use a ds_assign_*() function.
-       (ds_init_substring) New function.
-       (ds_assign_string) New function.
-       (ds_assign_substring) New function.
-       (ds_assign_buffer) New function.
-       (ds_assign_c_str) New function.
-       (ds_truncate) Rewrote for clarity.
-       (ds_rpad) Reimplement in terms of ds_putc_multiple().
-       (ds_ltrim_spaces) Reimplement.
-       (ds_trim_spaces) New function.
-       (ds_separate) New function.
-       (ds_c_str) Make tolerant of null pointer, allowing static
-       initialization of strings.
-       (ds_find) Rename ds_span(), change interface.
-       (ds_n_find) Rename ds_cspan(), change interface.
-       (ds_at) New function.
-       (ds_first) Reimplement in terms of ds_at().
-       (remove_comment) New function.
-       (ds_get_config_line) Reimplement in terms of other functions.
-       Change type of LINE_NUMBER parameter.  Updated all callers.
-       (ds_vprintf) Modify for clarity.
-       (ds_putc) Better to be safe than sorry.
-       (ds_putc_multiple) New function.
-
-       * str.h: (struct string) Reorder members.
-       (macro DS_INITIALIZER) New macro that can be used to initialize a
-       string (as empty).
-       (ds_c_str) Remove inline version.
-
-Tue Mar 28 13:49:11 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * str.[ch]: New functions ds_create_substr, ds_find, ds_n_find, 
-       ds_ltrim_spaces
-
-Sat Mar  4 12:59:01 2006  Ben Pfaff  <blp@gnu.org>
-
-       * compiler.h: New file.
-
-Sat Mar  4 11:55:16 2006  Ben Pfaff  <blp@gnu.org>
-
-       * str.h: Now assume that sprintf() returns the correct value.
-       Always implement spprintf as a static inline function.  Change
-       nsprintf, nvsprintf to simple macros that call sprintf, vsprintf.
-
-       * str.c: Remove spprintf, nsprintf, nvsprintf conditional
-       definitions.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/libpspp/OChangeLog b/src/libpspp/OChangeLog
new file mode 100644 (file)
index 0000000..229b4f9
--- /dev/null
@@ -0,0 +1,819 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * hash.c (hsh_hash_int): Use gsl_isnan instead of isnan, as a
+       stopgap measure for portability until appropriate gnulib modules
+       are available.
+
+       * misc.h (macro isinf): Remove implementations of isinf, isnan,
+       and finite, because they were not effective and we are now using
+       the equivalent GSL functions.
+
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6427.  Reviewed by John Darrington.
+
+       * automake.mk: Remove moved files.
+
+       * syntax-gen.c: Moved to src/ui (and rewritten).
+
+       * syntax-gen.h: Ditto.
+
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6441.  Reviewed by John Darrington.
+
+       * str.c (ss_match_char_in): New function.
+
+2008-02-18  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6426.  Thanks to John Darrington for review.
+
+       * str.c (ds_read_line): Add argument to limit the length of the
+       line to be read.  Update all callers.
+
+2008-02-01  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6386.  Thanks to John Darrington for review.
+
+       * str.c (str_format_26adic): New function.
+
+2007-12-24  John Darrington <john@darrington.wattle.id.au>
+
+        * taint.c (taint_destroy): Return true if pointer is null.
+
+2007-11-25  Ben Pfaff  <blp@gnu.org>
+
+       * float-format.c (assemble_number): Only store 32 bits for Z short
+       format.  Partial fix for bug #21590.
+
+2007-11-08  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (ds_read_stream): Change return value semantics to be more
+       useful.  Update all users.
+
+2007-11-03 John Darrington <john@darrington.wattle.id.au>
+
+       * i18n.c i18n.h: Added convertor from UTF8 to system.
+       This is needed for reading gnumeric files (and possibly others).
+
+2007-10-11  Ben Pfaff  <blp@gnu.org>
+
+       * xalloc.h: Removed.  Changed all users to include "xalloc.h" from
+       gnulib instead.
+
+       * xalloc.c: Removed.
+
+2007-10-11  Ben Pfaff  <blp@gnu.org>
+
+       * alloc.h (local_alloc): Removed.  Changed all users to use
+       xmalloca instead.
+       (local_free): Removed.  Changed all users to use freea instead.
+
+2007-10-11  Ben Pfaff  <blp@gnu.org>
+
+       * float-format.c (float_get_lowest): New function.
+       
+       * magic.c: Removed.
+
+       * magic.h: Removed.  Changed all references to NOT_INT,
+       NOT_DOUBLE, and NOT_LONG to use other constants.  Changed
+       references to second_lowest_value to call float_get_lowest.
+
+2007-10-10  Ben Pfaff  <blp@gnu.org>
+
+       We assume IEEE-754 now.
+
+       * float-format.h (enum float_format): Don't check for
+       FPREP_IEEE754 macro any longer.
+
+       * magic.h: Ditto.
+
+2007-09-16  Ben Pfaff  <blp@gnu.org>
+
+       * copyleft.c: Add trailing new-lines to lack-of-warranty
+       statement.
+
+2007-09-05 John Darrington <john@darrington.wattle.id.au>
+
+       * getl.c: Add extra members to struct getl_source, to maintain the
+       error mode and the syntax_mode. 
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       * getl.c (getl_append_source): Add source to *end* of list.
+       Otherwise the list ends up in reverse order.
+
+       * automake.mk (src/libpspp/version.c): Use $HOME instead of ~ in
+       paths.  We don't interpolate ~.
+
+2007-07-22  Ben Pfaff  <blp@gnu.org>
+
+       * str.h: Include xstrndup.h also.
+
+       * float-format.c (float_get_double): New function.
+
+2007-07-06  Ben Pfaff  <blp@gnu.org>
+
+       * copyleft.c (legal): Update startup notice to use format
+       recommended by latest GNU coding standards.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * array.c (binary_search): Fix assertion.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Add error propagation layer.  Patch #5916, slightly revised.
+
+       * automake.mk: Add new files.
+       
+       * taint.c: New file.
+
+       * taint.h: New file.
+
+2007-06-03  Ben Pfaff  <blp@gnu.org>
+
+       Add ability for reverse iteration to tower code.
+       
+       * tower.c (tower_last): New function.
+       (tower_prev): New function.
+       (abt_to_tower_node): New function.
+       (first_node): Use abt_to_tower_node.
+       (last_node): New function.
+       (next_ndoe): Use abt_to_tower_node.
+       (prev_node): New function.
+
+2007-06-03  Ben Pfaff  <blp@gnu.org>
+
+       * tower.c: Cache repeated lookups of a single tower element.  This
+       turns such lookups into O(1) operations without harming the big-O
+       of other operations.
+
+       * tower.h (struct tower): Add members for caching.
+
+       * range-set.c (range_set_clone): New function.
+
+       * array.c (insert_range): New function.
+       (insert_element): New function.
+       (move_range): New function.
+
+2007-04-25  Ben Pfaff  <blp@gnu.org>
+
+       * model-checker.c: Don't use type sighandler_t, which is a GNU
+       extension.  Reported by "Daniel E WILLIAMS"
+       <Daniel.E.Williams@state.or.us>.
+
+2007-04-25 John Darrington <john@darrington.wattle.id.au>
+
+       * i18n.c: Fixed bug converting long strings
+
+2007-04-22  Ben Pfaff  <blp@gnu.org>
+
+       Patch #5884.
+       
+       * ll.h (ll_for_each_reverse): New macro.
+       (ll_for_each_reverse_continue): New macro.
+       (ll_for_each_reverse_safe): New macro.
+       (ll_for_each_safe_reverse_continue): New macro.
+       (ll_for_each_reverse_preremove): New macro.
+       (ll_for_each_reverse_postremove): New macro.
+       (ll_remove__): Removed (dead code).
+       (ll_tail__): New macro.
+       (ll_prev__): New macro.
+
+2007-04-22  Ben Pfaff  <blp@gnu.org>
+
+       Implement model checker for testing purposes.
+
+       Patch #5873.
+       
+       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add
+       model-checker.[ch].  Alphabetize.
+
+       * model-checker.c: New file.
+
+       * model-checker.h: New file.
+
+2007-04-03  Ben Pfaff  <blp@gnu.org>
+
+       Apply patches #5828, #5837, #5841, #5843.
+
+       * abt.c (insert_relative): New function.
+       (abt_insert_after): New function.
+       (abt_insert_before): New function.
+
+       * range-map.c: New file.
+
+       * range-map.h: New file.
+
+       * range-set.c: New file.
+
+       * range-set.h: New file.
+
+       * tower.c: New file.
+
+       * tower.h: New file.
+
+2007-04-01  Ben Pfaff  <blp@gnu.org>
+
+       * bt.c: Need #include <limits.h>.  Thanks to "John McCabe-Dansted"
+       <gmatht@gmail.com> for pointing this out.
+
+2007-03-31  Ben Pfaff  <blp@gnu.org>
+
+       Patch #5827.
+
+       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add bt.c.
+
+       * bt.h: New file.
+
+       * bt.c: New file.
+
+2007-03-30  Ben Pfaff  <blp@gnu.org>
+
+       Patch #5829.
+
+       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add deque.c.
+
+       * deque.h: Completely rewrote.  Adapted client to new interface.
+
+       * deque.c: New file.
+
+2007-03-25  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add
+       sparse-array.[ch].
+
+       * pool.c (pool_zalloc): New function.
+       (pool_calloc): New function.
+
+       * sparse-array.c: New file.
+
+       * sparse-array.h: New file.
+
+Mon Mar  5 20:55:49 CET 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * i18n.c: Cast second argument of iconv using ICONV_CONST
+
+2007-02-22  Ben Pfaff  <blp@gnu.org>
+
+       * string.h: Don't include vsnprintf.h any more, because gnulib has
+       now absorbed it into string.h.
+
+Thu Feb 22 12:25:52 CET 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * syntax-gen.h syntax-gen.c: New files.
+
+Sun Feb 18 11:21:41 2007  Ben Pfaff  <blp@gnu.org>
+
+       * alloc.h: Remove useless parentheses in #if "defined" operator.
+
+       * misc.h: Ditto.
+
+Tue Feb  6 20:00:13 2007  Ben Pfaff  <blp@gnu.org>
+
+       * misc.h [!HAVE_ISINF] (isinf): Define only if isinf is not
+       defined as a macro, because mingw seems to have the macro without
+       the function.
+       [!HAVE_ISNAN] (isnan): Ditto, for symmetry only.
+       [!AHVE_FINITE] (finite): Ditto, for symmetry only.
+
+Tue Feb  6 19:58:46 2007  Ben Pfaff  <blp@gnu.org>
+
+       * compiler.h (PRINTF_FORMAT): Use __printf__ instead of printf to
+       avoid problem with "#define printf libintl_printf" that libintl is
+       fond of doing.
+       (SCANF_FORMAT): Ditto, for symmetry only.
+
+Tue Feb  6 19:47:10 2007  Ben Pfaff  <blp@gnu.org>
+
+       * float-format.h: [FPREP_IEEE754] [WORDS_BIGENDIAN] Add missing
+       comma.
+
+Wed Jan 24 21:13:32 2007  Ben Pfaff  <blp@gnu.org>
+
+       * abt.c: New file.
+
+       * abt.h: New file.
+
+       * automake.mk: Add abt.c, abt.h to sources.
+
+Sun Jan 14 21:44:18 2007  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add deque.h to sources.
+       
+       * deque.h: New file.
+
+Wed Jan 10 06:49:38 2007  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add heap.c, heap.h to sources.
+
+       * heap.c: New file.
+
+       * heap.h: New file.
+
+Sun Dec 10 13:54:03 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (ss_tokenize): Skip the first delimiter character
+       following the token.  Otherwise, changing delimiters from token to
+       token can't have a sensible effect, because we'll get the previous
+       delimiter as part of the next token.
+       (ss_match_string): New function.
+
+Sat Dec  9 18:48:55 2006  Ben Pfaff  <blp@gnu.org>
+
+       * misc.h (macro range): Removed, as it was unused.
+
+Sat Dec  9 07:19:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * array.c: Removed gratuitous #include
+
+Thu Dec  7 20:33:23 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * getl.c getl.h : Changed signature of create function to take a 
+       string indicating the initial include path.
+
+Sun Dec  3 11:36:10 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.h (SS_LITERAL_INITIALIZER): Cast the string literal to "char
+       *".  This normally does nothing but when GCC's -Wwrite-strings is
+       used it fixes a warning that otherwise can't be avoided.
+
+Sun Dec  3 11:35:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (ss_alloc_substring_pool): New function.
+       (ss_alloc_uninit_pool) New function.
+
+Sun Dec  3 11:28:06 2006  Ben Pfaff  <blp@gnu.org>
+
+       * getl.h: (enum getl_syntax) New enumeration to distinguish
+       between "batch" and "interactive" in a clearer way than a bool.
+       (struct getl_interface) Add an arg to "read" to return the
+       intended syntax mode.  Add an arg to "filter" to specify the
+       syntax mode of the line to filter.
+
+       * getl.c (do_read_line): Instead of returning the syntax type of
+       the line read based on whether the source itself is interactive,
+       return it based on whether the line itself should be treated as
+       having batch or interactive syntax.  Also, adapt interface to the
+       new interfaces of lex_init() and getl_interface.
+
+Wed Nov 29 19:35:44 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * getl.c getl.h: New files. Created interface from base of 
+       language/line-buffer.[ch]
+
+       * msg-locator.c msg-locator.h: New files. Moved from
+       language/line-buffer.[ch]
+
+Fri Nov 24 17:27:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * misc.h: (min) Removed.  All references updated to use MIN, from
+       minmax.h provided by gnulib.
+       (max) Ditto (for MAX).
+
+Sun Nov 19 09:22:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (ss_get_long): New function.
+       (ss_compare_case) Ditto.
+       (ss_equals) Ditto.
+       (ss_equals_case) Ditto.
+
+Tue Oct 31 19:28:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.h: [!HAVE_STRCHR] Drop compatibility code, because now we
+       assume a C89 compliant library.  (Gnulib makes this assumption so
+       we might as well too.)
+       [!HAVE_STRRCHR] Ditto.
+
+Thu Oct 26 20:19:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add the new files.
+
+       * legacy-encoding.c: New file.
+
+       * legacy-encoding.h: New file.
+
+       * float-format.c: New file.
+
+       * float-format.h: New file.
+
+       * integer-format.c: New file.
+
+       * integer-format.h: New file.
+
+Sun Oct 15 09:49:50 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * hash.c hash.h: Added hsh_create_pool, a hash which uses a pool
+       for its memory allocation.
+
+Mon Jul 31 15:49:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       * compiler.h: (macro CONST_FUNCTION) New macro.
+       (macro PURE_FUNCTION) New macro.
+
+Sun Jul 16 21:07:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       * message.c: (static int messages_disabled) New variable.
+       (msg_emit) Don't emit the message if messages are disabled.
+       (msg_disable) New function.
+       (msg_enable) New function.
+
+       * str.c: (free_string) New function.
+       (ds_register_pool) New function.
+       (ds_unregister_pool) New function.
+       (ds_set_length) New function.
+
+Mon Jul 10 17:26:58 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * llx.c: #included compiler.h and removed explicit preprocessor cruft.
+
+Fri Jul  7 20:01:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: (src_libpspp_libpspp_a_SOURCES) Add assertion.h.
+       
+       * assertion.h: New file.  Replaced usage of assert(0) and abort()
+       with NOT_REACHED() from this file throughout the source tree.
+
+       * message.c: (request_bug_report_and_abort) Revise message printed
+       to include request to include lines above the message, which
+       should include an assertion failure message in many cases.
+       (msg_assert_fail) Removed.
+
+       * message.h: (assert) Removed.
+       (request_bug_report_and_abort) Mark NO_RETURN.
+
+Mon Jul  3 09:36:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * i18n.c: Made character conversion tolerant of failure to create the 
+       necessary iconv structs.
+
+Sat Jul  1 15:32:54 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: (src_libpspp_libpspp_a_SOURCES) Add new files.
+
+       * ll.c: New file.
+
+       * ll.h: New file.
+
+       * llx.c: New file.
+
+       * llx.h: New file.
+
+Sun Jun 25 22:35:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       Optimize rehashing: we know that none of the entries in the hash
+       table are equal, so we need not compare them to each other during
+       rehashing.
+       
+       * hash.c: (locate_empty_entry) New function.
+       (rehash) Use locate_empty_entry() instead of
+       locate_matching_entry().
+
+Fri Jun  9 14:03:29 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reform string library.
+       
+       * str.c (ss_empty): New function.  Replaces some uses of ls_init()
+       or ls_null().
+       (ss_cstr) New function.  Replaces some uses of ls_init().
+       (ss_buffer) New function.  Replaces some uses of ls_init().
+       (ss_substr) New function.
+       (ss_head) New function.
+       (ss_tail) New function.
+       (ss_alloc_substring) New function.  Replaces use of ls_create().
+       (ss_alloc_uninit) New function.
+       (ss_dealloc) New function.  Replaces use of ls_destroy().
+       (ss_truncate) New function.
+       (ss_rtrim) New function.
+       (ss_ltrim) New function.
+       (ss_trim) New function.
+       (ss_chomp) New function.
+       (ss_separate) New function.
+       (ss_tokenize) New function.
+       (ss_advance) New function.
+       (ds_create) Renamed ds_init_cstr().  Updated all callers.
+       (ss_match_char) New function.
+       (ss_get_char) New function.
+       (ss_get_until) New function.
+       (ss_get_chars) New function.
+       (ss_is_empty) New function.
+       (ss_length) New function.  Replaces ls_length().
+       (ss_data) New function.  Replaces many uses of ls_c_str().
+       (ss_end) New function.  Replaces ls_end().
+       (ss_at) New function.
+       (ss_first) New function.
+       (ss_last) New function.
+       (ss_span) New function.
+       (ss_cspan) New function.
+       (ss_compare) New function.
+       (ss_pointer_to_position) New function.
+       (ss_xstrdup) New function.
+       (ds_init) Renamed ds_init_empty().  All callers updated.
+       (ds_init_string) New function.
+       (ds_init_substring) Changed interface to take a struct substring.
+       Updated all callers.
+       (ds_init_cstr) New function.  Replaces ds_create().  All callers
+       updated.
+       (ds_assign_substring) Changed interface to take a struct
+       substring.  Updated all callers.
+       (ds_assign_buffer) Removed.  Changed all callers to use
+       ds_assign_substring().
+       (ds_assign_c_str) Renamed ds_assign_cstr().  All callers updated.
+       (ds_ss) New function.
+       (ds_substr) New function.
+       (ds_head) New function.
+       (ds_tail) New function.
+       (ds_rtrim) New function.  Replaces ds_rtrim_spaces().  All callers
+       updated.
+       (ds_ltrim) New function.  Replaces ds_ltrim_spaces().  All callers
+       updated.
+       (ds_trim) New function.  Replaces ds_trim_spaces().  All callers
+       updated.
+       (ds_rtrim_spaces) Removed.
+       (ds_ltrim_spaces) Removed.
+       (ds_trim_spaces) Removed.
+       (ds_separate) Changed interface to use substrings.  All callers
+       updated.
+       (ds_tokenize) Changed interface to use substrings.  All callers
+       updated.
+       (ds_c_str) Renamed ds_cstr().  All callers updated.
+       (ds_span) Changed interface to use substring for SKIP_SET and
+       dropped OFS.  All callers updated.
+       (ds_cspan) Changed interface to use substring for STOP_SET and
+       dropped OFS.  All callers updated.
+       (ds_find_char) New function.
+       (ds_compare) New function.
+       (ds_pointer_to_position) New function.
+       (ds_xstrdup) New function.  Replaced all users of
+       xstrdup(ds_c_str(s)) by a call to this function.
+       (ds_gets) Renamed ds_read_line().  All callers updated.
+       (ds_get_config_line) Renamed ds_read_config_line().  All callers
+       updated.
+       (ds_puts) Renamed ds_put_cstr().  All callers updated.
+       (ds_put_substring) New function.  Replaces ds_concat().  All
+       callers updated.
+       (ds_concat) Removed.
+       (ds_append_uninit) Renamed ds_put_uninit().  All callers updated.
+       (ds_printf) Renamed ds_put_format().  All callers updated.
+       (ds_vprintf) Renamed ds_put_vformat().  All callers updated.
+       (ds_putc) Renamed ds_put_char().  All callers updated.
+       (ds_putc_multiple) Renamed ds_put_char_multiple().  All callers
+       updated.
+       (ls_create) Removed.  Replaced by ss_alloc_substring().
+       (ls_create_buffer) Removed.  Replaced by ss_alloc_substring().
+       (ls_init) Removed.  Replaced by ss_buffer().
+       (ls_shallow_copy) Removed.  Just use assignment.
+       (ls_destroy) Removed.  Replaced by ss_dealloc().
+       (ls_null) Removed.
+       (ls_null_p) Removed.
+       (ls_empty_p) Removed.  Replaced by ss_is_empty().
+       (ls_c_str) Removed.
+       (ls_end) Removed.  Replaced by ss_end().
+
+       * str.h (struct fixed_string): Renamed struct substring, updated
+       all users.
+       (CC_SPACES) New macro.
+       (CC_DIGITS) Ditto.
+       (CC_XDIGITS) Ditto.
+       (CC_LETTERS) Ditto.
+       (CC_ALNUM) Ditto.
+       (SS_EMPTY_INITIALIZER) Ditto.
+       (SS_LITERAL_INITIALIZER) Ditto.
+       (struct string) Removed string, length members.  Add substring
+       member.
+       (DS_INITIALIZER) Rename DS_EMPTY_INITIALIZER.
+
+Tue May 30 19:45:12 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * i18n.c i18n.h: New files.
+
+Tue May 16 06:50:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk (src/libpspp/version.c): Removed groff_font_path,
+       which is no longer used.
+
+       * message.c (request_bug_report_and_abort): Don't print
+       groff_font_path, which no longer exists.
+
+       * version.h (locale_dir): Removed groff_font_path.
+
+Sun May 14 22:06:53 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (spprintf): Moved definition of spprintf() here, from
+       str.h.
+
+       * str.h: (nsprintf) Removed.  Changed all users to use sprintf()
+       instead.
+       (nvsprintf) Removed.  Changed all users to use vsprintf() instead.
+
+Sun May 14 20:52:20 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (ds_init): Remove `capacity' argument and just initialize
+       the string to a capacity of zero.  Updated all callers.
+
+Tue May  9 09:56:57 2006  Ben Pfaff  <blp@gnu.org>
+
+       * va_copy.h: Removed.  Now use va_copy() provided by gnulib
+       instead.
+
+       * automake.mk: (src_libpspp_libpspp_a_SOURCES) Removed va_copy.h.
+
+Sun May  7 18:17:32 2006  Ben Pfaff  <blp@gnu.org>
+
+       * pool.c (pool_vasprintf): New function.
+       (pool_asprintf) New function.
+
+Sun May  7 17:09:54 2006  Ben Pfaff  <blp@gnu.org>
+
+       * compiler.h: (macro WARN_UNUSED_RESULT) New macro.
+
+Sun May  7 14:32:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       * va_copy.h: New header.
+
+       * str.c: Use header instead of inlining va_copy() macro
+       implementation.
+
+Sun May  7 10:06:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * array.c array.h: Constness of sort.
+
+Thu May  4 18:01:37 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * message.c message.h: Added functions to create and copy a msg.
+
+Tue May  2 15:41:50 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (ds_append_uninit): No need to add 1 to arg passed to
+       ds_extend(), because the argument does not include space for a
+       null terminator.  Also, fix warning.
+
+Tue Apr 25 11:07:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       Finish reforming error message support.  In this phase, move
+       message.c into libpspp.
+       
+       * message.c: Move here from src/.  Also remove a few unneeded
+       headers.
+
+       * automake.mk (src_libpspp_libpspp_a_SOURCES): Add message.c. 
+
+Tue Apr 25 10:54:44 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, drop
+       actual message printing from core code, substituting a callback,
+       and add the callback to each UI.  Also, move verbose_msg() into
+       its own module.
+
+       * automake.mk (src_libpspp_libpspp_a_SOURCES): Added
+       verbose-msg.c, verbose-msg.h.
+
+       * verbose-msg.c: New file.
+
+       * verbose-msg.h: New file.
+
+Mon Apr 24 17:26:47 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, rename
+       all the message functions and types to start with "msg", except
+       for the ones that will be moving to other modules anyway.
+
+       All references to the identifiers below were updated likewise.
+       
+       * message.h: (enum file_locator) Renamed `enum msg_locator'.
+       (struct error) Renamed `struct msg'.
+       (err_assert_fail) Renamed msg_assert_fail().
+
+Sun Apr 23 22:07:06 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, get rid
+       of message "titles" and put the message text in `struct error'.
+       Now `struct error' encapsulates a message more properly.
+       
+       * message.h: (struct error) Remove `title' member.  Add `text'
+       member.
+       
+Sun Apr 16 20:43:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, we
+       divide the classification of messages along "category" and
+       "severity" axes.
+
+       * message.h: (enum msg_class) Named this set of enumerations.
+       (enum msg_category) New enum: MSG_GENERAL, MSG_SYNTAX, MSG_DATA.
+       (enum msg_severity) New enum: MSG_ERROR, MSG_WARNING, MSG_NOTE.
+       (msg_class_to_category) New inline function.
+       (msg_class_to_severity) New inline function.
+       (msg_class_from_category_and_severity) New inline function.
+       (struct error) Removed `class' member, added `category',
+       `severity'.  Updated all users of this struct to use the new
+       members.
+
+Sun Apr 16 20:33:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c (ds_vprintf): Don't try to write into the string if it is
+       null.
+
+Sun Apr 16 18:52:41 2006  Ben Pfaff  <blp@gnu.org>
+
+       GNU standards require "file name" instead of "filename" in
+       documentation.  It's nice for our code to follow the convention
+       too.
+       
+       * message.h: (struct file_locator) Rename filename member to
+       file_name.  Updated all references.
+
+Sun Apr 16 16:05:43 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, we get
+       rid of VM() and the other msg() support for "verbosity", replacing
+       it by a new function verbose_msg().
+
+       * message.h: (enum ERR_CLASS_COUNT) Renamed ERR_CLASS_CNT.
+       (enum ERR_CLASS_MASK) Removed.
+       (enum ERR_VERBOSITY_SHIFT) Removed.
+       (enum ERR_VERBOSITY_MASK) Removed.
+       (macro VM) Removed.
+
+Sun Apr 16 11:48:07 2006  Ben Pfaff  <blp@gnu.org>
+
+       Start reforming error message support.  In this phase, we get rid
+       of "installation errors" and change all uses of msg() in the
+       output drivers to uses of error() or error_at_line().
+
+       * message.h: Remove IE, IS enums.
+
+Mon Apr  3 11:10:21 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c: (ds_separate) Change interface for cleanliness and
+       consistency with ds_tokenize(), and rewrite to shorten and
+       simplify.  Updated all callers.
+       (ds_tokenize) New function.
+
+Fri Mar 31 10:38:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       Add freaderror() analogous to fwriteerror() in gnulib.
+
+       * freaderror.c: New file.
+
+       * freaderror.h: New file.
+
+Thu Mar 30 16:15:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.c: (ds_create) Adjust capacity selection.
+       (ds_init) Use MAX macro for clarity.
+       (ds_create_substr) Rewrote.
+       (ds_replace) Renamed ds_assign_c_str(), reimplemented.  Changed
+       all callers to use a ds_assign_*() function.
+       (ds_init_substring) New function.
+       (ds_assign_string) New function.
+       (ds_assign_substring) New function.
+       (ds_assign_buffer) New function.
+       (ds_assign_c_str) New function.
+       (ds_truncate) Rewrote for clarity.
+       (ds_rpad) Reimplement in terms of ds_putc_multiple().
+       (ds_ltrim_spaces) Reimplement.
+       (ds_trim_spaces) New function.
+       (ds_separate) New function.
+       (ds_c_str) Make tolerant of null pointer, allowing static
+       initialization of strings.
+       (ds_find) Rename ds_span(), change interface.
+       (ds_n_find) Rename ds_cspan(), change interface.
+       (ds_at) New function.
+       (ds_first) Reimplement in terms of ds_at().
+       (remove_comment) New function.
+       (ds_get_config_line) Reimplement in terms of other functions.
+       Change type of LINE_NUMBER parameter.  Updated all callers.
+       (ds_vprintf) Modify for clarity.
+       (ds_putc) Better to be safe than sorry.
+       (ds_putc_multiple) New function.
+
+       * str.h: (struct string) Reorder members.
+       (macro DS_INITIALIZER) New macro that can be used to initialize a
+       string (as empty).
+       (ds_c_str) Remove inline version.
+
+Tue Mar 28 13:49:11 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * str.[ch]: New functions ds_create_substr, ds_find, ds_n_find, 
+       ds_ltrim_spaces
+
+Sat Mar  4 12:59:01 2006  Ben Pfaff  <blp@gnu.org>
+
+       * compiler.h: New file.
+
+Sat Mar  4 11:55:16 2006  Ben Pfaff  <blp@gnu.org>
+
+       * str.h: Now assume that sprintf() returns the correct value.
+       Always implement spprintf as a static inline function.  Change
+       nsprintf, nvsprintf to simple macros that call sprintf, vsprintf.
+
+       * str.c: Remove spprintf, nsprintf, nvsprintf conditional
+       definitions.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index a697e4021b3c6893d6061875cce62db02c30f234..a0d7879f524145936d9bacab94c7a365a4baef77 100644 (file)
@@ -91,3 +91,5 @@ src/libpspp/version.c: $(top_srcdir)/AUTHORS
        sed -e 's/^/  \"/' -e 's/$$/\",/' $(top_srcdir)/AUTHORS >> $@
        echo "0 };" >> $@
 
+
+EXTRA_DIST += src/libpspp/OChangeLog
diff --git a/src/math/ChangeLog b/src/math/ChangeLog
deleted file mode 100644 (file)
index 0025534..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-2008-08-17  Jason H Stover  <jhs@math.gcsu.edu>
-
-       * linreg.c (post_sweep_computations): New function to re-use the
-       re-usable. New function cache_init() to re-use the re-usable. 
-       pspp_linreg_with_cov() now estimates parameters via reg_sweep().
-
-2008-08-16  Jason H Stover  <jhs@math.gcsu.edu>
-
-       * linreg.c (pspp_linreg_with_cov): New function to estimate
-       parameters directly from covariance matrix instead of using the
-       entire data set.
-
-       * linreg.c (rearrange_covariance_matrix): New function to ensure
-       the columns of the covariance matrix correspond to the variables
-       in the model.
-
-2008-07-24   John Darrington <john@darrington.wattle.id.au>
-
-       * merge.c merge.h sort.c sort.h: Removed the value_cnt associated
-       with case ordering.  This ensures that the casereader returned by
-       sort_execute now has the same dimensions as the casereader passed 
-       in.
-
-2008-07-24  Jason H Stover  <jhs@math.gcsu.edu>
-
-       * covariance-matrix.c (covariance_pass_two): Dropped weight
-       argument. Corrected update of the entries of the covariance
-       matrix. 
-
-       * covariance-matrix.c (column_iterate): Dropped weight
-       argument. Corrected update of the entries of the covariance
-       matrix. 
-
-       * covariance-matrix.c (covariance_update_categorical_numeric):
-       Dropped weight argument. Corrected update of the entries of the
-       covariance matrix.
-
-2008-07-17  Jason H Stover  <jhs@math.gcsu.edu>
-
-       * covariance-matrix.c (covariance_update_categorical_numeric):
-       Altered to match new code in covariance_pass_two();
-
-       * covariance-matrix.h: Fix declaration of covariance_pass_two.
-
-       * covariance-matrix.c (covariance_pass_two): Moved numeric and
-       categorical scopes of V2 inside for loop. If V1 is not
-       categorical, but V2 is, recurse with the order of the variables
-       reversed to use the code in the previous "if" scope.
-
-2008-07-16  Jason Stover  <jhs@math.gcsu.edu>
-
-       * covariance-matrix.c (covariance_pass_two): Renamed
-       covariance_pass_one. Fixed update of covariance matrix when both
-       variables are categorical.
-       (column_iterate): New function.
-
-2008-07-15  Jason Stover  <jhs@math.gcsu.edu>
-
-       * covariance-matrix.c (covariance_pass_one): New file, new function.
-
-2008-06-21  Jason Stover  <jhs@math.gcsu.edu>
-
-       * linreg.c (pspp_linreg): Accept a struct design_matrix.  Use new
-       accessor functions pspp_coeff_get_mean, pspp_coeff_get_sd.  New
-       functions pspp_linreg_get_indep_variable_mean,
-       pspp_linreg_set_indep_variable_mean,
-       pspp_linreg_get_indep_variable_sd,
-       pspp_linreg_set_indep_variable_sd. Altered pspp_linreg_get_coeff
-       to use accessor function pspp_coeff_var_to_coeff.
-
-       * coefficient.c: New functions pspp_coeff_get_mean,
-       pspp_coeff_set_mean, pspp_coeff_get_sd, pspp_coeff_set_sd,
-       pspp_coeff_var_to_coeff. Added doubles to hold mean and standard
-       deviation in struct varinfo.
-
-2008-06-14  Jason Stover  <jhs@math.gcsu.edu>
-
-       * linreg/: moved linreg.[ch] to src/math.
-
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6512.
-
-       * moments.c (calc_moments): Use gsl_finite instead of finite, as a
-       stopgap measure for portability until appropriate gnulib modules
-       are available.
-
-2008-03-10  Jason Stover  <jhs@math.gcsu.edu>
-
-       * coefficient.c (pspp_linreg_get_coeff): Removed use of
-       coefficient 0 as intercept.
-
-2008-03-01  Jason Stover  <jhs@math.gcsu.edu>
-
-       * coefficient.c (pspp_coeff_init): Ensure first arg is not a null
-       pointer.
-
-       * coefficient.c (pspp_linreg_get_coeff): Make sure we don't return
-       a result beyond the last coefficient, or start with a coefficient
-       beyond the last one if there is only one.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adapt case sources, sinks, and clients of procedure code to the
-       new infrastructure.
-
-       * automake.mk: Add new files.
-       
-       * levene.c: Adapt to new casereaders.  Abstract better.
-
-       * merge.c: New file.
-
-       * merge.h: New file.
-
-       * sort.c: Rewrite in terms of case_ordering, merger.
-
-2007-05-31  Jason Stover  <jhs@math.gcsu.edu>
-
-       * interaction.c: New file.
-       * interaction.h : New file.
-
-Mon Feb  5 15:42:14 2007  Ben Pfaff  <blp@gnu.org>
-
-       * moments.c (moments_pass_two): Reduce number of multiplications.
-
-Thu Dec  7 15:27:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * factor-stats.c factor-stats.h: Changed independent values to 
-       be pointers rather than copies.
-
-Wed Dec  6 21:14:59 2006  Ben Pfaff  <blp@gnu.org>
-
-       * coefficient.c: (pspp_coeff_get_value) Compare variable pointers
-       instead of variable indexes.
-       (pspp_linreg_get_coeff) Ditto.
-       (design_matrix_col_to_var_index) Removed.
-       (design_matrix_col_to_var) Compare variable pointers
-       instead of variable indexes.
-       (cmp_dm_var_index) Ditto.
-       (design_matrix_var_to_column) Ditto.
-       (dm_var_to_last_column) Ditto.
-
-Sun Nov  5 08:30:32 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * levene.c levene.h Changed to use the new casefilter structure.
-
-2006-07-15  Jason Stover  <jhs@math.gcsu.edu>
-
-       * coefficient.c (pspp_coeff_init): Make design_matrix arg const.
-
-2006-07-14  Jason Stover  <jhs@math.gcsu.edu>
-
-       * coefficient.c (pspp_coeff_init): Removed use of
-       pspp_linreg_cache to make the routines more generally useful.
-
-2006-05-19  Jason Stover  <jhs@math.gcsu.edu>
-
-       * coefficient.h: Renamed pspp_linreg_coeff to pspp_coeff.
-
-       * coefficient.c: Moved to src/math.
-
-       * coefficient.h: Moved to src/math.
-
-Tue May  9 21:09:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       * sort.c (sort_active_file_to_casefile): Check return value of
-       multipass_procedure().
-
-Wed May  3 23:06:43 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       many global variables, consolidating procedure execution in
-       procedure.c.  Encapsulate transformations in new "struct
-       trns_chain".  Also, change implementation of N OF CASES, FILTER,
-       and PROCESS IF from special cases to transformations.
-        
-       * sort.c: (prepare_to_sort_active_file) Don't run a procedure
-       here.
-       (sort_active_file_in_place) Rewrite to run a procedure, capture
-       the output, sort the output, and set that as the source for the
-       next procedure.
-       (struct sort_to_casefile_cb_data) New structure.
-       (sort_to_casefile_callback) New function.
-       (sort_active_file_to_casefile) Rewrite to use
-       multipass_procedure().
-
-Sat Apr 29 11:09:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * removed unused variable.
-
-Sat Apr 15 18:01:22 2006  Ben Pfaff  <blp@gnu.org>
-
-       * factor-stats.c (metrics_postcalc): Add casts to fix warnings.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/math/OChangeLog b/src/math/OChangeLog
new file mode 100644 (file)
index 0000000..0025534
--- /dev/null
@@ -0,0 +1,197 @@
+2008-08-17  Jason H Stover  <jhs@math.gcsu.edu>
+
+       * linreg.c (post_sweep_computations): New function to re-use the
+       re-usable. New function cache_init() to re-use the re-usable. 
+       pspp_linreg_with_cov() now estimates parameters via reg_sweep().
+
+2008-08-16  Jason H Stover  <jhs@math.gcsu.edu>
+
+       * linreg.c (pspp_linreg_with_cov): New function to estimate
+       parameters directly from covariance matrix instead of using the
+       entire data set.
+
+       * linreg.c (rearrange_covariance_matrix): New function to ensure
+       the columns of the covariance matrix correspond to the variables
+       in the model.
+
+2008-07-24   John Darrington <john@darrington.wattle.id.au>
+
+       * merge.c merge.h sort.c sort.h: Removed the value_cnt associated
+       with case ordering.  This ensures that the casereader returned by
+       sort_execute now has the same dimensions as the casereader passed 
+       in.
+
+2008-07-24  Jason H Stover  <jhs@math.gcsu.edu>
+
+       * covariance-matrix.c (covariance_pass_two): Dropped weight
+       argument. Corrected update of the entries of the covariance
+       matrix. 
+
+       * covariance-matrix.c (column_iterate): Dropped weight
+       argument. Corrected update of the entries of the covariance
+       matrix. 
+
+       * covariance-matrix.c (covariance_update_categorical_numeric):
+       Dropped weight argument. Corrected update of the entries of the
+       covariance matrix.
+
+2008-07-17  Jason H Stover  <jhs@math.gcsu.edu>
+
+       * covariance-matrix.c (covariance_update_categorical_numeric):
+       Altered to match new code in covariance_pass_two();
+
+       * covariance-matrix.h: Fix declaration of covariance_pass_two.
+
+       * covariance-matrix.c (covariance_pass_two): Moved numeric and
+       categorical scopes of V2 inside for loop. If V1 is not
+       categorical, but V2 is, recurse with the order of the variables
+       reversed to use the code in the previous "if" scope.
+
+2008-07-16  Jason Stover  <jhs@math.gcsu.edu>
+
+       * covariance-matrix.c (covariance_pass_two): Renamed
+       covariance_pass_one. Fixed update of covariance matrix when both
+       variables are categorical.
+       (column_iterate): New function.
+
+2008-07-15  Jason Stover  <jhs@math.gcsu.edu>
+
+       * covariance-matrix.c (covariance_pass_one): New file, new function.
+
+2008-06-21  Jason Stover  <jhs@math.gcsu.edu>
+
+       * linreg.c (pspp_linreg): Accept a struct design_matrix.  Use new
+       accessor functions pspp_coeff_get_mean, pspp_coeff_get_sd.  New
+       functions pspp_linreg_get_indep_variable_mean,
+       pspp_linreg_set_indep_variable_mean,
+       pspp_linreg_get_indep_variable_sd,
+       pspp_linreg_set_indep_variable_sd. Altered pspp_linreg_get_coeff
+       to use accessor function pspp_coeff_var_to_coeff.
+
+       * coefficient.c: New functions pspp_coeff_get_mean,
+       pspp_coeff_set_mean, pspp_coeff_get_sd, pspp_coeff_set_sd,
+       pspp_coeff_var_to_coeff. Added doubles to hold mean and standard
+       deviation in struct varinfo.
+
+2008-06-14  Jason Stover  <jhs@math.gcsu.edu>
+
+       * linreg/: moved linreg.[ch] to src/math.
+
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6512.
+
+       * moments.c (calc_moments): Use gsl_finite instead of finite, as a
+       stopgap measure for portability until appropriate gnulib modules
+       are available.
+
+2008-03-10  Jason Stover  <jhs@math.gcsu.edu>
+
+       * coefficient.c (pspp_linreg_get_coeff): Removed use of
+       coefficient 0 as intercept.
+
+2008-03-01  Jason Stover  <jhs@math.gcsu.edu>
+
+       * coefficient.c (pspp_coeff_init): Ensure first arg is not a null
+       pointer.
+
+       * coefficient.c (pspp_linreg_get_coeff): Make sure we don't return
+       a result beyond the last coefficient, or start with a coefficient
+       beyond the last one if there is only one.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adapt case sources, sinks, and clients of procedure code to the
+       new infrastructure.
+
+       * automake.mk: Add new files.
+       
+       * levene.c: Adapt to new casereaders.  Abstract better.
+
+       * merge.c: New file.
+
+       * merge.h: New file.
+
+       * sort.c: Rewrite in terms of case_ordering, merger.
+
+2007-05-31  Jason Stover  <jhs@math.gcsu.edu>
+
+       * interaction.c: New file.
+       * interaction.h : New file.
+
+Mon Feb  5 15:42:14 2007  Ben Pfaff  <blp@gnu.org>
+
+       * moments.c (moments_pass_two): Reduce number of multiplications.
+
+Thu Dec  7 15:27:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * factor-stats.c factor-stats.h: Changed independent values to 
+       be pointers rather than copies.
+
+Wed Dec  6 21:14:59 2006  Ben Pfaff  <blp@gnu.org>
+
+       * coefficient.c: (pspp_coeff_get_value) Compare variable pointers
+       instead of variable indexes.
+       (pspp_linreg_get_coeff) Ditto.
+       (design_matrix_col_to_var_index) Removed.
+       (design_matrix_col_to_var) Compare variable pointers
+       instead of variable indexes.
+       (cmp_dm_var_index) Ditto.
+       (design_matrix_var_to_column) Ditto.
+       (dm_var_to_last_column) Ditto.
+
+Sun Nov  5 08:30:32 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * levene.c levene.h Changed to use the new casefilter structure.
+
+2006-07-15  Jason Stover  <jhs@math.gcsu.edu>
+
+       * coefficient.c (pspp_coeff_init): Make design_matrix arg const.
+
+2006-07-14  Jason Stover  <jhs@math.gcsu.edu>
+
+       * coefficient.c (pspp_coeff_init): Removed use of
+       pspp_linreg_cache to make the routines more generally useful.
+
+2006-05-19  Jason Stover  <jhs@math.gcsu.edu>
+
+       * coefficient.h: Renamed pspp_linreg_coeff to pspp_coeff.
+
+       * coefficient.c: Moved to src/math.
+
+       * coefficient.h: Moved to src/math.
+
+Tue May  9 21:09:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c (sort_active_file_to_casefile): Check return value of
+       multipass_procedure().
+
+Wed May  3 23:06:43 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       many global variables, consolidating procedure execution in
+       procedure.c.  Encapsulate transformations in new "struct
+       trns_chain".  Also, change implementation of N OF CASES, FILTER,
+       and PROCESS IF from special cases to transformations.
+        
+       * sort.c: (prepare_to_sort_active_file) Don't run a procedure
+       here.
+       (sort_active_file_in_place) Rewrite to run a procedure, capture
+       the output, sort the output, and set that as the source for the
+       next procedure.
+       (struct sort_to_casefile_cb_data) New structure.
+       (sort_to_casefile_callback) New function.
+       (sort_active_file_to_casefile) Rewrite to use
+       multipass_procedure().
+
+Sat Apr 29 11:09:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * removed unused variable.
+
+Sat Apr 15 18:01:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       * factor-stats.c (metrics_postcalc): Add casts to fix warnings.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 2c25686b860ed225b8a6d39db07332ed5c88fcde..107a985d443ace43a1e3828e9b72a135b215bc4b 100644 (file)
@@ -29,3 +29,5 @@ src_math_libpspp_math_a_SOURCES = \
        src/math/design-matrix.c src/math/design-matrix.h \
        src/math/random.c src/math/random.h \
        src/math/sort.c src/math/sort.h 
+
+EXTRA_DIST += src/math/OChangeLog
diff --git a/src/math/time-series/ChangeLog b/src/math/time-series/ChangeLog
deleted file mode 100644 (file)
index 07cb6f4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-2006-06-04  Jason Stover  <jhs@debs.hjklfdsss.org>
-
-       * innovations.c (get_covariance): Initial version
-
-2006-05-25  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c:  New file
-
diff --git a/src/math/ts/ChangeLog b/src/math/ts/ChangeLog
deleted file mode 100644 (file)
index a353ffc..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-2006-07-16  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (get_coef): Fixed diagonal elements and call to
-       innovations_convolve().
-       (subtract_mean): New function. Subtract the mean before computing
-       the coefficients.
-
-2006-07-15  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (get_covariance): Fixed computation of
-       covariance. Made COV[i] the lag i covariance.
-       (update_cov): New function.
-       (get_covariance): Use gsl_vector_view's to get rows of correct
-       lag.
-
-2006-07-14  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (innovations_struct_init): Fix initialization of
-       coefficient. 
-
-2006-07-13  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (pspp_innovations): Altered function to use struct
-       design_matrix. 
-
-2006-07-06  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (get_covariance): Fixed subscripts.
-       (innovations_update_scale): Added check for subscript.
-       
-2006-07-05  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (innovations_struct_init): New function.
-
-2006-07-03  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (init_theta): Fixed subscripts.
-       * innovations.c (innovations_update_coeff): Fixed subscripts.
-       * innovations.c (get_covarience): Fixed subscripts.
-       * innovations.c (pspp_innovations_free): New function.
-       * innovations.c (pspp_innovations_free_one): New function.
-
-2006-07-02  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (get_coef): Moved instructions to
-       innovations_update_coeff() and init_theta().
-       * innovations.c (get_coef): Fixed allocation of theta.
-       * innovations.c (innovations_update_theta): New function.
-       * innovations.c (init_theta): New function.
-       * innovations.c (innovations_convolve): Fixed upper bound of
-       subscript in sum.
-
-2006-07-01  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c: Use gsl_matrices to avoid use of casefiles by
-       backend math routine.
-
-2006-06-21  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (innovations_update_scale): New function.
-       * innovations.c (get_coef): Save computed coefficients in est->coeff.
-
-       * innovations.c (get_coef): Initialize and free the innovations
-       coefficients. Call innovations_update_scale ().
-
-2006-06-16  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (innovations_convolve): New function.
-       * innovations.c (get_coef): New function.
-
-2006-06-04  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c (get_covariance): Initial version
-
-2006-05-25  Jason Stover  <jhs@math.gcsu.edu>
-
-       * innovations.c:  New file
-
diff --git a/src/math/ts/OChangeLog b/src/math/ts/OChangeLog
new file mode 100644 (file)
index 0000000..a353ffc
--- /dev/null
@@ -0,0 +1,78 @@
+2006-07-16  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (get_coef): Fixed diagonal elements and call to
+       innovations_convolve().
+       (subtract_mean): New function. Subtract the mean before computing
+       the coefficients.
+
+2006-07-15  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (get_covariance): Fixed computation of
+       covariance. Made COV[i] the lag i covariance.
+       (update_cov): New function.
+       (get_covariance): Use gsl_vector_view's to get rows of correct
+       lag.
+
+2006-07-14  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (innovations_struct_init): Fix initialization of
+       coefficient. 
+
+2006-07-13  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (pspp_innovations): Altered function to use struct
+       design_matrix. 
+
+2006-07-06  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (get_covariance): Fixed subscripts.
+       (innovations_update_scale): Added check for subscript.
+       
+2006-07-05  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (innovations_struct_init): New function.
+
+2006-07-03  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (init_theta): Fixed subscripts.
+       * innovations.c (innovations_update_coeff): Fixed subscripts.
+       * innovations.c (get_covarience): Fixed subscripts.
+       * innovations.c (pspp_innovations_free): New function.
+       * innovations.c (pspp_innovations_free_one): New function.
+
+2006-07-02  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (get_coef): Moved instructions to
+       innovations_update_coeff() and init_theta().
+       * innovations.c (get_coef): Fixed allocation of theta.
+       * innovations.c (innovations_update_theta): New function.
+       * innovations.c (init_theta): New function.
+       * innovations.c (innovations_convolve): Fixed upper bound of
+       subscript in sum.
+
+2006-07-01  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c: Use gsl_matrices to avoid use of casefiles by
+       backend math routine.
+
+2006-06-21  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (innovations_update_scale): New function.
+       * innovations.c (get_coef): Save computed coefficients in est->coeff.
+
+       * innovations.c (get_coef): Initialize and free the innovations
+       coefficients. Call innovations_update_scale ().
+
+2006-06-16  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (innovations_convolve): New function.
+       * innovations.c (get_coef): New function.
+
+2006-06-04  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c (get_covariance): Initial version
+
+2006-05-25  Jason Stover  <jhs@math.gcsu.edu>
+
+       * innovations.c:  New file
+
index ffc7967903f62ea86b8073f20ce0dee22e0ab13d..2ca1f959fa22fb19d2d50453081e05ce26b282ee 100644 (file)
@@ -5,3 +5,5 @@ noinst_LIBRARIES += src/math/ts/libpspp_ts.a
 src_math_ts_libpspp_ts_a_SOURCES = \
        src/math/ts/innovations.c \
        src/math/ts/innovations.h
+
+EXTRA_DIST += src/math/ts/OChangeLog
diff --git a/src/output/ChangeLog b/src/output/ChangeLog
deleted file mode 100644 (file)
index b1928b9..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-2008-02-08  John Darrington <john@darrington.wattle.id.au>     
-
-       * journal.c: (journal_write) flush the stream on writes.
-       Useful for discovering syntax which causes a crash.
-
-2007-09-25  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6210.  Reviewed by John Darrington.
-
-       * ascii.c: Implement ability to resize output device parameters to
-       fit terminal window size as it changes.
-       (struct ascii_driver_ext): New members `auto_width',
-       `auto_length'.
-       (ascii_open_driver): Initialize new members, call
-       update_page_size.
-       (update_page_size): New function to update device size.
-       (handle_option): Support new "auto" setting for length, width.
-       (ascii_open_page): Call update_page_size.
-
-2007-09-22  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21128.  Reviewed by John Darrington.
-
-       * output.c (TWO_CHARS macro): Removed.
-       (outp_evaluate_dimension): Changed interface, rewritten.  Updated
-       all callers.
-       (internal_get_paper_size): Removed.
-       (parse_unit): New function.
-       (parse_paper_size): New function.
-       (outp_get_paper_size): Tweaked interface, rewritten.
-       (get_standard_paper_size): New function.
-       (read_paper_conf): New function.
-       (get_default_paper_size): New function.
-
-       * postscript.c (ps_open_driver): Use system default paper size as
-       default paper, instead of hard-coding US letter.
-       (handle_option): Allow outp_evaluate_dimension to supply error
-       message instead of generating it here.
-
-2007-09-21  Ben Pfaff  <blp@gnu.org>
-
-       * ascii.c (struct ascii_driver_ext): New member reported_error.
-       (ascii_open_driver): Initialize reported_error.
-       (ascii_open_page): Initialize the rest of the ascii driver data
-       even if we fail to open the output file.  Fixes bug #21117.
-
-       * chart.c (chart_create): Initialize lp member.  Fixes crash if
-       chart initialization fails.
-
-       * html.c (html_open_driver): Don't free chart_file_name in error
-       case, since html_close_driver will do that.  Fixes crash if file
-       open fails.
-
-       * postscript.c (ps_close_driver): Don't try to write to file if
-       it's null.  Fixes crash if file open fails.
-
-2007-09-08  John Darrington <john@darrington.wattle.id.au>     
-
-       * postscript.c html.c: Remove #include "getline.h" to concurr with 
-       new gnulib arrangements.
-
-2007-08-23  Ben Pfaff  <blp@gnu.org>
-
-       Implement journaling.  Bug #17240.
-       
-       * automake.mk (output_sources): Add journal.c, journal.h.
-       
-       * journal.c: New file.
-       
-       * journal.h: New file.
-
-2007-08-16  Ben Pfaff  <blp@gnu.org>
-
-       * output.c output.h: export function outp_configure_driver_line.
-       * ascii.c: Added an "append" property.
-       
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       Add support for charts to ASCII driver.  Bug #16364.
-       Thanks to John Darrington for review.
-       
-       * ascii.c (struct ascii_driver_ext): Add chart_type,
-       chart_file_name, chart_cnt members.
-       (ascii_open_driver): Initialize new members.
-       (static array option_tab): Add new options, reorganize slightly.
-       (handle_option): Handle new options.
-       (ascii_submit): New function.
-       (ascii_chart_initialise): Implement.
-       (ascii_chart_finalise): Implement.
-
-       * chart.c (chart_init_separate): New function.
-       (chart_finalise_separate): New function.
-       
-       * dummy-chart.c (chart_init_separate): New function.
-       (chart_finalise_separate): New function.
-
-       * html.c (html_open_driver): Don't free chart_file_name.
-       (html_close_driver): Do free chart_file_name.
-       (handle_option): Only give an error for chart-files options that
-       don't contain "#".
-       (html_initialise_chart): Use new chart_init_separate.
-       (html_finalise_chart): Use new chart_finalise_separate.
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       Allow the user to specify an initialization string to write at the
-       beginning of an ASCII output file.
-       * ascii.c (struct ascii_driver_ext): New member `init'.
-       (ascii_open_driver): Initialize `init'.
-       (ascii_close_driver): Parse `init'.
-       (ascii_open_page): Write `init' to output file.
-
-       * output.c (get_option_token): Fix parsing of octal constants.
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       Make interactive output go to the terminal (bug #17213), by
-       causing the UI to flush output to the user when it prompts for a
-       command.
-
-       * ascii.c (ascii_open_driver): Move the file open into
-       ascii_open_page, so that we can re-open after a flush.
-       (ascii_close_driver): Close file using ascii_flush.
-       (ascii_open_page): Open the output file if it's not already open.
-       Use fn_open so that we can support pipes.
-       (ascii_close_page): Do nothing if output file not open.
-       (ascii_flush): New function.
-       (static var ascii_class): Add ascii_flush.
-
-       * manager.c (som_flush): New function.
-
-       * output.c (outp_flush): New function.
-
-Tue Feb 20 07:03:48 2007  Ben Pfaff  <blp@gnu.org>
-
-       * html.c: Don't need to include "getlogin_r.h" anymore, because
-       gnulib merged it into <unistd.h>.
-
-Sun Feb 18 11:20:35 2007  Ben Pfaff  <blp@gnu.org>
-
-       * postscript.c: Add missing _() around message.
-
-Sun Feb 11 17:59:30 2007  Ben Pfaff  <blp@gnu.org>
-
-       * html.c (html_initialise_chart): Mark `this' parameter UNUSED to
-       account for NO_CHARTS case.
-
-Sat Feb  3 21:56:46 2007  Ben Pfaff  <blp@gnu.org>
-
-       * table.c (tab_hline): Allow t->nr as y argument, so that we can
-       draw a line below the bottom row of the table.
-
-Wed Feb  7 21:38:12 2007  Ben Pfaff  <blp@gnu.org>
-
-       * afm.c: Add #include <limits.h>.  Thanks to John McCabe-Dansted
-       <gmatht@gmail.com> for pointing out the need.
-
-Sun Oct  8 07:09:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * table.c (tab_destroy): Freed title, since this is not allocated
-       from the pool.
-
-       * html.c (html_open_driver): Freed chart_file_name.
-
-Wed Jul 12 21:03:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       * table.c (tab_natural_width): Get rid of warning on empty column,
-       which tended to just trigger false positives because we handle
-       joined cells so badly.  We need a real fix, and the warning is not
-       helpful.
-
-       * table.c (tab_offset): [DEBUGGING] Let row, col arguments be as
-       big as row or column count.
-       
-Wed Jul 12 20:58:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       * output.c (outp_drivers): [DEBUGGING] Delete unused declaration.
-
-Sat Jul  1 17:20:03 2006  Ben Pfaff  <blp@gnu.org>
-
-       Make the destination for charts configurable in the HTML driver.
-       Fixes bug #15723, "HTML driver creates .png files insecurely".
-
-       * htmlP.h: (struct html_driver_ext) Add chart_file_name, chart_cnt
-       members.
-       
-       * html.c: (html_open_driver) Initialize new members.
-       (option_tab var) Add "chart-files" option.
-       (handle_option) Parse "chart-files" option.
-       (html_initialise_chart) Name file based on "chart-files" option.
-       
-Sat Jul  1 22:41:26 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #16644: Output Driver crashes in DISPLAY VARIABLES.
-       
-       * table.c (tab_create): Don't allocate t->hrh, t->wrv yet, because
-       the table size might change before we're ready to use them.
-       (tabi_table) Allocate them here instead.
-
-Fri Jun  9 14:42:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       Reform string library.
-       
-       * output.c (init_default_drivers): Update call to
-       configure_driver() to new interface.
-       (get_option_token) Use a modifiable substring in interface instead
-       of a separate position parameter.  Use ss_get_*() functions.
-       (configure_driver) Take and work with substrings.
-       (configure_driver_line) Update call to configure_driver() to new
-       interface.
-       (outp_get_paper_size) Use substrings.
-
-       * output.h (struct outp_class): Change open_driver interface to
-       use substring.  Update all implementations.
-
-       * table.c (text_format): Change to return substring.
-       (tab_title) Use xvasprintf().
-
-       * table.h (struct tab_table): Change title member to char *.
-
-Thu May 25 18:02:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * table.c: Removed redundant extern declaration.
-
-Sun May 14 14:03:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       * output.c (outp_eject_page): Always make sure that a page is open
-       upon return.
-
-Sun May 14 13:54:58 2006  Ben Pfaff  <blp@gnu.org>
-
-       * postscript.c: (ps_chart_finalise) Fix format of %%EndDocument
-       comment, which screwed up gv's idea of where one page ended and
-       the next one began.  Thanks to John Darrington for pointing out
-       the bug.
-
-Sun Apr 16 11:48:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       Start reforming error message support.  In this phase, we get rid
-       of "installation errors" and change all uses of msg() in the
-       output drivers to uses of error() or error_at_line().
-
-       * Removed all inclusion of <libpspp/message.h> in this directory.
-
-       * output.c: Changed all uses of msg() to error() or
-       error_at_line().
-       (outp_read_devices) Maintain line number in int variable instead
-       of "struct file_locator".
-       (tokener) Renamed get_option_token(), rewritten, changed interface.
-       (outp_parse_options) Change `options' argument to type const
-       struct string *.  Rewritten.
-       (configure_driver) Passes a struct string * to ->open_driver()
-       instead of char *.
-       (outp_get_paper_size) Maintain line number in int variable instead
-       of "struct file_locator".  Removed stupid cache.
-
-       * output.h: (struct outp_class) Change `open_driver' function to
-       take const struct string * instead of const char *.  Updated all
-       implementations.
-
-Mon Apr  3 11:14:38 2006  Ben Pfaff  <blp@gnu.org>
-
-       Rewrite a lot of the output drivers and infrastructure.
-       Started transitioning from msg() to error().
-       Vertical rules in tables now default to putting a small gap
-       between columns, instead of no gap or rule at all.
-       See NEWS for user-visible changes.
-
-       * automake.mk: (output_sources) Add afm.c, afm.h.  Remove font.h,
-       groff-font.c.
-       
-       * afm.c, afm.h: New files.
-
-       * font.h: Removed.
-
-       * groff-font.c: Removed.
-       
-       * ascii.c: Rewrote and simplified.
-
-       * html.c: Ditto.
-
-       * postscript.c: Ditto.
-
-       * output.c: (struct outp_driver_class_list) Move here from
-       output.h.  Remove ref_count member and all references to it.
-       (outp_init) Remove epsf_class references.
-       (init_default_drivers) Use new configure_driver_line() interface.
-       (parse_options) Renamed outp_parse_options(), changed interface.
-       (configure_driver) Changed args from `const char *'s to `const
-       struct string *'s.  Rewrote.  Don't call ->open_global().  Now
-       just calls ->open_driver() instead of ->preopen_driver(),
-       ->option(), ->postopen_driver().
-       (configure_driver_line) Adapt to new configure_driver() interface.
-       (destroy_driver) Don't call ->close_global().
-       (option_cmp) Removed.
-       (outp_match_keyword) Rewrite for simplicity.
-       (outp_open_page) New function.  Changed all equivalent
-       functionality to use this function instead.
-       (outp_close_page) Ditto.
-       (outp_eject_page) Use above functions.
-       (outp_string_width) Add font argument and change all callers to
-       pass one.
-
-       * output.h: (struct rect) Removed.
-       (OUTP_L_*) Name this enumeration "enum outp_line_style".
-       (OUTP_L_SPECIAL) Removed.
-       (struct color) Removed.
-       (OUTP_F_*) Removed.
-       (struct outp_styles) Removed.
-       (OUTP_T_*) Removed.
-       (enum outp_justification) New, containing OUTP_RIGHT, OUTP_LEFT,
-       OUTP_CENTER.
-       (enum outp_font) New, containing OUTP_FIXED, OUTP_PROPORTIONAL,
-       and OUTP_EMPHASIS.
-       (struct outp_text) Replaced `options' member by `font' and
-       `justification'.  Renamed `s' to `string'.  Removed `w', `l'.
-       Updated all usages.
-       (struct outp_class) Removed `magic', `open_global',
-       `close_global', `font_sizes', `preopen_driver', `option',
-       `postopen_driver', `line_horz', `line_vert', `line_intersection',
-       `box', `polyline_begin', `polyline_point', `polyline_end',
-       `text_set_font_by_name', `text_set_font_by_position',
-       `text_set_font_family', `text_get_font_name',
-       `text_get_font_family', `text_set_Size', and `text_get_size'
-       members.  Added `open_driver', `close_driver', `line' members.
-       Changed interface of `open_page', `close_page', `text_metrics',
-       `text_draw' members.  Updated all usages.
-       (struct outp_driver) Rearranged members.  Removed `driver_open',
-       `res', `horiz', `vert', `horiz_line_spacing', `vert_line_spacing'
-       members.
-       (struct outp_option_info) Removed.
-       (struct outp_driver_class_list) Removed.
-       (outp_match_keyword) Changed interface.
-
-       * table.c: (tab_create) Now ignores reallocable argument: tables
-       can always be reallocated.  Use pool_create_container().
-       Initialize vertical rules to UCHAR_MAX.
-       (options_to_font) New function.
-       (tab_destroy) Remove futile assignment.
-       (tab_realloc) Initialize vertical rules to UCHAR_MAX.
-       (text_format) Use xvasprintf() instead of local_alloc().
-       (tab_title) Always format the argument, and drop the option
-       argument.  Change all callers to agree.
-       (tab_natural_width) Adapt to new ->text_metrics() interface.
-       (tab_natural_height) Ditto.
-       (tab_joint_text) Clear rules within the joined cell.  Now
-       necessary because of the default to put spacing between cells.
-       (tab_output_text) Use xvasprintf() instead of local_alloc().
-       Remove special cases for fixed-width font.
-       (rule_to_spacing_type) New function.
-       (tabi_driver) Calculate rule widths manually now that we don't
-       have ->trh or ->trv.  Implement new default for vertical rules.
-       (render_rows) New function.
-       (tabi_render) Rewrite in terms of render_rows() for clarity.
-       (translate_justification) New function.
-       (rule_to_draw_type) New function.
-       (get_hrule) New function.
-       (get_vrule) New function.
-       (render_horz_rule) New function.
-       (render_vert_rule) New function.
-       (render_rule_intersection) New function.
-       (strip_width) New function.
-       (strip_height) New function.
-       (render_cell) New function.
-       (render_strip) Rewrite in terms of new functions.
-
-       * table.h: (TAB_EMPH) New flag.
-       (TAB_FIX) New flag.
-       (TAL_3) Removed.
-       (TAL_GAP) Added.
-       (TAL_SPACING) Removed.
-       (struct tab_table) Members `trh', `hrv', `hr_tot', `vr_tot'
-       removed.
-       [DEBUGGING] (reallocable) Removed.
-       (TAT_FIX) Removed.  All references replaced by TAB_FIX.
-       (TAT_TITLE) Now implies TAB_EMPH.
-               
-Thu Mar 30 16:26:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       * output.c: (colon_tokenize) Removed.
-       (configure_driver_line) Rewrote to use ds_separate().  Fixed leak.
-
-Tue Mar 28 13:50:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * html.c, postscript.c, output.c:  Changed to fit the new signature 
-       of fn_interp_vars
-       
-Sun Mar  5 13:19:32 2006  Ben Pfaff  <blp@gnu.org>
-
-       * postscript.c: (postopen) Fix segfault when the active file has
-       no title.
-
-Sat Mar  4 13:48:16 2006  Ben Pfaff  <blp@gnu.org>
-
-       We didn't provide a way to define these macros, so obviously
-       there's little demand for them.
-
-       * html.c: Don't test for NO_HTML.
-
-       * postscript.c: Don't test for NO_POSTSCRIPT.
-
-       * output.c: Don't test for either of those.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/output/OChangeLog b/src/output/OChangeLog
new file mode 100644 (file)
index 0000000..b1928b9
--- /dev/null
@@ -0,0 +1,406 @@
+2008-02-08  John Darrington <john@darrington.wattle.id.au>     
+
+       * journal.c: (journal_write) flush the stream on writes.
+       Useful for discovering syntax which causes a crash.
+
+2007-09-25  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6210.  Reviewed by John Darrington.
+
+       * ascii.c: Implement ability to resize output device parameters to
+       fit terminal window size as it changes.
+       (struct ascii_driver_ext): New members `auto_width',
+       `auto_length'.
+       (ascii_open_driver): Initialize new members, call
+       update_page_size.
+       (update_page_size): New function to update device size.
+       (handle_option): Support new "auto" setting for length, width.
+       (ascii_open_page): Call update_page_size.
+
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * output.c (TWO_CHARS macro): Removed.
+       (outp_evaluate_dimension): Changed interface, rewritten.  Updated
+       all callers.
+       (internal_get_paper_size): Removed.
+       (parse_unit): New function.
+       (parse_paper_size): New function.
+       (outp_get_paper_size): Tweaked interface, rewritten.
+       (get_standard_paper_size): New function.
+       (read_paper_conf): New function.
+       (get_default_paper_size): New function.
+
+       * postscript.c (ps_open_driver): Use system default paper size as
+       default paper, instead of hard-coding US letter.
+       (handle_option): Allow outp_evaluate_dimension to supply error
+       message instead of generating it here.
+
+2007-09-21  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c (struct ascii_driver_ext): New member reported_error.
+       (ascii_open_driver): Initialize reported_error.
+       (ascii_open_page): Initialize the rest of the ascii driver data
+       even if we fail to open the output file.  Fixes bug #21117.
+
+       * chart.c (chart_create): Initialize lp member.  Fixes crash if
+       chart initialization fails.
+
+       * html.c (html_open_driver): Don't free chart_file_name in error
+       case, since html_close_driver will do that.  Fixes crash if file
+       open fails.
+
+       * postscript.c (ps_close_driver): Don't try to write to file if
+       it's null.  Fixes crash if file open fails.
+
+2007-09-08  John Darrington <john@darrington.wattle.id.au>     
+
+       * postscript.c html.c: Remove #include "getline.h" to concurr with 
+       new gnulib arrangements.
+
+2007-08-23  Ben Pfaff  <blp@gnu.org>
+
+       Implement journaling.  Bug #17240.
+       
+       * automake.mk (output_sources): Add journal.c, journal.h.
+       
+       * journal.c: New file.
+       
+       * journal.h: New file.
+
+2007-08-16  Ben Pfaff  <blp@gnu.org>
+
+       * output.c output.h: export function outp_configure_driver_line.
+       * ascii.c: Added an "append" property.
+       
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       Add support for charts to ASCII driver.  Bug #16364.
+       Thanks to John Darrington for review.
+       
+       * ascii.c (struct ascii_driver_ext): Add chart_type,
+       chart_file_name, chart_cnt members.
+       (ascii_open_driver): Initialize new members.
+       (static array option_tab): Add new options, reorganize slightly.
+       (handle_option): Handle new options.
+       (ascii_submit): New function.
+       (ascii_chart_initialise): Implement.
+       (ascii_chart_finalise): Implement.
+
+       * chart.c (chart_init_separate): New function.
+       (chart_finalise_separate): New function.
+       
+       * dummy-chart.c (chart_init_separate): New function.
+       (chart_finalise_separate): New function.
+
+       * html.c (html_open_driver): Don't free chart_file_name.
+       (html_close_driver): Do free chart_file_name.
+       (handle_option): Only give an error for chart-files options that
+       don't contain "#".
+       (html_initialise_chart): Use new chart_init_separate.
+       (html_finalise_chart): Use new chart_finalise_separate.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Allow the user to specify an initialization string to write at the
+       beginning of an ASCII output file.
+       * ascii.c (struct ascii_driver_ext): New member `init'.
+       (ascii_open_driver): Initialize `init'.
+       (ascii_close_driver): Parse `init'.
+       (ascii_open_page): Write `init' to output file.
+
+       * output.c (get_option_token): Fix parsing of octal constants.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Make interactive output go to the terminal (bug #17213), by
+       causing the UI to flush output to the user when it prompts for a
+       command.
+
+       * ascii.c (ascii_open_driver): Move the file open into
+       ascii_open_page, so that we can re-open after a flush.
+       (ascii_close_driver): Close file using ascii_flush.
+       (ascii_open_page): Open the output file if it's not already open.
+       Use fn_open so that we can support pipes.
+       (ascii_close_page): Do nothing if output file not open.
+       (ascii_flush): New function.
+       (static var ascii_class): Add ascii_flush.
+
+       * manager.c (som_flush): New function.
+
+       * output.c (outp_flush): New function.
+
+Tue Feb 20 07:03:48 2007  Ben Pfaff  <blp@gnu.org>
+
+       * html.c: Don't need to include "getlogin_r.h" anymore, because
+       gnulib merged it into <unistd.h>.
+
+Sun Feb 18 11:20:35 2007  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: Add missing _() around message.
+
+Sun Feb 11 17:59:30 2007  Ben Pfaff  <blp@gnu.org>
+
+       * html.c (html_initialise_chart): Mark `this' parameter UNUSED to
+       account for NO_CHARTS case.
+
+Sat Feb  3 21:56:46 2007  Ben Pfaff  <blp@gnu.org>
+
+       * table.c (tab_hline): Allow t->nr as y argument, so that we can
+       draw a line below the bottom row of the table.
+
+Wed Feb  7 21:38:12 2007  Ben Pfaff  <blp@gnu.org>
+
+       * afm.c: Add #include <limits.h>.  Thanks to John McCabe-Dansted
+       <gmatht@gmail.com> for pointing out the need.
+
+Sun Oct  8 07:09:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * table.c (tab_destroy): Freed title, since this is not allocated
+       from the pool.
+
+       * html.c (html_open_driver): Freed chart_file_name.
+
+Wed Jul 12 21:03:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       * table.c (tab_natural_width): Get rid of warning on empty column,
+       which tended to just trigger false positives because we handle
+       joined cells so badly.  We need a real fix, and the warning is not
+       helpful.
+
+       * table.c (tab_offset): [DEBUGGING] Let row, col arguments be as
+       big as row or column count.
+       
+Wed Jul 12 20:58:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * output.c (outp_drivers): [DEBUGGING] Delete unused declaration.
+
+Sat Jul  1 17:20:03 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make the destination for charts configurable in the HTML driver.
+       Fixes bug #15723, "HTML driver creates .png files insecurely".
+
+       * htmlP.h: (struct html_driver_ext) Add chart_file_name, chart_cnt
+       members.
+       
+       * html.c: (html_open_driver) Initialize new members.
+       (option_tab var) Add "chart-files" option.
+       (handle_option) Parse "chart-files" option.
+       (html_initialise_chart) Name file based on "chart-files" option.
+       
+Sat Jul  1 22:41:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #16644: Output Driver crashes in DISPLAY VARIABLES.
+       
+       * table.c (tab_create): Don't allocate t->hrh, t->wrv yet, because
+       the table size might change before we're ready to use them.
+       (tabi_table) Allocate them here instead.
+
+Fri Jun  9 14:42:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reform string library.
+       
+       * output.c (init_default_drivers): Update call to
+       configure_driver() to new interface.
+       (get_option_token) Use a modifiable substring in interface instead
+       of a separate position parameter.  Use ss_get_*() functions.
+       (configure_driver) Take and work with substrings.
+       (configure_driver_line) Update call to configure_driver() to new
+       interface.
+       (outp_get_paper_size) Use substrings.
+
+       * output.h (struct outp_class): Change open_driver interface to
+       use substring.  Update all implementations.
+
+       * table.c (text_format): Change to return substring.
+       (tab_title) Use xvasprintf().
+
+       * table.h (struct tab_table): Change title member to char *.
+
+Thu May 25 18:02:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * table.c: Removed redundant extern declaration.
+
+Sun May 14 14:03:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * output.c (outp_eject_page): Always make sure that a page is open
+       upon return.
+
+Sun May 14 13:54:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: (ps_chart_finalise) Fix format of %%EndDocument
+       comment, which screwed up gv's idea of where one page ended and
+       the next one began.  Thanks to John Darrington for pointing out
+       the bug.
+
+Sun Apr 16 11:48:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       Start reforming error message support.  In this phase, we get rid
+       of "installation errors" and change all uses of msg() in the
+       output drivers to uses of error() or error_at_line().
+
+       * Removed all inclusion of <libpspp/message.h> in this directory.
+
+       * output.c: Changed all uses of msg() to error() or
+       error_at_line().
+       (outp_read_devices) Maintain line number in int variable instead
+       of "struct file_locator".
+       (tokener) Renamed get_option_token(), rewritten, changed interface.
+       (outp_parse_options) Change `options' argument to type const
+       struct string *.  Rewritten.
+       (configure_driver) Passes a struct string * to ->open_driver()
+       instead of char *.
+       (outp_get_paper_size) Maintain line number in int variable instead
+       of "struct file_locator".  Removed stupid cache.
+
+       * output.h: (struct outp_class) Change `open_driver' function to
+       take const struct string * instead of const char *.  Updated all
+       implementations.
+
+Mon Apr  3 11:14:38 2006  Ben Pfaff  <blp@gnu.org>
+
+       Rewrite a lot of the output drivers and infrastructure.
+       Started transitioning from msg() to error().
+       Vertical rules in tables now default to putting a small gap
+       between columns, instead of no gap or rule at all.
+       See NEWS for user-visible changes.
+
+       * automake.mk: (output_sources) Add afm.c, afm.h.  Remove font.h,
+       groff-font.c.
+       
+       * afm.c, afm.h: New files.
+
+       * font.h: Removed.
+
+       * groff-font.c: Removed.
+       
+       * ascii.c: Rewrote and simplified.
+
+       * html.c: Ditto.
+
+       * postscript.c: Ditto.
+
+       * output.c: (struct outp_driver_class_list) Move here from
+       output.h.  Remove ref_count member and all references to it.
+       (outp_init) Remove epsf_class references.
+       (init_default_drivers) Use new configure_driver_line() interface.
+       (parse_options) Renamed outp_parse_options(), changed interface.
+       (configure_driver) Changed args from `const char *'s to `const
+       struct string *'s.  Rewrote.  Don't call ->open_global().  Now
+       just calls ->open_driver() instead of ->preopen_driver(),
+       ->option(), ->postopen_driver().
+       (configure_driver_line) Adapt to new configure_driver() interface.
+       (destroy_driver) Don't call ->close_global().
+       (option_cmp) Removed.
+       (outp_match_keyword) Rewrite for simplicity.
+       (outp_open_page) New function.  Changed all equivalent
+       functionality to use this function instead.
+       (outp_close_page) Ditto.
+       (outp_eject_page) Use above functions.
+       (outp_string_width) Add font argument and change all callers to
+       pass one.
+
+       * output.h: (struct rect) Removed.
+       (OUTP_L_*) Name this enumeration "enum outp_line_style".
+       (OUTP_L_SPECIAL) Removed.
+       (struct color) Removed.
+       (OUTP_F_*) Removed.
+       (struct outp_styles) Removed.
+       (OUTP_T_*) Removed.
+       (enum outp_justification) New, containing OUTP_RIGHT, OUTP_LEFT,
+       OUTP_CENTER.
+       (enum outp_font) New, containing OUTP_FIXED, OUTP_PROPORTIONAL,
+       and OUTP_EMPHASIS.
+       (struct outp_text) Replaced `options' member by `font' and
+       `justification'.  Renamed `s' to `string'.  Removed `w', `l'.
+       Updated all usages.
+       (struct outp_class) Removed `magic', `open_global',
+       `close_global', `font_sizes', `preopen_driver', `option',
+       `postopen_driver', `line_horz', `line_vert', `line_intersection',
+       `box', `polyline_begin', `polyline_point', `polyline_end',
+       `text_set_font_by_name', `text_set_font_by_position',
+       `text_set_font_family', `text_get_font_name',
+       `text_get_font_family', `text_set_Size', and `text_get_size'
+       members.  Added `open_driver', `close_driver', `line' members.
+       Changed interface of `open_page', `close_page', `text_metrics',
+       `text_draw' members.  Updated all usages.
+       (struct outp_driver) Rearranged members.  Removed `driver_open',
+       `res', `horiz', `vert', `horiz_line_spacing', `vert_line_spacing'
+       members.
+       (struct outp_option_info) Removed.
+       (struct outp_driver_class_list) Removed.
+       (outp_match_keyword) Changed interface.
+
+       * table.c: (tab_create) Now ignores reallocable argument: tables
+       can always be reallocated.  Use pool_create_container().
+       Initialize vertical rules to UCHAR_MAX.
+       (options_to_font) New function.
+       (tab_destroy) Remove futile assignment.
+       (tab_realloc) Initialize vertical rules to UCHAR_MAX.
+       (text_format) Use xvasprintf() instead of local_alloc().
+       (tab_title) Always format the argument, and drop the option
+       argument.  Change all callers to agree.
+       (tab_natural_width) Adapt to new ->text_metrics() interface.
+       (tab_natural_height) Ditto.
+       (tab_joint_text) Clear rules within the joined cell.  Now
+       necessary because of the default to put spacing between cells.
+       (tab_output_text) Use xvasprintf() instead of local_alloc().
+       Remove special cases for fixed-width font.
+       (rule_to_spacing_type) New function.
+       (tabi_driver) Calculate rule widths manually now that we don't
+       have ->trh or ->trv.  Implement new default for vertical rules.
+       (render_rows) New function.
+       (tabi_render) Rewrite in terms of render_rows() for clarity.
+       (translate_justification) New function.
+       (rule_to_draw_type) New function.
+       (get_hrule) New function.
+       (get_vrule) New function.
+       (render_horz_rule) New function.
+       (render_vert_rule) New function.
+       (render_rule_intersection) New function.
+       (strip_width) New function.
+       (strip_height) New function.
+       (render_cell) New function.
+       (render_strip) Rewrite in terms of new functions.
+
+       * table.h: (TAB_EMPH) New flag.
+       (TAB_FIX) New flag.
+       (TAL_3) Removed.
+       (TAL_GAP) Added.
+       (TAL_SPACING) Removed.
+       (struct tab_table) Members `trh', `hrv', `hr_tot', `vr_tot'
+       removed.
+       [DEBUGGING] (reallocable) Removed.
+       (TAT_FIX) Removed.  All references replaced by TAB_FIX.
+       (TAT_TITLE) Now implies TAB_EMPH.
+               
+Thu Mar 30 16:26:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * output.c: (colon_tokenize) Removed.
+       (configure_driver_line) Rewrote to use ds_separate().  Fixed leak.
+
+Tue Mar 28 13:50:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * html.c, postscript.c, output.c:  Changed to fit the new signature 
+       of fn_interp_vars
+       
+Sun Mar  5 13:19:32 2006  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: (postopen) Fix segfault when the active file has
+       no title.
+
+Sat Mar  4 13:48:16 2006  Ben Pfaff  <blp@gnu.org>
+
+       We didn't provide a way to define these macros, so obviously
+       there's little demand for them.
+
+       * html.c: Don't test for NO_HTML.
+
+       * postscript.c: Don't test for NO_POSTSCRIPT.
+
+       * output.c: Don't test for either of those.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 78898f46d41d868ce54730ab908acea38cd5cb3e..d30acf63e50f2b870c05c019fb136e72428a9a1e 100644 (file)
@@ -32,4 +32,4 @@ src_output_liboutput_a_SOURCES = $(output_sources) src/output/dummy-chart.c
 EXTRA_DIST += src/output/chart.c
 endif
 
-
+EXTRA_DIST += src/output/OChangeLog
diff --git a/src/output/charts/ChangeLog b/src/output/charts/ChangeLog
deleted file mode 100644 (file)
index f735a6c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-2007-09-18  Ben Pfaff  <blp@gnu.org>
-
-       * plot-hist.c (histogram_plot): Remove incorrect assertion.  Fixes
-       bug #21101.  Reviewed by John Darrington.
-
-Sun Feb 11 19:43:39 2007  Ben Pfaff  <blp@gnu.org>
-
-       * dummy-chart.c: Apply UNUSED and include additional headers to
-       avoid complaints from GCC.  Patch #5739.
-
-Sat Mar  4 13:24:39 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Move definition of NO_CHARTS here from pref.h.orig.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/output/charts/OChangeLog b/src/output/charts/OChangeLog
new file mode 100644 (file)
index 0000000..f735a6c
--- /dev/null
@@ -0,0 +1,17 @@
+2007-09-18  Ben Pfaff  <blp@gnu.org>
+
+       * plot-hist.c (histogram_plot): Remove incorrect assertion.  Fixes
+       bug #21101.  Reviewed by John Darrington.
+
+Sun Feb 11 19:43:39 2007  Ben Pfaff  <blp@gnu.org>
+
+       * dummy-chart.c: Apply UNUSED and include additional headers to
+       avoid complaints from GCC.  Patch #5739.
+
+Sat Mar  4 13:24:39 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Move definition of NO_CHARTS here from pref.h.orig.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index f1d71264fb9e54179667d1a36e4a96a7fb8db615..a480de6da9bc384d040a9bd4dfe8b3ab8ea7adf4 100644 (file)
@@ -30,3 +30,5 @@ EXTRA_DIST += $(chart_sources)
 AM_CPPFLAGS += -DNO_CHARTS
 
 endif
+
+EXTRA_DIST += src/output/charts/OChangeLog
diff --git a/src/ui/ChangeLog b/src/ui/ChangeLog
deleted file mode 100644 (file)
index bc9c192..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6427.  Reviewed by John Darrington.
-
-       * automake.mk: Add new files.
-
-       * syntax-gen.c: New file.  Based on former
-       src/libpspp/syntax-gen.c but rewritten.
-
-       * syntax-gen.h: New file.  Based on former
-       src/libpspp/syntax-gen.h but rewritten.
-
-2007-10-10  Ben Pfaff  <blp@gnu.org>
-
-       * src/ui/debugger.c: Use debugger if HAVE_FORK is defined, not
-       HAVE_SYS_TYPES_H.  The latter is almost universal, but the former
-       is only available where it can be implemented.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adapt case sources, sinks, and clients of procedure code to the
-       new infrastructure.
-       
-       * automake.mk: Remove files.
-
-       * flexifile.c: Removed, dead code.
-       * flexifile.h: Ditto.
-
-Thu Feb  8 06:34:52 2007  Ben Pfaff  <blp@gnu.org>
-
-       * [!(HAVE_SYS_TYPES_H && HAVE_SYS_WAIT_H)] (connect_debugger) In
-       this case, we don't know how to connect to GDB, so just return.
-
-Mon Jan 15 11:06:31 2007  Ben Pfaff  <blp@gnu.org>
-
-       * flexifile.c [DEBUGGING] (dump_case_data): Use case accessor
-       functions.
-       
-Wed Dec 20 21:14:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * flexifile.c (flexifilereader_cnum) : new function
-
-Thu Nov 16 20:44:58 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * debugger.c debugger.h New files.
-
-Mon Jul 17 18:22:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * flexifile.c flexifile.h: New files. Implementations of casefiles.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/ui/OChangeLog b/src/ui/OChangeLog
new file mode 100644 (file)
index 0000000..bc9c192
--- /dev/null
@@ -0,0 +1,53 @@
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6427.  Reviewed by John Darrington.
+
+       * automake.mk: Add new files.
+
+       * syntax-gen.c: New file.  Based on former
+       src/libpspp/syntax-gen.c but rewritten.
+
+       * syntax-gen.h: New file.  Based on former
+       src/libpspp/syntax-gen.h but rewritten.
+
+2007-10-10  Ben Pfaff  <blp@gnu.org>
+
+       * src/ui/debugger.c: Use debugger if HAVE_FORK is defined, not
+       HAVE_SYS_TYPES_H.  The latter is almost universal, but the former
+       is only available where it can be implemented.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adapt case sources, sinks, and clients of procedure code to the
+       new infrastructure.
+       
+       * automake.mk: Remove files.
+
+       * flexifile.c: Removed, dead code.
+       * flexifile.h: Ditto.
+
+Thu Feb  8 06:34:52 2007  Ben Pfaff  <blp@gnu.org>
+
+       * [!(HAVE_SYS_TYPES_H && HAVE_SYS_WAIT_H)] (connect_debugger) In
+       this case, we don't know how to connect to GDB, so just return.
+
+Mon Jan 15 11:06:31 2007  Ben Pfaff  <blp@gnu.org>
+
+       * flexifile.c [DEBUGGING] (dump_case_data): Use case accessor
+       functions.
+       
+Wed Dec 20 21:14:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * flexifile.c (flexifilereader_cnum) : new function
+
+Thu Nov 16 20:44:58 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * debugger.c debugger.h New files.
+
+Mon Jul 17 18:22:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * flexifile.c flexifile.h: New files. Implementations of casefiles.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 18b6914801fb058dae2555a6a07358e6db76ff38..044c293c5424509d760667979b7ad2fef357d5a0 100644 (file)
@@ -13,3 +13,5 @@ src_ui_libuicommon_a_SOURCES = \
        src/ui/debugger.h \
        src/ui/syntax-gen.c \
        src/ui/syntax-gen.h
+
+EXTRA_DIST += src/ui/OChangeLog
diff --git a/src/ui/gui/ChangeLog b/src/ui/gui/ChangeLog
deleted file mode 100644 (file)
index 88a42f1..0000000
+++ /dev/null
@@ -1,1117 +0,0 @@
-2008-05-20  John Darrington <john@darrington.wattle.id.au>
-
-       * automake.mk: Added the -no-undefined flag so that dlls can be built
-       on w32 platforms.  Abstracted the dependencies of glade-register.c
-       into a new shared library libpsppwidgets.so, which can be either
-       linked directly by psppire or by libpsppire.so
-
-       * psppire-keypad.c: Changed snprintf to g_snprintf so as not to use
-       gnulib.
-
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Rename install-data-hook to yelp-check and mark it
-       phony.  This avoids an automake warning for duplicate
-       install-data-hook commands in doc/automake.mk and this file
-       (automake does not understand double-colon rules, since they are
-       not in POSIX).
-
-2008-05-09  John Darrington <john@darrington.wattle.id.au>
-
-       * automake.mk: On make install, warn about the non-existance of yelp.
-
-2008-05-08  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6505.  Reviewed by John Darrington.
-
-       * text-data-import-dialog.c: Don't make the user wiggle the mouse
-       to be able to click on the Forward button twice in quick
-       succession.
-       (add_page_to_assistant): Mark pages in the assistant complete
-       immediately.
-       (on_prepare): No longer mark pages complete upon first visit.
-
-2008-05-08  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6505.  Reviewed by John Darrington.
-
-       * text-data-import-dialog.c: (struct assistant) New member
-       `watch_cursor'.
-       (revise_fields_preview): Change the mouse pointer to a watch to
-       indicate that a long operation is ongoing.
-       (prepare_formats_page): Ditto.
-       (on_variable_change): Ditto.
-       (push_watch_cursor): New function.
-       (pop_watch_cursor): New function.
-
-2008-05-08  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c: In popup menus, connect the Insert Variable and
-       Insert Case callbacks manually, instead of relying on
-       gtk_action_connect_proxy, as the latter connects a label with a
-       mnemonic which is inappropriate.
-
-2008-05-06  Ben Pfaff  <blp@gnu.org>
-
-       Bug #23127.  Reviewed by John Darrington.  Tested by Jason Stover,
-       in an earlier form.
-
-       * text-data-import-dialog.c (get_tooltip_location): Prevent crash
-       when a tooltip is being prepared when the assistant is closed.
-
-2008-05-06  Ben Pfaff  <blp@gnu.org>
-
-       * text-data-import-dialog.c (text_data_import_assistant): Allocate
-       the struct import_assistant on the heap instead of the stack, to
-       make it easier for memory debuggers such as Valgrind to point out
-       use of its members after this function returns.
-
-2008-03-25  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.glade: Removed unused menuitems.
-
-       * data-editor.c data-editor.glade: Added Mnemonics to all menuitems.
-
-2008-03-16  Ben Pfaff  <blp@gnu.org>
-
-       Patch #5368.  Reviewed by John Darrington.  Tested by Jason
-       Stover.
-
-       * automake.mk: Add new files.
-
-       * data-editor.glade: Add "import delimited text data" menu item.
-
-       * data-editor.c: Connect "import delimited text data" menu item.
-
-       * text-data-import-dialog.c: New file.
-
-       * text-data-import-dialog.h: New file.
-
-       * text-data-import.glade: New file.
-
-2008-03-07  Ben Pfaff  <blp@gnu.org>
-
-       * psppire-var-sheet.c: Initialize "may-create-vars" to TRUE by
-       default.
-
-2008-03-06  Ben Pfaff  <blp@gnu.org>
-
-       * psppire-var-sheet.c psppire-var-sheet.h: Add "may-create-vars"
-       property to var sheet that controls whether the user can create
-       new variables in the dictionary.  Needed by upcoming patch #6358.
-       Reviewed by John Darrington.
-
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6427.  Reviewed by John Darrington.
-
-       * comments-dialog.c: Adapt to new syntax generating code in
-       ui/syntax-gen.[ch].
-
-       * data-editor.c: Ditto.
-
-       * recode-dialog.c: Ditto.
-
-       * t-test-independent-samples-dialog.c: Ditto.
-
-2008-02-29  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-data-editor.c psppire-data-editor.h: New files.  Contains functionality
-       previously scattered thoughout data-editor.c and elsewhere.
-
-       * data-editor.c data-editor.h: Abstracted the variable sheet, the data sheet and
-       their containing GtkNotebook into a new Object.
-
-       * data-sheet.c data-sheet.h: Deleted.
-
-       * var-sheet.c var-sheet.h: Deleted.  Moved to psppire-var-sheet.[ch]
-
-       * psppire-var-sheet.c psppire-var-sheet.h: New files.
-       
-       * clipboard.c clipboard.h: Deleted.  Moved to psppire-data-editor.c
-
-       * psppire-var-store.c psppire-var-store.h: Updated symbols to avoid name clashes.
-       
-       * comments-dialog.c compute-dialog.c crosstabs-dialog.c descriptives-dialog.c
-       examine-dialog.c find-dialog.c frequencies-dialog.c goto-case-dialog.c
-       oneway-anova-dialog.c rank-dialog.c recode-dialog.c select-cases-dialog.c
-       sort-cases-dialog.c split-file-dialog.c t-test-independent-samples-dialog.c
-       transpose-dialog.c variable-info-dialog.c weight-cases-dialog.c t-test-one-sample.c
-       t-test-paired-samples.c: Updated dialogs to match above changes.
-
-2008-02-27  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression-dialog.c: New file.
-
-       * regression-dialog.h: New file.
-
-       * regression.glade: New file.
-
-2008-02-19  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6426.  Reviewed by John Darrington.
-       
-       * psppire-var-store.c: Add "trailing-rows", "format-type"
-       properties to PsppireVarStore.
-
-2008-02-19  Ben Pfaff  <blp@gnu.org>
-
-       * message-dialog.c (popup_messages): Always destroy `msg' and
-       `lead' strings, avoiding a memory leak.  Thanks to John Darrington
-       for reporting the problem.
-
-2008-02-19  John Darrington <john@darrington.wattle.id.au>
-
-       * dict-display.c: Display names of variables in dialog box
-       dictionary treeviews, when the mouse hovers over the variable.
-
-2008-02-13  John Darrington <john@darrington.wattle.id.au>
-
-       * variable-info-dialog.c: Fix crash when clicking "Jump" when no 
-       variable selected.  Add a valid predicate so that this can't 
-       happen anyway.
-
-       * compute-dialog.c: Fix crash when trying to set label on non
-       existant variable.
-
-2008-02-09  Ben Pfaff  <blp@gnu.org>
-
-       Consolidate multiple messages into single message dialog.  Patch
-       #6405.  Thanks to John Darrington for review.
-
-       * automake.mk (dist_src_ui_gui_psppire_DATA): Add
-       message-dialog.glade.
-
-       * helper.c (give_help): Use GtkMessageDialog directly instead of
-       trying to reuse message-dialog code.
-
-       * message-dialog.c: Rewritten.
-
-       * message-dialog.glade: New file.
-
-2008-02-08  Jason Stover  <jhs@math.gcsu.edu>
-
-       * crosstabs-dialog.c: New file.
-
-       * crosstabs-dialog.h: New file.
-
-       * crosstabs.glade: New file.
-
-2008-02-08  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-data-store.c: Remove feature which automatically inserts
-       cases at end of data.
-
-       * datasheet.c: Make rows after the last + 1, not editable.
-
-2008-02-08  John Darrington <john@darrington.wattle.id.au>
-
-       * sort-cases-dialog.c transpose-dialog.c: Added dialog_valid
-       predicates.
-
-2008-02-04  John Darrington <john@darrington.wattle.id.au>
-
-       * checkbox-treeview.c: In toggle callback, use the treeview's 
-       current model, instead of relying on the one set at creation.
-       Use attributes instead of cell_renderer functions.
-
-2008-02-03  John Darrington <john@darrington.wattle.id.au>
-
-        * psppire-case-file.c psppire-case-file.h: Dont clone the casereader
-       before creating datasheet.  Add properties instead of direct code 
-        in _new function.
-
-        * psppire-data-store.c:  Implement proper dispose function.
-
-2008-01-29  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-var-ptr.c psppire-var-ptr.h: New files
-
-       * t-test-paired-samples.c t-test-paired-samples.h: New files
-
-        * dialog-common.c dialog-common.h (append_variable_names): Add extra 
-       argument to specify the column number containing the variables.
-
-       * psppire-selector.c psppire-selector.h:  Add auxilliary data variable
-       to SelectItemsFunc.  (is_item_in_dest) transform model value to G_TYPE_INT
-       before using.  Hence the model need not be of integer type.
-
-2008-01-22  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-dict.c (psppire_dict_rename_var): Fixed bug where
-       an assertion failure occured when renaming variables to an
-       existing name. Thanks to Ben for reporting this.
-
-2007-12-13  John Darrington <john@darrington.wattle.id.au>
-
-       * dialog-common.c dialog-common.h (numeric_only): New function.
-
-       * t-test-independent-samples-dialog.c:  Added the ability to specify 
-       groups by a threshold ("Cut Point").  Keep OK/Paste buttons insensitive,
-       until groups are properly defined.  Prevented variables treeview from
-       accepting string variables.
-
-2007-12-08  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.h data-editor.c: Added hooks for one sample t-test
-
-       * t-test-one-sample.c t-test-one-sample.h (new files): Implemented
-       a dialog box for the One Sample T Test.
-
-       * t-test-independent-samples-dialog.c: Factored out the options sub
-       dialog (see following).
-
-       * t-test-options.c t-test-options.h (new files):  New module
-        implementing the options sub-dialog for T tests.
-
-2007-12-07  John Darrington <john@darrington.wattle.id.au>
-
-       * frequencies-dialog.c: Made the options subdialog transient
-       on the parent.
-
-2007-12-01  John Darrington <john@darrington.wattle.id.au>
-
-       * descriptives-dialog.c: Moved the code dealing with checkboxes 
-       inside treeview widgets into their own files.
-
-       * checkbox-treeview.c checkbox-treeview.h: New file (see above).
-
-       * frequencies-dialog.c frequencies-dialog.h frequencies.glade: New 
-       files. Implemented FREQUENCIES dialog box.
-
-       * data-editor.c data-editor.h data-editor.glade :  Added callback
-       for frequencies dialog.
-
-
-2007-11-23  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-acr.c psppire-acr.h: Generalised the external widget
-       somewhat. It can now be anything, not necessarily a GTK_ENTRY.
-
-       * helper.c helper.h (clone_list_store): New function.
-
-       * oneway-anova-dialog.c : Used the clone_list_store function
-       instead of writing it ourselves.
-       
-       * psppire-dialog.c psppire-dialog.h: Added a tabular orientation
-       in addition to the horizontal/vertical options.
-       
-       * recode-dialog.c recode-dialog.h recode.glade (new files).
-
-       * psppire-selector.c psppire-selector.h: Added a function to
-       allow the prohibition of items based on a predicate.
-
-       * dialog-common.h dialog-common.c (homogeneous_types): New function.
-
-       * data-editor.c data-editor.glade data-editor.h: Enabled the
-       recode dialog options.
-
-
-2007-11-23  John Darrington <john@darrington.wattle.id.au>
-
-       * compute-dialog.c (generate_syntax): Append "EXECUTE." to the 
-       generated syntax.
-
-2007-10-19  John Darrington <john@darrington.wattle.id.au>
-
-        * psppire-acr.c psppire-acr.h (new files): Added this new
-       composite widget.
-
-       * data-editor.c data-editor.h: Added entries for ONEWAY command
-       dialog box.
-
-       * oneway-anova-dialog.c oneway-anova-dialog.h oneway.glade (new files)
-       
-2007-10-06  John Darrington <john@darrington.wattle.id.au>
-       
-       * psppire-dialog.c psppire-dialog.h: Added a predicate function
-       member to indicate when a dialog's state is (not) valid. Added a
-       signal "validity-changed" which gets emitted whenever this
-       predicate changes. 
-
-       * psppire-buttonbox.c: Connect to the toplevel window's
-       "validity-changed" signal (assuming it happens to be a
-       PsppireDialog) and set the OK, PASTE, GOTO and CONTINUE buttons
-       according.y. 
-
-       * descriptives-dialog.c compute-dialog.c: Add a validity predicate.
-
-2007-10-05  Ben Pfaff  <blp@gnu.org>
-
-       Add DESCRIPTIVES dialog.
-       
-       * automake.mk (dist_src_ui_gui_psppire_DATA): Add
-       descriptives-dialog.data.
-       (src_ui_gui_psppire_SOURCES): Add descriptives-dialog.c,
-       descriptives-dialog.h.
-
-       * data-editor.c (new_data_editor): Connect descriptive dialog to
-       action.
-
-       * data-editor.glade: Change menu item to invoke DESCRIPTIVES.
-
-       * descriptives-dialog.c: New file.
-       
-       * descriptives-dialog.h: New file.
-       
-       * descriptives-dialog.glade: New file.
-
-2007-10-04  John Darrington <john@darrington.wattle.id.au>
-
-       * compute-dialog.c goto-case-dialog.c main.c psppire-keypad.c: Added 
-       #include <config.h>
-
-       * psppire.glade about.c: Read GPL text from src/libpspp/copyleft.c 
-       instead of makeing another copy in psppire.glade.
-
-       * psppirebuttonbox.c psppire.c: Create a new stock item for 
-       RESET buttons.
-       
-2007-09-26  John Darrington <john@darrington.wattle.id.au>     
-       
-       * output-viewer.c output-viewer.h psppire.c: (closes patch #6210) 
-       Changed width and length parameters of output driver to
-       "auto". Changed default width and length  to be something
-       acceptable to the ascii driver.  (reload_viewer) Dynamically
-       allocate the line buffer so that it matches the width of the output.
-       
-2007-09-24  Ben Pfaff  <blp@gnu.org>
-
-       * message-dialog.c (popup_message): Refer to files that contain
-       commands as "syntax" files, not "script" files, for better user
-       familiarity.
-       Patch #6210.  Reviewed by John Darrington.
-
-2007-09-19  John Darrington <john@darrington.wattle.id.au>
-       
-       * message-dialog.c: Changed the ouput message title to be 
-       appropriate for the severity of the message.
-
-       * output-viewer.c output-viewer.h : Added a callback for the resize 
-       signal of the output viewer, and set the viewport length and
-       width accordingly.
-
-       * psppire.c: Update to new init_settings interface.
-
-2007-09-27  John Darrington <john@darrington.wattle.id.au>
-
-       Addressing bug #20821:
-       
-       * psppire-dict.c: Added a BACKEND_CHANGED signal to indicate when 
-       a PsppireDict's struct dictionary has been replaced.
-
-       * psppire-var-store.c: Added the appropriate method for 
-       get_column_count. Added a signal handler for dict:BACKEND_CHANGED, 
-       which calls the g_sheet_model_range_changed for the entire sheet.
-       
-2007-09-18  Ben Pfaff  <blp@gnu.org>
-
-       * helper.c (create_casereader_from_data_store): New function.
-       (execute_syntax): Only replace the active file data by a new
-       casereader if syntax caused the active file to be read, to avoid
-       exponential slowdown as an increasing number of snippets that do
-       not read from the active file are consecutively executed.  Bug
-       #20910.  Reviewed by and heavily influenced by John Darrington.
-
-       * psppire-data-store.c (psppire_data_store_get_value_count): New
-       function.
-
-       * psppire-dict.c (psppire_dict_get_value_cnt): New function.
-
-2007-09-13  John Darrington <john@darrington.wattle.id.au>
-
-       * find-dialog.c find-dialog.h: New files.
-
-       * data-editor.c data-editor.h data-editor.glade: Added action for
-       the find dialog.
-
-       * psppire-selector.c: Emit the (de)selected signal when the 
-       destination entry widget's text changes.
-
-2007-09-10  Ben Pfaff  <blp@gnu.org>
-
-       * var-sheet.c (psppire_variable_sheet_create): Use xstrdup to save
-       string returned by bind_textdomain_codeset.  Otherwise it can get
-       freed by a subsequent call.  Patch #6193.  Reviewed by John
-       Darrington.
-
-2007-09-06  John Darrington <john@darrington.wattle.id.au>
-       
-       * helper.c helper.h (execute_syntax): changed return type to 
-       gboolean to indicated if all the syntax executed successfully or not.
-
-       * data-editor.c syntax-editor.c: Fixed update of recent file list
-       and window title,  on data_file_open.  They now only change, if
-       the file_open was  successfull. 
-
-
-2007-08-25  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire.c : Enable journal.
-
-2007-08-18  John Darrington <john@darrington.wattle.id.au>
-
-       * clipboard.c clipboard.h data-editor.c: Added the ability to paste from 
-       the clipboard into the data sheet.
-
-2007-08-16  John Darrington <john@darrington.wattle.id.au>
-
-        * output-viewer.c output-viewer.h output-viewer.glade (new files)
-         helper.c psppire.c syntax-editor.glade window-manager.c 
-         window-manager.h : Added a basic output viewer window.
-
-2007-08-13  John Darrington <john@darrington.wattle.id.au>
-
-       * clipboard.c (clip_to_html clip_to_text): Fixed bug --- use the
-       variable count instead of the value count for the columns limit. 
-
-2007-08-12  John Darrington <john@darrington.wattle.id.au>
-           Ben Pfaff  <blp@gnu.org>
-
-       Implement Edit|Cut operation for datasheet.  Patch #6117.
-
-       * automake.mk: Add clipboard.c, clipboard.h.
-
-       * clipboard.c: New file.
-
-       * clipboard.h: New file.
-
-       * data-editor.c (new_data_editor): Connect Edit|Copy to
-       on_edit_copy function.
-       (data_var_select): Enable or disable Edit|Copy as appropriate.
-       (on_edit_copy): New function.
-
-       * data-editor.glade: Connect menu items to new operations.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * psppire-dict.c (psppire_dict_dump): Don't use
-       dict_get_compacted_dict_index_to_case_index, as that function has
-       been deleted.
-
-2007-08-13  John Darrington <john@darrington.wattle.id.au>
-
-        * psppire-case-file.c (psppire_case_file_append_case):
-       Deleted unused function.
-
-2007-08-07  John Darrington <john@darrington.wattle.id.au>
-
-       * helper.c (execute_syntax): Set the active file data to NULL at the
-       end of the procedure.  Thanks to Ben for suggesting this.
-
-       * psppire-case-file.c: Added assertions to the remaining functions
-       on inaccessible objects.
-
-       * psppire-data-store.c psppire-data-store.h: Disconnect or block
-       signals on dictionary and case_file, when make_reader has been called.
-       Reconnect or unblock them when a new datasheet has been set for the
-       data_store.
-
-2007-08-06  John Darrington <john@darrington.wattle.id.au>
-
-       * syntax-editor.glade: Changed some properties to be less annoying.
-
-2007-07-29  John Darrington <john@darrington.wattle.id.au>
-
-       * helper.c psppire.c: Enabled the output system so that the results
-       of analysis can be seen.
-
-2007-07-26  John Darrington <john@darrington.wattle.id.au>
-
-       * helper.c helper.h (execute_syntax): removed implicit EXECUTE at end
-       of commands.
-
-       * data-editor.c data-editor.glade: Added "Run Pending Transformations"
-       menuitem.
-
-2007-07-25  John Darrington <john@darrington.wattle.id.au>
-
-       * customentry.c: Redraw button in insensitive state, if the widget's
-        "editable" style is FALSE.  Don't emit the "clicked" signal if
-        "editable" is FALSE.
-
-       * var-sheet.c: If variables are long-string variables, then set the
-       "editable" properties of the entry widgets for the values and missing
-       cells to FALSE,
-
-2007-07-18  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-case-file.c psppire-case-file.h psppire-data-store.c
-       psppire-dict.c psppire-dict.h psppire-var-store.c : Added the
-       ability to resize string variables.  Fixed associated problems
-       inserting/deleting variables.
-
-       * helper.c helper.h (marshaller_VOID__INT_INT_INT): New marshaller
-       function.
-
-2007-07-16  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c: File Open dialog remembers directory.  Thanks to
-       Ben Pfaff for this suggestion.
-
-2007-07-15  John Darrington <john@darrington.wattle.id.au>
-
-       * compute-dialog.c: Only generate NUMERIC/STRING command if the
-       type-and-label dialog was used.
-
-2007-07-12  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-data-store.c: Added call to g_sheet_model_range_changed to
-       ensure that datasheet displays the current store.
-
-       * psppire-data-store.h: Formatting tidy up.
-
-2007-07-11  John Darrington <john@darrington.wattle.id.au>
-
-       * compute-dialog.c : Set type-and-label dialog to sensible state,               and made syntax generation depend upon existence of target variable.
-
-2007-07-08  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c data-editor.glade data-editor.h: Implemented
-       the "Insert Case" button/dialog.
-
-2007-07-08  John Darrington <john@darrington.wattle.id.au>
-
-       * goto-case-dialog.c goto-case-dialog.h (new files)
-       * automake.mk data-editor.c data-editor.glade data-editor.h
-       psppire-case-file.c psppire-case-file.h psppire-data-store.c
-       psppire-data-store.h psppire.glade :  Implemented the goto-case dialog
-
-
-2007-07-07  John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-data-store.c psppire-data-store.h: Made cases number from
-       1 instead of 0.
-
-       * psppire-data-store.c: Added a tooltip like feature to display
-       the label of variables.
-
-2007-07-03  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c data-sheet.c: Turned off autoscrolling, and
-       manually move to cell on column click instead.
-
-2007-06-29  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c data-editor.glade psppire-data-store.c
-       psppire-data-store.h: Enabled cell reference entry and datum
-       entry widgets.
-
-2007-06-29  John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c data-sheet.c: Moved update_cell_ref_entry from
-       data-sheet.c to data-editor.c and made it work again.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adapt case sources, sinks, and clients of procedure code to the
-       new infrastructure.
-
-       * automake.mk: Removed files.
-
-       * flexifile-factory.c: Removed, dead code.
-       * flexifile-factory.h: Ditto.
-
-       * helper.c: Adapt to new procedure and datasheet code.
-       * missing-val-dialog.c: Ditto.
-       * psppire-case-file.c: Ditto.
-       * psppire-data-store.c: Ditto.
-       * psppire.c: Ditto.
-
-2007-06-03  Ben Pfaff  <blp@gnu.org>
-
-       * psppire-var-store.c (psppire_var_store_item_editable): Use
-       var_is_alpha.
-
-2007-05-07 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-dialog.c psppire-dialog.h: Added "orientation" property,
-        to allow dialogs to be either vertical or horizontal.
-
-       * comments-dialog.c comments-dialog.h: New files, invoking
-       ADD DOCUMENT cmd.
-
-2007-04-30 John Darrington <john@darrington.wattle.id.au>
-
-       * var-display.c var-display.h variable-info-dialog.c
-       variable-info-dialog.h : New files.
-
-       * data-editor.c :
-
-       * psppire-buttonbox.c psppire-buttonbox.h : Added the "buttons"
-       property, and optional  GOTO and CONTINUE buttons.
-
-       * psppire-dialog.h: Added response codes for the new buttons.
-
-       * psppire-var-store.c : Moved some code to var-display.[ch]
-
-2007-04-25 John Darrington <john@darrington.wattle.id.au>
-
-       * icons/scalable/splash.c icons/splash.png : More eye candy.
-
-       * main.c psppire.h : new files.
-
-       * psppire.c : Seperated the command line parsing and other
-       environment startup from the core psppire code.
-
-2007-04-25 John Darrington <john@darrington.wattle.id.au>
-
-       * icons/scalable icons/16x16: new directories.
-       * psppire.c : Add new icons to factory.
-
-       * dict-display.c: Refactor code get model from modelfilter.
-       Added cellrenderer to display icon indicating variables' types.
-        Displayed the label of variables, if there is one.
-
-
-2007-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * compute-dialog.c (function_list_populate): Use new accessor
-       functions exported by language/expressions/public.h.
-
-2007-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * compute-dialog.c: Make #include for parse.inc work with VPATH
-       builds.
-
-2007-04-13   John Darrington <john@darrington.wattle.id.au>
-
-       * var-type-dialog.c: Added a FMT_DATETIME20 template.
-
-2007-04-04   John Darrington <john@darrington.wattle.id.au>
-
-       * compute-dialog.c compute-dialog.h: New files
-
-       * data-editor.c data-editor.h data-editor.glade : Added Transform
-       menu, and support for Compute dialog
-
-       * glade-register.c psppire-buttonbox.c psppire-buttonbox.h
-         psppire-vbottonbox.c psppire-vbuttonbox.h psppire-hbuttonbox.c
-         psppire-vbuttonbox.h : Made buttonbox an abstract base class
-         and separated it into vbuttonbox and hbuttonbox.
-
-       * psppire-selector.c : Allowed GtkTextView to be the destination
-       widget.
-
-       * psppire-keypad.c: Added an "erase" signal.  Fixed other
-        minor problems.
-
-2007-04-03  Ben Pfaff  <blp@gnu.org>
-           John McCabe-Dansted <gmatht@gmail.com>
-
-       * psppire-selector.c (psppire_selector_set_subjects): Add an
-       assert that may or may not trap some Windows-related bugs.
-
-2007-04-03   John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c data-editor.glade helper.h syntax-editor.c
-       syntax-editor.h : Implemented the File->Recently_Used_ menus.
-
-
-2007-03-31   John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c data-editor.glade data-editor.h dialog-common.c
-       psppire-buttonbox.c psppire-dialog.c psppire-dialog.h
-       psppire-selector.c psppire-selector.h psppire.c psppire.glade
-       sort-cases-dialog.c sort-cases-dialog.h split-file-dialog.c
-       transpose-dialog.c weight-cases-dialog.c : Fixed the Refresh
-       button on all the dialogs.
-
-2007-03-31   John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c: Added hooks for the split-file-dialog
-
-       * psppire.glade: Added the split file dialog box.
-
-       * split-file-dialog.c split-file-dialog.h: New files.
-
-       * dialog-common.c dialog-common.h: New files containing functions
-       which seem to be used a lot in dialog box implementations.
-
-       * psppire-keypad.c psppire-keypad.h: New files.  Implements keypad
-       thingumy widget.
-
-       * psppire-selector.c: Made the orientation of the arrow a property
-       of the widget, so that it can be selected from glade.
-
-2007-03-18  Ben Pfaff  <blp@gnu.org>
-
-       * syntax-editor-source.c (close): Rename do_close to avoid naming
-       conflict with POSIX function of same name.
-
-Tue Mar 13 17:20:05 CET 2007 John Darrington <john@darrington.wattle.id.au>
-       * psppire.c:  Changed gtk_init to gtk_parse_args, followed by a delayed         call to gdk_init, so that psppire --version will succeed, even if it
-       cannot connect to a display .
-
-Wed Mar  7 19:05:12 CET 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * var-sheet.c: Replaced call to nl_langinfo with locale_charset
-       from gnulib.
-
-Thu Feb 22 12:27:41 CET 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c : called new gen_quoted_string function to properly
-          quote filenames in generated syntax.
-
-       * window-manager.c : Converted name from filename encoding to UTF8
-          before displaying in title bar.
-
-Tue Jan 30 20:13:46 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-dict.c: Call all the callbacks when a new dictionary becomes current.
-
-       * data-editor.c: Clear existing file name on FILE NEW.
-
-Sat Jan 27 09:48:21 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * var-type-dialog.c: Fixed bugs closing window, apparent when compiled
-       against gtk.2.10
-
-Fri Jan 26 15:51:34 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-var-select.c psppire-var-select.h : Deleted.
-
-       * psppire-selector.c psppire-selector.h : New files.
-
-       * transpose-dialog.c transpose-dialog.h : New files.
-
-       * psppire-dict.c psppire-dict.h : Added missing GtkTreeModel
-       interface functions.
-
-       * weight-cases-dialog.c weight-cases-dialog.h : Re-implemented,
-       using new PsppireSelector widget.
-
-       * dict-display.c dict-display.h : New files.
-
-       * psppire-object.c psppire-object.h : Deleted.  Seemed like a good idea at the time.
-
-Tue Jan 23 21:10:01 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * helper.c helper.h: New function execute_syntax.
-
-       * syntax-editor.c syntax-editor.glade: Disabled data open/save menu
-       items.
-
-       * data-editor.c data-editor.glade data-editor.h: Enabled data
-       open/save/save_as  menu-items.
-
-       * window-manager.h window-manager.c (default_window_name) : New
-       function.
-
-Sat Jan 13 07:47:26 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-case-file.c psppire-data-store.c psppire-dialog.c
-       psppire-dict.c psppire-var-select.c : Replaced identifier 'signal'
-       with 'signals' to avoid conflict with sysv based systems which use
-       this identifer for something else.
-       Thanks to Daniel E WILLIAMS for reporting this problem.
-
-Wed Jan 10 07:20:39 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-case-file.c : Make sure there is always a valid flexifile
-
-       * psppire-data-store.c : assertions.
-
-       * psppire.c: Ignore replace source callbacks if the new source is
-         not of storiage_source_class
-
-       * syntax-editor.c: Close/Abort source after parsing is complete.
-
-Sun Jan  7 08:38:29 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-dict.c: Add FILTER_CHANGED and SPLIT_CHANGED signals
-       corresponding to the callbacks in src/data/dictionary.c
-
-       * data-editor.c : Connect functions to the FILTER_CHANGED and
-       SPLIT_CHANGED signals to update the status bar accordingly.
-
-Mon Jan  1 10:37:07 WST 2007 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-case-file.c psppire-case-file.h: Changed the backend
-       semantics. An object is now created without any backend.  A new function        ( psppire_case_file_replace_flexifile ) sets the backend to use.
-
-       * psppire-data-store.c : Updated callers accordingly.
-
-       * psppire-dict.c psppire-dict.h : New function
-       (psppire_dict_replace_dictionary) .
-
-       * psppire.c : Updated to use new dataset replace_{source, dictionary}
-       callbacks.
-
-       * syntax-editor.c : parses in state CMD_STATE_DATA unless there are
-       no variables in the dictionary.
-
-Mon Dec 25 12:38:24 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * data-editor.c data-editor.glade: Enabled deleting of variables from
-       the variable sheet.
-
-Mon Dec 25 11:28:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-dict.c psppire-dict.h: Removed explicit signal emit calls.
-       These are not required, now that src/data/dictionary.c has callbacks
-
-Mon Dec 25 08:49:57 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * var-sheet.c val-labs-dialog.c val-labs-dialog.h: Fixed bug in value
-       labels dialog box.
-
-Sun Dec 17 08:26:10 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * syntax-editor-source.c syntax-editor-source.h syntax-editor.h:
-       New files.
-
-       * message-dialog.c :  Now reports the filename and line number in
-       error messages.
-
-       * psppire.c psppire.glade syntax-editor.c: Added the ability to run
-       syntax from the syntax editor.
-
-
-Sat Dec 16 14:13:07 2006  Ben Pfaff  <blp@gnu.org>
-
-       * psppire-data-store.c (geometry_get_justification): Don't assume
-       that ALIGN_* and GTK_JUSTIFY_* values coincide.
-
-Sat Dec 16 14:10:43 2006  Ben Pfaff  <blp@gnu.org>
-
-       * psppire-var-store.c (text_for_column): Adjust to account for new
-       values of the MEASURE_* enums.
-
-       * var-sheet.c (change_measure): Ditto.
-
-Sat Dec 16 12:24:35 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-variable.c psppire-variable.h: Deleted.
-
-       * psppire-dict.c psppire-dict.h: Removed the caching of the variable
-           data, which is now unecessary because src/data/vardict.h maintains
-           an association between variables and their dictionary.
-
-       * data-sheet.c menu-actions.c missing-val-dialog.c
-         missing-val-dialog.h psppire-data-store.c
-         psppire-var-store.c psppire-var-store.h
-         sort-cases-dialog.c val-labs-dialog.c val-labs-dialog.h
-         var-sheet.c var-type-dialog.c var-type-dialog.h: Dealt with the
-           consequences of deleting psppire-variable.[ch].
-
-
-Sat Dec  9 20:03:04 2006  Ben Pfaff  <blp@gnu.org>
-
-       * var-type-dialog.c (var_type_dialog_create): Use
-       fmt_dollar_template from data/format.c.
-       (dollar_format_template) Removed.
-
-Sat Dec  9 07:19:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * syntax-editor.c : New file.
-
-Tue Oct 31 19:25:31 2006  Ben Pfaff  <blp@gnu.org>
-
-       * var-type-dialog.c: Add missing "#include <config.h>".
-
-       * psppire.c: Ditto.
-
-Mon Jul 17 18:21:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * automake.mk menu-actions.c psppire-case-file.c psppire-case-file.h
-    psppire-data-store.c psppire-dict.c psppire-dict.h psppire-variable.c
-    psppire.c psppire.glade: Adjusted code to use the new flexifile object.
-
-Sat Jul 15 11:27:15 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * psppire.c psppire.glade automake.mk icons/* : Added toolbar icons where
-       there's no suitable gtk stock icon.
-
-Tue Jul  4 09:08:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * psppire.c: Fixed --help and --version options.
-
-Sat Jun 24 16:56:22 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * menu-actions.c: Added goto case and sort cases dialogs.
-
-   * psppire-case-file.c psppire-case-file.h: Added sort function.
-
-   * psppire-data-store.c psppire-variable.c psppire-variable.h:
-     Renamed  psppire_variable_get_index to psppire_variable_get_fv and
-     dealt with the consequences.  Added a psppire_variable_get_index
-     function which actually does what the name suggests.
-
-   * psppire-dict.c psppire-dict.h: Implemented GtkTreeModel interface,
-     which allows a dictionary to be displayed in a GtkTreeView.
-
-   * psppire.glade: Added dialog boxes for Goto Case and Sort Case.
-
-   * sort-cases-dialog.c sort-cases-dialog.h (new files).
-
-Mon Jun 19 18:10:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * psppire-case-file.c psppire-case-file.h (new files)
-
-   * automake.mk data-sheet.c data-sheet.h menu-actions.c
-   psppire-data-store.c psppire-data-store.h psppire-dict.c
-   psppire-dict.h psppire-var-store.c psppire.c
-
-     Replaced psppire-case-array.c  with psppire-case-file.c, so as to
-     allow an arbitrary number of cases to be represented.
-
-Sun Jun  4 15:50:28 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * psppire-var-store.c, psppire.c, var-sheet.c :  Unlimited the number of
-   variables that can be displayed. Minor i18n issues.
-
-Tue May 30 19:53:35 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * menu-actions.c menu-actions.h psppire.c: Fixed up load/new
-   interactions with startup.
-
-   * psppire-data-store.c: Fixed bad i18n call.
-
-   * pspppire-var-store.c, psppire-var-store.h: constness.
-
-   * helper.c: Implemented proper way to convert from PSPP to UTF8 encoding.
-
-
-Sat May 27 16:25:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * customentry.c data-sheet.c menu-actions.c message-dialog.c
-     missing-val-dialog.c psppire-data-store.c psppire-var-store.c
-     psppire.c psppire.glade var-sheet.c: Fixed internationalisation.
-
-Thu May 25 18:01:17 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * psppire-var-store.c: Converted strings to utf8 and returned them on the
-   heap.
-
-Sat May 20 21:08:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-   * data-sheet.c, menu-actions.c menu-actions: Fixed data sheet so that
-   active cell is never on a deleted variable.
-
-   * psppire-data-store.c psppire-data-store.h:  Added get_var_count and
-   get_case_count functions.
-
-   * psppire-dict.c: removed VARIABLE_DELETED (singular) signal.
-
-   * psppire.c: Allowed user to specify *.sav file on command line.
-
-Mon May 15 20:01:25 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * menu-actions.c psppire-case-array.c psppire-case-array.h
-         psppire-data-store.c  psppire-dict.c psppire-dict.h
-         psppire-variable.c:
-
-         Initialised new cases to SYSMIS/blank when inserting in data sheet.
-
-Sat May 13 08:00:50 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * data-sheet.c, helper.c, helper.h, psppire-data-store.c,
-          psppire-var-store.c:
-
-         Set free_strings flag so that the gtksheet frees the string data
-         when it's done with them.
-
-Thu May 11 22:25:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * data-sheet.c helper.c helper.h psppire-data-store.c psppire-var-store.c
-       psppire.c: Converted strings to utf8 before passing to gtksheet.
-
-       * psppire-dict.c: Changed buffer to more reasonable length
-
-       * var-sheet.c: Changed maximum string length to use macro from
-       data/values.h
-
-
-Sun May  7 10:07:28 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * psppire-data-store.c: Fixed buglet initialising string members.
-
-Thu May  4 18:04:04 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * message-dialog.c message-dialog.h: Added simple queuing to messages
-       reported, and ensure that dialog boxes dont appear when pointer grab
-       is active.
-
-       * psppire-data-store.c: Fix overflow on very long string variables.
-
-       * automake.mk: Fix broken dependency.
-
-
-Tue Apr 25 11:08:04 2006  Ben Pfaff  <blp@gnu.org>
-
-       Finish reforming error message support.  In this phase, move
-       message.c into libpspp.
-
-       * automake.mk: (src_ui_gui_psppire_SOURCES) Remove src/message.c.
-
-Tue Apr 25 10:56:53 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, drop
-       actual message printing from core code, substituting a callback,
-       and add the callback to each UI.  Also, move verbose_msg() into
-       its own module.
-
-       * automake.mk: (src_ui_gui_psppire_SOURCES) Add src/message.c.
-
-       * message-dialog.c: (message_dialog_init) New function.
-       (vmsg) Rename handle_msg(), rewrite as callback function.
-       (msg) Removed.
-       (msg_emit) Removed.
-       (msg_assert_fail) Removed.
-       (verbose_msg) Removed.
-
-       * psppire.c: (main) Call message_dialog_init().
-
-Sun Apr 23 22:07:49 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, get rid
-       of message "titles" and put the message text in `struct error'.
-       Now `struct error' encapsulates a message more properly.
-
-       * message-dialog.c: (err_vmsg) Rename err_msg().  Updated
-       interface.
-
-Sun Apr 16 20:45:35 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, we
-       divide the classification of messages along "category" and
-       "severity" axes.
-
-       * message-dialog.c: (vmsg) Use severity and category in
-       straightforward fashion instead of the less obvious "class".
-       (err_vmsg) Construct class before passing along to vmsg().
-
-Sun Apr 16 16:06:54 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, we get
-       rid of VM() and the other msg() support for "verbosity", replacing
-       it by a new function verbose_msg().
-
-       * message-dialog.c: (verbose_msg) New function.
-       (err_cond_fail) Removed (dead code).
-       (err_failure) Removed (dead code).
-
-Sun Apr 16 11:53:25 2006  Ben Pfaff  <blp@gnu.org>
-
-       Start reforming error message support.  In this phase, we get rid
-       of "installation errors" and change all uses of msg() in the
-       output drivers to uses of error() or error_at_line().
-
-       * message-dialog.c: (vmsg) Removed IE, IS support.
-
-Mon Mar 13 16:42:44 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * psppire.c: Supported (sort of) the --help and --version options.
-
-    * Rename error-dialog.[ch] -> message-dialog.[ch]
-
-    * Moved code from the psppire module.
-
-Sat Jan 28 16:22:23 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-    * Separated the data out of the GtkSheet.
-
-Tue Nov  2 19:00:28 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-    * Very first incarnation.
diff --git a/src/ui/gui/OChangeLog b/src/ui/gui/OChangeLog
new file mode 100644 (file)
index 0000000..88a42f1
--- /dev/null
@@ -0,0 +1,1117 @@
+2008-05-20  John Darrington <john@darrington.wattle.id.au>
+
+       * automake.mk: Added the -no-undefined flag so that dlls can be built
+       on w32 platforms.  Abstracted the dependencies of glade-register.c
+       into a new shared library libpsppwidgets.so, which can be either
+       linked directly by psppire or by libpsppire.so
+
+       * psppire-keypad.c: Changed snprintf to g_snprintf so as not to use
+       gnulib.
+
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Rename install-data-hook to yelp-check and mark it
+       phony.  This avoids an automake warning for duplicate
+       install-data-hook commands in doc/automake.mk and this file
+       (automake does not understand double-colon rules, since they are
+       not in POSIX).
+
+2008-05-09  John Darrington <john@darrington.wattle.id.au>
+
+       * automake.mk: On make install, warn about the non-existance of yelp.
+
+2008-05-08  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6505.  Reviewed by John Darrington.
+
+       * text-data-import-dialog.c: Don't make the user wiggle the mouse
+       to be able to click on the Forward button twice in quick
+       succession.
+       (add_page_to_assistant): Mark pages in the assistant complete
+       immediately.
+       (on_prepare): No longer mark pages complete upon first visit.
+
+2008-05-08  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6505.  Reviewed by John Darrington.
+
+       * text-data-import-dialog.c: (struct assistant) New member
+       `watch_cursor'.
+       (revise_fields_preview): Change the mouse pointer to a watch to
+       indicate that a long operation is ongoing.
+       (prepare_formats_page): Ditto.
+       (on_variable_change): Ditto.
+       (push_watch_cursor): New function.
+       (pop_watch_cursor): New function.
+
+2008-05-08  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c: In popup menus, connect the Insert Variable and
+       Insert Case callbacks manually, instead of relying on
+       gtk_action_connect_proxy, as the latter connects a label with a
+       mnemonic which is inappropriate.
+
+2008-05-06  Ben Pfaff  <blp@gnu.org>
+
+       Bug #23127.  Reviewed by John Darrington.  Tested by Jason Stover,
+       in an earlier form.
+
+       * text-data-import-dialog.c (get_tooltip_location): Prevent crash
+       when a tooltip is being prepared when the assistant is closed.
+
+2008-05-06  Ben Pfaff  <blp@gnu.org>
+
+       * text-data-import-dialog.c (text_data_import_assistant): Allocate
+       the struct import_assistant on the heap instead of the stack, to
+       make it easier for memory debuggers such as Valgrind to point out
+       use of its members after this function returns.
+
+2008-03-25  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.glade: Removed unused menuitems.
+
+       * data-editor.c data-editor.glade: Added Mnemonics to all menuitems.
+
+2008-03-16  Ben Pfaff  <blp@gnu.org>
+
+       Patch #5368.  Reviewed by John Darrington.  Tested by Jason
+       Stover.
+
+       * automake.mk: Add new files.
+
+       * data-editor.glade: Add "import delimited text data" menu item.
+
+       * data-editor.c: Connect "import delimited text data" menu item.
+
+       * text-data-import-dialog.c: New file.
+
+       * text-data-import-dialog.h: New file.
+
+       * text-data-import.glade: New file.
+
+2008-03-07  Ben Pfaff  <blp@gnu.org>
+
+       * psppire-var-sheet.c: Initialize "may-create-vars" to TRUE by
+       default.
+
+2008-03-06  Ben Pfaff  <blp@gnu.org>
+
+       * psppire-var-sheet.c psppire-var-sheet.h: Add "may-create-vars"
+       property to var sheet that controls whether the user can create
+       new variables in the dictionary.  Needed by upcoming patch #6358.
+       Reviewed by John Darrington.
+
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6427.  Reviewed by John Darrington.
+
+       * comments-dialog.c: Adapt to new syntax generating code in
+       ui/syntax-gen.[ch].
+
+       * data-editor.c: Ditto.
+
+       * recode-dialog.c: Ditto.
+
+       * t-test-independent-samples-dialog.c: Ditto.
+
+2008-02-29  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-data-editor.c psppire-data-editor.h: New files.  Contains functionality
+       previously scattered thoughout data-editor.c and elsewhere.
+
+       * data-editor.c data-editor.h: Abstracted the variable sheet, the data sheet and
+       their containing GtkNotebook into a new Object.
+
+       * data-sheet.c data-sheet.h: Deleted.
+
+       * var-sheet.c var-sheet.h: Deleted.  Moved to psppire-var-sheet.[ch]
+
+       * psppire-var-sheet.c psppire-var-sheet.h: New files.
+       
+       * clipboard.c clipboard.h: Deleted.  Moved to psppire-data-editor.c
+
+       * psppire-var-store.c psppire-var-store.h: Updated symbols to avoid name clashes.
+       
+       * comments-dialog.c compute-dialog.c crosstabs-dialog.c descriptives-dialog.c
+       examine-dialog.c find-dialog.c frequencies-dialog.c goto-case-dialog.c
+       oneway-anova-dialog.c rank-dialog.c recode-dialog.c select-cases-dialog.c
+       sort-cases-dialog.c split-file-dialog.c t-test-independent-samples-dialog.c
+       transpose-dialog.c variable-info-dialog.c weight-cases-dialog.c t-test-one-sample.c
+       t-test-paired-samples.c: Updated dialogs to match above changes.
+
+2008-02-27  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression-dialog.c: New file.
+
+       * regression-dialog.h: New file.
+
+       * regression.glade: New file.
+
+2008-02-19  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6426.  Reviewed by John Darrington.
+       
+       * psppire-var-store.c: Add "trailing-rows", "format-type"
+       properties to PsppireVarStore.
+
+2008-02-19  Ben Pfaff  <blp@gnu.org>
+
+       * message-dialog.c (popup_messages): Always destroy `msg' and
+       `lead' strings, avoiding a memory leak.  Thanks to John Darrington
+       for reporting the problem.
+
+2008-02-19  John Darrington <john@darrington.wattle.id.au>
+
+       * dict-display.c: Display names of variables in dialog box
+       dictionary treeviews, when the mouse hovers over the variable.
+
+2008-02-13  John Darrington <john@darrington.wattle.id.au>
+
+       * variable-info-dialog.c: Fix crash when clicking "Jump" when no 
+       variable selected.  Add a valid predicate so that this can't 
+       happen anyway.
+
+       * compute-dialog.c: Fix crash when trying to set label on non
+       existant variable.
+
+2008-02-09  Ben Pfaff  <blp@gnu.org>
+
+       Consolidate multiple messages into single message dialog.  Patch
+       #6405.  Thanks to John Darrington for review.
+
+       * automake.mk (dist_src_ui_gui_psppire_DATA): Add
+       message-dialog.glade.
+
+       * helper.c (give_help): Use GtkMessageDialog directly instead of
+       trying to reuse message-dialog code.
+
+       * message-dialog.c: Rewritten.
+
+       * message-dialog.glade: New file.
+
+2008-02-08  Jason Stover  <jhs@math.gcsu.edu>
+
+       * crosstabs-dialog.c: New file.
+
+       * crosstabs-dialog.h: New file.
+
+       * crosstabs.glade: New file.
+
+2008-02-08  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-data-store.c: Remove feature which automatically inserts
+       cases at end of data.
+
+       * datasheet.c: Make rows after the last + 1, not editable.
+
+2008-02-08  John Darrington <john@darrington.wattle.id.au>
+
+       * sort-cases-dialog.c transpose-dialog.c: Added dialog_valid
+       predicates.
+
+2008-02-04  John Darrington <john@darrington.wattle.id.au>
+
+       * checkbox-treeview.c: In toggle callback, use the treeview's 
+       current model, instead of relying on the one set at creation.
+       Use attributes instead of cell_renderer functions.
+
+2008-02-03  John Darrington <john@darrington.wattle.id.au>
+
+        * psppire-case-file.c psppire-case-file.h: Dont clone the casereader
+       before creating datasheet.  Add properties instead of direct code 
+        in _new function.
+
+        * psppire-data-store.c:  Implement proper dispose function.
+
+2008-01-29  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-var-ptr.c psppire-var-ptr.h: New files
+
+       * t-test-paired-samples.c t-test-paired-samples.h: New files
+
+        * dialog-common.c dialog-common.h (append_variable_names): Add extra 
+       argument to specify the column number containing the variables.
+
+       * psppire-selector.c psppire-selector.h:  Add auxilliary data variable
+       to SelectItemsFunc.  (is_item_in_dest) transform model value to G_TYPE_INT
+       before using.  Hence the model need not be of integer type.
+
+2008-01-22  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-dict.c (psppire_dict_rename_var): Fixed bug where
+       an assertion failure occured when renaming variables to an
+       existing name. Thanks to Ben for reporting this.
+
+2007-12-13  John Darrington <john@darrington.wattle.id.au>
+
+       * dialog-common.c dialog-common.h (numeric_only): New function.
+
+       * t-test-independent-samples-dialog.c:  Added the ability to specify 
+       groups by a threshold ("Cut Point").  Keep OK/Paste buttons insensitive,
+       until groups are properly defined.  Prevented variables treeview from
+       accepting string variables.
+
+2007-12-08  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.h data-editor.c: Added hooks for one sample t-test
+
+       * t-test-one-sample.c t-test-one-sample.h (new files): Implemented
+       a dialog box for the One Sample T Test.
+
+       * t-test-independent-samples-dialog.c: Factored out the options sub
+       dialog (see following).
+
+       * t-test-options.c t-test-options.h (new files):  New module
+        implementing the options sub-dialog for T tests.
+
+2007-12-07  John Darrington <john@darrington.wattle.id.au>
+
+       * frequencies-dialog.c: Made the options subdialog transient
+       on the parent.
+
+2007-12-01  John Darrington <john@darrington.wattle.id.au>
+
+       * descriptives-dialog.c: Moved the code dealing with checkboxes 
+       inside treeview widgets into their own files.
+
+       * checkbox-treeview.c checkbox-treeview.h: New file (see above).
+
+       * frequencies-dialog.c frequencies-dialog.h frequencies.glade: New 
+       files. Implemented FREQUENCIES dialog box.
+
+       * data-editor.c data-editor.h data-editor.glade :  Added callback
+       for frequencies dialog.
+
+
+2007-11-23  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-acr.c psppire-acr.h: Generalised the external widget
+       somewhat. It can now be anything, not necessarily a GTK_ENTRY.
+
+       * helper.c helper.h (clone_list_store): New function.
+
+       * oneway-anova-dialog.c : Used the clone_list_store function
+       instead of writing it ourselves.
+       
+       * psppire-dialog.c psppire-dialog.h: Added a tabular orientation
+       in addition to the horizontal/vertical options.
+       
+       * recode-dialog.c recode-dialog.h recode.glade (new files).
+
+       * psppire-selector.c psppire-selector.h: Added a function to
+       allow the prohibition of items based on a predicate.
+
+       * dialog-common.h dialog-common.c (homogeneous_types): New function.
+
+       * data-editor.c data-editor.glade data-editor.h: Enabled the
+       recode dialog options.
+
+
+2007-11-23  John Darrington <john@darrington.wattle.id.au>
+
+       * compute-dialog.c (generate_syntax): Append "EXECUTE." to the 
+       generated syntax.
+
+2007-10-19  John Darrington <john@darrington.wattle.id.au>
+
+        * psppire-acr.c psppire-acr.h (new files): Added this new
+       composite widget.
+
+       * data-editor.c data-editor.h: Added entries for ONEWAY command
+       dialog box.
+
+       * oneway-anova-dialog.c oneway-anova-dialog.h oneway.glade (new files)
+       
+2007-10-06  John Darrington <john@darrington.wattle.id.au>
+       
+       * psppire-dialog.c psppire-dialog.h: Added a predicate function
+       member to indicate when a dialog's state is (not) valid. Added a
+       signal "validity-changed" which gets emitted whenever this
+       predicate changes. 
+
+       * psppire-buttonbox.c: Connect to the toplevel window's
+       "validity-changed" signal (assuming it happens to be a
+       PsppireDialog) and set the OK, PASTE, GOTO and CONTINUE buttons
+       according.y. 
+
+       * descriptives-dialog.c compute-dialog.c: Add a validity predicate.
+
+2007-10-05  Ben Pfaff  <blp@gnu.org>
+
+       Add DESCRIPTIVES dialog.
+       
+       * automake.mk (dist_src_ui_gui_psppire_DATA): Add
+       descriptives-dialog.data.
+       (src_ui_gui_psppire_SOURCES): Add descriptives-dialog.c,
+       descriptives-dialog.h.
+
+       * data-editor.c (new_data_editor): Connect descriptive dialog to
+       action.
+
+       * data-editor.glade: Change menu item to invoke DESCRIPTIVES.
+
+       * descriptives-dialog.c: New file.
+       
+       * descriptives-dialog.h: New file.
+       
+       * descriptives-dialog.glade: New file.
+
+2007-10-04  John Darrington <john@darrington.wattle.id.au>
+
+       * compute-dialog.c goto-case-dialog.c main.c psppire-keypad.c: Added 
+       #include <config.h>
+
+       * psppire.glade about.c: Read GPL text from src/libpspp/copyleft.c 
+       instead of makeing another copy in psppire.glade.
+
+       * psppirebuttonbox.c psppire.c: Create a new stock item for 
+       RESET buttons.
+       
+2007-09-26  John Darrington <john@darrington.wattle.id.au>     
+       
+       * output-viewer.c output-viewer.h psppire.c: (closes patch #6210) 
+       Changed width and length parameters of output driver to
+       "auto". Changed default width and length  to be something
+       acceptable to the ascii driver.  (reload_viewer) Dynamically
+       allocate the line buffer so that it matches the width of the output.
+       
+2007-09-24  Ben Pfaff  <blp@gnu.org>
+
+       * message-dialog.c (popup_message): Refer to files that contain
+       commands as "syntax" files, not "script" files, for better user
+       familiarity.
+       Patch #6210.  Reviewed by John Darrington.
+
+2007-09-19  John Darrington <john@darrington.wattle.id.au>
+       
+       * message-dialog.c: Changed the ouput message title to be 
+       appropriate for the severity of the message.
+
+       * output-viewer.c output-viewer.h : Added a callback for the resize 
+       signal of the output viewer, and set the viewport length and
+       width accordingly.
+
+       * psppire.c: Update to new init_settings interface.
+
+2007-09-27  John Darrington <john@darrington.wattle.id.au>
+
+       Addressing bug #20821:
+       
+       * psppire-dict.c: Added a BACKEND_CHANGED signal to indicate when 
+       a PsppireDict's struct dictionary has been replaced.
+
+       * psppire-var-store.c: Added the appropriate method for 
+       get_column_count. Added a signal handler for dict:BACKEND_CHANGED, 
+       which calls the g_sheet_model_range_changed for the entire sheet.
+       
+2007-09-18  Ben Pfaff  <blp@gnu.org>
+
+       * helper.c (create_casereader_from_data_store): New function.
+       (execute_syntax): Only replace the active file data by a new
+       casereader if syntax caused the active file to be read, to avoid
+       exponential slowdown as an increasing number of snippets that do
+       not read from the active file are consecutively executed.  Bug
+       #20910.  Reviewed by and heavily influenced by John Darrington.
+
+       * psppire-data-store.c (psppire_data_store_get_value_count): New
+       function.
+
+       * psppire-dict.c (psppire_dict_get_value_cnt): New function.
+
+2007-09-13  John Darrington <john@darrington.wattle.id.au>
+
+       * find-dialog.c find-dialog.h: New files.
+
+       * data-editor.c data-editor.h data-editor.glade: Added action for
+       the find dialog.
+
+       * psppire-selector.c: Emit the (de)selected signal when the 
+       destination entry widget's text changes.
+
+2007-09-10  Ben Pfaff  <blp@gnu.org>
+
+       * var-sheet.c (psppire_variable_sheet_create): Use xstrdup to save
+       string returned by bind_textdomain_codeset.  Otherwise it can get
+       freed by a subsequent call.  Patch #6193.  Reviewed by John
+       Darrington.
+
+2007-09-06  John Darrington <john@darrington.wattle.id.au>
+       
+       * helper.c helper.h (execute_syntax): changed return type to 
+       gboolean to indicated if all the syntax executed successfully or not.
+
+       * data-editor.c syntax-editor.c: Fixed update of recent file list
+       and window title,  on data_file_open.  They now only change, if
+       the file_open was  successfull. 
+
+
+2007-08-25  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire.c : Enable journal.
+
+2007-08-18  John Darrington <john@darrington.wattle.id.au>
+
+       * clipboard.c clipboard.h data-editor.c: Added the ability to paste from 
+       the clipboard into the data sheet.
+
+2007-08-16  John Darrington <john@darrington.wattle.id.au>
+
+        * output-viewer.c output-viewer.h output-viewer.glade (new files)
+         helper.c psppire.c syntax-editor.glade window-manager.c 
+         window-manager.h : Added a basic output viewer window.
+
+2007-08-13  John Darrington <john@darrington.wattle.id.au>
+
+       * clipboard.c (clip_to_html clip_to_text): Fixed bug --- use the
+       variable count instead of the value count for the columns limit. 
+
+2007-08-12  John Darrington <john@darrington.wattle.id.au>
+           Ben Pfaff  <blp@gnu.org>
+
+       Implement Edit|Cut operation for datasheet.  Patch #6117.
+
+       * automake.mk: Add clipboard.c, clipboard.h.
+
+       * clipboard.c: New file.
+
+       * clipboard.h: New file.
+
+       * data-editor.c (new_data_editor): Connect Edit|Copy to
+       on_edit_copy function.
+       (data_var_select): Enable or disable Edit|Copy as appropriate.
+       (on_edit_copy): New function.
+
+       * data-editor.glade: Connect menu items to new operations.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * psppire-dict.c (psppire_dict_dump): Don't use
+       dict_get_compacted_dict_index_to_case_index, as that function has
+       been deleted.
+
+2007-08-13  John Darrington <john@darrington.wattle.id.au>
+
+        * psppire-case-file.c (psppire_case_file_append_case):
+       Deleted unused function.
+
+2007-08-07  John Darrington <john@darrington.wattle.id.au>
+
+       * helper.c (execute_syntax): Set the active file data to NULL at the
+       end of the procedure.  Thanks to Ben for suggesting this.
+
+       * psppire-case-file.c: Added assertions to the remaining functions
+       on inaccessible objects.
+
+       * psppire-data-store.c psppire-data-store.h: Disconnect or block
+       signals on dictionary and case_file, when make_reader has been called.
+       Reconnect or unblock them when a new datasheet has been set for the
+       data_store.
+
+2007-08-06  John Darrington <john@darrington.wattle.id.au>
+
+       * syntax-editor.glade: Changed some properties to be less annoying.
+
+2007-07-29  John Darrington <john@darrington.wattle.id.au>
+
+       * helper.c psppire.c: Enabled the output system so that the results
+       of analysis can be seen.
+
+2007-07-26  John Darrington <john@darrington.wattle.id.au>
+
+       * helper.c helper.h (execute_syntax): removed implicit EXECUTE at end
+       of commands.
+
+       * data-editor.c data-editor.glade: Added "Run Pending Transformations"
+       menuitem.
+
+2007-07-25  John Darrington <john@darrington.wattle.id.au>
+
+       * customentry.c: Redraw button in insensitive state, if the widget's
+        "editable" style is FALSE.  Don't emit the "clicked" signal if
+        "editable" is FALSE.
+
+       * var-sheet.c: If variables are long-string variables, then set the
+       "editable" properties of the entry widgets for the values and missing
+       cells to FALSE,
+
+2007-07-18  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-case-file.c psppire-case-file.h psppire-data-store.c
+       psppire-dict.c psppire-dict.h psppire-var-store.c : Added the
+       ability to resize string variables.  Fixed associated problems
+       inserting/deleting variables.
+
+       * helper.c helper.h (marshaller_VOID__INT_INT_INT): New marshaller
+       function.
+
+2007-07-16  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c: File Open dialog remembers directory.  Thanks to
+       Ben Pfaff for this suggestion.
+
+2007-07-15  John Darrington <john@darrington.wattle.id.au>
+
+       * compute-dialog.c: Only generate NUMERIC/STRING command if the
+       type-and-label dialog was used.
+
+2007-07-12  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-data-store.c: Added call to g_sheet_model_range_changed to
+       ensure that datasheet displays the current store.
+
+       * psppire-data-store.h: Formatting tidy up.
+
+2007-07-11  John Darrington <john@darrington.wattle.id.au>
+
+       * compute-dialog.c : Set type-and-label dialog to sensible state,               and made syntax generation depend upon existence of target variable.
+
+2007-07-08  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c data-editor.glade data-editor.h: Implemented
+       the "Insert Case" button/dialog.
+
+2007-07-08  John Darrington <john@darrington.wattle.id.au>
+
+       * goto-case-dialog.c goto-case-dialog.h (new files)
+       * automake.mk data-editor.c data-editor.glade data-editor.h
+       psppire-case-file.c psppire-case-file.h psppire-data-store.c
+       psppire-data-store.h psppire.glade :  Implemented the goto-case dialog
+
+
+2007-07-07  John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-data-store.c psppire-data-store.h: Made cases number from
+       1 instead of 0.
+
+       * psppire-data-store.c: Added a tooltip like feature to display
+       the label of variables.
+
+2007-07-03  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c data-sheet.c: Turned off autoscrolling, and
+       manually move to cell on column click instead.
+
+2007-06-29  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c data-editor.glade psppire-data-store.c
+       psppire-data-store.h: Enabled cell reference entry and datum
+       entry widgets.
+
+2007-06-29  John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c data-sheet.c: Moved update_cell_ref_entry from
+       data-sheet.c to data-editor.c and made it work again.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adapt case sources, sinks, and clients of procedure code to the
+       new infrastructure.
+
+       * automake.mk: Removed files.
+
+       * flexifile-factory.c: Removed, dead code.
+       * flexifile-factory.h: Ditto.
+
+       * helper.c: Adapt to new procedure and datasheet code.
+       * missing-val-dialog.c: Ditto.
+       * psppire-case-file.c: Ditto.
+       * psppire-data-store.c: Ditto.
+       * psppire.c: Ditto.
+
+2007-06-03  Ben Pfaff  <blp@gnu.org>
+
+       * psppire-var-store.c (psppire_var_store_item_editable): Use
+       var_is_alpha.
+
+2007-05-07 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-dialog.c psppire-dialog.h: Added "orientation" property,
+        to allow dialogs to be either vertical or horizontal.
+
+       * comments-dialog.c comments-dialog.h: New files, invoking
+       ADD DOCUMENT cmd.
+
+2007-04-30 John Darrington <john@darrington.wattle.id.au>
+
+       * var-display.c var-display.h variable-info-dialog.c
+       variable-info-dialog.h : New files.
+
+       * data-editor.c :
+
+       * psppire-buttonbox.c psppire-buttonbox.h : Added the "buttons"
+       property, and optional  GOTO and CONTINUE buttons.
+
+       * psppire-dialog.h: Added response codes for the new buttons.
+
+       * psppire-var-store.c : Moved some code to var-display.[ch]
+
+2007-04-25 John Darrington <john@darrington.wattle.id.au>
+
+       * icons/scalable/splash.c icons/splash.png : More eye candy.
+
+       * main.c psppire.h : new files.
+
+       * psppire.c : Seperated the command line parsing and other
+       environment startup from the core psppire code.
+
+2007-04-25 John Darrington <john@darrington.wattle.id.au>
+
+       * icons/scalable icons/16x16: new directories.
+       * psppire.c : Add new icons to factory.
+
+       * dict-display.c: Refactor code get model from modelfilter.
+       Added cellrenderer to display icon indicating variables' types.
+        Displayed the label of variables, if there is one.
+
+
+2007-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * compute-dialog.c (function_list_populate): Use new accessor
+       functions exported by language/expressions/public.h.
+
+2007-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * compute-dialog.c: Make #include for parse.inc work with VPATH
+       builds.
+
+2007-04-13   John Darrington <john@darrington.wattle.id.au>
+
+       * var-type-dialog.c: Added a FMT_DATETIME20 template.
+
+2007-04-04   John Darrington <john@darrington.wattle.id.au>
+
+       * compute-dialog.c compute-dialog.h: New files
+
+       * data-editor.c data-editor.h data-editor.glade : Added Transform
+       menu, and support for Compute dialog
+
+       * glade-register.c psppire-buttonbox.c psppire-buttonbox.h
+         psppire-vbottonbox.c psppire-vbuttonbox.h psppire-hbuttonbox.c
+         psppire-vbuttonbox.h : Made buttonbox an abstract base class
+         and separated it into vbuttonbox and hbuttonbox.
+
+       * psppire-selector.c : Allowed GtkTextView to be the destination
+       widget.
+
+       * psppire-keypad.c: Added an "erase" signal.  Fixed other
+        minor problems.
+
+2007-04-03  Ben Pfaff  <blp@gnu.org>
+           John McCabe-Dansted <gmatht@gmail.com>
+
+       * psppire-selector.c (psppire_selector_set_subjects): Add an
+       assert that may or may not trap some Windows-related bugs.
+
+2007-04-03   John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c data-editor.glade helper.h syntax-editor.c
+       syntax-editor.h : Implemented the File->Recently_Used_ menus.
+
+
+2007-03-31   John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c data-editor.glade data-editor.h dialog-common.c
+       psppire-buttonbox.c psppire-dialog.c psppire-dialog.h
+       psppire-selector.c psppire-selector.h psppire.c psppire.glade
+       sort-cases-dialog.c sort-cases-dialog.h split-file-dialog.c
+       transpose-dialog.c weight-cases-dialog.c : Fixed the Refresh
+       button on all the dialogs.
+
+2007-03-31   John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c: Added hooks for the split-file-dialog
+
+       * psppire.glade: Added the split file dialog box.
+
+       * split-file-dialog.c split-file-dialog.h: New files.
+
+       * dialog-common.c dialog-common.h: New files containing functions
+       which seem to be used a lot in dialog box implementations.
+
+       * psppire-keypad.c psppire-keypad.h: New files.  Implements keypad
+       thingumy widget.
+
+       * psppire-selector.c: Made the orientation of the arrow a property
+       of the widget, so that it can be selected from glade.
+
+2007-03-18  Ben Pfaff  <blp@gnu.org>
+
+       * syntax-editor-source.c (close): Rename do_close to avoid naming
+       conflict with POSIX function of same name.
+
+Tue Mar 13 17:20:05 CET 2007 John Darrington <john@darrington.wattle.id.au>
+       * psppire.c:  Changed gtk_init to gtk_parse_args, followed by a delayed         call to gdk_init, so that psppire --version will succeed, even if it
+       cannot connect to a display .
+
+Wed Mar  7 19:05:12 CET 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * var-sheet.c: Replaced call to nl_langinfo with locale_charset
+       from gnulib.
+
+Thu Feb 22 12:27:41 CET 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c : called new gen_quoted_string function to properly
+          quote filenames in generated syntax.
+
+       * window-manager.c : Converted name from filename encoding to UTF8
+          before displaying in title bar.
+
+Tue Jan 30 20:13:46 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-dict.c: Call all the callbacks when a new dictionary becomes current.
+
+       * data-editor.c: Clear existing file name on FILE NEW.
+
+Sat Jan 27 09:48:21 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * var-type-dialog.c: Fixed bugs closing window, apparent when compiled
+       against gtk.2.10
+
+Fri Jan 26 15:51:34 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-var-select.c psppire-var-select.h : Deleted.
+
+       * psppire-selector.c psppire-selector.h : New files.
+
+       * transpose-dialog.c transpose-dialog.h : New files.
+
+       * psppire-dict.c psppire-dict.h : Added missing GtkTreeModel
+       interface functions.
+
+       * weight-cases-dialog.c weight-cases-dialog.h : Re-implemented,
+       using new PsppireSelector widget.
+
+       * dict-display.c dict-display.h : New files.
+
+       * psppire-object.c psppire-object.h : Deleted.  Seemed like a good idea at the time.
+
+Tue Jan 23 21:10:01 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * helper.c helper.h: New function execute_syntax.
+
+       * syntax-editor.c syntax-editor.glade: Disabled data open/save menu
+       items.
+
+       * data-editor.c data-editor.glade data-editor.h: Enabled data
+       open/save/save_as  menu-items.
+
+       * window-manager.h window-manager.c (default_window_name) : New
+       function.
+
+Sat Jan 13 07:47:26 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-case-file.c psppire-data-store.c psppire-dialog.c
+       psppire-dict.c psppire-var-select.c : Replaced identifier 'signal'
+       with 'signals' to avoid conflict with sysv based systems which use
+       this identifer for something else.
+       Thanks to Daniel E WILLIAMS for reporting this problem.
+
+Wed Jan 10 07:20:39 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-case-file.c : Make sure there is always a valid flexifile
+
+       * psppire-data-store.c : assertions.
+
+       * psppire.c: Ignore replace source callbacks if the new source is
+         not of storiage_source_class
+
+       * syntax-editor.c: Close/Abort source after parsing is complete.
+
+Sun Jan  7 08:38:29 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-dict.c: Add FILTER_CHANGED and SPLIT_CHANGED signals
+       corresponding to the callbacks in src/data/dictionary.c
+
+       * data-editor.c : Connect functions to the FILTER_CHANGED and
+       SPLIT_CHANGED signals to update the status bar accordingly.
+
+Mon Jan  1 10:37:07 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-case-file.c psppire-case-file.h: Changed the backend
+       semantics. An object is now created without any backend.  A new function        ( psppire_case_file_replace_flexifile ) sets the backend to use.
+
+       * psppire-data-store.c : Updated callers accordingly.
+
+       * psppire-dict.c psppire-dict.h : New function
+       (psppire_dict_replace_dictionary) .
+
+       * psppire.c : Updated to use new dataset replace_{source, dictionary}
+       callbacks.
+
+       * syntax-editor.c : parses in state CMD_STATE_DATA unless there are
+       no variables in the dictionary.
+
+Mon Dec 25 12:38:24 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * data-editor.c data-editor.glade: Enabled deleting of variables from
+       the variable sheet.
+
+Mon Dec 25 11:28:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-dict.c psppire-dict.h: Removed explicit signal emit calls.
+       These are not required, now that src/data/dictionary.c has callbacks
+
+Mon Dec 25 08:49:57 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * var-sheet.c val-labs-dialog.c val-labs-dialog.h: Fixed bug in value
+       labels dialog box.
+
+Sun Dec 17 08:26:10 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * syntax-editor-source.c syntax-editor-source.h syntax-editor.h:
+       New files.
+
+       * message-dialog.c :  Now reports the filename and line number in
+       error messages.
+
+       * psppire.c psppire.glade syntax-editor.c: Added the ability to run
+       syntax from the syntax editor.
+
+
+Sat Dec 16 14:13:07 2006  Ben Pfaff  <blp@gnu.org>
+
+       * psppire-data-store.c (geometry_get_justification): Don't assume
+       that ALIGN_* and GTK_JUSTIFY_* values coincide.
+
+Sat Dec 16 14:10:43 2006  Ben Pfaff  <blp@gnu.org>
+
+       * psppire-var-store.c (text_for_column): Adjust to account for new
+       values of the MEASURE_* enums.
+
+       * var-sheet.c (change_measure): Ditto.
+
+Sat Dec 16 12:24:35 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-variable.c psppire-variable.h: Deleted.
+
+       * psppire-dict.c psppire-dict.h: Removed the caching of the variable
+           data, which is now unecessary because src/data/vardict.h maintains
+           an association between variables and their dictionary.
+
+       * data-sheet.c menu-actions.c missing-val-dialog.c
+         missing-val-dialog.h psppire-data-store.c
+         psppire-var-store.c psppire-var-store.h
+         sort-cases-dialog.c val-labs-dialog.c val-labs-dialog.h
+         var-sheet.c var-type-dialog.c var-type-dialog.h: Dealt with the
+           consequences of deleting psppire-variable.[ch].
+
+
+Sat Dec  9 20:03:04 2006  Ben Pfaff  <blp@gnu.org>
+
+       * var-type-dialog.c (var_type_dialog_create): Use
+       fmt_dollar_template from data/format.c.
+       (dollar_format_template) Removed.
+
+Sat Dec  9 07:19:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * syntax-editor.c : New file.
+
+Tue Oct 31 19:25:31 2006  Ben Pfaff  <blp@gnu.org>
+
+       * var-type-dialog.c: Add missing "#include <config.h>".
+
+       * psppire.c: Ditto.
+
+Mon Jul 17 18:21:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * automake.mk menu-actions.c psppire-case-file.c psppire-case-file.h
+    psppire-data-store.c psppire-dict.c psppire-dict.h psppire-variable.c
+    psppire.c psppire.glade: Adjusted code to use the new flexifile object.
+
+Sat Jul 15 11:27:15 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * psppire.c psppire.glade automake.mk icons/* : Added toolbar icons where
+       there's no suitable gtk stock icon.
+
+Tue Jul  4 09:08:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * psppire.c: Fixed --help and --version options.
+
+Sat Jun 24 16:56:22 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * menu-actions.c: Added goto case and sort cases dialogs.
+
+   * psppire-case-file.c psppire-case-file.h: Added sort function.
+
+   * psppire-data-store.c psppire-variable.c psppire-variable.h:
+     Renamed  psppire_variable_get_index to psppire_variable_get_fv and
+     dealt with the consequences.  Added a psppire_variable_get_index
+     function which actually does what the name suggests.
+
+   * psppire-dict.c psppire-dict.h: Implemented GtkTreeModel interface,
+     which allows a dictionary to be displayed in a GtkTreeView.
+
+   * psppire.glade: Added dialog boxes for Goto Case and Sort Case.
+
+   * sort-cases-dialog.c sort-cases-dialog.h (new files).
+
+Mon Jun 19 18:10:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * psppire-case-file.c psppire-case-file.h (new files)
+
+   * automake.mk data-sheet.c data-sheet.h menu-actions.c
+   psppire-data-store.c psppire-data-store.h psppire-dict.c
+   psppire-dict.h psppire-var-store.c psppire.c
+
+     Replaced psppire-case-array.c  with psppire-case-file.c, so as to
+     allow an arbitrary number of cases to be represented.
+
+Sun Jun  4 15:50:28 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * psppire-var-store.c, psppire.c, var-sheet.c :  Unlimited the number of
+   variables that can be displayed. Minor i18n issues.
+
+Tue May 30 19:53:35 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * menu-actions.c menu-actions.h psppire.c: Fixed up load/new
+   interactions with startup.
+
+   * psppire-data-store.c: Fixed bad i18n call.
+
+   * pspppire-var-store.c, psppire-var-store.h: constness.
+
+   * helper.c: Implemented proper way to convert from PSPP to UTF8 encoding.
+
+
+Sat May 27 16:25:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * customentry.c data-sheet.c menu-actions.c message-dialog.c
+     missing-val-dialog.c psppire-data-store.c psppire-var-store.c
+     psppire.c psppire.glade var-sheet.c: Fixed internationalisation.
+
+Thu May 25 18:01:17 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * psppire-var-store.c: Converted strings to utf8 and returned them on the
+   heap.
+
+Sat May 20 21:08:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+   * data-sheet.c, menu-actions.c menu-actions: Fixed data sheet so that
+   active cell is never on a deleted variable.
+
+   * psppire-data-store.c psppire-data-store.h:  Added get_var_count and
+   get_case_count functions.
+
+   * psppire-dict.c: removed VARIABLE_DELETED (singular) signal.
+
+   * psppire.c: Allowed user to specify *.sav file on command line.
+
+Mon May 15 20:01:25 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * menu-actions.c psppire-case-array.c psppire-case-array.h
+         psppire-data-store.c  psppire-dict.c psppire-dict.h
+         psppire-variable.c:
+
+         Initialised new cases to SYSMIS/blank when inserting in data sheet.
+
+Sat May 13 08:00:50 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * data-sheet.c, helper.c, helper.h, psppire-data-store.c,
+          psppire-var-store.c:
+
+         Set free_strings flag so that the gtksheet frees the string data
+         when it's done with them.
+
+Thu May 11 22:25:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * data-sheet.c helper.c helper.h psppire-data-store.c psppire-var-store.c
+       psppire.c: Converted strings to utf8 before passing to gtksheet.
+
+       * psppire-dict.c: Changed buffer to more reasonable length
+
+       * var-sheet.c: Changed maximum string length to use macro from
+       data/values.h
+
+
+Sun May  7 10:07:28 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * psppire-data-store.c: Fixed buglet initialising string members.
+
+Thu May  4 18:04:04 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * message-dialog.c message-dialog.h: Added simple queuing to messages
+       reported, and ensure that dialog boxes dont appear when pointer grab
+       is active.
+
+       * psppire-data-store.c: Fix overflow on very long string variables.
+
+       * automake.mk: Fix broken dependency.
+
+
+Tue Apr 25 11:08:04 2006  Ben Pfaff  <blp@gnu.org>
+
+       Finish reforming error message support.  In this phase, move
+       message.c into libpspp.
+
+       * automake.mk: (src_ui_gui_psppire_SOURCES) Remove src/message.c.
+
+Tue Apr 25 10:56:53 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, drop
+       actual message printing from core code, substituting a callback,
+       and add the callback to each UI.  Also, move verbose_msg() into
+       its own module.
+
+       * automake.mk: (src_ui_gui_psppire_SOURCES) Add src/message.c.
+
+       * message-dialog.c: (message_dialog_init) New function.
+       (vmsg) Rename handle_msg(), rewrite as callback function.
+       (msg) Removed.
+       (msg_emit) Removed.
+       (msg_assert_fail) Removed.
+       (verbose_msg) Removed.
+
+       * psppire.c: (main) Call message_dialog_init().
+
+Sun Apr 23 22:07:49 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, get rid
+       of message "titles" and put the message text in `struct error'.
+       Now `struct error' encapsulates a message more properly.
+
+       * message-dialog.c: (err_vmsg) Rename err_msg().  Updated
+       interface.
+
+Sun Apr 16 20:45:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, we
+       divide the classification of messages along "category" and
+       "severity" axes.
+
+       * message-dialog.c: (vmsg) Use severity and category in
+       straightforward fashion instead of the less obvious "class".
+       (err_vmsg) Construct class before passing along to vmsg().
+
+Sun Apr 16 16:06:54 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, we get
+       rid of VM() and the other msg() support for "verbosity", replacing
+       it by a new function verbose_msg().
+
+       * message-dialog.c: (verbose_msg) New function.
+       (err_cond_fail) Removed (dead code).
+       (err_failure) Removed (dead code).
+
+Sun Apr 16 11:53:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       Start reforming error message support.  In this phase, we get rid
+       of "installation errors" and change all uses of msg() in the
+       output drivers to uses of error() or error_at_line().
+
+       * message-dialog.c: (vmsg) Removed IE, IS support.
+
+Mon Mar 13 16:42:44 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * psppire.c: Supported (sort of) the --help and --version options.
+
+    * Rename error-dialog.[ch] -> message-dialog.[ch]
+
+    * Moved code from the psppire module.
+
+Sat Jan 28 16:22:23 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+    * Separated the data out of the GtkSheet.
+
+Tue Nov  2 19:00:28 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+    * Very first incarnation.
index 2d149fce4ac3539b1924b598920b1425ddf1ac8b..64fe75e7cbaa3c6f17499ecdd1259bc38f1b7299 100644 (file)
@@ -218,4 +218,6 @@ yelp-check:
                echo '    Yelp is available from the GNOME project.  ftp://ftp.gnome.org/pub/gnome/sources/yelp' ; \
                echo ; \
        fi
-.PHONY: yelp-check
+PHONY += yelp-check
+
+EXTRA_DIST += src/ui/gui/OChangeLog
diff --git a/src/ui/terminal/ChangeLog b/src/ui/terminal/ChangeLog
deleted file mode 100644 (file)
index a5ad36d..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-2008-05-15  Ben Pfaff  <blp@gnu.org>
-
-       * Use unilbrk.h instead of linebreak.h and ulc_width_linebreaks
-       instead of mbs_width_linebreaks for compatibility with latest
-       gnulib.
-
-2007-11-03  Ben Pfaff  <blp@gnu.org>
-
-       Allow output files to overwrite input files (bug #21280).
-
-       * main.c (main): Use at_fatal_signal instead of calling signal
-       directly.
-       (interrupt_handler) Removed.
-       (terminate) Rename clean_up.  Don't call exit directly.
-
-2007-09-25  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6210: implement ability to resize output device parameters
-       to fit terminal window size as it changes.  Reviewed by John
-       Darrington.
-       
-       * automake.mk (src_ui_terminal_libui_a_SOURCES): Add new files.
-
-       * terminal.c: New file.
-
-       * terminal.h: New file.
-
-       * main.c (main): No need to set up SIGWINCH handler any longer.
-       But we do need to call terminal_init.
-       (set_fallback_viewport): Move to terminal.c.
-       [HAVE_LIBNCURSES] (get_termcap_viewport): Ditto.
-       [!HAVE_LIBNCURSES] (get_termcap_viewport): Ditto.
-
-       * read-line.c (readln_read): After the first line of a command,
-       call terminal_check_size to allow it to re-detect the terminal
-       size.
-
-2007-09-24  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6210.  Reviewed by John Darrington.
-       * main.c (set_fallback_viewport): Make code easier to understand.
-       (get_termcap_viewport): Ditto.
-
-       * command-line.c (parse_command_line): Don't call force_long_view,
-       as that function is no longer necessary.
-
-       * msg-ui.c (handle_msg): Only wrap message output to the message
-       file to the width of the terminal if the message file is a tty.
-
-2007-09-19  John Darrington <john@darrington.wattle.id.au>
-
-       * main.c: Moved get_termcap_viewport from src/data/settings.c 
-       Added a handler for SIGWINCH to call this function.  Adjusted
-       init_settings to suit new interface. 
-
-2007-09-22  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21128.  Reviewed by John Darrington.
-
-       * main.c (i18_init): Set up LC_PAPER locale, if available.  Don't
-       bother with LC_MONETARY locale, since we don't use it anywhere.
-
-2007-08-26  Ben Pfaff  <blp@gnu.org>
-
-       Bug #17238.  Thanks to John Darrington for review.
-
-       * main.c (main): When testing mode is enabled, use a built-in
-       output driver configuration instead of reading it from the
-       configuration file.
-
-       * msg-ui.c (handle_msg): Send error message to non-screen output
-       devices also, if routing to listing files is enabled.
-
-2007-08-23  Ben Pfaff  <blp@gnu.org>
-
-       Implement journaling.  Bug #17240.
-       
-       * msg-ui.c (handle_msg): Send message to write_journal function
-       as well as msg_file.
-       (dump_message): Change interface so that it takes a function
-       pointer instead of a FILE.
-       (write_stream): New function.
-       (write_journal): New function.
-       
-       * read-line.c (welcome): Call journal_enable, so that the journal
-       is enabled by default.
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       Make interactive output go to the terminal (bug #17213), by
-       causing the UI to flush output to the user when it prompts for a
-       command.
-
-       * command-line.c (parse_command_line): Configure interactive
-       output devices if appropriate.
-
-       * read-line.c (readln_read): Flush output if this is a prompt for
-       the first line of a command.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       Adapt case sources, sinks, and clients of procedure code to the
-       new infrastructure.
-       
-       * main.c: No need for fastfile_factory any more.
-
-2007-02-25  Ben Pfaff  <blp@gnu.org>
-
-       Thanks to Jason Stover for verifying that this patch helps under
-       NetBSD.
-
-       * main.c [HAVE_IEEE_FP]: Include <ieeefp.h>.
-       (fpu_init) [HAVE_IEEE_FP]: Use setfpmask to mask floating-point
-       exceptions.
-
-Sun Feb 18 13:28:26 2007  Ben Pfaff  <blp@gnu.org>
-
-       * msg-ui.c: Don't include exit.h, because gnulib fixes up stdlib.h
-       as necessary.  Do include stdlib.h, because exit.h did so for us
-       and we need it.
-
-Thu Feb  8 15:07:04 2007  Ben Pfaff  <blp@gnu.org>
-
-       * read-line.c (readln_initialize): Instead of only supporting
-       history in unix, always support history, and only support a
-       history file when $HOME is defined.
-       (readln_uninitialize): Ditto.
-       (welcome) Call readln_initialize instead of duplicating code.
-
-Sun Dec 10 11:13:53 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command-line.c (pre_syntax_message): Use term "syntax" instead
-       of "script".
-
-Sat Dec  9 07:21:02 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * msg-ui.c (msg_ui_done): call msg_locator_done.
-
-Sun Dec  3 11:57:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       * read-line.c (read_interactive): Always read GETL_INTERACTIVE
-       lines.
-       
-Thu Nov 16 20:46:35 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * main.c: Connect debugger on errors.
-
-Tue Nov  7 20:54:32 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * command-line.c msg-ui.c msg-ui.h main.c: Added an -e
-       option to set the file for error messages.
-
-Sat Nov  4 15:48:04 2006  Ben Pfaff  <blp@gnu.org>
-
-       * msg-ui.c (handle_msg): Only write message to terminal if
-       get_error_routing_to_terminal() returns true.
-
-Fri Jul  7 20:03:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       * main.c: (main) Register SIGABRT with bug_handler also.
-       (bug_handler) Handle SIGABRT also.
-
-Tue Jun 27 22:44:56 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix regression in command name completion reported by John
-       Darrington.  Now completion is again state-dependent and occurs
-       only on the first line of a command.
-       
-       * main.c (main): Reading of first token in command moved into
-       cmd_parse.
-       (execute_command) Removed.
-
-       * read-line.c: [HAVE_READLINE] (readln_initialize) Postpone
-       setting rl_attempted_completion_function until readln_read.
-       [HAVE_READLINE] (readln_read) Change param from const char * to
-       enum getl_prompt_style.  Set rl_attempted_completion_function
-       based on style.
-       [HAVE_READLINE] (complete_command_name) New function.
-       [HAVE_READLINE] (dont_complete) New function.
-       [HAVE_READLINE] (command_generator) New function.
-
-Tue Jun 27 08:23:07 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk (src_ui_terminal_pspp_LDADD): Add $(LIBICONV).
-       Thanks to Jason Stover for reporting the omission.
-
-Thu May  4 21:50:59 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, move
-       procedure.c and procedure.h from src to src/data.  Update
-       makefiles and #includes accordingly.
-
-       * automake.mk: (src_ui_terminal_pspp_SOURCES) Remove
-       src/procedure.c and src/procedure.h.
-       (src_ui_terminal_pspp_LDADD) Move libexpressions.a later in list
-       to make the link work.
-
-Wed May  3 23:09:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming procedure execution.  In this phase, get rid of
-       many global variables, consolidating procedure execution in
-       procedure.c.  Encapsulate transformations in new "struct
-       trns_chain".  Also, change implementation of N OF CASES, FILTER,
-       and PROCESS IF from special cases to transformations.
-        
-       * main.c: (main) Use proc_init().
-       (terminate) Use proc_done().
-
-Wed Apr 26 13:34:54 2006  Ben Pfaff  <blp@gnu.org>
-
-       Improve command name completion in readline.
-       
-       * read-line.c (readln_initialize): Set up readline to only break
-       words for completion at new-line.  That way we can complete a
-       whole command name.  Also, set rl_attempted_completion_function
-       instead of rl_completion_entry_function so we can disable
-       completing on file names, which is usually not what we want in
-       PSPP.
-
-Wed Apr 26 13:31:00 2006  Ben Pfaff  <blp@gnu.org>
-
-       Improve the way we handle the various parsing "states".  Until now
-       we've hard-coded the state transitions in the command definition
-       file, but that's error-prone and, worse, it's redundant--we can
-       figure out what state we're in anyhow.  We can cleanly handle
-       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
-       
-       * automake.mk (src_ui_terminal_pspp_LDADD): Move libui earlier to
-       avoid link errors.
-
-       * main.c (main): Handle new CMD_* results.
-       (execute_command) Move most per-command actions into cmd_parse().
-       (handle_error) Removed.  cmd_parse() handles command failure.
-
-Tue Apr 25 11:08:17 2006  Ben Pfaff  <blp@gnu.org>
-
-       Finish reforming error message support.  In this phase, move
-       message.c into libpspp.
-       
-       * automake.mk: Remove message.c from sources.
-
-Tue Apr 25 10:58:19 2006  Ben Pfaff  <blp@gnu.org>
-
-       Continue reforming error message support.  In this phase, drop
-       actual message printing from core code, substituting a callback,
-       and add the callback to each UI.  Also, move verbose_msg() into
-       its own module.
-
-       * automake.mk (src_ui_terminal_libui_a_SOURCES): Add msg-ui.c,
-       msg-ui.h.
-
-       * command-line.c: (parse_command_line) Call
-       verbose_increment_level() instead of increment err_verbosity
-       directly, now that we have a little abstraction.
-
-       * msg-ui.c: New file.
-
-       * msg-ui.h: New file.
-
-       * main.c: (main) Call msg_ui_init().  Use any_errors().
-       (terminate) Call msg_ui_done().  Make termination order more
-       rational.
-
-       * read-line.c: (readln_read) Use reset_msg_count() now we have a
-       little abstraction.
-
-Tue Apr 25 09:39:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       * main.c: (terminate) Mark static and NO_RETURN.  If called
-       recursively, which can only happen via signal, just exit instead
-       of trying to gracefully shut down.      
-
-Fri Mar 31 10:33:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command-line.c: (var pre_syntax_message) -d and -u are no longer
-       supported.
-
-Sat Mar 11 14:18:39 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * automake.mk: Moved the pspp binary here.
-
-Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
-       
-       * Moved files from src directory
diff --git a/src/ui/terminal/OChangeLog b/src/ui/terminal/OChangeLog
new file mode 100644 (file)
index 0000000..a5ad36d
--- /dev/null
@@ -0,0 +1,284 @@
+2008-05-15  Ben Pfaff  <blp@gnu.org>
+
+       * Use unilbrk.h instead of linebreak.h and ulc_width_linebreaks
+       instead of mbs_width_linebreaks for compatibility with latest
+       gnulib.
+
+2007-11-03  Ben Pfaff  <blp@gnu.org>
+
+       Allow output files to overwrite input files (bug #21280).
+
+       * main.c (main): Use at_fatal_signal instead of calling signal
+       directly.
+       (interrupt_handler) Removed.
+       (terminate) Rename clean_up.  Don't call exit directly.
+
+2007-09-25  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6210: implement ability to resize output device parameters
+       to fit terminal window size as it changes.  Reviewed by John
+       Darrington.
+       
+       * automake.mk (src_ui_terminal_libui_a_SOURCES): Add new files.
+
+       * terminal.c: New file.
+
+       * terminal.h: New file.
+
+       * main.c (main): No need to set up SIGWINCH handler any longer.
+       But we do need to call terminal_init.
+       (set_fallback_viewport): Move to terminal.c.
+       [HAVE_LIBNCURSES] (get_termcap_viewport): Ditto.
+       [!HAVE_LIBNCURSES] (get_termcap_viewport): Ditto.
+
+       * read-line.c (readln_read): After the first line of a command,
+       call terminal_check_size to allow it to re-detect the terminal
+       size.
+
+2007-09-24  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6210.  Reviewed by John Darrington.
+       * main.c (set_fallback_viewport): Make code easier to understand.
+       (get_termcap_viewport): Ditto.
+
+       * command-line.c (parse_command_line): Don't call force_long_view,
+       as that function is no longer necessary.
+
+       * msg-ui.c (handle_msg): Only wrap message output to the message
+       file to the width of the terminal if the message file is a tty.
+
+2007-09-19  John Darrington <john@darrington.wattle.id.au>
+
+       * main.c: Moved get_termcap_viewport from src/data/settings.c 
+       Added a handler for SIGWINCH to call this function.  Adjusted
+       init_settings to suit new interface. 
+
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * main.c (i18_init): Set up LC_PAPER locale, if available.  Don't
+       bother with LC_MONETARY locale, since we don't use it anywhere.
+
+2007-08-26  Ben Pfaff  <blp@gnu.org>
+
+       Bug #17238.  Thanks to John Darrington for review.
+
+       * main.c (main): When testing mode is enabled, use a built-in
+       output driver configuration instead of reading it from the
+       configuration file.
+
+       * msg-ui.c (handle_msg): Send error message to non-screen output
+       devices also, if routing to listing files is enabled.
+
+2007-08-23  Ben Pfaff  <blp@gnu.org>
+
+       Implement journaling.  Bug #17240.
+       
+       * msg-ui.c (handle_msg): Send message to write_journal function
+       as well as msg_file.
+       (dump_message): Change interface so that it takes a function
+       pointer instead of a FILE.
+       (write_stream): New function.
+       (write_journal): New function.
+       
+       * read-line.c (welcome): Call journal_enable, so that the journal
+       is enabled by default.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Make interactive output go to the terminal (bug #17213), by
+       causing the UI to flush output to the user when it prompts for a
+       command.
+
+       * command-line.c (parse_command_line): Configure interactive
+       output devices if appropriate.
+
+       * read-line.c (readln_read): Flush output if this is a prompt for
+       the first line of a command.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       Adapt case sources, sinks, and clients of procedure code to the
+       new infrastructure.
+       
+       * main.c: No need for fastfile_factory any more.
+
+2007-02-25  Ben Pfaff  <blp@gnu.org>
+
+       Thanks to Jason Stover for verifying that this patch helps under
+       NetBSD.
+
+       * main.c [HAVE_IEEE_FP]: Include <ieeefp.h>.
+       (fpu_init) [HAVE_IEEE_FP]: Use setfpmask to mask floating-point
+       exceptions.
+
+Sun Feb 18 13:28:26 2007  Ben Pfaff  <blp@gnu.org>
+
+       * msg-ui.c: Don't include exit.h, because gnulib fixes up stdlib.h
+       as necessary.  Do include stdlib.h, because exit.h did so for us
+       and we need it.
+
+Thu Feb  8 15:07:04 2007  Ben Pfaff  <blp@gnu.org>
+
+       * read-line.c (readln_initialize): Instead of only supporting
+       history in unix, always support history, and only support a
+       history file when $HOME is defined.
+       (readln_uninitialize): Ditto.
+       (welcome) Call readln_initialize instead of duplicating code.
+
+Sun Dec 10 11:13:53 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command-line.c (pre_syntax_message): Use term "syntax" instead
+       of "script".
+
+Sat Dec  9 07:21:02 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * msg-ui.c (msg_ui_done): call msg_locator_done.
+
+Sun Dec  3 11:57:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       * read-line.c (read_interactive): Always read GETL_INTERACTIVE
+       lines.
+       
+Thu Nov 16 20:46:35 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * main.c: Connect debugger on errors.
+
+Tue Nov  7 20:54:32 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * command-line.c msg-ui.c msg-ui.h main.c: Added an -e
+       option to set the file for error messages.
+
+Sat Nov  4 15:48:04 2006  Ben Pfaff  <blp@gnu.org>
+
+       * msg-ui.c (handle_msg): Only write message to terminal if
+       get_error_routing_to_terminal() returns true.
+
+Fri Jul  7 20:03:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       * main.c: (main) Register SIGABRT with bug_handler also.
+       (bug_handler) Handle SIGABRT also.
+
+Tue Jun 27 22:44:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix regression in command name completion reported by John
+       Darrington.  Now completion is again state-dependent and occurs
+       only on the first line of a command.
+       
+       * main.c (main): Reading of first token in command moved into
+       cmd_parse.
+       (execute_command) Removed.
+
+       * read-line.c: [HAVE_READLINE] (readln_initialize) Postpone
+       setting rl_attempted_completion_function until readln_read.
+       [HAVE_READLINE] (readln_read) Change param from const char * to
+       enum getl_prompt_style.  Set rl_attempted_completion_function
+       based on style.
+       [HAVE_READLINE] (complete_command_name) New function.
+       [HAVE_READLINE] (dont_complete) New function.
+       [HAVE_READLINE] (command_generator) New function.
+
+Tue Jun 27 08:23:07 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk (src_ui_terminal_pspp_LDADD): Add $(LIBICONV).
+       Thanks to Jason Stover for reporting the omission.
+
+Thu May  4 21:50:59 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, move
+       procedure.c and procedure.h from src to src/data.  Update
+       makefiles and #includes accordingly.
+
+       * automake.mk: (src_ui_terminal_pspp_SOURCES) Remove
+       src/procedure.c and src/procedure.h.
+       (src_ui_terminal_pspp_LDADD) Move libexpressions.a later in list
+       to make the link work.
+
+Wed May  3 23:09:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming procedure execution.  In this phase, get rid of
+       many global variables, consolidating procedure execution in
+       procedure.c.  Encapsulate transformations in new "struct
+       trns_chain".  Also, change implementation of N OF CASES, FILTER,
+       and PROCESS IF from special cases to transformations.
+        
+       * main.c: (main) Use proc_init().
+       (terminate) Use proc_done().
+
+Wed Apr 26 13:34:54 2006  Ben Pfaff  <blp@gnu.org>
+
+       Improve command name completion in readline.
+       
+       * read-line.c (readln_initialize): Set up readline to only break
+       words for completion at new-line.  That way we can complete a
+       whole command name.  Also, set rl_attempted_completion_function
+       instead of rl_completion_entry_function so we can disable
+       completing on file names, which is usually not what we want in
+       PSPP.
+
+Wed Apr 26 13:31:00 2006  Ben Pfaff  <blp@gnu.org>
+
+       Improve the way we handle the various parsing "states".  Until now
+       we've hard-coded the state transitions in the command definition
+       file, but that's error-prone and, worse, it's redundant--we can
+       figure out what state we're in anyhow.  We can cleanly handle
+       INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
+       
+       * automake.mk (src_ui_terminal_pspp_LDADD): Move libui earlier to
+       avoid link errors.
+
+       * main.c (main): Handle new CMD_* results.
+       (execute_command) Move most per-command actions into cmd_parse().
+       (handle_error) Removed.  cmd_parse() handles command failure.
+
+Tue Apr 25 11:08:17 2006  Ben Pfaff  <blp@gnu.org>
+
+       Finish reforming error message support.  In this phase, move
+       message.c into libpspp.
+       
+       * automake.mk: Remove message.c from sources.
+
+Tue Apr 25 10:58:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       Continue reforming error message support.  In this phase, drop
+       actual message printing from core code, substituting a callback,
+       and add the callback to each UI.  Also, move verbose_msg() into
+       its own module.
+
+       * automake.mk (src_ui_terminal_libui_a_SOURCES): Add msg-ui.c,
+       msg-ui.h.
+
+       * command-line.c: (parse_command_line) Call
+       verbose_increment_level() instead of increment err_verbosity
+       directly, now that we have a little abstraction.
+
+       * msg-ui.c: New file.
+
+       * msg-ui.h: New file.
+
+       * main.c: (main) Call msg_ui_init().  Use any_errors().
+       (terminate) Call msg_ui_done().  Make termination order more
+       rational.
+
+       * read-line.c: (readln_read) Use reset_msg_count() now we have a
+       little abstraction.
+
+Tue Apr 25 09:39:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       * main.c: (terminate) Mark static and NO_RETURN.  If called
+       recursively, which can only happen via signal, just exit instead
+       of trying to gracefully shut down.      
+
+Fri Mar 31 10:33:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command-line.c: (var pre_syntax_message) -d and -u are no longer
+       supported.
+
+Sat Mar 11 14:18:39 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * automake.mk: Moved the pspp binary here.
+
+Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
+       
+       * Moved files from src directory
index 34bed5ae366b886a84789dc8b7e6505bc8e0654f..928716c851241fd365199895bcb3f0d29c06cb5c 100644 (file)
@@ -45,3 +45,5 @@ src_ui_terminal_pspp_LDFLAGS = $(PG_LDFLAGS)
 if RELOCATABLE_VIA_LD
 src_ui_terminal_pspp_LDFLAGS += `$(RELOCATABLE_LDFLAGS) $(bindir)`
 endif
+
+EXTRA_DIST += src/ui/terminal/OChangeLog
diff --git a/tests/ChangeLog b/tests/ChangeLog
deleted file mode 100644 (file)
index 4742a1c..0000000
+++ /dev/null
@@ -1,1242 +0,0 @@
-2008-06-21  Jason Stover  <jhs@math.gcsu.edu>
-
-       * regression.sh, regression-qr.sh: Fixed column showing
-       standardized coefficients.
-
-2008-05-16  John Darrington <john@darrington.wattle.id.au>
-
-       * compression.sh print-crash.sh print-strings.sh very-long-strings.sh :
-       Removed export VAR=VAL syntax.
-
-       * automake.mk:  Added test to check for non-portable shell syntax
-
-2008-04-14  Jason Stover  <jhs@math.gcsu.edu>
-
-       * automake.mk: New test for regression with QR decomposition.
-
-       * command/regression-qr.sh: New test for regression with QR decomposition.
-
-2008-03-16  Ben Pfaff  <blp@gnu.org>
-
-       Bug #22037.
-
-       * automake.mk: Add new test.
-
-       * bugs/crosstabs-crash2.sh: New test.
-
-2008-03-16  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6452.  Reviewed by John Darrington.
-
-       * automake.mk: Add new test.
-
-       * command/variable-display.sh: New test.
-
-2008-03-04  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6441.  Reviewed by John Darrington.
-
-       * automake.mk: Add new test.
-
-       * formats/format-guesser.sh: New test.
-
-2008-02-10  Ben Pfaff  <blp@gnu.org>
-
-       * command/get-data-txt-examples.sh: Update to match changes to
-       documentation (which were in turn updated to show how the escaped
-       quote feature works).
-
-2008-02-02  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add target for dissect-sysfile.
-
-       * dissect-sysfile.c: New program.
-
-2008-02-01  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add new test.
-
-       * libpspp/str-test.c: New test.
-
-       * command/get-dat-gnm.sh: Update variable names to match new
-       naming scheme.
-
-2007-12-04  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add new tests.
-
-       * command/get-data-txt.sh: New test.
-
-       * command/get-data-txt-examples.sh: New test.
-
-       * command/get-data-txt-importcases.sh: New test.
-
-2007-11-25  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/compression.sh: Don't fail on big-endian system.  Partial
-       fix for bug #21590.
-
-       * bugs/sysfile-info.sh: Disregard "Integer Format" and "Real
-       Format" lines in SYSFILE INFO output, to permit big-endian systems
-       to pass also.  Partial fix for bug #21590.
-
-2007-11-15  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add definition of CHARSETALIASDIR to
-       TESTS_ENVIRONMENT, to allow locale_charset to find charset.alias
-       before running "make install".
-
-2007-11-10  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/compression.sh: Pass -b option to diff to avoid spurious
-       failure on od.
-
-2007-11-08  Ben Pfaff  <blp@gnu.org>
-
-       Patch #6256: add support for binary, 360 file formats.  Reviewed
-       by John Darrington.
-
-       * automake.mk: Add new file.
-
-       * formats/360.sh: New test.
-
-2007-11-07  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/overwrite-input-file.sh: Don't use non-portable "diff -B".
-
-       * bugs/overwrite-special-file.sh: Ditto.
-
-       Reported by Jason Stover.
-
-2007-11-03  Ben Pfaff  <blp@gnu.org>
-
-       Allow output files to overwrite input files (bug #21280).
-
-       * automake.mk: Add new file.
-
-       * bugs/overwrite-input-file.sh: Rewrite to make sure that we can
-       overwrite input files safely.
-
-       * bugs/overwrite-special-file.sh: New test.
-
-       * command/erase.sh: Fix "activity" message.
-
-2007-11-03  John Darrington <john@darrington.wattle.id.au>
-
-       * Book1.gnm.unzipped command/get-data-gnm.sh: New test and data
-       for reading gnumeric files.
-
-2007-10-08  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21280.  Thanks to John Darrington for review.
-
-       * automake.mk: Add new file.
-
-       * bugs/overwrite-input-file.sh: New test.
-
-2007-09-23  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21111.  Reviewed by John Darrington.
-       
-       * command/input-program.sh: New test.
-
-       * command/do-if.sh: New tests.
-
-2007-09-22  Ben Pfaff  <blp@gnu.org>
-
-       Bug #21128.  Reviewed by John Darrington.
-
-       * output/paper-size.sh: New test.
-
-2007-09-21  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/unwritable-dir.sh: New test for bug #21117.
-
-2007-09-19  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/input-crash.sh: Add regression test for bug #21108.
-
-2007-09-04  Ben Pfaff  <blp@gnu.org>
-
-       Update scripts that invoke Perl to invoke it as simply "perl" if
-       not run from the PSPP Makefiles.  Patch #6169.  Thanks to John
-       Darrington for suggestion and review.
-       * bugs/big-input-2.sh: Make $PERL default to perl.
-       * command/sort.sh: Ditto.
-       * formats/bcd-in.sh: Ditto.
-       * formats/date-in.sh: Ditto.
-       * formats/ib-in.sh: Ditto.
-       * formats/legacy-in.sh: Ditto.
-       * formats/num-in.sh: Ditto.
-       * formats/num-out.sh: Ditto.
-       * formats/time-in.sh: Ditto.
-
-2007-08-26  Ben Pfaff  <blp@gnu.org>
-
-       * Updated most invocations of PSPP in the tests to use
-          --testing-mode and to avoid specifying an output format with -o
-         (because --testing-mode implies -o raw-ascii).
-
-2007-08-26  Ben Pfaff  <blp@gnu.org>
-
-       * command/aggregate.sh: Update output to include error messages,
-       which are now sent to output files also.
-
-       * command/ranks.h: Ditto.
-
-2007-08-12  Ben Pfaff  <blp@gnu.org>
-
-       * command/no_case_size.sh: Update to match update DISPLAY and
-       SYSFILE INFO command output.
-
-       * command/rank.sh: Ditto.
-
-       * command/sysfile-info.sh: Ditto.
-
-       * command/very-long-strings.sh: Ditto.
-
-2007-08-09  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #18982.  Thanks to John Darrington for investigation,
-       review, and verification of fix.
-       
-       * formats/date-in.sh: Use a portable pseudo-random number
-       generator.
-       
-       * formats/time-in.sh: Ditto.
-
-       * formats/num-in.sh: Ditto.
-
-2007-08-03  Ben Pfaff  <blp@gnu.org>
-
-       * command/rank.sh: Test RANK with noncontiguous groups of SPLIT
-       FILE variables and how they should behave differently from
-       noncontiguous groups of BY variables.  Regression test for bug
-       #17239.
-
-2007-08-01  Ben Pfaff  <blp@gnu.org>
-
-       * command/weight.sh: Update to match new output format for median
-       under FREQUENCIES.
-       
-       * stats/percentiles-compatible.sh: Ditto.
-
-       * stats/percentiles-enhanced.sh: Ditto.
-
-2007-07-28 John Darrington <john@darrington.wattle.id.au>
-
-       * command/t-test-1-indep-val.sh: Changed the order of groups in the 
-       summary box to match new behaviour. (Fixes bug #19604).
-
-2007-07-25  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #17100.
-       * command/data-list.sh: Add tests for multi-record DATA LIST with
-       and without empty trailing record.
-
-2007-07-24  Ben Pfaff  <blp@gnu.org>
-
-       * command/flip.sh: Add tests to avoid regression on bugs #20493,
-       #20494.
-
-2007-07-22  Ben Pfaff  <blp@gnu.org>
-
-       * command/very-long-strings.sh: Test both compressed and
-       uncompressed system files with very long strings.
-
-2007-07-17  Ben Pfaff  <blp@gnu.org>
-
-       Patch #19335.  Reviewed by John Darrington.
-
-       * expressions/randist/compare.pl: Use strict and all warnings.
-
-       * expressions/randist/randist.pl: Ditto.
-
-       * formats/num-out-cmp.pl: Ditto.
-
-       * formats/num-out-compare.pl: Ditto.
-
-       * formats/num-out-decmp.pl: Ditto.
-
-       * formats/num-out.pl: Ditto.
-
-2007-07-17  Ben Pfaff  <blp@gnu.org>
-
-       * formats/float-format.h: Drop the tests that depend on parsing
-       "-0" from a syntax file.  Also make float-format.sh error messages
-       easier to read, by changing the sed command so that error line
-       numbers are easier to match to the test input.
-       Reviewed by John Darrington as patch #6091.
-
-2007-07-11  Ben Pfaff  <blp@gnu.org>
-
-       * xforms/expressions.sh: Remove unused file.  Fixes bug
-       #18140.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * commands/match-files.sh: Test the new support for FIRST and LAST
-         subcommands.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Remove test.
-
-       * xforms/casefile.sh: Removed test.
-
-2007-06-06  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add new test.
-
-       * command/datasheet.sh: New test.
-
-2007-06-03  Ben Pfaff  <blp@gnu.org>
-
-       * libpspp/tower-test.c: Also test tower_last, tower_prev functions.
-
-       * libpspp/range-set-test.c: Also test the range_set_clone function.
-
-2007-05-06  Ben Pfaff  <blp@gnu.org>
-
-       Abstract the documents within a dictionary a little better.
-       Thanks to John Darrington for suggestion, initial version, and
-       review.  Patch #5917.
-
-       * command/file-label.sh: Update to match new DOCUMENT behavior.
-
-2007-04-19 John Darrington <john@darrington.wattle.id.au>
-       
-        * command/no_case_size.sh command/sysfiles-old.sh:
-       Changed tests to reflect new behaviour (case changing) when
-       reading system files with no long name table.
-
-2007-04-15  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add recode.sh to tests.
-
-       * xforms/recode.sh: New test.
-
-2007-04-03  Ben Pfaff  <blp@gnu.org>
-           John McCabe-Dansted <gmatht@gmail.com>
-       
-       * npar-binomial.sh: Be less picky about whitespace in PSPP output.
-
-       * npar-chisquare.sh: Ditto.
-
-       * very-long-strings.sh: Ditto.
-
-2007-04-03  Ben Pfaff  <blp@gnu.org>
-
-       Apply patches #5828, #5837, #5841, #5843.
-
-       * automake.mk (tests_libpspp_bt_test_LDADD): Add range-map-test,
-       range-set-test, tower-test.
-
-       * libpspp/range-map-test.c: New test.
-
-       * libpspp/range-set-test.c: New test.
-
-       * libpspp/tower-test.c: New test.
-
-2007-03-31  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk (tests_libpspp_bt_test_LDADD): Add tests/libpspp/bt.
-
-       * libpspp/bt-test.c: New test.
-
-2007-03-25  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add tests/libpspp/sparse-array-test.
-
-       * libpspp/sparse-array-test.c: New test.
-
-2007-03-18  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Don't try to distribute tests that are compiled
-       from C source.  This fixes "make dist" when "make all" has not yet
-       been run.
-
-Mon Feb 12 06:29:30 2007  Ben Pfaff  <blp@gnu.org>
-
-       * libpspp/ll-test.c, libpspp/llx-test.c: Include <config.h>.
-
-Sat Feb  3 21:57:34 2007  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add tests/command/vector.sh.
-
-       * command/vector.sh: New test.
-
-Wed Jan 24 21:13:53 2007  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add tests/libpspp/abt-test.
-
-       * libpspp/abt-test.c: New test.
-
-       * libpspp/heap-test.c, libpspp/ll-test.c, libpspp/llx-test.c:
-       Style fixes.
-
-Wed Jan 10 06:50:01 2007  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add tests/libpspp/heap-test.
-
-       * libpspp/heap-test.c: New test.
-
-Wed Dec 13 21:00:46 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/rank.sh (activity): Use DELETE VAR (which is new)
-       instead of MODIFY VARS.
-
-Tue Dec 19 08:17:28 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/loop.sh: Test all the possible combinations of clauses.
-
-Sat Dec 16 14:00:48 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/rank.sh: Fix test to allow string grouping variables.
-       See bug #18533.
-
-Sat Dec 16 12:20:58 2006  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/expressions.sh: Fix DATEDIFF function tests to
-       correspond with change to DATEDIFF.
-
-Wed Dec 13 19:34:29 2006  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/expressions.sh: Test DATEDIFF, DATESUM functions.
-
-Sun Dec 10 16:52:04 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add new test.
-
-       * expressions/valuelabel.sh: New test, for VALUELABEL function.
-
-Thu Nov 30 22:46:17 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add new test.
-
-       * bugs/compute-sum.sh: New test, for bug #17422.
-
-Thu Nov 30 22:01:57 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add new test.
-
-       * bugs/empty-do-repeat: New test, for bug #18407.
-
-Wed Nov 22 06:28:04 2006  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/signals.sh: Fix race condition.
-
-Sun Nov 19 09:23:34 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add the new tests listed below.
-
-       * formats/bcd-in.sh: New test.
-
-       * formats/bcd-in.expected.cmp.gz: New support file for
-       bcd-in.sh.
-
-       * formats/date-in.sh: New test.
-
-       * formats/ib-in.sh: New test.
-
-       * formats/ib-in.expected.cmp.gz: New test.
-
-       * formats/legacy-in.sh: New test.
-
-       * formats/legacy-in.expected.cmp.gz: New support file for
-       legacy-in.sh.
-
-       * formats/month-in.sh: New test.
-
-       * formats/num-in.sh: New test.
-
-       * formats/num-in.expected.gz: New support file for num-in.sh.
-
-       * formats/time-in.sh: New test.
-
-       * formats/wkday-in.sh: New test.
-
-       * commands/no_case_size.sh: Update output to conform with
-       update scientific notation code.
-
-       * formats/num-out.expected.cmp.gz: Ditto.
-
-Thu Nov  2 20:58:12 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/data-list.sh: Test newly implement SKIP keyword on DATA
-       LIST.
-
-Sat Nov  4 16:08:58 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add binhex-out.sh, date-out.sh, month-out.sh,
-       num-out.sh, time-out.sh, wkday-out.sh from formats directory.  Add
-       formats/inexactify as a program needed by tests.
-
-       * command/no_case_size.sh: Update output to conform with updated
-       formatted output code.
-
-       * expressions/expressions.sh: Ditto.
-
-       * formats/binhex-out.sh: New test.
-
-       * formats/date-out.sh: New test.
-
-       * formats/month-out.sh: New test.
-
-       * formats/num-out.sh: New test.
-
-       * formats/time-out.sh: New test.
-
-       * formats/wkday-out.sh: New test.
-
-Sun Oct 29 14:03:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       * ll-test.c, llx-test.c: Reduce verbosity of output.
-
-Thu Oct 26 20:20:39 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add tests/formats/float-format.sh.
-
-       * formats/float-format.sh: New test.
-
-Sat Oct  7 11:06:59 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * command/rank.sh: New file 
-
-Sun Jul 16 21:08:51 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/print.sh: Update output to match PRINT revisions.
-
-Wed Jul 12 10:07:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Put ll-test, llx-test in check_PROGRAMS instead of
-       noinst_PROGRAMS.
-
-Wed Jul  5 22:15:24 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add expressions/randist/compare.pl to EXTRA_DIST.
-
-Tue Jul  4 09:59:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
-       ALL) and additional underlying system file issues.
-       
-       * automake.mk: Add keep-all.sh to TESTS.
-       
-       * bugs/keep-all.sh: New test.
-
-Mon Jul  3 21:09:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       Modify the random distributions test to verify to 2 more decimal
-       places of accuracy, but to allow +/- 1 units in the last (tested)
-       place.  This allows the test to pass on machines or with compilers
-       whose calculated values are off by epsilon from the expected
-       results.  Because of the way the test is constructed, this was
-       quite common and often caused gratuitous test failures.
-
-       This is patch #5215, tested by Jason Stover and John Darrington.
-        
-       * expressions/randist.sh: Use compare.pl to do comparisons.
-
-       * expressions/randist/compare.pl: New script to do comparisons.
-
-       * expressions/randist/randist.pl: Print output to 4 decimal
-       places, not just 2.  Also, print a brief explanatory header at the
-       top of each output file.
-
-       * expressions/randist/*.out: Replace with new expected output.
-
-Sat Jul  1 15:33:37 2006  Ben Pfaff  <blp@gnu.org>
-
-       * automake.mk: Add ll-test, llx-test to TESTS.
-       
-       * libpspp/ll-test.c: New file.
-
-       * libpspp/llx-test.c: New file.
-
-Sun May  7 18:15:52 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/do-repeat.sh: Only use "A TO B" for increasing runs of
-       integers, which is all we now support (for closer compatibility).
-
-Wed Apr 26 13:36:42 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/missing-values.sh: Update output to match behavior
-       changes.
-
-Mon Apr  3 12:32:36 2006  Ben Pfaff  <blp@gnu.org>
-
-       * Updated tests to match changes in output formatting.
-
-2006-03-23  Jason Stover  <jhs@math.gcsu.edu>
-
-       * command/regression.sh: New test.
-
-Sat Mar 11 14:16:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
-
-       * Updated the tests to use the new location of the pspp binary.
-       * Made all the tests work as stand-alone scripts.
-
-Sun Feb 12 19:07:24 2006  Ben Pfaff  <blp@gnu.org>
-
-       * command/do-repeat.sh: New test.
-
-       * bugs/terminate.sh: Removed (no longer applicable).
-
-Fri Nov  4 19:30:34 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/recode-bug.sh: Improve failure reports.
-
-Wed Nov  2 21:54:11 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/loop.sh: Update expected error messages.
-
-Sun Aug 21 00:20:02 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/import-export.sh: Simplify.
-
-       * command/sysfiles-old.sh: Use version 2, not 3x.
-
-Sat Aug  6 17:32:39 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/missing-values.sh: New test.
-
-       * Makefile.am: Add new test.
-
-Mon Aug  1 21:51:46 2005  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/big-input-2.sh: Don't use 1...100000 (etc.) with Perl
-       because that may allocate a large amount of memory.
-
-Mon Aug  1 21:48:54 2005  Ben Pfaff  <blp@gnu.org>
-
-       * xforms/expression.sh: Break this monolithic test up into 36
-       subtests to give a better idea of what's failing in some cases.
-
-Sat Jul 30 21:54:23 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/sys-info.sh: Removed.  (This was not actually in TESTS
-       in Makefile.am, so it was never called.  command/sysfile-info.sh
-       does what it was trying to do, but better.)
-       
-Sat Jul 30 21:50:33 2005  Ben Pfaff  <blp@gnu.org>
-
-       Fixes for Solaris.
-
-       * Most tests: Add `cd /' before `rm -rf $TEMPDIR' because some
-       OSes do not allow the current working directory to be removed.
-
-       * bugs/big-input-2.sh: Use perl instead of a shell loop, because
-       the shell loop was very slow on Solaris.
-
-       * command/sort.sh: Use `printf' instead of `echo -n' for
-       portability. 
-       
-Sat Jul 30 21:48:37 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add coverage.sh, temp_template to EXTRA_DIST.
-
-Sun Jul 24 20:35:04 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/sysfile-info.sh: Add "-b -B -w" to diff command line.
-       Fixes apparent failure under Cygwin.  Thanks to John Darrington
-       <john@cellform.com.au> for reporting this problem.
-
-Mon Jul  4 18:02:44 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/sysfile-info.sh: Don't verify endianness.  Fixes bug
-       reported by "Marshall DeBerry" <mdb@radix.net>.
-
-Mon Jun  6 22:40:10 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/print.sh: Get rid of RBHEX output.  It wasn't worth
-       much.  Fixes bug 12312.
-
-Tue May 10 19:59:10 2005  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/agg-crash-2.sh: Fix output given bug 13054.
-
-Wed May  4 23:50:02 2005  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/match-files-scratch.sh: New test for bug 12948.
-
-       * Makefile.am: (TESTS) Add bugs/match-files-scratch.sh.
-
-Sun May  1 23:18:37 2005  Ben Pfaff  <blp@gnu.org>
-
-       Most tests: changed capitalization of variable names in
-       definitions or in output, because now we preserve it.
-
-Mon Apr 25 23:30:17 2005  Ben Pfaff  <blp@gnu.org>
-
-       * commands/match-files.sh: New test.
-
-       * Makefile.am: (TESTS) Add commands/match-files.sh.
-
-Sun Apr 17 16:38:00 2005  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.stat, data-fmts.stat, do-if.stat, do-repeat.stat,
-       gengarbage.c, inpt-pgm.stat, mdfy-vars.stat, means.stat,
-       mtch-file.stat, pcs-if.stat, recode.stat, repeating.stat,
-       reread.data, reread.stat, sys-info.stat, t-test.stat,
-       temporary.stat, time-date.stat, vector.stat: Removed because they
-       were unused.
-
-       * Makefile.am: Removed sort.data references.  Fixed up
-       DISTCLEANFILES.
-
-Sun Mar 20 14:16:31 2005  Ben Pfaff  <blp@gnu.org>
-
-       * command/aggregate.sh: Rewrite.
-
-Mon Mar 14 21:58:23 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (TESTS_ENVIRONMENT) Add PERL to the test
-       environment.
-
-       * commands/sort.sh: Rewrite to test more thoroughly and to verify
-       that the sort is stable.
-       
-Sat Mar 12 23:30:37 2005  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/agg-crash-2.sh, bugs/big-input-2.sh, command/aggregate.sh:
-       Fix AGGREGATE command syntax.
-
-Sat Mar 12 13:16:34 2005  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/temp-freq.sh: Add another test.
-
-Fri Mar 11 10:40:41 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/expressions.sh: Add another test.
-
-Sun Mar  6 19:30:14 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/vectors.sh: New test.
-
-       * Makefile.am: Add expressions/vectors.sh.
-
-Sun Mar  6 17:56:27 2005  Ben Pfaff  <blp@gnu.org>
-
-       * expressions/expressions.sh: Add tests for generic optimizations.
-
-Sun Mar  6 11:03:58 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Add expressions/variables.sh.  Remove expr.stat.
-
-       * expr.stat: Removed.
-
-'Mon Feb 28 23:31:16 2005  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Removed xforms/expressions.sh.  Added
-       expressions/expressions.sh, expressions/epoch.sh,
-       expressions/randist.sh.
-
-       * command/print.sh: Update error messages.
-
-Sun Feb 13 16:15:09 2005  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/agg-crash-2.sh: Add new test for Bug #11955.
-
-Fri Feb 11 23:27:08 2005  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/crosstabs-crash.sh: Add new test for Bug #11916.
-
-Tue Jan 18 19:25:24 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * Canonicalised (some of) the tests' temp file names to make it
-       easier to recognise valgrind ouput.
-
-Sun Jan  9 16:39:08 WST 2005 John Darrington <john@darrington.wattle.id.au>
-
-       * bugs/big-input-2.sh Made the test a bit faster
-
-John Darrington <john@darrington.wattle.id.au>
-
-       * command/examine.sh Added
-       
-Mon Nov 15 23:52:55 2004  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/random.sh: Update expected random values to reflect the GSL
-       random number generator.
-
-Sat Nov  6 14:49:27 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * command/oneway-with-splits.sh  Added.
-
-Sun Oct 31 16:08:47 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * bugs/recode-copy-bug.sh bugs/computebug.sh  Fixed problem which 
-       caused make distcheck to not know where some critical files were.
-
-Mon May 31 21:49:19 2004  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/t-test-with-temp.sh: Use $SUPERVISOR.
-
-       * bugs/t-test-1-indep-val.sh: Ditto.
-
-       * bugs/t-test-1-sample-missing-anal.sh: Ditto.
-       
-       * bugs/t-test-1-sample-missing-list.sh: Ditto.
-
-       * bugs/t-test-1s.sh: Ditto.
-
-       * bugs/t-test-groups.sh: Ditto.
-
-       * bugs/t-test-indep-missing-anal.sh: Ditto.
-
-       * bugs/t-test-indep-missing-list.sh: Ditto.
-
-       * bugs/t-test-paired-missing-anal.sh: Ditto.
-
-       * bugs/t-test-paired-missing-list.sh: Ditto.
-
-       * bugs/t-test-pairs.sh: Ditto.
-
-Sun May 30 19:18:26 2004  Ben Pfaff  <blp@gnu.org>
-
-       * command/tabs.sh: Default tab width is now 4.
-
-       * command/data-list.sh: New test.
-
-       * Makefile.am: (TESTS) Add command/data-list.sh.
-
-Sun Apr 11 14:21:16 2004  Ben Pfaff  <blp@gnu.org>
-
-       * stats/moments.sh: Now that our one-pass moments algorithm is
-       better we don't have to omit any of the test cases for it.
-
-Fri Apr  9 20:03:33 2004  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (TESTS) Add stats/descript-mean-bug.sh.
-
-       * stats/descript-mean-bug.sh: Add test for a bug where
-       DESCRIPTIVES asking only for the mean assert-failed.
-
-Sat Apr  3 11:42:31 2004  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (TESTS) Add bugs/comment-at-eof.sh.  Alphabetize
-       test order.
-       
-       * bugs/comment-at-eof.sh: Add test for a bug where a comment at
-       end of file caused an infinite loop.
-
-Sat Mar 27 11:29:06 WST 2004 John Darrington <john@darrington.wattle.id.au>
-
-       * bugs/get.sh Added regression test for a bug in loading a dictionary
-       with the GET command.
-
-Tue Mar 30 22:10:08 2004  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (TESTS) Add bugs/multipass.sh.
-
-Mon Mar 29 15:25:09 2004  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (TESTS) Add xforms/casefile.sh,
-       stats/descript-basic.sh, stats/descript-missing.sh,
-       stats/moments.sh.  Remove command/descriptives.sh.
-
-       * command/descriptives.sh: Removed.
-
-       * command/weight.sh: Fix output (statistic values were wrong!).
-
-       * stats/descript-basic.sh: New test.
-       
-       * stats/descript-missing.sh: New test.
-       
-       * stats/moments.sh: New test.
-
-       * xforms/casefile.sh: New test.
-
-       * xforms/expressions.sh: Cleans up after itself now.
-
-Fri Mar 26 00:55:48 2004  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (TESTS) Add xforms/expressions.sh, remove
-       command/compute.sh.
-
-       * command/beg-data.sh: Remove REMARK usage.
-
-       * command/bignum.sh: Ditto.
-
-       * command/list.sh: Ditto.
-
-       * command/print.sh: Ditto.
-
-Sat Mar 20 18:11:15 2004  Ben Pfaff  <blp@gnu.org>
-
-       * command/list.sh: Update output.
-
-       * command/print.sh: Ditto.
-
-       * command/weight.sh: Ditto.
-
-Sun Mar 14 23:04:14 2004  Ben Pfaff  <blp@gnu.org>
-
-       * command/sort.sh: Use numeric, not string, data to avoid spurious
-       valgrind complaints.
-
-Wed Mar 10 21:22:03 2004  Ben Pfaff  <blp@gnu.org>
-
-       * bugs/temporary.sh: Test that basic use of TEMPORARY works.
-
-Mon Feb 16 21:36:57 2004  Ben Pfaff  <blp@gnu.org>
-
-       * */*.sh: Prepend $SUPERVISOR to invocations of pspp so that we
-       can run valgrind or gdb easily with `make check'
-
-Sat Dec 13 00:08:23 2003  Ben Pfaff  <blp@gnu.org>
-
-       * syntax: Run a diff when there's no expected output, too.
-
-Fri Jan  7 20:30:23 2000  Ben Pfaff  <blp@gnu.org>
-
-       * data-fmts.stat: Add more date tests.
-
-       * do-repeat.stat: SET ECHO ON.
-
-       * syntax: Replace test -L with test -h.
-
-Tue Jan  5 14:21:52 1999  Ben Pfaff  <blp@gnu.org>
-
-       * data-list.stat, data-list.data: Adjust so that it can tell if
-       DATA LIST FREE properly parses and pads string values.
-
-       * list.stat: Remove anachronistic `SET EMULATION PC'.
-
-       * Rebuilt benchmark.
-
-Tue Jan  5 14:12:58 1999  Ben Pfaff  <blp@gnu.org>
-
-       * syntax: Replaced `test' calls with `['.  This may or may not fix
-       the problems some people have reported.
-
-Sun Aug  9 11:15:38 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Update for renamed files.
-
-       * autorecode.stat: Renamed autorecod.stat.
-
-       * begin-data.stat: Renamed beg-data.stat.
-
-       * data-formats.stat: Renamed data-fmts.stat.
-
-       * expression.stat: Renamed expr.stat.
-
-       * file-label.stat: Renamed file-lab.stat.
-
-       * input-program.stat: Renamed inpt-pgm.stat.
-
-       * modify-vars.stat: Renamed mdfy-vars.stat.
-
-       * match-files.stat: Renamed mtch-file.stat.
-
-       * process-if.stat: Renamed pcs-if.stat.
-
-       * split-file.stat: Renamed splt-file.stat.
-
-       * sysfile-info.stat: Renamed sys-info.stat.
-
-       * expect/: Refreshed.
-
-Sat Aug  8 00:27:07 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Add `syntax'.
-       (dist-hook) New target.
-
-Wed Aug  5 00:04:16 1998  Ben Pfaff  <blp@gnu.org>
-
-       * TEST-RESULTS: Removed.
-
-       * show-check-msg: Removed.
-
-       * expect/: New.
-
-       * syntax: New.  Thanks to James R. Van Zandt <jrv@vanzandt.mv.com>
-       for this implementation of automatic testing.
-
-       * Makefile: (TESTS) Set to the syntax script.
-       (bench) New target.
-       (EXTRA_DIST) Remove TEST-RESULTS.  Add `syntax'.
-
-Sun Jul  5 14:16:18 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Add flip.stat.
-
-Sun Jul  5 00:50:41 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.stat: Change to test /MISSING=REPORT.
-
-Tue Jun  2 23:42:23 1998  Ben Pfaff  <blp@gnu.org>
-
-       * flip.stat: New file.
-       
-       * weighting.stat: Update.
-
-Mon May 25 12:45:46 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Add crosstabs.stat, match-files.stat.
-
-       * crosstabs.stat: Turn off cells=all.
-
-Tue May 12 16:22:06 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.stat: Minor changes.
-
-Thu May  7 23:16:03 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.stat: Replace with a test that is hopefully better.
-
-Tue Apr 14 01:00:46 1998  Ben Pfaff  <blp@gnu.org>
-
-       * crosstabs.stat: New.
-
-Mon Mar  9 15:40:25 1998  Ben Pfaff  <blp@gnu.org>
-
-       * match-files.stat: More thorough.
-
-Mon Mar  9 01:14:14 1998  Ben Pfaff  <blp@gnu.org>
-
-       * match-files.stat: More thorough.
-
-1998-03-05  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Use ./gengarbage instead of gengarbage.
-
-1998-02-23  Ben Pfaff  <blp@gnu.org>
-
-       * Many tests: Remove final finish command.
-
-1998-02-16  Ben Pfaff  <blp@gnu.org>
-
-       * (DISTCLEANFILES) Clean *.save, pspp.*, foo*
-
-       * file-label.stat, sysfile-info.stat: Replace .sav with .save.
-
-       * match-files.stat: New file.
-       
-Fri Feb 13 15:58:11 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Add TEST-RESULTS.
-
-Tue Jan 13 01:11:36 1998  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.stat: Some more testing.
-
-Sat Jan 10 23:57:14 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (DISTCLEANFILES) Add aggregate.save.
-
-       * aggregate.stat: Slightly more thorough.
-
-Sat Jan 10 02:17:00 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Add means.stat, t-test.stat.
-       
-       * means.stat: New file.
-
-Thu Jan  8 22:38:59 1998  Ben Pfaff  <blp@gnu.org>
-
-       * Many tests: Removed extra newlines from REMARKs.
-
-Mon Jan  5 11:18:44 1998  Ben Pfaff  <blp@gnu.org>
-
-       * sysfile-info.stat: Test most of the DISPLAY commands.  Update
-       title.
-
-       * vector.stat: Display vectors.
-
-Sun Jan  4 18:31:36 1998  Ben Pfaff  <blp@gnu.org>
-
-       * All tests: Added title.
-
-       * begin-data.stat: Updated REMARK format.
-
-       * descript.stat: Comment fix.
-
-Sun Dec 21 16:57:31 1997  Ben Pfaff  <blp@gnu.org>
-
-       * TEST-RESULTS: New file.
-
-Fri Dec  5 22:02:20 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (DISTCLEANFILES) Add fiasco.html.
-
-Tue Dec  2 14:55:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * t-test.stat: New file.
-
-Fri Nov 14 00:17:25 1997  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.stat: Changed.      
-
-Tue Oct 28 16:26:25 1997  Ben Pfaff  <blp@gnu.org>
-
-       * aggregate.stat: New file.
-
-       * Makefile.am: (EXTRA_DIST) Add aggregate.stat.
-
-Sun Oct  5 16:02:02 1997  Ben Pfaff  <blp@gnu.org>
-
-       * fall92.stat, fall92.data: Removed (unknown copyright).
-
-       * gengarbage.c: Define EXIT_SUCCESS if not defined by headers.
-       From Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-Sat Oct  4 16:35:59 1997  Ben Pfaff  <blp@gnu.org>
-
-       * repeating.stat: New file.
-
-       * Makefile.am: (EXTRA_DIST) Add repeating.stat.
-
-Thu Sep 18 21:40:50 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Add lag.stat.
-
-Mon Aug 18 18:31:42 1997  Ben Pfaff  <blp@gnu.org>
-
-       * do-repeat.stat: Even more useful.
-
-       * lag.stat: New file.
-
-Sun Aug 17 22:47:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * do-repeat.stat: Made actually useful, not stupid.
-
-Sun Aug  3 11:46:00 1997  Ben Pfaff  <blp@gnu.org>
-
-       * In several files, replace usage of deprecated term `script' by
-       `syntax file'.
-
-Thu Jul 17 02:12:17 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Add tabs.stat.
-
-       * file-label.stat: Improved.
-
-       * sysfile-info.stat: Tests DISPLAY DICTIONARY now as well.
-
-Fri Jul 11 14:13:49 1997  Ben Pfaff  <blp@gnu.org>
-
-       * gengarbage.c: Reformat.  #include's <time.h>.  Uses ANSI C
-       rand() in place of random().  Calls the randomizer srand().
-
-Thu Jul 10 22:16:34 1997  Ben Pfaff  <blp@gnu.org>
-
-       * tabs.stat: New file.
-
-Wed Jun 25 22:54:40 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: (EXTRA_DIST) Removed bug.stat, file-type.stat.
-
-Sun Jun  8 01:24:55 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Added fiasco.ps, fiasco.list, foo, foo.sav, msgs to
-       DISTCLEANFILES.
-
-       * input-program.stat: Made some variables scratch.
-
-Fri Jun  6 22:53:03 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Many files: Comment fixes, removed `set output raw.' commands.
-
-       * Other miscellaneous changes.
-
-Tue Jun  3 23:44:46 1997  Ben Pfaff  <blp@gnu.org>
-
-       * list.stat: Re-enabled some of it.
-
-Wed Apr 23 21:33:48 1997  Ben Pfaff  <blp@gnu.org>
-
-       * sysfile-info.stat: A little more generalized now.
-
-Fri Apr 18 15:42:22 1997  Ben Pfaff  <blp@gnu.org>
-
-       * Makefile.am: Maintainer-clean Makefile.in.
-       
-Thu Mar 27 01:11:29 1997  Ben Pfaff  <blp@gnu.org>
-
-       * gengarbage.pl: Removed.
-       
-Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
-
-       * descript.stat: Syntax fixes.
-
-       * process-if.stat: New test for PROCESS IF.
-
-Sun Jan 19 14:22:11 1997  Ben Pfaff  <blp@gnu.org>
-
-       * autorecode.stat, modify-vars.stat: More thorough.
-
-       * data-formats.stat, file-label.stat: New tests.
-       
-Thu Jan 16 13:08:57 1997  Ben Pfaff  <blp@gnu.org>
-
-       * bug.stat: Comment fix.
-
-Wed Jan  1 22:08:10 1997  Ben Pfaff  <blp@gnu.org>
-
-       * filter.stat: New file; tests FILTER behavior.
-
-Wed Jan  1 17:00:59 1997  Ben Pfaff  <blp@gnu.org>
-
-       * gengarbage.pl: New perl program equivalent to gengarbage.c.
-
-Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
-
-       * gengarbage.c: Changed.
-
-       * sort.stat: Changed.
-
-Sun Dec 22 23:10:39 1996  Ben Pfaff  <blp@gnu.org>
-
-       * sort.stat: New file.
-
-Fri Dec 13 21:30:53 1996  Ben Pfaff  <blp@gnu.org>
-
-       * autorecode.stat: New file.
-
-       * fall92.stat: Mods for practicality.
-
-       * test.bat, testall.bat: Removed.
-       
-Thu Nov 28 23:14:07 1996  Ben Pfaff  <blp@gnu.org>
-
-       * list.stat, weighting.stat: Changed SET COMPATIBILITY subcommand
-       to SET EMULATION in anticipation of change.
-
-Sat Oct 26 23:06:06 1996  Ben Pfaff  <blp@gnu.org>
-
-       * recode.stat: Removed comment about bug, since I fixed that.
-
-Thu Oct 24 20:13:42 1996  Ben Pfaff  <blp@gnu.org>
-
-       * print.stat: Slightly more thorough.
-
-Thu Oct 24 17:47:14 1996  Ben Pfaff  <blp@gnu.org>
-
-       * time-date.stat: Slightly more thorough.
-
-Wed Oct 23 21:53:43 1996  Ben Pfaff  <blp@gnu.org>
-
-       * time-date.stat: New file.
-
-Thu Sep 26 22:20:26 1996  Ben Pfaff  <blp@gnu.org>
-
-       * list.data: More data.
-
-       * list.stat: Handles all that extra data.
-
-       * weighting.stat: Doesn't try to list $WEIGHT because PC+ isn't
-       quite supported yet.
-
-Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
-
-       * weighting.stat: Tests for proper ligatures.  Won't work until
-       encodings are correct, of course...
-
-----------------------------------------------------------------------
-Local Variables:
-mode: change-log
-version-control: never
-End:
diff --git a/tests/OChangeLog b/tests/OChangeLog
new file mode 100644 (file)
index 0000000..4742a1c
--- /dev/null
@@ -0,0 +1,1242 @@
+2008-06-21  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.sh, regression-qr.sh: Fixed column showing
+       standardized coefficients.
+
+2008-05-16  John Darrington <john@darrington.wattle.id.au>
+
+       * compression.sh print-crash.sh print-strings.sh very-long-strings.sh :
+       Removed export VAR=VAL syntax.
+
+       * automake.mk:  Added test to check for non-portable shell syntax
+
+2008-04-14  Jason Stover  <jhs@math.gcsu.edu>
+
+       * automake.mk: New test for regression with QR decomposition.
+
+       * command/regression-qr.sh: New test for regression with QR decomposition.
+
+2008-03-16  Ben Pfaff  <blp@gnu.org>
+
+       Bug #22037.
+
+       * automake.mk: Add new test.
+
+       * bugs/crosstabs-crash2.sh: New test.
+
+2008-03-16  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6452.  Reviewed by John Darrington.
+
+       * automake.mk: Add new test.
+
+       * command/variable-display.sh: New test.
+
+2008-03-04  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6441.  Reviewed by John Darrington.
+
+       * automake.mk: Add new test.
+
+       * formats/format-guesser.sh: New test.
+
+2008-02-10  Ben Pfaff  <blp@gnu.org>
+
+       * command/get-data-txt-examples.sh: Update to match changes to
+       documentation (which were in turn updated to show how the escaped
+       quote feature works).
+
+2008-02-02  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add target for dissect-sysfile.
+
+       * dissect-sysfile.c: New program.
+
+2008-02-01  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add new test.
+
+       * libpspp/str-test.c: New test.
+
+       * command/get-dat-gnm.sh: Update variable names to match new
+       naming scheme.
+
+2007-12-04  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add new tests.
+
+       * command/get-data-txt.sh: New test.
+
+       * command/get-data-txt-examples.sh: New test.
+
+       * command/get-data-txt-importcases.sh: New test.
+
+2007-11-25  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/compression.sh: Don't fail on big-endian system.  Partial
+       fix for bug #21590.
+
+       * bugs/sysfile-info.sh: Disregard "Integer Format" and "Real
+       Format" lines in SYSFILE INFO output, to permit big-endian systems
+       to pass also.  Partial fix for bug #21590.
+
+2007-11-15  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add definition of CHARSETALIASDIR to
+       TESTS_ENVIRONMENT, to allow locale_charset to find charset.alias
+       before running "make install".
+
+2007-11-10  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/compression.sh: Pass -b option to diff to avoid spurious
+       failure on od.
+
+2007-11-08  Ben Pfaff  <blp@gnu.org>
+
+       Patch #6256: add support for binary, 360 file formats.  Reviewed
+       by John Darrington.
+
+       * automake.mk: Add new file.
+
+       * formats/360.sh: New test.
+
+2007-11-07  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/overwrite-input-file.sh: Don't use non-portable "diff -B".
+
+       * bugs/overwrite-special-file.sh: Ditto.
+
+       Reported by Jason Stover.
+
+2007-11-03  Ben Pfaff  <blp@gnu.org>
+
+       Allow output files to overwrite input files (bug #21280).
+
+       * automake.mk: Add new file.
+
+       * bugs/overwrite-input-file.sh: Rewrite to make sure that we can
+       overwrite input files safely.
+
+       * bugs/overwrite-special-file.sh: New test.
+
+       * command/erase.sh: Fix "activity" message.
+
+2007-11-03  John Darrington <john@darrington.wattle.id.au>
+
+       * Book1.gnm.unzipped command/get-data-gnm.sh: New test and data
+       for reading gnumeric files.
+
+2007-10-08  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21280.  Thanks to John Darrington for review.
+
+       * automake.mk: Add new file.
+
+       * bugs/overwrite-input-file.sh: New test.
+
+2007-09-23  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21111.  Reviewed by John Darrington.
+       
+       * command/input-program.sh: New test.
+
+       * command/do-if.sh: New tests.
+
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * output/paper-size.sh: New test.
+
+2007-09-21  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/unwritable-dir.sh: New test for bug #21117.
+
+2007-09-19  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/input-crash.sh: Add regression test for bug #21108.
+
+2007-09-04  Ben Pfaff  <blp@gnu.org>
+
+       Update scripts that invoke Perl to invoke it as simply "perl" if
+       not run from the PSPP Makefiles.  Patch #6169.  Thanks to John
+       Darrington for suggestion and review.
+       * bugs/big-input-2.sh: Make $PERL default to perl.
+       * command/sort.sh: Ditto.
+       * formats/bcd-in.sh: Ditto.
+       * formats/date-in.sh: Ditto.
+       * formats/ib-in.sh: Ditto.
+       * formats/legacy-in.sh: Ditto.
+       * formats/num-in.sh: Ditto.
+       * formats/num-out.sh: Ditto.
+       * formats/time-in.sh: Ditto.
+
+2007-08-26  Ben Pfaff  <blp@gnu.org>
+
+       * Updated most invocations of PSPP in the tests to use
+          --testing-mode and to avoid specifying an output format with -o
+         (because --testing-mode implies -o raw-ascii).
+
+2007-08-26  Ben Pfaff  <blp@gnu.org>
+
+       * command/aggregate.sh: Update output to include error messages,
+       which are now sent to output files also.
+
+       * command/ranks.h: Ditto.
+
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       * command/no_case_size.sh: Update to match update DISPLAY and
+       SYSFILE INFO command output.
+
+       * command/rank.sh: Ditto.
+
+       * command/sysfile-info.sh: Ditto.
+
+       * command/very-long-strings.sh: Ditto.
+
+2007-08-09  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #18982.  Thanks to John Darrington for investigation,
+       review, and verification of fix.
+       
+       * formats/date-in.sh: Use a portable pseudo-random number
+       generator.
+       
+       * formats/time-in.sh: Ditto.
+
+       * formats/num-in.sh: Ditto.
+
+2007-08-03  Ben Pfaff  <blp@gnu.org>
+
+       * command/rank.sh: Test RANK with noncontiguous groups of SPLIT
+       FILE variables and how they should behave differently from
+       noncontiguous groups of BY variables.  Regression test for bug
+       #17239.
+
+2007-08-01  Ben Pfaff  <blp@gnu.org>
+
+       * command/weight.sh: Update to match new output format for median
+       under FREQUENCIES.
+       
+       * stats/percentiles-compatible.sh: Ditto.
+
+       * stats/percentiles-enhanced.sh: Ditto.
+
+2007-07-28 John Darrington <john@darrington.wattle.id.au>
+
+       * command/t-test-1-indep-val.sh: Changed the order of groups in the 
+       summary box to match new behaviour. (Fixes bug #19604).
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #17100.
+       * command/data-list.sh: Add tests for multi-record DATA LIST with
+       and without empty trailing record.
+
+2007-07-24  Ben Pfaff  <blp@gnu.org>
+
+       * command/flip.sh: Add tests to avoid regression on bugs #20493,
+       #20494.
+
+2007-07-22  Ben Pfaff  <blp@gnu.org>
+
+       * command/very-long-strings.sh: Test both compressed and
+       uncompressed system files with very long strings.
+
+2007-07-17  Ben Pfaff  <blp@gnu.org>
+
+       Patch #19335.  Reviewed by John Darrington.
+
+       * expressions/randist/compare.pl: Use strict and all warnings.
+
+       * expressions/randist/randist.pl: Ditto.
+
+       * formats/num-out-cmp.pl: Ditto.
+
+       * formats/num-out-compare.pl: Ditto.
+
+       * formats/num-out-decmp.pl: Ditto.
+
+       * formats/num-out.pl: Ditto.
+
+2007-07-17  Ben Pfaff  <blp@gnu.org>
+
+       * formats/float-format.h: Drop the tests that depend on parsing
+       "-0" from a syntax file.  Also make float-format.sh error messages
+       easier to read, by changing the sed command so that error line
+       numbers are easier to match to the test input.
+       Reviewed by John Darrington as patch #6091.
+
+2007-07-11  Ben Pfaff  <blp@gnu.org>
+
+       * xforms/expressions.sh: Remove unused file.  Fixes bug
+       #18140.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * commands/match-files.sh: Test the new support for FIRST and LAST
+         subcommands.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Remove test.
+
+       * xforms/casefile.sh: Removed test.
+
+2007-06-06  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add new test.
+
+       * command/datasheet.sh: New test.
+
+2007-06-03  Ben Pfaff  <blp@gnu.org>
+
+       * libpspp/tower-test.c: Also test tower_last, tower_prev functions.
+
+       * libpspp/range-set-test.c: Also test the range_set_clone function.
+
+2007-05-06  Ben Pfaff  <blp@gnu.org>
+
+       Abstract the documents within a dictionary a little better.
+       Thanks to John Darrington for suggestion, initial version, and
+       review.  Patch #5917.
+
+       * command/file-label.sh: Update to match new DOCUMENT behavior.
+
+2007-04-19 John Darrington <john@darrington.wattle.id.au>
+       
+        * command/no_case_size.sh command/sysfiles-old.sh:
+       Changed tests to reflect new behaviour (case changing) when
+       reading system files with no long name table.
+
+2007-04-15  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add recode.sh to tests.
+
+       * xforms/recode.sh: New test.
+
+2007-04-03  Ben Pfaff  <blp@gnu.org>
+           John McCabe-Dansted <gmatht@gmail.com>
+       
+       * npar-binomial.sh: Be less picky about whitespace in PSPP output.
+
+       * npar-chisquare.sh: Ditto.
+
+       * very-long-strings.sh: Ditto.
+
+2007-04-03  Ben Pfaff  <blp@gnu.org>
+
+       Apply patches #5828, #5837, #5841, #5843.
+
+       * automake.mk (tests_libpspp_bt_test_LDADD): Add range-map-test,
+       range-set-test, tower-test.
+
+       * libpspp/range-map-test.c: New test.
+
+       * libpspp/range-set-test.c: New test.
+
+       * libpspp/tower-test.c: New test.
+
+2007-03-31  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk (tests_libpspp_bt_test_LDADD): Add tests/libpspp/bt.
+
+       * libpspp/bt-test.c: New test.
+
+2007-03-25  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add tests/libpspp/sparse-array-test.
+
+       * libpspp/sparse-array-test.c: New test.
+
+2007-03-18  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Don't try to distribute tests that are compiled
+       from C source.  This fixes "make dist" when "make all" has not yet
+       been run.
+
+Mon Feb 12 06:29:30 2007  Ben Pfaff  <blp@gnu.org>
+
+       * libpspp/ll-test.c, libpspp/llx-test.c: Include <config.h>.
+
+Sat Feb  3 21:57:34 2007  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add tests/command/vector.sh.
+
+       * command/vector.sh: New test.
+
+Wed Jan 24 21:13:53 2007  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add tests/libpspp/abt-test.
+
+       * libpspp/abt-test.c: New test.
+
+       * libpspp/heap-test.c, libpspp/ll-test.c, libpspp/llx-test.c:
+       Style fixes.
+
+Wed Jan 10 06:50:01 2007  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add tests/libpspp/heap-test.
+
+       * libpspp/heap-test.c: New test.
+
+Wed Dec 13 21:00:46 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/rank.sh (activity): Use DELETE VAR (which is new)
+       instead of MODIFY VARS.
+
+Tue Dec 19 08:17:28 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/loop.sh: Test all the possible combinations of clauses.
+
+Sat Dec 16 14:00:48 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/rank.sh: Fix test to allow string grouping variables.
+       See bug #18533.
+
+Sat Dec 16 12:20:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/expressions.sh: Fix DATEDIFF function tests to
+       correspond with change to DATEDIFF.
+
+Wed Dec 13 19:34:29 2006  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/expressions.sh: Test DATEDIFF, DATESUM functions.
+
+Sun Dec 10 16:52:04 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add new test.
+
+       * expressions/valuelabel.sh: New test, for VALUELABEL function.
+
+Thu Nov 30 22:46:17 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add new test.
+
+       * bugs/compute-sum.sh: New test, for bug #17422.
+
+Thu Nov 30 22:01:57 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add new test.
+
+       * bugs/empty-do-repeat: New test, for bug #18407.
+
+Wed Nov 22 06:28:04 2006  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/signals.sh: Fix race condition.
+
+Sun Nov 19 09:23:34 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add the new tests listed below.
+
+       * formats/bcd-in.sh: New test.
+
+       * formats/bcd-in.expected.cmp.gz: New support file for
+       bcd-in.sh.
+
+       * formats/date-in.sh: New test.
+
+       * formats/ib-in.sh: New test.
+
+       * formats/ib-in.expected.cmp.gz: New test.
+
+       * formats/legacy-in.sh: New test.
+
+       * formats/legacy-in.expected.cmp.gz: New support file for
+       legacy-in.sh.
+
+       * formats/month-in.sh: New test.
+
+       * formats/num-in.sh: New test.
+
+       * formats/num-in.expected.gz: New support file for num-in.sh.
+
+       * formats/time-in.sh: New test.
+
+       * formats/wkday-in.sh: New test.
+
+       * commands/no_case_size.sh: Update output to conform with
+       update scientific notation code.
+
+       * formats/num-out.expected.cmp.gz: Ditto.
+
+Thu Nov  2 20:58:12 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/data-list.sh: Test newly implement SKIP keyword on DATA
+       LIST.
+
+Sat Nov  4 16:08:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add binhex-out.sh, date-out.sh, month-out.sh,
+       num-out.sh, time-out.sh, wkday-out.sh from formats directory.  Add
+       formats/inexactify as a program needed by tests.
+
+       * command/no_case_size.sh: Update output to conform with updated
+       formatted output code.
+
+       * expressions/expressions.sh: Ditto.
+
+       * formats/binhex-out.sh: New test.
+
+       * formats/date-out.sh: New test.
+
+       * formats/month-out.sh: New test.
+
+       * formats/num-out.sh: New test.
+
+       * formats/time-out.sh: New test.
+
+       * formats/wkday-out.sh: New test.
+
+Sun Oct 29 14:03:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       * ll-test.c, llx-test.c: Reduce verbosity of output.
+
+Thu Oct 26 20:20:39 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add tests/formats/float-format.sh.
+
+       * formats/float-format.sh: New test.
+
+Sat Oct  7 11:06:59 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * command/rank.sh: New file 
+
+Sun Jul 16 21:08:51 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/print.sh: Update output to match PRINT revisions.
+
+Wed Jul 12 10:07:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Put ll-test, llx-test in check_PROGRAMS instead of
+       noinst_PROGRAMS.
+
+Wed Jul  5 22:15:24 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add expressions/randist/compare.pl to EXTRA_DIST.
+
+Tue Jul  4 09:59:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
+       ALL) and additional underlying system file issues.
+       
+       * automake.mk: Add keep-all.sh to TESTS.
+       
+       * bugs/keep-all.sh: New test.
+
+Mon Jul  3 21:09:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       Modify the random distributions test to verify to 2 more decimal
+       places of accuracy, but to allow +/- 1 units in the last (tested)
+       place.  This allows the test to pass on machines or with compilers
+       whose calculated values are off by epsilon from the expected
+       results.  Because of the way the test is constructed, this was
+       quite common and often caused gratuitous test failures.
+
+       This is patch #5215, tested by Jason Stover and John Darrington.
+        
+       * expressions/randist.sh: Use compare.pl to do comparisons.
+
+       * expressions/randist/compare.pl: New script to do comparisons.
+
+       * expressions/randist/randist.pl: Print output to 4 decimal
+       places, not just 2.  Also, print a brief explanatory header at the
+       top of each output file.
+
+       * expressions/randist/*.out: Replace with new expected output.
+
+Sat Jul  1 15:33:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       * automake.mk: Add ll-test, llx-test to TESTS.
+       
+       * libpspp/ll-test.c: New file.
+
+       * libpspp/llx-test.c: New file.
+
+Sun May  7 18:15:52 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/do-repeat.sh: Only use "A TO B" for increasing runs of
+       integers, which is all we now support (for closer compatibility).
+
+Wed Apr 26 13:36:42 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/missing-values.sh: Update output to match behavior
+       changes.
+
+Mon Apr  3 12:32:36 2006  Ben Pfaff  <blp@gnu.org>
+
+       * Updated tests to match changes in output formatting.
+
+2006-03-23  Jason Stover  <jhs@math.gcsu.edu>
+
+       * command/regression.sh: New test.
+
+Sat Mar 11 14:16:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * Updated the tests to use the new location of the pspp binary.
+       * Made all the tests work as stand-alone scripts.
+
+Sun Feb 12 19:07:24 2006  Ben Pfaff  <blp@gnu.org>
+
+       * command/do-repeat.sh: New test.
+
+       * bugs/terminate.sh: Removed (no longer applicable).
+
+Fri Nov  4 19:30:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/recode-bug.sh: Improve failure reports.
+
+Wed Nov  2 21:54:11 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/loop.sh: Update expected error messages.
+
+Sun Aug 21 00:20:02 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/import-export.sh: Simplify.
+
+       * command/sysfiles-old.sh: Use version 2, not 3x.
+
+Sat Aug  6 17:32:39 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/missing-values.sh: New test.
+
+       * Makefile.am: Add new test.
+
+Mon Aug  1 21:51:46 2005  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/big-input-2.sh: Don't use 1...100000 (etc.) with Perl
+       because that may allocate a large amount of memory.
+
+Mon Aug  1 21:48:54 2005  Ben Pfaff  <blp@gnu.org>
+
+       * xforms/expression.sh: Break this monolithic test up into 36
+       subtests to give a better idea of what's failing in some cases.
+
+Sat Jul 30 21:54:23 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/sys-info.sh: Removed.  (This was not actually in TESTS
+       in Makefile.am, so it was never called.  command/sysfile-info.sh
+       does what it was trying to do, but better.)
+       
+Sat Jul 30 21:50:33 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fixes for Solaris.
+
+       * Most tests: Add `cd /' before `rm -rf $TEMPDIR' because some
+       OSes do not allow the current working directory to be removed.
+
+       * bugs/big-input-2.sh: Use perl instead of a shell loop, because
+       the shell loop was very slow on Solaris.
+
+       * command/sort.sh: Use `printf' instead of `echo -n' for
+       portability. 
+       
+Sat Jul 30 21:48:37 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add coverage.sh, temp_template to EXTRA_DIST.
+
+Sun Jul 24 20:35:04 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/sysfile-info.sh: Add "-b -B -w" to diff command line.
+       Fixes apparent failure under Cygwin.  Thanks to John Darrington
+       <john@cellform.com.au> for reporting this problem.
+
+Mon Jul  4 18:02:44 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/sysfile-info.sh: Don't verify endianness.  Fixes bug
+       reported by "Marshall DeBerry" <mdb@radix.net>.
+
+Mon Jun  6 22:40:10 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/print.sh: Get rid of RBHEX output.  It wasn't worth
+       much.  Fixes bug 12312.
+
+Tue May 10 19:59:10 2005  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/agg-crash-2.sh: Fix output given bug 13054.
+
+Wed May  4 23:50:02 2005  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/match-files-scratch.sh: New test for bug 12948.
+
+       * Makefile.am: (TESTS) Add bugs/match-files-scratch.sh.
+
+Sun May  1 23:18:37 2005  Ben Pfaff  <blp@gnu.org>
+
+       Most tests: changed capitalization of variable names in
+       definitions or in output, because now we preserve it.
+
+Mon Apr 25 23:30:17 2005  Ben Pfaff  <blp@gnu.org>
+
+       * commands/match-files.sh: New test.
+
+       * Makefile.am: (TESTS) Add commands/match-files.sh.
+
+Sun Apr 17 16:38:00 2005  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.stat, data-fmts.stat, do-if.stat, do-repeat.stat,
+       gengarbage.c, inpt-pgm.stat, mdfy-vars.stat, means.stat,
+       mtch-file.stat, pcs-if.stat, recode.stat, repeating.stat,
+       reread.data, reread.stat, sys-info.stat, t-test.stat,
+       temporary.stat, time-date.stat, vector.stat: Removed because they
+       were unused.
+
+       * Makefile.am: Removed sort.data references.  Fixed up
+       DISTCLEANFILES.
+
+Sun Mar 20 14:16:31 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command/aggregate.sh: Rewrite.
+
+Mon Mar 14 21:58:23 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (TESTS_ENVIRONMENT) Add PERL to the test
+       environment.
+
+       * commands/sort.sh: Rewrite to test more thoroughly and to verify
+       that the sort is stable.
+       
+Sat Mar 12 23:30:37 2005  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/agg-crash-2.sh, bugs/big-input-2.sh, command/aggregate.sh:
+       Fix AGGREGATE command syntax.
+
+Sat Mar 12 13:16:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/temp-freq.sh: Add another test.
+
+Fri Mar 11 10:40:41 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/expressions.sh: Add another test.
+
+Sun Mar  6 19:30:14 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/vectors.sh: New test.
+
+       * Makefile.am: Add expressions/vectors.sh.
+
+Sun Mar  6 17:56:27 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/expressions.sh: Add tests for generic optimizations.
+
+Sun Mar  6 11:03:58 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Add expressions/variables.sh.  Remove expr.stat.
+
+       * expr.stat: Removed.
+
+'Mon Feb 28 23:31:16 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Removed xforms/expressions.sh.  Added
+       expressions/expressions.sh, expressions/epoch.sh,
+       expressions/randist.sh.
+
+       * command/print.sh: Update error messages.
+
+Sun Feb 13 16:15:09 2005  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/agg-crash-2.sh: Add new test for Bug #11955.
+
+Fri Feb 11 23:27:08 2005  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/crosstabs-crash.sh: Add new test for Bug #11916.
+
+Tue Jan 18 19:25:24 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * Canonicalised (some of) the tests' temp file names to make it
+       easier to recognise valgrind ouput.
+
+Sun Jan  9 16:39:08 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * bugs/big-input-2.sh Made the test a bit faster
+
+John Darrington <john@darrington.wattle.id.au>
+
+       * command/examine.sh Added
+       
+Mon Nov 15 23:52:55 2004  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/random.sh: Update expected random values to reflect the GSL
+       random number generator.
+
+Sat Nov  6 14:49:27 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * command/oneway-with-splits.sh  Added.
+
+Sun Oct 31 16:08:47 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * bugs/recode-copy-bug.sh bugs/computebug.sh  Fixed problem which 
+       caused make distcheck to not know where some critical files were.
+
+Mon May 31 21:49:19 2004  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/t-test-with-temp.sh: Use $SUPERVISOR.
+
+       * bugs/t-test-1-indep-val.sh: Ditto.
+
+       * bugs/t-test-1-sample-missing-anal.sh: Ditto.
+       
+       * bugs/t-test-1-sample-missing-list.sh: Ditto.
+
+       * bugs/t-test-1s.sh: Ditto.
+
+       * bugs/t-test-groups.sh: Ditto.
+
+       * bugs/t-test-indep-missing-anal.sh: Ditto.
+
+       * bugs/t-test-indep-missing-list.sh: Ditto.
+
+       * bugs/t-test-paired-missing-anal.sh: Ditto.
+
+       * bugs/t-test-paired-missing-list.sh: Ditto.
+
+       * bugs/t-test-pairs.sh: Ditto.
+
+Sun May 30 19:18:26 2004  Ben Pfaff  <blp@gnu.org>
+
+       * command/tabs.sh: Default tab width is now 4.
+
+       * command/data-list.sh: New test.
+
+       * Makefile.am: (TESTS) Add command/data-list.sh.
+
+Sun Apr 11 14:21:16 2004  Ben Pfaff  <blp@gnu.org>
+
+       * stats/moments.sh: Now that our one-pass moments algorithm is
+       better we don't have to omit any of the test cases for it.
+
+Fri Apr  9 20:03:33 2004  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (TESTS) Add stats/descript-mean-bug.sh.
+
+       * stats/descript-mean-bug.sh: Add test for a bug where
+       DESCRIPTIVES asking only for the mean assert-failed.
+
+Sat Apr  3 11:42:31 2004  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (TESTS) Add bugs/comment-at-eof.sh.  Alphabetize
+       test order.
+       
+       * bugs/comment-at-eof.sh: Add test for a bug where a comment at
+       end of file caused an infinite loop.
+
+Sat Mar 27 11:29:06 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * bugs/get.sh Added regression test for a bug in loading a dictionary
+       with the GET command.
+
+Tue Mar 30 22:10:08 2004  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (TESTS) Add bugs/multipass.sh.
+
+Mon Mar 29 15:25:09 2004  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (TESTS) Add xforms/casefile.sh,
+       stats/descript-basic.sh, stats/descript-missing.sh,
+       stats/moments.sh.  Remove command/descriptives.sh.
+
+       * command/descriptives.sh: Removed.
+
+       * command/weight.sh: Fix output (statistic values were wrong!).
+
+       * stats/descript-basic.sh: New test.
+       
+       * stats/descript-missing.sh: New test.
+       
+       * stats/moments.sh: New test.
+
+       * xforms/casefile.sh: New test.
+
+       * xforms/expressions.sh: Cleans up after itself now.
+
+Fri Mar 26 00:55:48 2004  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (TESTS) Add xforms/expressions.sh, remove
+       command/compute.sh.
+
+       * command/beg-data.sh: Remove REMARK usage.
+
+       * command/bignum.sh: Ditto.
+
+       * command/list.sh: Ditto.
+
+       * command/print.sh: Ditto.
+
+Sat Mar 20 18:11:15 2004  Ben Pfaff  <blp@gnu.org>
+
+       * command/list.sh: Update output.
+
+       * command/print.sh: Ditto.
+
+       * command/weight.sh: Ditto.
+
+Sun Mar 14 23:04:14 2004  Ben Pfaff  <blp@gnu.org>
+
+       * command/sort.sh: Use numeric, not string, data to avoid spurious
+       valgrind complaints.
+
+Wed Mar 10 21:22:03 2004  Ben Pfaff  <blp@gnu.org>
+
+       * bugs/temporary.sh: Test that basic use of TEMPORARY works.
+
+Mon Feb 16 21:36:57 2004  Ben Pfaff  <blp@gnu.org>
+
+       * */*.sh: Prepend $SUPERVISOR to invocations of pspp so that we
+       can run valgrind or gdb easily with `make check'
+
+Sat Dec 13 00:08:23 2003  Ben Pfaff  <blp@gnu.org>
+
+       * syntax: Run a diff when there's no expected output, too.
+
+Fri Jan  7 20:30:23 2000  Ben Pfaff  <blp@gnu.org>
+
+       * data-fmts.stat: Add more date tests.
+
+       * do-repeat.stat: SET ECHO ON.
+
+       * syntax: Replace test -L with test -h.
+
+Tue Jan  5 14:21:52 1999  Ben Pfaff  <blp@gnu.org>
+
+       * data-list.stat, data-list.data: Adjust so that it can tell if
+       DATA LIST FREE properly parses and pads string values.
+
+       * list.stat: Remove anachronistic `SET EMULATION PC'.
+
+       * Rebuilt benchmark.
+
+Tue Jan  5 14:12:58 1999  Ben Pfaff  <blp@gnu.org>
+
+       * syntax: Replaced `test' calls with `['.  This may or may not fix
+       the problems some people have reported.
+
+Sun Aug  9 11:15:38 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Update for renamed files.
+
+       * autorecode.stat: Renamed autorecod.stat.
+
+       * begin-data.stat: Renamed beg-data.stat.
+
+       * data-formats.stat: Renamed data-fmts.stat.
+
+       * expression.stat: Renamed expr.stat.
+
+       * file-label.stat: Renamed file-lab.stat.
+
+       * input-program.stat: Renamed inpt-pgm.stat.
+
+       * modify-vars.stat: Renamed mdfy-vars.stat.
+
+       * match-files.stat: Renamed mtch-file.stat.
+
+       * process-if.stat: Renamed pcs-if.stat.
+
+       * split-file.stat: Renamed splt-file.stat.
+
+       * sysfile-info.stat: Renamed sys-info.stat.
+
+       * expect/: Refreshed.
+
+Sat Aug  8 00:27:07 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Add `syntax'.
+       (dist-hook) New target.
+
+Wed Aug  5 00:04:16 1998  Ben Pfaff  <blp@gnu.org>
+
+       * TEST-RESULTS: Removed.
+
+       * show-check-msg: Removed.
+
+       * expect/: New.
+
+       * syntax: New.  Thanks to James R. Van Zandt <jrv@vanzandt.mv.com>
+       for this implementation of automatic testing.
+
+       * Makefile: (TESTS) Set to the syntax script.
+       (bench) New target.
+       (EXTRA_DIST) Remove TEST-RESULTS.  Add `syntax'.
+
+Sun Jul  5 14:16:18 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Add flip.stat.
+
+Sun Jul  5 00:50:41 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.stat: Change to test /MISSING=REPORT.
+
+Tue Jun  2 23:42:23 1998  Ben Pfaff  <blp@gnu.org>
+
+       * flip.stat: New file.
+       
+       * weighting.stat: Update.
+
+Mon May 25 12:45:46 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Add crosstabs.stat, match-files.stat.
+
+       * crosstabs.stat: Turn off cells=all.
+
+Tue May 12 16:22:06 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.stat: Minor changes.
+
+Thu May  7 23:16:03 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.stat: Replace with a test that is hopefully better.
+
+Tue Apr 14 01:00:46 1998  Ben Pfaff  <blp@gnu.org>
+
+       * crosstabs.stat: New.
+
+Mon Mar  9 15:40:25 1998  Ben Pfaff  <blp@gnu.org>
+
+       * match-files.stat: More thorough.
+
+Mon Mar  9 01:14:14 1998  Ben Pfaff  <blp@gnu.org>
+
+       * match-files.stat: More thorough.
+
+1998-03-05  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Use ./gengarbage instead of gengarbage.
+
+1998-02-23  Ben Pfaff  <blp@gnu.org>
+
+       * Many tests: Remove final finish command.
+
+1998-02-16  Ben Pfaff  <blp@gnu.org>
+
+       * (DISTCLEANFILES) Clean *.save, pspp.*, foo*
+
+       * file-label.stat, sysfile-info.stat: Replace .sav with .save.
+
+       * match-files.stat: New file.
+       
+Fri Feb 13 15:58:11 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Add TEST-RESULTS.
+
+Tue Jan 13 01:11:36 1998  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.stat: Some more testing.
+
+Sat Jan 10 23:57:14 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (DISTCLEANFILES) Add aggregate.save.
+
+       * aggregate.stat: Slightly more thorough.
+
+Sat Jan 10 02:17:00 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Add means.stat, t-test.stat.
+       
+       * means.stat: New file.
+
+Thu Jan  8 22:38:59 1998  Ben Pfaff  <blp@gnu.org>
+
+       * Many tests: Removed extra newlines from REMARKs.
+
+Mon Jan  5 11:18:44 1998  Ben Pfaff  <blp@gnu.org>
+
+       * sysfile-info.stat: Test most of the DISPLAY commands.  Update
+       title.
+
+       * vector.stat: Display vectors.
+
+Sun Jan  4 18:31:36 1998  Ben Pfaff  <blp@gnu.org>
+
+       * All tests: Added title.
+
+       * begin-data.stat: Updated REMARK format.
+
+       * descript.stat: Comment fix.
+
+Sun Dec 21 16:57:31 1997  Ben Pfaff  <blp@gnu.org>
+
+       * TEST-RESULTS: New file.
+
+Fri Dec  5 22:02:20 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (DISTCLEANFILES) Add fiasco.html.
+
+Tue Dec  2 14:55:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * t-test.stat: New file.
+
+Fri Nov 14 00:17:25 1997  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.stat: Changed.      
+
+Tue Oct 28 16:26:25 1997  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.stat: New file.
+
+       * Makefile.am: (EXTRA_DIST) Add aggregate.stat.
+
+Sun Oct  5 16:02:02 1997  Ben Pfaff  <blp@gnu.org>
+
+       * fall92.stat, fall92.data: Removed (unknown copyright).
+
+       * gengarbage.c: Define EXIT_SUCCESS if not defined by headers.
+       From Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+Sat Oct  4 16:35:59 1997  Ben Pfaff  <blp@gnu.org>
+
+       * repeating.stat: New file.
+
+       * Makefile.am: (EXTRA_DIST) Add repeating.stat.
+
+Thu Sep 18 21:40:50 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Add lag.stat.
+
+Mon Aug 18 18:31:42 1997  Ben Pfaff  <blp@gnu.org>
+
+       * do-repeat.stat: Even more useful.
+
+       * lag.stat: New file.
+
+Sun Aug 17 22:47:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * do-repeat.stat: Made actually useful, not stupid.
+
+Sun Aug  3 11:46:00 1997  Ben Pfaff  <blp@gnu.org>
+
+       * In several files, replace usage of deprecated term `script' by
+       `syntax file'.
+
+Thu Jul 17 02:12:17 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Add tabs.stat.
+
+       * file-label.stat: Improved.
+
+       * sysfile-info.stat: Tests DISPLAY DICTIONARY now as well.
+
+Fri Jul 11 14:13:49 1997  Ben Pfaff  <blp@gnu.org>
+
+       * gengarbage.c: Reformat.  #include's <time.h>.  Uses ANSI C
+       rand() in place of random().  Calls the randomizer srand().
+
+Thu Jul 10 22:16:34 1997  Ben Pfaff  <blp@gnu.org>
+
+       * tabs.stat: New file.
+
+Wed Jun 25 22:54:40 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (EXTRA_DIST) Removed bug.stat, file-type.stat.
+
+Sun Jun  8 01:24:55 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Added fiasco.ps, fiasco.list, foo, foo.sav, msgs to
+       DISTCLEANFILES.
+
+       * input-program.stat: Made some variables scratch.
+
+Fri Jun  6 22:53:03 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Many files: Comment fixes, removed `set output raw.' commands.
+
+       * Other miscellaneous changes.
+
+Tue Jun  3 23:44:46 1997  Ben Pfaff  <blp@gnu.org>
+
+       * list.stat: Re-enabled some of it.
+
+Wed Apr 23 21:33:48 1997  Ben Pfaff  <blp@gnu.org>
+
+       * sysfile-info.stat: A little more generalized now.
+
+Fri Apr 18 15:42:22 1997  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Maintainer-clean Makefile.in.
+       
+Thu Mar 27 01:11:29 1997  Ben Pfaff  <blp@gnu.org>
+
+       * gengarbage.pl: Removed.
+       
+Sat Feb 15 21:26:53 1997  Ben Pfaff  <blp@gnu.org>
+
+       * descript.stat: Syntax fixes.
+
+       * process-if.stat: New test for PROCESS IF.
+
+Sun Jan 19 14:22:11 1997  Ben Pfaff  <blp@gnu.org>
+
+       * autorecode.stat, modify-vars.stat: More thorough.
+
+       * data-formats.stat, file-label.stat: New tests.
+       
+Thu Jan 16 13:08:57 1997  Ben Pfaff  <blp@gnu.org>
+
+       * bug.stat: Comment fix.
+
+Wed Jan  1 22:08:10 1997  Ben Pfaff  <blp@gnu.org>
+
+       * filter.stat: New file; tests FILTER behavior.
+
+Wed Jan  1 17:00:59 1997  Ben Pfaff  <blp@gnu.org>
+
+       * gengarbage.pl: New perl program equivalent to gengarbage.c.
+
+Sun Dec 29 21:36:48 1996  Ben Pfaff  <blp@gnu.org>
+
+       * gengarbage.c: Changed.
+
+       * sort.stat: Changed.
+
+Sun Dec 22 23:10:39 1996  Ben Pfaff  <blp@gnu.org>
+
+       * sort.stat: New file.
+
+Fri Dec 13 21:30:53 1996  Ben Pfaff  <blp@gnu.org>
+
+       * autorecode.stat: New file.
+
+       * fall92.stat: Mods for practicality.
+
+       * test.bat, testall.bat: Removed.
+       
+Thu Nov 28 23:14:07 1996  Ben Pfaff  <blp@gnu.org>
+
+       * list.stat, weighting.stat: Changed SET COMPATIBILITY subcommand
+       to SET EMULATION in anticipation of change.
+
+Sat Oct 26 23:06:06 1996  Ben Pfaff  <blp@gnu.org>
+
+       * recode.stat: Removed comment about bug, since I fixed that.
+
+Thu Oct 24 20:13:42 1996  Ben Pfaff  <blp@gnu.org>
+
+       * print.stat: Slightly more thorough.
+
+Thu Oct 24 17:47:14 1996  Ben Pfaff  <blp@gnu.org>
+
+       * time-date.stat: Slightly more thorough.
+
+Wed Oct 23 21:53:43 1996  Ben Pfaff  <blp@gnu.org>
+
+       * time-date.stat: New file.
+
+Thu Sep 26 22:20:26 1996  Ben Pfaff  <blp@gnu.org>
+
+       * list.data: More data.
+
+       * list.stat: Handles all that extra data.
+
+       * weighting.stat: Doesn't try to list $WEIGHT because PC+ isn't
+       quite supported yet.
+
+Wed Sep  4 21:45:35 1996  Ben Pfaff  <blp@gnu.org>
+
+       * weighting.stat: Tests for proper ligatures.  Won't work until
+       encodings are correct, of course...
+
+----------------------------------------------------------------------
+Local Variables:
+mode: change-log
+version-control: never
+End:
index 1dd783238fe6011ff710c5c2460e29217640a606..6fb11d02e46d12735160bf74754c4b38b71cf6a0 100644 (file)
@@ -311,8 +311,11 @@ EXTRA_DIST += \
 
 CLEANFILES += *.save pspp.* foo*
 
-dist-hook:
+DIST_HOOKS += check-for-export-var-val
+check-for-export-var-val:
        @if grep -q 'export .*=' $(dist_TESTS) ; then \
         echo 'One or more tests contain non-portable "export VAR=val" syntax' ; \
         false ; \
        fi
+
+EXTRA_DIST += tests/OChangeLog