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