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