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