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