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