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