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