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