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