+++ /dev/null
-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