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