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