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