Patch #6302.
[pspp-builds.git] / src / language / data-io / ChangeLog
1 2007-12-07  Ben Pfaff  <blp@gnu.org>
2
3         Patch #6302.
4
5         * data-parser.c (data_parser_make_active_file): Fix case count
6         argument to casereader_create_sequential, which fixes data reading
7         in the GUI.
8         Provided by John Darrington.
9
10 2007-12-04  Ben Pfaff  <blp@gnu.org>
11
12         Move DATA LIST parsing into generic infrastructure, and generalize
13         it slightly.  Then, use the same infrastructure to implement GET
14         DATA/TYPE=TXT.
15
16         * data-parser.c: New file.
17
18         * data-parser.h: New file.
19
20         * data-list.c (struct dls_var_spec): Removed.
21         (ll_to_dls_var_spec): Removed.
22         (enum dls_type): Removed.
23         (struct data_list_pgm): Rename struct data_list_trns.  Remove
24         pool, specs, type, record_cnt, delims, skip_records, value_cnt
25         members.  Add new `parser' member.
26         (cmd_data_list): Use data-parser infrastructure.
27         (parse_fixed): Ditto.
28         (parse_free): Ditto.
29         (dump_fixed_table): Removed.
30         (dump_free_table): Removed.
31         (cut_field): Removed.
32         (read_from_data_list): Removed.
33         (read_from_data_list_fixed): Removed.
34         (read_from_data_list_free): Removed.
35         (read_from_data_list_list): Removed.
36         (data_list_trns_free): Rename arguments for clarity.
37         (data_list_trns_proc): Ditto.
38         (data_list_casereader_read): Removed.
39         (data_list_casereader_destroy): Removed.
40         (data_list_casereader_class): Removed.
41
42         * get-data.c (cmd_get_data): Support TXT type.
43         (set_type): New function.
44         (parse_get_txt): New function.
45
46 2007-12-04  Ben Pfaff  <blp@gnu.org>
47
48         * placement-parser.c (parse_column): New function.
49         (parse_column_range): Add `base' argument.  Update all callers.
50         
51 2007-12-04  Ben Pfaff  <blp@gnu.org>
52
53         Make GET DATA a separate command, instead of something invoked
54         indirectly from GET.
55
56         * automake.mk: Remove get-data.h from sources.
57
58         * get-data.h: Removed.
59
60         * get-data.c (parse_get_data_command): Rename cmd_get_data.
61
62         * get.c (parse_read_command): No longer any need to check for DATA
63         keyword.
64
65 2007-12-04  Ben Pfaff  <blp@gnu.org>
66
67         * src/language/data-io/data-reader.c (struct dfm_reader): New
68         `file_size' member to support dfm_get_percent_read.
69         (dfm_open_reader): Initialize file_size.
70         (dfm_get_percent_read): New function.
71
72 2007-11-08  Ben Pfaff  <blp@gnu.org>
73
74         Patch #6256: add support for binary, 360 file formats.  Reviewed
75         by John Darrington.
76
77         * data-reader.c (struct dfm_reader): New member `block_left'.
78         (dfm_open_reader): Initialize block_left.  For FH_MODE_TEXT, open
79         the file in text mode.
80         (read_error): New function.
81         (partial_record): New function.
82         (try_to_read_fully): New function.
83         (enum descriptor_type): New enum.
84         (read_descriptor_word): New function.
85         (corrupt_size): New function.
86         (read_size): New function.
87         (read_file_record): Implement new modes.
88         (read_record): Now take care of tracking line numbers here.
89         (dfm_reader_get_legacy_encoding): New function.
90
91         * data-writer.c (dfm_put_record): Implement new modes.
92         (dfm_writer_get_legacy_encoding): New function.
93
94         * file-handle.q: Parse new formats.
95         (cmd_file_handle): Set up new formats.
96
97         * print.c (struct print_trns): New member `encoding'.
98         (internal_cmd_print): Set encoding.
99         (print_trns_proc): Recode output data if necessary.
100         (flush_records): Recode leader byte.
101
102 2007-11-03  Ben Pfaff  <blp@gnu.org>
103
104         Allow output files to overwrite input files (bug #21280).
105
106         * data-list.c (cmd_data_list): Manage file handle reference
107         counts.
108
109         * data-reader.c (struct dfm_reader): Add `lock' member.
110         (dfm_close_reader): Simplify, as reference counting is now
111         separate from locking.
112         (dfm_open_reader): Lock file.
113
114         * data-writer.c (struct dfm_writer): Add fh_lock, replace_file
115         members.
116         (dfm_open_writer): Lock file and prepare for replacement.
117         (dfm_close_writer): Unlock file and replace it.
118
119         * file-handle.q (cmd_close_file_handle): Use fh_unname.
120         (fh_parse): Don't distinguish existing handles for a given file
121         name from new ones.  Manage file handle reference counts.
122
123         * get.c (parse_read_command): Manage file handle reference counts.
124         (parse_write_command): Ditto.
125         (mtf_close_all_files): Ditto.
126
127         * inpt-pgm.c (cmd_reread): Manage file handle reference counts.
128
129         * print-space.c (cmd_print_space): Manage file handle reference
130         counts.
131
132         * print.c (internal_cmd_print): Manage file handle reference
133         counts.
134
135 2007-11-03 John Darrington <john@darrington.wattle.id.au>
136
137         * get.c: Add GET DATA command variant.
138
139         * get-data.c get-data.h (new files): Added support for
140          GET DATA /TYPE='gnm'  command.
141
142 2007-09-23  Ben Pfaff  <blp@gnu.org>
143
144         Bug #21111.  Reviewed by John Darrington.
145
146         * data-list.c (data_list_trns_proc): Properly set retval when END
147         subcommand is in use.
148         (cmd_data_list): Don't allow END subcommand to be used with DATA
149         LIST FREE or LIST.
150
151 2007-09-12  Ben Pfaff  <blp@gnu.org>
152
153         * get.c (get_translate_case): Change input case parameter from
154         const struct ccase * to struct ccase *, to match change in
155         casereader and casewriter translators.  Destroy input case, to fix
156         memory leak.
157
158 2007-08-12  Ben Pfaff  <blp@gnu.org>
159
160         * get.c (parse_read_command): Compact the values in the target
161         dictionary, to save space.
162
163 2007-08-12  Ben Pfaff  <blp@gnu.org>
164
165         * get.c (struct case_map): Move into new file src/data/case-map.c.
166         (start_case_map): Ditto, and rename case_map_prepare_dict.
167         (finish_case_map): Ditto, and rename case_map_from_dict.
168         (map_case): Ditto, and rename case_map_execute.
169         (destroy_case_map): Ditto, and rename case_map_destroy.
170         (case_map_get_value_cnt): Ditto.
171
172 2007-08-12  Ben Pfaff  <blp@gnu.org>
173
174         * get.c (case_map_get_value_cnt): New function.
175
176 2007-07-25  Ben Pfaff  <blp@gnu.org>
177
178         Fix bug #17100.
179         * data-list.c (read_from_data_list_fixed): Handle multi-record
180         DATA LIST correctly.
181
182 2007-07-11  Ben Pfaff  <blp@gnu.org>
183
184         * get.c (map_case): Create destination case instead of leaving it
185         undefined.  Fixes bug #20285.
186         Reviewed by John Darrington.
187
188 2007-06-06  Ben Pfaff  <blp@gnu.org>
189
190         * get.c: Essentially rewrite MATCH FILES to support FIRST and
191         LAST.
192
193 2007-06-06  Ben Pfaff  <blp@gnu.org>
194
195         Adapt case sources, sinks, and clients of procedure code to the
196         new infrastructure.
197         
198         * data-list.c: Make DATA LIST into a casereader.
199
200         * get.c: Change GET, IMPORT, SAVE, EXPORT to use casereaders,
201         casewriters.
202
203         * inpt-pgm.c: Use caseinit code.  Turn INPUT PROGRAM into a
204         casereader.
205
206         * list.q: Adapt to new procedure code.
207
208 2007-05-06  Ben Pfaff  <blp@gnu.org>
209
210         Abstract the documents within a dictionary a little better.
211         Thanks to John Darrington for suggestion, initial version, and
212         review.  Patch #5917.
213
214         * get.c (mtf_merge_dictionary): Simplify creating merged document.
215
216         * sys-file-info.c (display_documents): Use new
217         dict_get_document_line_cnt and dict_get_document_line functions.
218
219 Thu Feb  1 16:56:02 2007  Ben Pfaff  <blp@gnu.org>
220
221         * file-handle.q (fh_parse): Update to new fh_create_file
222         prototype.
223
224 Sat Dec 16 22:16:18 2006  Ben Pfaff  <blp@gnu.org>
225
226         Make it possible to pull cases from the active file with a
227         function call, instead of requiring indirection through a callback
228         function.
229
230         * automake.mk: Removed matrix-data.c.
231
232         * matrix-data.c: Removed.
233
234         * data-list.c (data_list_source_read): Conform with new
235         case_source_class interface.
236         (data_list_source_destroy): Ditto.
237
238         * get.c (case_reader_source_class): Ditto.
239         (case_reader_source_destroy): Ditto.
240         (parse_output_proc): Take advantage of new procedure interface.
241         (output_proc): Removed.
242         (struct mtf_file): Add "struct ccase *" member to allow use of new
243         procedure interface.
244         (cmd_match_files): Take advantage of new procedure interface.
245         (mtf_processing_finish): Removed.
246         (mtf_read_nonactive_records): Renamed mtf_read_records.  Now reads
247         from every file, without any exception for the active file.
248         (mtf_compare_BY_values): Simplify for new interface.
249         (mtf_processing): Simplify for new interface.
250
251         * inpt-pgm.c (is_valid_state): New function.
252         (input_program_source_read): Conform with new case_source_class
253         interface.
254         (input_program_source_destroy): Ditto.
255         (end_case_trns_proc): Now just needs to return TRNS_END_CASE.
256
257 Sat Dec  9 18:43:34 2006  Ben Pfaff  <blp@gnu.org>
258
259         * list.q (cmd_list): Use new var_create, var_destroy functions.
260
261 Thu Nov 30 21:51:58 2006  Ben Pfaff  <blp@gnu.org>
262
263         * inpt-pgm.c (cmd_reread): Always return error code upon detecting
264         syntax error.  Fixes bug #18419.  Thanks to John Darrington for
265         reporting this bug.
266
267 Sun Nov 19 09:17:45 2006  Ben Pfaff  <blp@gnu.org>
268
269         * data-list.c (parse_free): Follow documented (but odd) rule that
270         N format is treated as F format for free-field input.
271         
272         * data-reader.c (read_file_record): Drop new-line character from
273         input text lines.  This is symmetrical with the recently changed
274         dfm_put_record semantics.
275
276 Thu Nov  2 20:56:03 2006  Ben Pfaff  <blp@gnu.org>
277
278         Implement SKIP keyword on DATA LIST.  Fixes bug #17099.
279         
280         * data-list.c: (struct data_list_pgm) Add `skip_records' members.
281         (cmd_data_list) Set skip_records based on user input.
282         (data_list_source_read) Skip records requested by user.
283
284 Tue Oct 31 20:04:06 2006  Ben Pfaff  <blp@gnu.org>
285
286         * placement-parser.c: (PRS_TYPE_T) Now that struct fmt_spec uses
287         an enum fmt_type for its type member, we can't depend on the
288         ability to put negative values into that member as out-of-band
289         values, because enum fmt_type might be an unsigned type.  So use
290         values around SCHAR_MAX instead, because we know that SCHAR_MAX
291         will fit into any type, signed or unsigned, and there aren't
292         nearly that many format types.
293         (parse_var_placements) Add for_input parameter to specify whether
294         we're parsing input or output formats.  Update all callers.
295         (fixed_parse_columns) Ditto.
296         (fixed_parse_fortran) Ditto.
297         
298 Tue Oct 31 18:21:48 2006  Ben Pfaff  <blp@gnu.org>
299
300         * print-space.c (print_space_trns_proc): Let dfm_put_record add
301         the new-line character, to match dfm_put_record change below.
302
303 Sat Oct 28 11:57:19 2006  Ben Pfaff  <blp@gnu.org>
304
305         * data-writer.c (struct dfm_writer): Removed `bounce' member, and
306         all references to it.
307         (dfm_put_record) Change semantics so that it adds formatting
308         itself, such as new-line characters, instead of putting that
309         responsibility on the caller.  Also, pad binary records with
310         spaces instead of zeros, for compatibility.
311
312         * print.c (struct prt_out_spec) New member `sysmis_as_spaces'.
313         (struct print_trns) Remove `omit_new_lines' and all references,
314         since dfm_put_record() is taking care of that.  Add
315         `include_prefix'.
316         (internal_cmd_print) Allow an empty set of data to print.  Set
317         include_prefix.
318         (parse_specs) Allow an empty set of data to print.
319         (parse_variable_argument) Only add space with PRINT command.  Set
320         sysmis_as_spaces.
321         (print_trns_proc) Indent records if include_prefix is set, for
322         compatibility.  Output SYSMIS as spaces if sysmis_as_spaces is
323         set.  Put "1" in first column if PRINT EJECT is used with an
324         external output file.
325         (flush_records) Ditto.
326
327 Sat Oct 28 16:19:57 WST 2006 John Darrington <john@darrington.wattle.id.au>
328
329         * data-reader.c: Eliminated references to extern variable getl_buf
330
331 Sat Aug  5 08:25:07 2006  Ben Pfaff  <blp@gnu.org>
332
333         Fix bug #17329 in REREAD parsing, reported by John Darrington.
334
335         * inpt-pgm.c (cmd_reread): Fix file handle parsing.
336
337 Mon Jul 31 10:32:31 2006  Ben Pfaff  <blp@gnu.org>
338
339         * print.c (parse_specs): Allow a comma between specifications.
340
341 Sun Jul 16 19:57:10 2006  Ben Pfaff  <blp@gnu.org>
342
343         * automake.mk: (src_language_data_io_libdata_io_a_SOURCE) Add
344         print-space.c, placement-parser.c, placement-parser.h.
345
346         * data-list.c: Basically rewrote the whole thing.  Broke out a lot
347         of code into placement-parser.c.  Code is much cleaner now.
348
349         * placement-parser.c: New file.
350
351         * placement-parser.h: New file.
352
353         * print.c: Basically rewrote the whole thing.  Broke out PRINT
354         SPACE into print-space.c.  Code is much cleaner now.
355
356         * print-space.c: New file.
357
358 Sat Jul  1 17:39:40 2006  Ben Pfaff  <blp@gnu.org>
359
360         Fix bug #11612, "q2c documentation does not agree with code".
361         
362         * list.q: Audit use of q2c "+" prefixes that indicate that a
363         command may appear multiple times.
364
365 Sat Jul  1 20:44:22 2006  Ben Pfaff  <blp@gnu.org>
366
367         Fix bug #15786: System File Creation crashes if directoy is
368         nonexistent.
369         
370         * get.c (parse_write_command): Check that the any_writer open
371         succeeds.
372
373 Tue Jun 27 22:44:28 2006  Ben Pfaff  <blp@gnu.org>
374
375         Fix regression in command name completion reported by John
376         Darrington.  Now completion is again state-dependent and occurs
377         only on the first line of a command.
378         
379         * inpt-pgm.c: (cmd_input_program) Reading of first token in
380         command moved into cmd_parse.
381
382 Fri Jun  9 13:56:00 2006  Ben Pfaff  <blp@gnu.org>
383
384         Reform string library.
385         
386         * matrix-data.c (context): Use dynamic string.
387         (another_token) Deal with changed dfm_get_record() interface.
388         (mget_token) Ditto.
389         (force_eol) Ditto.
390
391         * data-list.c (struct data_list_pgm) Delete delims, delim_cnt
392         members, replacing them by struct string delims.  Update all
393         references to use struct string functions.
394         (cut_field) Change interface to avoid needing "end_blank", by
395         getting the data-reader to remember that state for us.  Change
396         internals to use substring.  Update both callers.
397
398         * data-reader.c (read_file_record): Use ds_read_stream().
399         (dfm_get_record) Change interface to return substring.  Updated
400         all callers.
401         (dfm_expand_tabs) Use ds_find_char().  Now maintain position
402         relative to end-of-line.  Use ds_swap().
403         (dfm_reread_record) Don't limit position by line length.
404         (dfm_column_start) Make parameter const.
405         (dfm_columns_past_end) New function.
406         (dfm_get_column) New function.
407
408 Thu May 25 18:26:26 WST 2006 John Darrington <john@darrington.wattle.id.au>
409
410         * print.c (print_trns_free): Made the code agree with the comment, by
411         not freeing PRT.  Has the side effect that the command no longer
412         crashes on invalid syntax.
413
414 Tue May  9 20:55:46 2006  Ben Pfaff  <blp@gnu.org>
415
416         * get.c (cmd_match_files): Fix memory leak replacing default_dict.
417
418 Sat May  6 22:25:09 2006  Ben Pfaff  <blp@gnu.org>
419
420         Fix segfault.
421         
422         * list.q (write_fallback_headers): (write_fallback_headers)
423         Properly record width of leader and pass it to write_varname().
424
425 Sat May  6 19:03:13 2006  Ben Pfaff  <blp@gnu.org>
426
427         * get.c: (mtf_merge_dictionary) Fix value label memory leak.
428
429 Sat May  6 13:51:16 2006  Ben Pfaff  <blp@gnu.org>
430
431         Use a casefile, instead of a case sink, for MATCH FILES output.
432         It's more straightforward, although it has the same effect.
433         
434         * get.c: (struct mtf_proc) Replace `sink' case sink member by
435         `output' casefile member.
436         (cmd_match_files) Work with casefile instead of sink.
437         (mtf_processing) Add case to casefile instead of sink.
438
439 Sat May  6 10:43:07 2006  Ben Pfaff  <blp@gnu.org>
440
441         Continue reforming procedure execution.  In this phase, get rid of
442         the output code for SPLIT FILE groups in procedure.c, which really
443         shouldn't be doing any output.  Move it into the individual
444         procedures instead.  This also adds some flexibility.
445
446         * list.q (write_all_headers): Call output_split_file_values().
447
448 Wed May  3 23:00:17 2006  Ben Pfaff  <blp@gnu.org>
449
450         Continue reforming procedure execution.  In this phase, get rid of
451         many global variables, consolidating procedure execution in
452         procedure.c.  Encapsulate transformations in new "struct
453         trns_chain".  Also, change implementation of N OF CASES, FILTER,
454         and PROCESS IF from special cases to transformations.
455          
456         * data-list.c: (data_list_trns_proc) Return TRNS_END_FILE at end
457         of file.  (Why didn't we do this before?)
458         (cmd_match_files) Direct procedure output to null sink.
459         Use discard_variables() instead of indirect version.
460
461         * inpt-pgm.c: Use transformation chain.
462         (struct input_program_pgm) Add trns_chain member.
463         (cmd_input_program) Initialize trns_chain member and capture
464         transformations with proc_capture_transformations().
465         (input_program_source_read) Use trns_chain_execute().
466         (destroy_input_program) Destroy input chain.
467
468 Tue May  2 10:39:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
469
470         * list.q Changed from using fixed length char buffers to struct 
471         string so that any length variables can be used.
472
473 Mon May  1 18:21:19 2006  Ben Pfaff  <blp@gnu.org>
474
475         Further clean up the CMD_* command result codes.
476         
477         * (enum cmd_result_extensions) New.  Add CMD_END_INPUT_PROGRAM and
478         CMD_END_CASE result codes.
479         (struct input_program_pgm) Added case_nr, write_case, wc_data
480         members for use by END CASE transformation.
481         (emit_END_CASE) New function.
482         (cmd_input_program) Interpret CMD_END_CASE by outputting an END
483         CASE transformation.  If none is output by the input program
484         itself, add one automatically at the end.  Change lack of
485         variables from warning to error.
486         (cmd_end_input_program) Return CMD_END_INPUT_PROGRAM instead of
487         CMD_END_SUBLOOP.
488         (input_program_source_read) No longer any need to special-case END
489         CASE.  Handle TRNS_DROP_CASE properly.  Initialize new members in
490         inp for use by END CASE transformation.
491         (destroy_input_program) New function.
492         (input_program_source_destroy) Just call destroy_input_program().
493         (cmd_end_case) Just return CMD_END_CASE.
494         (end_case_trns_proc) No longer a stub handled by
495         input_program_source_read().  Actually output the case and
496         increment the case number.
497
498 Mon May  1 16:06:30 2006  Ben Pfaff  <blp@gnu.org>
499
500         Remove vestiges of REPEATING DATA support.
501         
502         * data-list.c: (struct rpd_num_or_var) Removed.
503         (struct repeating_data_trns) Removed.
504         (cmd_repeating_data) Removed.
505         (find_variable_input_spec) Removed.
506         (parse_num_or_var) Removed.
507         (parse_repeating_data) Removed.
508         (realize_value) Removed.
509         (struct rpd_parse_info) Removed.
510         (rpd_parse_record) Removed.
511         (repeating_data_trns_proc) Removed.
512         (repeating_data_trns_free) Removed.
513         (repeating_data_set_write_case) Removed.
514         (rpd_msg) Removed.
515
516         * inpt-pgm.c: (input_program_source_read) Don't deal with
517         REPEATING DATA.
518
519         * data-list.h: Removed.
520
521         * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Removed
522         data-list.h.
523
524 Mon May  1 15:58:28 2006  Ben Pfaff  <blp@gnu.org>
525
526         Remove vestiges of FILE TYPE support. 
527         
528         * data-list.c: (cmd_data_list) Don't check for FILE TYPE.
529         (cmd_repeating_data) Ditto.
530         
531         * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Remove
532         file-type.c, file-type.h.
533
534         * file-type.c: Removed.
535         
536         * file-type.h: Removed.
537
538 Wed Apr 26 13:16:28 2006  Ben Pfaff  <blp@gnu.org>
539
540         Improve the way we handle the various parsing "states".  Until now
541         we've hard-coded the state transitions in the command definition
542         file, but that's error-prone and, worse, it's redundant--we can
543         figure out what state we're in anyhow.  We can cleanly handle
544         INPUT PROGRAM and FILE TYPE with a nested command-processing loop.
545         
546         * data-list.c: (cmd_data_list) Use in_file_type() or
547         in_input_program() in place of case_source_is_class() or
548         case_source_is_complex().
549
550         * file-type.c: NB: Not really fixed except minimally to compile,
551         because it doesn't work anyway.
552         (in_file_type) New function.
553         (cmd_record_type) No need to check that we're in FILE TYPE.
554         (cmd_end_file_type) Ditto.
555         (var file_type_source_class) Make static.
556
557         * get.c: (cmd_match_files) Check vfm_source instead of pgm_state.
558
559         * inpt-pgm.c: (in_input_program) New function.
560         (cmd_input_program) Rewrite to include nested command processing
561         loop.
562         (cmd_end_input_program) Just return CMD_END_SUBLOOP.
563         (var input_program_source_class) Make static.
564         (cmd_end_case) No need to check that we're in INPUT PROGRAM.
565         (cmd_end_file) Ditto.
566         
567         * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Add
568         file-type.h, inpt-pgm.h.
569
570         * file-type.h: New file.
571
572         * inpt-pgm.h: New file.
573
574 Tue Apr 25 13:11:55 2006  Ben Pfaff  <blp@gnu.org>
575
576         * print.c: Don't special-case MS-DOS line terminators.
577         (macro LINE_END_WIDTH) Removed.
578         (alloc_line) Line ends are 1 byte.
579         (print_trns_proc) Just output \n for line end.
580
581 Sun Apr 23 22:05:58 2006  Ben Pfaff  <blp@gnu.org>
582
583         Continue reforming error message support.  In this phase, get rid
584         of message "titles" and put the message text in `struct error'.
585         Now `struct error' encapsulates a message more properly.
586         
587         * data-list.c: (macro RPD_ERR) Removed.
588         (rpd_msg) New function.  Updated all references to tmsg() to call
589         this function instead.
590
591 Sat Apr 15 19:38:13 2006  Ben Pfaff  <blp@gnu.org>
592
593         Remove last users of struct file_ext so we can get rid of it
594         entirely.
595         
596         * data-reader.c: (struct dfm_reader) Change file member from
597         struct file_ext to FILE *.  Updated all references.
598         (dfm_close_reader) Close file with fn_close() instead of
599         fn_close_ext().  Also, make a copy of the file name from the file
600         handle before closing it, because we can't extract it after we
601         close the file.
602         (dfm_open_reader) Open file with fn_open() instead of
603         fn_open_ext().
604
605         * data-writer.c: (struct dfm_writer) Change file member 
606         struct file_ext to FILE *.  Updated all references.
607         (dfm_close_writer) Close file with fn_close() instead of
608         fn_close_ext().  Also, make a copy of the file name from the file
609         handle before closing it, because we can't extract it after we
610         close the file.
611         (dfm_open_writer) Open file with fn_open() instead of
612         fn_open_ext().
613
614 Sat Apr 15 18:00:32 2006  Ben Pfaff  <blp@gnu.org>
615
616         * data-list.c: Add prototype to suppress warning for
617         cmd_repeating_data().
618         
619 Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
620         
621         * Moved files from src directory