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