Start generating ChangeLog automatically from Git commit messages.
[pspp-builds.git] / src / data / ChangeLog
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