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