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