* automake.mk: Add new file.
[pspp-builds.git] / src / data / ChangeLog
index 73cf8a1caa56450264f00faa09577db992914942..7ddf9fd280b87705dea1bbf3fa4d8387447aec69 100644 (file)
@@ -1,4 +1,235 @@
-2007-08-27  John Darrinton <john@darrington.wattle.id.au>
+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).
        dict_make_compactor.
        (scratch_writer_casewriter_write): Use case_map_execute instead of
        dict_compactor_compact.
-o
+
 2007-08-12  Ben Pfaff  <blp@gnu.org>
 
        * automake.mk: Add case-map.c, case-map.h.