Rewrite system file reader code, to clean up and improve.
[pspp-builds.git] / src / data / ChangeLog
1 Sun Dec 10 14:21:29 2006  Ben Pfaff  <blp@gnu.org>
2
3         * sfm-private.h: Move contents into sys-file-writer.c, which is
4         the only remaining user.  Removed Borland C++-specific directives.
5         
6         * sys-file-reader.c: Clean up and rewrite entire file.  The
7         rewritten version is simpler and better abstracted, and should be
8         easier to maintain and extend.  It avoids using structures to read
9         file data, which is prone to padding variations among compilers.
10         It should also handle non-IEEE 754 system files, although I
11         haven't been able to find any.  It has been tested against many
12         .sav files obtained from the Web and found to produce the same
13         results as the earlier version of the code, or in some cases
14         improved results.  It is more tolerant of format variations found
15         in the wild.
16
17         * sys-file-reader.h (struct sfm_read_info): Removed `big_endian'
18         member, putting an enum integer_format in its place.  New member
19         `float_format'.  Changed `compressed' member to type bool.
20
21 Sun Dec 10 13:48:53 2006  Ben Pfaff  <blp@gnu.org>
22
23         * dictionary.c (dict_delete_consecutive_vars): New function.
24
25 Sat Dec  9 20:08:25 2006  Ben Pfaff  <blp@gnu.org>
26
27         * file-name.c (fn_search_path): Remove prefix arg that was unused
28         by any caller.  Updated all callers.
29
30 Sat Dec  9 20:04:22 2006  Ben Pfaff  <blp@gnu.org>
31
32         * format.c (fmt_dollar_template): Use user's decimal point
33         character.  Add assertion.
34
35 Sat Dec  9 20:02:25 2006  Ben Pfaff  <blp@gnu.org>
36
37         * format.c (fmt_dollar_template): New function, based on
38         dollar_format_template from var-type-dialog.c.
39
40 Sat Dec  9 18:05:59 2006  Ben Pfaff  <blp@gnu.org>
41
42         * data-out.c (output_scientific): Fix bad assumption that "buf" is
43         null-terminated.
44         
45 Sat Dec  9 17:23:23 2006  Ben Pfaff  <blp@gnu.org>
46
47         Finish converting struct variable to an opaque type.  In this
48         phase, we add remaining setter and getter functions, convert the
49         remaining PSPP code to use them, and do a bunch of cleanup.  The
50         resulting changes are pervasive but mostly trivial, and only the
51         notable changes are logged.
52         
53         * automake.mk (src_data_libdata_a_SOURCES): Add the new source
54         files.
55         
56         * case.c (case_data): Renamed case_data_idx.
57         (case_num): Renamed case_num_idx.
58         (case_str): Renamed case_str_idx.
59         (case_data_rw): Renamed case_data_rw_idx.
60
61         * case.h (case_data): New function with old name and an interface
62         that takes a variable instead of an index, which is easier to
63         use.  Updated all callers to use the new interface, or to use the
64         new *_idx function (see above).
65         (case_num): Ditto.
66         (case_str): Ditto.
67         (case_data_rw): Ditto.
68         
69         * category.c (cat_stored_values_destroy): Changed interface to
70         take a struct cat_vals * instead of a struct variable *.
71
72         * dictionary.c (dict_clone): Use new vector_clone function.     
73         (dict_clear) Use new var_destroy function.
74         (add_var) New function.
75         (dict_create_var) Rewrite in terms of dict_create_var_assert.
76         (dict_create_var_assert) Rewrite in terms of add_var.
77         (dict_clone_var) Rewrite in terms of dict_clone_var_assert.
78         (dict_clone_var_assert) Rewrite in terms of var_clone, add_var.
79         (dict_lookup_var) Use new var_create, var_destroy functions.
80         (dict_contains_var) Rewrite in terms of new vardict functionality.
81         (set_var_dict_index) New function.
82         (set_var_case_index) New function.
83         (reindex_vars) New function.
84         (dict_delete_var) Rewrite in terms of new vardict functionality.
85         (dict_reorder_var) Ditto.
86         (dict_reorder_vars) Ditto.
87         (rename_var) New function.
88         (dict_rename_var) Use rename_var.
89         (dict_rename_vars) Use pool to simplify code.  Use rename_var.
90         (dict_get_compacted_idx_to_fv) Rename
91         dict_get_compacted_dict_index_to_case_index, update callers.
92         (dict_create_vector) Use new vector_create function.
93         (dict_clear_vectors) Use new vector_destroy function.
94         (set_var_short_name_suffix) Move here from variable.c, renamed
95         from var_set_short_name_suffix, make static, update caller.
96
97         * sys-file-private.c: New file.  
98         (sfm_width_to_bytes) Moved here from variable.c, renamed from
99         width_to_bytes, update callers.
100
101         * sys-file-private.h: New file.  Later it will supplant
102         sfm-private.h; for now it supplements it.
103         (macro MIN_VERY_LONG_STRING) New macro.
104         (macro EFFECTIVE_LONG_STRING_LENGTH) New macro, from value.h.
105
106         * sys-file-reader.c: Use MIN_VERY_LONG_STRING - 1 where
107         MAX_LONG_STRING was used before.
108
109         * sys-file-writer.c: Ditto.
110
111         * value-labels.c: Change the paradigm here to be that a null
112         pointer is OK for a struct val_labs * in most cases; it just
113         represents an empty set of value labels.
114         (val_labs_copy) A copy of a null set is a null set.
115         (val_labs_count) A null set has 0 labels.
116         (val_labs_replace) Change return type to void.  Rewrite for
117         simplicity.
118         (val_labs_find) A null set does not contain the value.
119         (value_to_string) Moved to variable.c, renamed var_get_value_name,
120         transposed argument order, updated all callers.
121
122         * value.c: New file.
123         (value_dup) Moved here from variable.c.
124         (compare_values) Ditto.
125         (hash_value) Ditto.
126
127         * value.h: (macro MAX_SHORT_STRING) Rewrote for simplicity.
128         (macro MAX_LONG_STRING) Removed, because it was only interesting
129         for system files, not for general code.
130         (macro MAX_VERY_LONG_STRING) Ditto.
131         (macro EFFECTIVE_LONG_STRING_LENGTH) Moved to sys-file-private.h.
132         (macro MAX_ELEMS_PER_VALUE) Removed, as it was unused.
133
134         * vardict.h: New file, for an interface between variables and
135         their dictionaries.
136
137         * variable.c: A lot of functions were moved around, for better
138         organization.
139         (struct variable) Move definition here, from variable.h.
140         (var_type_adj) Removed--makes i18n hard.
141         (var_type_noun) Ditto.
142         (var_create) New function.
143         (var_clone) New function.
144         (var_destroy) New function.
145         (var_set_name) Assert that variable is not in a dictionary.
146         (compare_var_names) Rename compare_vars_by_name and fix a couple
147         of callers who thought the args were strings.
148         (hash_var_name) Rename hash_var_by_name.
149         (compare_var_ptr_names) Rename compare_var_ptrs_by_name.
150         (hash_var_ptr_name) Rename hash_var_ptr_by_name.
151         (var_is_very_long_string) Removed, because it was only interesting
152         to system file code.
153         (var_set_missing_values) Allow the argument to be the wrong width,
154         as long as we can resize it.  Simplify callers who were doing the
155         resizing themselves.
156         (var_get_value_labels) New function.
157         (var_has_value_labels) New function.
158         (var_set_value_labels) New function.
159         (alloc_value_labels) New function.
160         (var_add_value_label) New function.
161         (var_replace_value_label) New function.
162         (var_clear_value_labels) New function.
163         (var_lookup_value_label) New function.
164         (var_get_value_name) Moved here from variable.c, renamed from
165         var_get_value_name, transposed argument order, updated all
166         callers.
167         (var_to_string) Moved here, from variable-label.c.
168         (var_set_leave) New function.
169         (var_get_leave) New function.
170         (var_must_leave) New function.
171         (var_set_short_name_suffix) Moved to dictionary.c, renamed
172         set_var_short_name_suffix.
173         (var_get_dict_index) New function.
174         (var_get_case_index) New function.
175         (var_get_obs_vals) New function.
176         (var_set_obs_vals) New function.
177         (var_has_obs_vals) New function.
178         (var_get_vardict) New function.
179         (var_set_vardict) New function.
180         (var_has_vardict) New function.
181         (var_clear_vardict) New function.
182         (value_dup) Moved to value.c.
183         (compare_values) Ditto.
184         (hash_value) Ditto.
185
186         * variable.h: (enum NUMERIC) Rename VAR_NUMERIC, update all users.
187         (enum ALPHA) Rename VAR_STRING, update all users.
188
189         * vector.c: New file.
190         (struct vector) Moved here, from variable.h.
191         (check_widths) New function.
192         (vector_create) New function.
193         (vector_clone) New function.
194         (vector_destroy) New function.
195         (vector_get_name) New function.
196         (vector_get_var) New function.
197         (vector_get_var_cnt) New function.
198         (compare_vector_ptrs_by_name) New function.
199
200         * vector.h: New file.
201
202 Sun Dec 10 11:32:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
203
204         * casefilter.c (casefilter_variable_missing): Avoided comparision of
205         string variables to SYSMIS.  Thanks to Ben Pfaff for reporting this
206         problem.
207
208 Sat Dec  9 07:18:03 WST 2006 John Darrington <john@darrington.wattle.id.au>
209
210         * value-labels.c (destroy_atoms): New function.
211         * value-labels.c (atom_create): Call destroy_atoms in atexit handler.
212
213 Thu Dec  7 17:38:26 2006  Ben Pfaff  <blp@gnu.org>
214
215         Thanks to Jason Stover for pointing out this problem.
216         
217         * data-out.c (output_number): Use gsl_finite from GSL, which is
218         portable, instead of isfinite, which is not.
219         (power256) Ditto.
220
221 Thu Dec  7 15:22:38 WST 2006 John Darrington <john@darrington.wattle.id.au>
222
223         * variable.c variable.h (value_dup): New function.
224
225 Mon Dec  4 22:20:17 2006  Ben Pfaff  <blp@gnu.org>
226
227         Start converting struct variable to an opaque type.  In this
228         phase, we add a bunch of setter and getter functions and convert
229         most of the PSPP code to use them.  The resulting changes are
230         pervasive but mostly trivial, and only the notable changes are
231         logged.
232         
233         * format.c (fmt_equal): New function.
234         
235         * variable.c (var_type_is_valid): New function.
236         (measure_is_valid) Moved here, from format.c.
237         (alignment_is_valid) Moved here, from format.c.
238         (var_get_name) New function.
239         (var_set_name) New function.
240         (width_to_type) New function.
241         (var_get_type) New function.
242         (var_get_width) New function.
243         (var_set_width) New function.
244         (var_is_numeric) New function.
245         (var_is_alpha) New function.
246         (var_is_short_string) New function.
247         (var_is_long_string) New function.
248         (var_is_very_long_string) New function.
249         (var_get_missing_values) New function.
250         (var_set_missing_values) New function.
251         (var_clear_missing_values) New function.
252         (var_has_missing_values) New function.
253         (var_is_value_missing) New function.
254         (var_is_num_missing) New function.
255         (var_is_str_missing) New function.
256         (var_is_value_user_missing) New function.
257         (var_is_num_user_missing) New function.
258         (var_is_str_user_missing) New function.
259         (var_is_value_system_missing) New function.
260         (var_get_print_format) New function.
261         (var_set_print_format) New function.
262         (var_get_write_format) New function.
263         (var_set_write_format) New function.
264         (var_set_both_formats) New function.
265         (var_get_label) New function.
266         (var_set_label) New function.
267         (var_clear_label) New function.
268         (var_has_label) New function.
269         (var_get_measure) New function.
270         (var_set_measure) New function.
271         (var_get_display_width) New function.
272         (var_set_display_width) New function.
273         (var_get_alignment) New function.
274         (var_set_alignment) New function.
275         (var_get_value_cnt) New function.
276         (var_get_leave) New function.
277         (var_get_short_name) New function.
278
279         * variable.h: (struct variable) Removed "type" and "nv" members;
280         they are now computed from "width" where needed.
281
282 Mon Dec  4 21:38:40 2006  Ben Pfaff  <blp@gnu.org>
283
284         * missing-values.c (mv_resize): Don't write beyond end of the
285         allocated buffer when resizing a long string.
286
287 Sat Dec  2 16:28:32 2006  Ben Pfaff  <blp@gnu.org>
288
289         Clean up identifier code: don't require identifier enumerations to
290         be in a particular order; make better use of string library;
291         expose less of the internals.
292                 
293         * identifier.c: (lex_skip_identifier) Rename lex_id_get_length,
294         change interface.  Updated all callers.
295         (lex_id_match) Change interface to use struct substring, update
296         all callers.
297         (lex_id_match_len) Removed.  Update callers to use lex_id_match.
298         (global array keywords[]) Make static, change form.  Update all
299         users to use lex_id_name instead.
300         (lex_is_keyword) New function.
301         (lex_id_to_token) Change interface to use struct substring, update
302         all callers.
303         (lex_id_name) New function.
304
305         * identifier.h: (T_FIRST_KEYWORD) Removed.  Changed users to call
306         lex_is_keyword instead.
307         (T_LAST_KEYWORD) Removed.
308         (T_N_KEYWORDS) Removed.
309         
310 Sat Nov 18 20:46:35 2006  Ben Pfaff  <blp@gnu.org>
311
312         * format.c: (fmt_date_template) Distinguish characters for which a
313         space is output and any date delimiter is allowed on input, from
314         those for which a space is output and only a space is allowed on
315         input.  The former is represented by X, the latter by a space.
316         Also, drop distinction between h and H, changing the former to the
317         latter.
318
319         * data-in.c: Completely rewrite internals to conform to SPSS input
320         formats as closely as possible.
321         (data_in) Changed external interface by replacing the structure
322         that was used as a single argument by a set of arguments.  Updated
323         all callers.
324         (data_in_finite_line) Removed.  Converted all callers to use plain
325         data_in.
326         (data_in_get_integer_format) New function.
327         (data_in_set_integer_format) New function.
328         (data_in_get_float_format) New function.
329         (data_in_set_float_format) New function.
330
331         * data-in.h: (enums DI_IGNORE_ERROR, DI_IMPLIED_DECIMALS) Removed.
332         (struct data_in) Removed.
333
334         * data-out.c: (output_date) Drop each component from the input as
335         it is output, to allow us to drop the distinction between h (a
336         count of hours) and H (the hour of day) template characters.
337         Also, handle new X template character.
338         (output_scientific) Follow more rational rule on when to drop
339         fraction introduced between SPSS 13 and 15.  Updated test case to
340         match new behavior.
341
342 Sat Nov 11 11:41:26 2006  Ben Pfaff  <blp@gnu.org>
343
344         Fix buffer overflow reported by John Darrington.
345
346         * data-out.c (output_bcd_integer): In case of SYSMIS, etc.,
347         realize that DIGITS is a count of nibbles, not of bytes.
348
349 Sat Nov  4 15:59:56 2006  Ben Pfaff  <blp@gnu.org>
350
351         * calendar.c (calendar_offset_to_gregorian) Also return the
352         year-of-day.  Change callers to new interface.
353
354         * data-out.c: Completely rewrite internals to conform to SPSS
355         output formats as completely as possible.
356         (data_out) Change interface to put input parameters before output
357         parameters, for consistency with the style I now prefer.  Update
358         all callers.
359         (data_out_get_integer_format) New public function.
360         (data_out_set_integer_format) New public function.
361         (data_out_get_float_format) New public function.
362         (data_out_set_float_format) New public function.
363
364         * data-out.h: New file.  Move prototype for data_out here, from
365         format.h.
366
367         * format.c: (fmt_step_width) Use equality comparison instead of
368         bitwise and, for clarity.
369         (fmt_is_string) Ditto.
370         (fmt_input_to_output) Fix categories that are translated to F
371         format.
372
373 Sun Nov  5 08:29:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
374
375         * casefilter.c casefilter.h (new files), casefile.c casefile.h 
376         casefile-private.h: Added casefilter to assist commands with missing 
377         values.
378
379 Sat Nov  4 11:47:09 2006  Ben Pfaff  <blp@gnu.org>
380
381         Implement SET ERRORS, SHOW ERRORS.  Fixes bug #17609.
382         
383         * settings.c: (route_errors_to_terminal) New variable.
384         (route_errors_to_listing) New variable. 
385         (get_error_routing_to_terminal) New function.
386         (set_error_routing_to_terminal) New function.
387         (get_error_routing_to_listing) New function.
388         (set_error_routing_to_listing) New function.
389
390         * settings.h: (SET_ROUTE_* enums) Removed, because unused.
391
392 Tue Oct 31 19:58:27 2006  Ben Pfaff  <blp@gnu.org>
393
394         * format.c: Completely rewrite, to achieve better abstraction.
395         Rewrite all references to formats in other files.
396         
397         * format.def: Rewrite and reorganize.
398
399         * settings.c: Move everything related to custom currency formats
400         into format.[ch], changing them in form, so as to group related
401         code and definitions better.  Changed all references to use the
402         new functions.
403         (static var decimal) Removed.
404         (static var grouping) Removed.
405         (static var cc) Removed.
406         (get_decimal) Removed.
407         (set_decimal) Removed.
408         (get_grouping) Removed.
409         (set_grouping) Removed.
410         (get_cc) Removed.
411         (set_cc) Removed.
412
413         * settings.h: (macro CC_CNT) Removed.
414         (macro CC_WIDTH) Removed.
415         (struct custom_currency) Removed.
416
417 Tue Oct 31 19:56:19 2006  Ben Pfaff  <blp@gnu.org>
418
419         * data-in.c (data_in): Use switch statement instead of table, to
420         avoid dependence on the order of the FMT_* enums.
421
422 Tue Oct 31 19:35:36 2006  Ben Pfaff  <blp@gnu.org>
423
424         * data-out.c: (num_to_string) Removed, because it was dead code.
425
426 Tue Oct 31 18:09:24 2006  Ben Pfaff  <blp@gnu.org>
427
428         * data-in.c (parse_trailer): Fix error message.
429
430 Sat Oct 28 11:56:50 2006  Ben Pfaff  <blp@gnu.org>
431
432         * format.c (fmt_is_binary): New function.
433
434 Thu Oct 19 22:59:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
435
436         * procedure.c procedure.h: Encapsulated the static data into a single
437         struct.  
438
439 Sat Oct 14 16:56:44 2006  Ben Pfaff  <blp@gnu.org>
440
441         * casefile.c (casereader_read_xfer): Always initialize the case,
442         even on an error condition.
443
444 Wed Sep 27 09:37:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
445
446         * procedure.c (case_limit_trns_proc): Fixed buglet which rendered the 
447         entire function useless.
448
449 Mon Sep 25 17:11:46 WST 2006 John Darrington <john@darrington.wattle.id.au>
450
451         * casefile-private.h casefile.c casefile.h fastfile.c: Created new
452         casereader method casereader_clone.   
453         
454         * procedure.c pransformations.h: Introduced new type casenum_t
455
456 Thu Sep 21 07:00:30 2006  Ben Pfaff  <blp@gnu.org>
457
458         * variable.c: (width_to_bytes) Rephrase code for clarify.
459
460 Sun Jul 16 19:52:03 2006  Ben Pfaff  <blp@gnu.org>
461
462         * format.c: (fmt_type_from_string) New function.
463         (fmt_to_string) Include decimals in output if the format has
464         decimals, even if the format type does not.  This way, we can
465         accurately reproduce incorrect formats in user output.
466         (check_common_specifier) Make the check for a bad format type an
467         assertion, so we get bug reports if they show up.  Fix message.
468         Check for decimal places with a format type that doesn't allow
469         them.
470         (check_input_specifier) Remove check for FMT_X, which has been
471         deleted.
472         (check_output_specifier) Ditto. 
473
474         * format.def: Remove FMT_T, FMT_X, FMT_DESCEND, FMT_NEWREC.
475
476         * format.h: (macro FMT_TYPE_LEN_MAX) New macro.
477         (struct fmt_desc) Use FMT_TYPE_LEN_MAX in definition.
478         (enum fmt_parse_flags) Removed.
479
480 Mon Jul 17 18:26:21 WST 2006 John Darrington <john@darrington.wattle.id.au>
481
482         * casefile.c casefile.h: Converted to  an abstract base class.
483         * casefile-private.h fastfile.c fastfile.h: New files.
484         * automake.mk procedure.c scratch-writer.c storage-stream.c
485
486 Wed Jul 12 21:02:26 2006  Ben Pfaff  <blp@gnu.org>
487
488         * procedure.c (internal_procedure): Create sink_case with only as
489         many values as the compacted dictionary.
490
491 Wed Jul 12 21:01:00 2006  Ben Pfaff  <blp@gnu.org>
492
493         Remove "debugging" code that caused plenty of false positives and
494         no true positives.
495         
496         * case.h (struct ccase): [DEBUGGING] Remove `this' member.
497
498         * case.c: Remove all references to `this' member.
499
500 Thu Jul  6 19:09:53 2006  Ben Pfaff  <blp@gnu.org>
501
502         Fix link error noted by Jason Stover.
503         
504         * storage-stream.c: Include <assert.h>.
505
506 Tue Jul  4 08:47:35 2006  Ben Pfaff  <blp@gnu.org>
507
508         Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
509         ALL) and additional underlying system file issues.
510
511         Thanks to John Darrington for review.
512
513         First problem: var_hash points to variables not owned by the
514         sys-file-reader, which the caller may free or modify.  Use an
515         array of sfm_vars instead, as done earlier (e.g. CVS version
516         1.12).
517         
518         * sys-file-reader.c (struct sfm_reader): Remove var_hash, svars
519         members and remove all code that references it.  Add vars, var_cnt
520         members.  Remove fix_specials member, which was unused.
521         (struct sfm_var) Remove name member, which was unused.
522         (sfm_close_reader) Free vars member instead of var_hash.
523         (compare_var_shortnames) Removed.
524         (hash_var_shortname) Removed.
525         (sfm_open_reader) Fill out vars array.
526         (compare_var_index) Removed.
527         (sfm_read_case) Use vars instead of var_hash.
528         
529         Second problem: we're confused about when we actually have very
530         long strings, causing us to choose incorrectly between slow path
531         and fast path in sfm_read_case.
532
533         * sys-file-reader.c: (sfm_open_reader) Only mark has_vls if we
534         have very long strings, not when we have long variable names,
535         which is an unrelated feature.
536
537 Tue Jun 27 12:06:49 2006  Ben Pfaff  <blp@gnu.org>
538
539         * variable.h: Move var_set and variable parsing declarations to
540         new header, src/language/lexer/variable-parser.h.  Modified lots
541         of files to include the new header.
542
543 Sun Jun 25 22:39:32 2006  Ben Pfaff  <blp@gnu.org>
544
545         * value-labels.c (value_to_string): When there's no value label,
546         format the variable according to its print format, instead of
547         always effectively using A or F format.
548
549 Mon Jun 19 18:05:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
550
551         * casefile.c (casefile_get_random_reader): Nasty hack to get around 
552         the mode assertion.
553
554         * format.c: Removed tortological assertion.
555
556 Fri Jun  9 12:20:09 2006  Ben Pfaff  <blp@gnu.org>
557
558         Reform string library.
559         
560         * file-name.c (fn_interp_vars): Change interface to take a
561         substring as input.  Updated all users.
562         
563 Fri Jun  9 12:11:24 2006  Ben Pfaff  <blp@gnu.org>
564
565         * format.c (measure_is_valid): Really return false when m >=
566         n_MEASURES.
567
568 Tue Jun  6 18:46:26 2006  Ben Pfaff  <blp@gnu.org>
569
570         Implement random access to casefiles, for use in GUI.
571         
572         * casefile.c: (struct casereader) Add `random', `file_ofs',
573         `buffer_ofs' members.
574         (casefile_get_random_reader) New function.
575         (read_open_file) Break part into new function
576         seek_and_fill_buffer().
577         (fill_buffer) Update buffer_ofs, file_ofs.
578         (casereader_seek) New function.
579
580 Tue May 30 19:52:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
581
582         * settings.c: Added call to i18n{done, init}.
583
584 Tue May  9 21:09:17 2006  Ben Pfaff  <blp@gnu.org>
585
586         * procedure.h: Add WARN_UNUSED_RESULT to procedure function
587         prototypes.
588
589 Tue May  9 21:08:05 2006  Ben Pfaff  <blp@gnu.org>
590
591         * casefile.c: Convert many uses of `int' to `bool'.
592
593 Sat May  6 22:49:43 2006  Ben Pfaff  <blp@gnu.org>
594
595         * transformations.c (trns_chain_destroy): Destroy chain's trns
596         member, to fix memory leak.
597
598 Sat May  6 22:48:30 2006  Ben Pfaff  <blp@gnu.org>
599
600         * storage-stream.c (storage_source_decapsulate): Destroy case
601         source to fix memory leak.
602
603 Sat May  6 22:46:47 2006  Ben Pfaff  <blp@gnu.org>
604
605         * scratch-reader.c (scratch_reader_read_case): Copy into existing
606         case passed as argument instead of initializing the argument as a
607         case.  Fixes memory leak that showed up in
608         tests/command/aggregate.sh with scratch files.
609
610 Sat May  6 22:45:55 2006  Ben Pfaff  <blp@gnu.org>
611
612         * procedure.c (proc_done): Destroy default_dict, to fix memory
613         leak.
614
615 Sat May  6 22:44:44 2006  Ben Pfaff  <blp@gnu.org>
616
617         Simplify procedure_with_splits().
618         
619         * procedure.c (struct split_aux_data): Removed case_count member.
620         (procedure_with_splits) Don't initialize case_count.
621         (split_procedure_case_func) Check whether prev_case is null
622         instead of case_count.
623         (split_procedure_end_func) Ditto.
624
625 Sat May  6 22:42:23 2006  Ben Pfaff  <blp@gnu.org>
626
627         * case.c (case_move): Do nothing if dst and src are the same
628         object.
629         (case_try_create) Merge two similar cases.
630         (case_copy) Unshare only if data must be actually copied.
631
632 Sun May  7 10:04:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
633
634         * data-in.c data-out.c dictionary.c sys-file-reader.c
635         sys-file-writer.c variable.c variable.h:  Reworked very long string
636         support for better encapsulation.
637
638 Sat May  6 19:02:00 2006  Ben Pfaff  <blp@gnu.org>
639
640         * value-labels.c (val_labs_can_set_width): New function.
641         (val_labs_set_width) Clear labels if increasing width to long
642         string.
643         (val_labs_destroy) Remove unneeded test for null.
644         
645 Sat May  6 16:14:08 2006  Ben Pfaff  <blp@gnu.org>
646
647         * value-labels.h: Remove unneeded dependency on variable.h.
648
649 Sat May  6 15:58:36 2006  Ben Pfaff  <blp@gnu.org>
650
651         Get rid of `char *c' member in union value, for cleanliness.
652         
653         * value.h: (union value) Remove `c' member.
654
655 Sat May  6 15:36:59 2006  Ben Pfaff  <blp@gnu.org>
656
657         Make dictionary compacting functions a little more general.
658         
659         * sys-file-writer.c (sfm_open_writer): Use
660         dict_compacting_would_change().
661         (does_dict_need_translation) Removed.
662
663 Sat May  6 15:35:42 2006  Ben Pfaff  <blp@gnu.org>
664
665         Make dictionary compacting functions a little more general.
666         
667         * dictionary.c (dict_needs_compaction): Rename
668         dict_compacting_would_shrink().  Update all callers.
669         (dict_compacting_would_change) New function.
670         
671 Sat May  6 14:25:49 2006  Ben Pfaff  <blp@gnu.org>
672
673         * sys-file-writer.c: (does_dict_need_translation) Fix bug:
674         inverted return value (!).
675
676 Sat May  6 13:37:52 2006  Ben Pfaff  <blp@gnu.org>
677
678         Continue reforming procedure execution.  
679
680         * procedure.c: Search and replace "vfm" by "proc".  Notably:
681         (static var vfm_source) Rename proc_source.  Update all
682         references.
683         (static var vfm_sink) Rename proc_sink.  Update all references.
684         
685 Sat May  6 12:38:55 2006  Ben Pfaff  <blp@gnu.org>
686
687         Continue reforming procedure execution.  In this phase, remove
688         PROCESS IF, which was deprecated anyway and can be easily
689         simulated with TEMPORARY followed by SELECT IF.
690
691         * procedure.c: (open_active_file) Don't call
692         add_process_if_trns().
693         (discard_variables) Get rid of redundant call to
694         proc_cancel_all_transformations().
695         (add_process_if_trns) Removed.
696         (process_if_trns_proc) Removed.
697         (process_if_trns_free) Removed.
698
699 Sat May  6 10:58:05 2006  Ben Pfaff  <blp@gnu.org>
700
701         Continue reforming procedure execution.  In this phase, add
702         `const' to the case passed to procedure()'s callback.
703
704         Updated all users of procedure() as well.
705         
706         * procedure.c: (struct write_case_data) Add "const" to ccase
707         parameter for case_func member.
708         (procedure) Add "const" to ccase parameter for proc_func
709         parameter.
710         (multipass_case_func) Make ccase parameter const.
711         (internal_procedure) Add "const" to ccase parameter for case_func
712         parameter.
713         (split_procedure_case_func) Make ccase parameter const.
714         (multipass_split_case_func) Make ccase parameter const.
715         
716 Sat May  6 10:30:33 2006  Ben Pfaff  <blp@gnu.org>
717
718         Continue reforming procedure execution.  In this phase, get rid of
719         the output code for SPLIT FILE groups in procedure.c, which really
720         shouldn't be doing any output.  Move it into the individual
721         procedures instead.  This also adds some flexibility.
722
723         Updated many users of procedure_with_splits() and
724         multipass_procedure_with_splits() to call
725         output_split_file_values() and to deal with increased use of
726         const.
727
728         * procedure.c: (struct split_aux_data) Add "const struct ccase *"
729         parameter to begin_func member.
730         (procedure_with_splits) Add "const struct ccase *" parameter to
731         begin_func parameter.  Make ccase parameter const in proc_func
732         parameter.
733         (split_procedure_case_func) Don't dump split file group.  Pass
734         case to begin_func.
735         (dump_splits) Moved to language/dictionary/split-file.c as
736         output_split_file_values().
737         (struct multipass_split_aux_data) Add "const struct ccase *"
738         parameter to split_func member.
739         (multipass_procedure_with_splits) Add "const struct ccase *"
740         parameter to split_func parameter.
741         (multipass_split_case_func) Save new SPLIT FILE case before
742         outputting case.
743         (multipass_split_output) Pass saved SPLIT FILE case to split_func.
744         
745 Fri May  5 22:48:50 2006  Ben Pfaff  <blp@gnu.org>
746
747         Continue reforming procedure execution.  Change
748         internal_procedure() so that it calls open_active_file() and
749         close_active_file(), which isolates most of the actual procedure
750         functionality.
751
752         * procedure.c: (struct write_case_data) Rename `proc_func' member
753         to `case_func' and update all references.
754         (procedure) Rewrite as one-line wrapper around
755         internal_procedure().
756         (struct multipass_aux_data) New.
757         (multipass_callback) Renamed multipass_case_func().  Use struct
758         multipass_aux_data as auxiliary data.
759         (multipass_end_func) New function.
760         (multipass_procedure) Rewrite as wrapper for internal_procedure()
761         that uses multipass_case_func, multipass_end_func.
762         (internal_procedure) Add `end_func' argument.  Move optimization
763         of trivial case in here.  Move call to open_active_file() and
764         close_active_file() in here.  Now assert that vfm_source is
765         non-null.
766         (procedure_with_splits_callback) Rename
767         split_procedure_case_func().
768         (split_procedure_end_func) New function.
769         (multipass_split_callback) Rename multipass_split_case_func.
770         (multipass_split_end_func) New function.
771         (discard_variables) No need to test for nonnull vfm_source.
772
773 Fri May  5 21:34:02 2006  Ben Pfaff  <blp@gnu.org>
774
775         Continue reforming procedure execution.  Get rid of unused member.
776
777         * procedure.c: (struct write_case_data) Remove `cases_analyzed'
778         member.
779         (write_case) Don't increment cases_analyzed.
780
781 Thu May  4 21:50:11 2006  Ben Pfaff  <blp@gnu.org>
782
783         Continue reforming procedure execution.  In this phase, move
784         procedure.c and procedure.h from src to src/data.  Update
785         makefiles and #includes accordingly.
786
787         * procedure.c: Moved here from src/.
788
789         * procedure.h: Moved here from src/.
790
791 Wed May  3 22:42:12 2006  Ben Pfaff  <blp@gnu.org>
792
793         Continue reforming procedure execution.  In this phase, get rid of
794         many global variables, consolidating procedure execution in
795         procedure.c.  Encapsulate transformations in new "struct
796         trns_chain".  Also, change implementation of N OF CASES, FILTER,
797         and PROCESS IF from special cases to transformations.
798          
799         * automake.mk: (src_data_libdata_a_SOURCES) Add transformations.c,
800         transformations.h.
801
802         * dictionary.c: (global variable default_dict) Move to
803         src/procedure.c.
804
805         * variable.h: (TRNS_*) Move to transformations.h.
806         (struct transformation) Move to transformations.c.
807
808 Thu May  4 13:47:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
809
810         * sys-file-reader.c: Fixed invalid read problems.
811
812 Tue May  2 15:57:10 2006  Ben Pfaff  <blp@gnu.org>
813
814         * storage-stream.c: Add missing function comments.
815
816 Tue May  2 15:50:21 2006  Ben Pfaff  <blp@gnu.org>
817
818         Continue reforming procedure execution.  In this phase, add some
819         new, needed functionality to storage-stream.
820
821         * storage-stream.c: (storage_source_decapsulate) New function.
822
823 Tue May  2 15:43:36 2006  Ben Pfaff  <blp@gnu.org>
824
825         * variable.c (width_to_bytes): Declarations must precede
826         statements for C90 compliance.
827
828 Tue May  2 10:42:05 WST 2006 John Darrington <john@darrington.wattle.id.au>
829
830         * data-out.c, data-in.c, variable.c, variable.h: New functions 
831         copy_mangle and copy_demangle for reading/writing cases; emulates the 
832         way SPSS deals with strings > 255 bytes.
833
834         * sys-file-reader.c sys-file-writer.c: Added support for Record 7, 
835         subtype 14 needed for strings longer than 255 bytes.
836
837         * dictionary.c, format.def, value.c : Updated to use MAX_STRING 
838         instead of literal values. Also fixed some constness issues.
839
840         * format.h: Constness
841
842         * sfm-private.h: Renamed the case_size identifier, since I discovered 
843         that SPSS's respect for this variable is very nominal.
844
845 Mon May  1 15:45:42 2006  Ben Pfaff  <blp@gnu.org>
846
847         Change case limit type from int to size_t.
848
849         * dictionary.c: (struct dictionary) Change type of case_limit
850         member.
851         (dict_get_case_limit) Change return type.
852         (dict_set_case_limit) Change parameter type.
853
854 Wed Apr 26 20:01:19 2006  Ben Pfaff  <blp@gnu.org>
855
856         * variable.h: (struct variable) Rename `reinit' member as `leave'
857         and invert sense.  Fix up all references.
858
859 Wed Apr 26 19:39:28 2006  Ben Pfaff  <blp@gnu.org>
860
861         Continue reforming procedure execution.  In this phase, break
862         procedure.c into multiple files.
863         
864         * automake.mk: (src_data_libdata_a_SOURCES) Add all the new files.
865
866         * case-sink.c: New file.
867
868         * case-sink.h: New file.
869         
870         * case-source.c: New file.
871
872         * case-source.h: New file.
873         
874         * storage-stream.c: New file.
875
876         * storage-stream.h: New file.
877
878 Wed Apr 26 14:55:19 2006  Ben Pfaff  <blp@gnu.org>
879
880         * variable.h: (struct variable) Remove `init' member and all
881         references to it from other files.  It was initialized in several
882         places, but nothing really ever used it for anything worthwhile.
883         Thanks to Jason Stover for pointing out how confusing this
884         member is.
885
886 Sun Apr 23 22:04:45 2006  Ben Pfaff  <blp@gnu.org>
887
888         Continue reforming error message support.  In this phase, get rid
889         of message "titles" and put the message text in `struct error'.
890         Now `struct error' encapsulates a message more properly.
891         
892         * casefile.c: (io_error) Use err_msg() instead of err_vmsg().
893         Format message ourselves.
894
895         * data-in.c: (vdls_error) Ditto.
896
897         * por-file-reader.c: (error) Ditto.
898
899         * sys-file-reader.c: (corrupt_msg) Ditto.
900
901 Sun Apr 16 18:49:51 2006  Ben Pfaff  <blp@gnu.org>
902
903         GNU standards require "file name" instead of "filename" in
904         documentation.  It's nice for our code to follow the convention
905         too.
906         
907         * casefile.c: (struct casefile) Rename `filename' member to
908         `file_name'.  Updated all references.
909
910         * file-name.c: [!unix] (struct file_identity) Rename
911         normalized_filename member to normalized_file_name.  Updated all
912         references.
913
914 Sun Apr 16 18:35:33 2006  Ben Pfaff  <blp@gnu.org>
915
916         We don't really support anything but Unix-like environments well,
917         so we might as well de-obfuscate by writing directory and path
918         separators explicitly.
919
920         * file-name.h: (macro DIR_SEPARATOR) Removed.  Changed all usages
921         to just '/'.
922         (macro PATH_SEPARATOR) Removed.  Changed all usages to just ':'.
923         (macro DIR_SEPARATOR_STRING) Removed.  Changed all usages to just
924         "/".
925         (macro PATH_SEPARATOR_STRING) Removed.  Changed all usages to just
926         ":"
927
928 Sun Apr 16 18:28:35 2006  Ben Pfaff  <blp@gnu.org>
929
930         GNU standards require "file name" instead of "filename" in
931         documentation.  It's nice for our code to follow the convention
932         too.
933         
934         * filename.c: Rename to file-name.c.
935
936         * filename.h: Rename to file-name.h.  Update all inclusions.
937         Update header guards.
938
939         * automake.mk: Update file names.
940
941 Sun Apr 16 16:42:47 2006  Ben Pfaff  <blp@gnu.org>
942
943         * filename.c: (fn_dirname) Renamed fn_dir_name(), all references
944         updated.
945         (fn_basename) Removed (dead code).
946         (fn_absolute_p) Renamed fn_is_absolute(), all references updated.
947         (fn_special_p) Renamed fn_is_special(), all references updated.
948         (fn_exists_p) Renamed fn_exists(), all references updated.
949
950 Sun Apr 16 16:33:58 2006  Ben Pfaff  <blp@gnu.org>
951
952         * filename.c: (fn_tilde_expand) Rewrite for cleaner code.  
953         Also, now it only tilde-expands file names, not paths.
954         (fn_search_path) Tilde-expand one directory at a time.
955
956 Sun Apr 16 16:28:06 2006  Ben Pfaff  <blp@gnu.org>
957
958         * filename.c: (fn_search_path) rewrite for cleaner code.  Also,
959         get rid of non-Unixlike version of the code, which has probably
960         never been tested.
961         (fn_prepend_dir) Removed (dead code).
962
963         * filename.h: (macro DIR_SEPARATOR_STRING) New.
964         (macro PATH_SEPARATOR_STRING) New.
965 Sun Apr 16 16:05:28 2006  Ben Pfaff  <blp@gnu.org>
966
967         Continue reforming error message support.  In this phase, we get
968         rid of VM() and the other msg() support for "verbosity", replacing
969         it by a new function verbose_msg().
970
971         * filename.c: (fn_search_path) Use verbose_msg() instead of
972         msg(VM(), ...).  
973
974 Sat Apr 15 19:53:19 2006  Ben Pfaff  <blp@gnu.org>
975
976         * sfm-private.h: Get rid of #defines after #error, which makes no
977         sense.
978
979 Sat Apr 15 19:48:57 2006  Ben Pfaff  <blp@gnu.org>
980
981         Get rid of our own int32 type in favor of the standard int32_t
982         type.
983         
984         * sfm-private.h: (int32 macro) Don't define this anymore.  Do
985         include <stdint.h>.
986
987         * sys-file-reader.c: Use int32_t instead of int32 throughout.
988         
989         * sys-file-writer.c: Use int32_t instead of int32 throughout.
990
991 Sat Apr 15 19:36:47 2006  Ben Pfaff  <blp@gnu.org>
992
993         Remove ill-considered file routines that are no longer used.
994         
995         * filename.c: (fn_open_ext) Removed.
996         (fn_close_ext) Removed.
997
998         * filename.h: (struct file_ext) Removed.
999
1000 Mon Apr  3 13:22:39 2006  Ben Pfaff  <blp@gnu.org>
1001
1002         * variable.c (var_is_valid_name): Move declarations before code
1003         for C90 compliance.
1004
1005 Tue Apr  4 15:28:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
1006
1007         * filename.ch (fn_interp_vars): Fixed small buglet.
1008
1009 Tue Mar 28 13:47:16 WST 2006 John Darrington <john@darrington.wattle.id.au>
1010         
1011         * filename.[ch] (fn_interp_vars): Changed the signature and semantics
1012         so as to modify the string inline.   Thus makeing it easier to
1013         destroy the results when no longer needed.
1014         
1015 2006-03-25  Jason Stover  <jhs@math.gcsu.edu>
1016
1017         * category.c (cat_stored_values_destroy): Fixed memory leak.
1018
1019 Fri Mar 24 18:15:41 2006  Ben Pfaff  <blp@gnu.org>
1020
1021         Add some missing frees.  Thanks to John Darrington for reporting
1022         these.
1023
1024         * any-writer.c (any_writer_close): Free writer.
1025
1026         * any-reader.c (any_reader_close): Free reader.
1027
1028 Mon Mar 20 16:33:53 2006  Ben Pfaff  <blp@gnu.org>
1029
1030         * por-file-reader.c: (error) Mark as NO_RETURN.
1031
1032 Sat Mar 11 15:06:07 WST 2006 John Darrington <john@darrington.wattle.id.au>
1033
1034         * settings.c: Changed default value of scompress to true.
1035
1036 Sat Mar  4 13:22:51 2006  Ben Pfaff  <blp@gnu.org>
1037
1038         * sfm-private.h: Include variable.h, to get SHORT_NAME_LEN.
1039
1040         * value.h: Remove check on MAX_SHORT_STRING, which I don't think
1041         really applies.
1042
1043         * variable.h: Move definition of SHORT_NAME_LEN, LONG_NAME_LEN
1044         here from pref.h.orig.
1045
1046 Sat Mar  4 12:50:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
1047
1048         * sys-file-reader.c: Fixed bug reading compressed files.
1049
1050 Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
1051
1052         * Numerous renames.  See src/ChangeLog for details.
1053         
1054         * Moved files from src directory