X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2FChangeLog;h=396ef1ca68fd0ab2f83d8d1a3053972260f2559c;hb=8c3d1da71a10a31270d669d7410e52a7c66ed396;hp=470e89692a3ad231f6bb19b980bd9a5c1a5e0546;hpb=4f2f805c653f0dc901924944ea4c55309ff14d32;p=pspp-builds.git diff --git a/src/data/ChangeLog b/src/data/ChangeLog index 470e8969..396ef1ca 100644 --- a/src/data/ChangeLog +++ b/src/data/ChangeLog @@ -1,3 +1,624 @@ +2007-07-22 Ben Pfaff + + * sys-file-reader.c (read_variable_to_value_map): Use max_warnings + local variable instead of literal 5. + +2007-07-22 Ben Pfaff + + 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. + +2007-07-22 Ben Pfaff + + * 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. + +2007-07-18 John Darrington + + * 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 + + * sfm-reader.c: Respect case_cnt field in file header. + +2007-07-01 John Darrington + + * transformation.c transformation.h (trns_chain_execute): Changed the + signature (Patch #6057) + +2007-06-10 Ben Pfaff + + * 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 + + 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 + + Add datasheet code. + + * automake.mk: Add new files. + + * datasheet.c: New file. + + * datasheet.h: New file. + +2007-06-06 Ben Pfaff + + 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 + + * value.h (value_cnt_from_width): New function. + + * variable.c (var_get_value_cnt): Use new function. + +2007-06-06 Ben Pfaff + + 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 + + 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 + + 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 + + "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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + * category.c: Removed redundant #include + +2007-05-06 Ben Pfaff + + 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 + + * 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 + + * 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 + + * Deleted existing category.h and moved cat-routines.h into + category.h Encapsulated struct cat_vals better. + +2007-04-19 John Darrington + + * 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 + + * 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 + + * procedure.c: Adapt to new deque data structure. + +Mon Feb 19 10:53:21 2007 John McCabe-Dansted + Ben Pfaff + + * 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 + + * make-file.c: Don't include mkstemp.h, because gnulib now causes + to have the same effect. + +Sun Feb 18 11:20:24 2007 Ben Pfaff + + * por-file-reader.c: Add missing _() around messages. + +Sun Feb 11 20:44:13 2007 Ben Pfaff + + * make-file.c: Include "mkstemp.h", without which linking on + mingw32 fails. + +Thu Feb 8 14:59:05 2007 Ben Pfaff + + 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 + + * dictionary.c (dict_create_vector_assert): New function. + +Wed Feb 7 21:25:15 2007 Ben Pfaff + + * file-name.c (fn_normalize): Correct name of function + fn_is_special. Thanks to John McCabe-Dansted + for pointing this out. + +Thu Feb 1 16:53:37 2007 Ben Pfaff + + 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 + + * case.c (case_is_null): Change return type to bool. + +Mon Jan 15 10:57:28 2007 Ben Pfaff + + 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 + + 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 + + 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 + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + 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 * sys-file-reader.c (read_display_parameters): Don't assume that