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