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