+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.
+