Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support ALL)
[pspp-builds.git] / src / data / ChangeLog
1 Tue Jul  4 08:47:35 2006  Ben Pfaff  <blp@gnu.org>
2
3         Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support
4         ALL) and additional underlying system file issues.
5
6         Thanks to John Darrington for review.
7
8         First problem: var_hash points to variables not owned by the
9         sys-file-reader, which the caller may free or modify.  Use an
10         array of sfm_vars instead, as done earlier (e.g. CVS version
11         1.12).
12         
13         * sys-file-reader.c (struct sfm_reader): Remove var_hash, svars
14         members and remove all code that references it.  Add vars, var_cnt
15         members.  Remove fix_specials member, which was unused.
16         (struct sfm_var) Remove name member, which was unused.
17         (sfm_close_reader) Free vars member instead of var_hash.
18         (compare_var_shortnames) Removed.
19         (hash_var_shortname) Removed.
20         (sfm_open_reader) Fill out vars array.
21         (compare_var_index) Removed.
22         (sfm_read_case) Use vars instead of var_hash.
23         
24         Second problem: we're confused about when we actually have very
25         long strings, causing us to choose incorrectly between slow path
26         and fast path in sfm_read_case.
27
28         * sys-file-reader.c: (sfm_open_reader) Only mark has_vls if we
29         have very long strings, not when we have long variable names,
30         which is an unrelated feature.
31
32 Tue Jun 27 12:06:49 2006  Ben Pfaff  <blp@gnu.org>
33
34         * variable.h: Move var_set and variable parsing declarations to
35         new header, src/language/lexer/variable-parser.h.  Modified lots
36         of files to include the new header.
37
38 Sun Jun 25 22:39:32 2006  Ben Pfaff  <blp@gnu.org>
39
40         * value-labels.c (value_to_string): When there's no value label,
41         format the variable according to its print format, instead of
42         always effectively using A or F format.
43
44 Mon Jun 19 18:05:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
45
46         * casefile.c (casefile_get_random_reader): Nasty hack to get around 
47         the mode assertion.
48
49         * format.c: Removed tortological assertion.
50
51 Fri Jun  9 12:20:09 2006  Ben Pfaff  <blp@gnu.org>
52
53         Reform string library.
54         
55         * file-name.c (fn_interp_vars): Change interface to take a
56         substring as input.  Updated all users.
57         
58 Fri Jun  9 12:11:24 2006  Ben Pfaff  <blp@gnu.org>
59
60         * format.c (measure_is_valid): Really return false when m >=
61         n_MEASURES.
62
63 Tue Jun  6 18:46:26 2006  Ben Pfaff  <blp@gnu.org>
64
65         Implement random access to casefiles, for use in GUI.
66         
67         * casefile.c: (struct casereader) Add `random', `file_ofs',
68         `buffer_ofs' members.
69         (casefile_get_random_reader) New function.
70         (read_open_file) Break part into new function
71         seek_and_fill_buffer().
72         (fill_buffer) Update buffer_ofs, file_ofs.
73         (casereader_seek) New function.
74
75 Tue May 30 19:52:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
76
77         * settings.c: Added call to i18n{done, init}.
78
79 Tue May  9 21:09:17 2006  Ben Pfaff  <blp@gnu.org>
80
81         * procedure.h: Add WARN_UNUSED_RESULT to procedure function
82         prototypes.
83
84 Tue May  9 21:08:05 2006  Ben Pfaff  <blp@gnu.org>
85
86         * casefile.c: Convert many uses of `int' to `bool'.
87
88 Sat May  6 22:49:43 2006  Ben Pfaff  <blp@gnu.org>
89
90         * transformations.c (trns_chain_destroy): Destroy chain's trns
91         member, to fix memory leak.
92
93 Sat May  6 22:48:30 2006  Ben Pfaff  <blp@gnu.org>
94
95         * storage-stream.c (storage_source_decapsulate): Destroy case
96         source to fix memory leak.
97
98 Sat May  6 22:46:47 2006  Ben Pfaff  <blp@gnu.org>
99
100         * scratch-reader.c (scratch_reader_read_case): Copy into existing
101         case passed as argument instead of initializing the argument as a
102         case.  Fixes memory leak that showed up in
103         tests/command/aggregate.sh with scratch files.
104
105 Sat May  6 22:45:55 2006  Ben Pfaff  <blp@gnu.org>
106
107         * procedure.c (proc_done): Destroy default_dict, to fix memory
108         leak.
109
110 Sat May  6 22:44:44 2006  Ben Pfaff  <blp@gnu.org>
111
112         Simplify procedure_with_splits().
113         
114         * procedure.c (struct split_aux_data): Removed case_count member.
115         (procedure_with_splits) Don't initialize case_count.
116         (split_procedure_case_func) Check whether prev_case is null
117         instead of case_count.
118         (split_procedure_end_func) Ditto.
119
120 Sat May  6 22:42:23 2006  Ben Pfaff  <blp@gnu.org>
121
122         * case.c (case_move): Do nothing if dst and src are the same
123         object.
124         (case_try_create) Merge two similar cases.
125         (case_copy) Unshare only if data must be actually copied.
126
127 Sun May  7 10:04:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
128
129         * data-in.c data-out.c dictionary.c sys-file-reader.c
130         sys-file-writer.c variable.c variable.h:  Reworked very long string
131         support for better encapsulation.
132
133 Sat May  6 19:02:00 2006  Ben Pfaff  <blp@gnu.org>
134
135         * value-labels.c (val_labs_can_set_width): New function.
136         (val_labs_set_width) Clear labels if increasing width to long
137         string.
138         (val_labs_destroy) Remove unneeded test for null.
139         
140 Sat May  6 16:14:08 2006  Ben Pfaff  <blp@gnu.org>
141
142         * value-labels.h: Remove unneeded dependency on variable.h.
143
144 Sat May  6 15:58:36 2006  Ben Pfaff  <blp@gnu.org>
145
146         Get rid of `char *c' member in union value, for cleanliness.
147         
148         * value.h: (union value) Remove `c' member.
149
150 Sat May  6 15:36:59 2006  Ben Pfaff  <blp@gnu.org>
151
152         Make dictionary compacting functions a little more general.
153         
154         * sys-file-writer.c (sfm_open_writer): Use
155         dict_compacting_would_change().
156         (does_dict_need_translation) Removed.
157
158 Sat May  6 15:35:42 2006  Ben Pfaff  <blp@gnu.org>
159
160         Make dictionary compacting functions a little more general.
161         
162         * dictionary.c (dict_needs_compaction): Rename
163         dict_compacting_would_shrink().  Update all callers.
164         (dict_compacting_would_change) New function.
165         
166 Sat May  6 14:25:49 2006  Ben Pfaff  <blp@gnu.org>
167
168         * sys-file-writer.c: (does_dict_need_translation) Fix bug:
169         inverted return value (!).
170
171 Sat May  6 13:37:52 2006  Ben Pfaff  <blp@gnu.org>
172
173         Continue reforming procedure execution.  
174
175         * procedure.c: Search and replace "vfm" by "proc".  Notably:
176         (static var vfm_source) Rename proc_source.  Update all
177         references.
178         (static var vfm_sink) Rename proc_sink.  Update all references.
179         
180 Sat May  6 12:38:55 2006  Ben Pfaff  <blp@gnu.org>
181
182         Continue reforming procedure execution.  In this phase, remove
183         PROCESS IF, which was deprecated anyway and can be easily
184         simulated with TEMPORARY followed by SELECT IF.
185
186         * procedure.c: (open_active_file) Don't call
187         add_process_if_trns().
188         (discard_variables) Get rid of redundant call to
189         proc_cancel_all_transformations().
190         (add_process_if_trns) Removed.
191         (process_if_trns_proc) Removed.
192         (process_if_trns_free) Removed.
193
194 Sat May  6 10:58:05 2006  Ben Pfaff  <blp@gnu.org>
195
196         Continue reforming procedure execution.  In this phase, add
197         `const' to the case passed to procedure()'s callback.
198
199         Updated all users of procedure() as well.
200         
201         * procedure.c: (struct write_case_data) Add "const" to ccase
202         parameter for case_func member.
203         (procedure) Add "const" to ccase parameter for proc_func
204         parameter.
205         (multipass_case_func) Make ccase parameter const.
206         (internal_procedure) Add "const" to ccase parameter for case_func
207         parameter.
208         (split_procedure_case_func) Make ccase parameter const.
209         (multipass_split_case_func) Make ccase parameter const.
210         
211 Sat May  6 10:30:33 2006  Ben Pfaff  <blp@gnu.org>
212
213         Continue reforming procedure execution.  In this phase, get rid of
214         the output code for SPLIT FILE groups in procedure.c, which really
215         shouldn't be doing any output.  Move it into the individual
216         procedures instead.  This also adds some flexibility.
217
218         Updated many users of procedure_with_splits() and
219         multipass_procedure_with_splits() to call
220         output_split_file_values() and to deal with increased use of
221         const.
222
223         * procedure.c: (struct split_aux_data) Add "const struct ccase *"
224         parameter to begin_func member.
225         (procedure_with_splits) Add "const struct ccase *" parameter to
226         begin_func parameter.  Make ccase parameter const in proc_func
227         parameter.
228         (split_procedure_case_func) Don't dump split file group.  Pass
229         case to begin_func.
230         (dump_splits) Moved to language/dictionary/split-file.c as
231         output_split_file_values().
232         (struct multipass_split_aux_data) Add "const struct ccase *"
233         parameter to split_func member.
234         (multipass_procedure_with_splits) Add "const struct ccase *"
235         parameter to split_func parameter.
236         (multipass_split_case_func) Save new SPLIT FILE case before
237         outputting case.
238         (multipass_split_output) Pass saved SPLIT FILE case to split_func.
239         
240 Fri May  5 22:48:50 2006  Ben Pfaff  <blp@gnu.org>
241
242         Continue reforming procedure execution.  Change
243         internal_procedure() so that it calls open_active_file() and
244         close_active_file(), which isolates most of the actual procedure
245         functionality.
246
247         * procedure.c: (struct write_case_data) Rename `proc_func' member
248         to `case_func' and update all references.
249         (procedure) Rewrite as one-line wrapper around
250         internal_procedure().
251         (struct multipass_aux_data) New.
252         (multipass_callback) Renamed multipass_case_func().  Use struct
253         multipass_aux_data as auxiliary data.
254         (multipass_end_func) New function.
255         (multipass_procedure) Rewrite as wrapper for internal_procedure()
256         that uses multipass_case_func, multipass_end_func.
257         (internal_procedure) Add `end_func' argument.  Move optimization
258         of trivial case in here.  Move call to open_active_file() and
259         close_active_file() in here.  Now assert that vfm_source is
260         non-null.
261         (procedure_with_splits_callback) Rename
262         split_procedure_case_func().
263         (split_procedure_end_func) New function.
264         (multipass_split_callback) Rename multipass_split_case_func.
265         (multipass_split_end_func) New function.
266         (discard_variables) No need to test for nonnull vfm_source.
267
268 Fri May  5 21:34:02 2006  Ben Pfaff  <blp@gnu.org>
269
270         Continue reforming procedure execution.  Get rid of unused member.
271
272         * procedure.c: (struct write_case_data) Remove `cases_analyzed'
273         member.
274         (write_case) Don't increment cases_analyzed.
275
276 Thu May  4 21:50:11 2006  Ben Pfaff  <blp@gnu.org>
277
278         Continue reforming procedure execution.  In this phase, move
279         procedure.c and procedure.h from src to src/data.  Update
280         makefiles and #includes accordingly.
281
282         * procedure.c: Moved here from src/.
283
284         * procedure.h: Moved here from src/.
285
286 Wed May  3 22:42:12 2006  Ben Pfaff  <blp@gnu.org>
287
288         Continue reforming procedure execution.  In this phase, get rid of
289         many global variables, consolidating procedure execution in
290         procedure.c.  Encapsulate transformations in new "struct
291         trns_chain".  Also, change implementation of N OF CASES, FILTER,
292         and PROCESS IF from special cases to transformations.
293          
294         * automake.mk: (src_data_libdata_a_SOURCES) Add transformations.c,
295         transformations.h.
296
297         * dictionary.c: (global variable default_dict) Move to
298         src/procedure.c.
299
300         * variable.h: (TRNS_*) Move to transformations.h.
301         (struct transformation) Move to transformations.c.
302
303 Thu May  4 13:47:06 WST 2006 John Darrington <john@darrington.wattle.id.au>
304
305         * sys-file-reader.c: Fixed invalid read problems.
306
307 Tue May  2 15:57:10 2006  Ben Pfaff  <blp@gnu.org>
308
309         * storage-stream.c: Add missing function comments.
310
311 Tue May  2 15:50:21 2006  Ben Pfaff  <blp@gnu.org>
312
313         Continue reforming procedure execution.  In this phase, add some
314         new, needed functionality to storage-stream.
315
316         * storage-stream.c: (storage_source_decapsulate) New function.
317
318 Tue May  2 15:43:36 2006  Ben Pfaff  <blp@gnu.org>
319
320         * variable.c (width_to_bytes): Declarations must precede
321         statements for C90 compliance.
322
323 Tue May  2 10:42:05 WST 2006 John Darrington <john@darrington.wattle.id.au>
324
325         * data-out.c, data-in.c, variable.c, variable.h: New functions 
326         copy_mangle and copy_demangle for reading/writing cases; emulates the 
327         way SPSS deals with strings > 255 bytes.
328
329         * sys-file-reader.c sys-file-writer.c: Added support for Record 7, 
330         subtype 14 needed for strings longer than 255 bytes.
331
332         * dictionary.c, format.def, value.c : Updated to use MAX_STRING 
333         instead of literal values. Also fixed some constness issues.
334
335         * format.h: Constness
336
337         * sfm-private.h: Renamed the case_size identifier, since I discovered 
338         that SPSS's respect for this variable is very nominal.
339
340 Mon May  1 15:45:42 2006  Ben Pfaff  <blp@gnu.org>
341
342         Change case limit type from int to size_t.
343
344         * dictionary.c: (struct dictionary) Change type of case_limit
345         member.
346         (dict_get_case_limit) Change return type.
347         (dict_set_case_limit) Change parameter type.
348
349 Wed Apr 26 20:01:19 2006  Ben Pfaff  <blp@gnu.org>
350
351         * variable.h: (struct variable) Rename `reinit' member as `leave'
352         and invert sense.  Fix up all references.
353
354 Wed Apr 26 19:39:28 2006  Ben Pfaff  <blp@gnu.org>
355
356         Continue reforming procedure execution.  In this phase, break
357         procedure.c into multiple files.
358         
359         * automake.mk: (src_data_libdata_a_SOURCES) Add all the new files.
360
361         * case-sink.c: New file.
362
363         * case-sink.h: New file.
364         
365         * case-source.c: New file.
366
367         * case-source.h: New file.
368         
369         * storage-stream.c: New file.
370
371         * storage-stream.h: New file.
372
373 Wed Apr 26 14:55:19 2006  Ben Pfaff  <blp@gnu.org>
374
375         * variable.h: (struct variable) Remove `init' member and all
376         references to it from other files.  It was initialized in several
377         places, but nothing really ever used it for anything worthwhile.
378         Thanks to Jason Stover for pointing out how confusing this
379         member is.
380
381 Sun Apr 23 22:04:45 2006  Ben Pfaff  <blp@gnu.org>
382
383         Continue reforming error message support.  In this phase, get rid
384         of message "titles" and put the message text in `struct error'.
385         Now `struct error' encapsulates a message more properly.
386         
387         * casefile.c: (io_error) Use err_msg() instead of err_vmsg().
388         Format message ourselves.
389
390         * data-in.c: (vdls_error) Ditto.
391
392         * por-file-reader.c: (error) Ditto.
393
394         * sys-file-reader.c: (corrupt_msg) Ditto.
395
396 Sun Apr 16 18:49:51 2006  Ben Pfaff  <blp@gnu.org>
397
398         GNU standards require "file name" instead of "filename" in
399         documentation.  It's nice for our code to follow the convention
400         too.
401         
402         * casefile.c: (struct casefile) Rename `filename' member to
403         `file_name'.  Updated all references.
404
405         * file-name.c: [!unix] (struct file_identity) Rename
406         normalized_filename member to normalized_file_name.  Updated all
407         references.
408
409 Sun Apr 16 18:35:33 2006  Ben Pfaff  <blp@gnu.org>
410
411         We don't really support anything but Unix-like environments well,
412         so we might as well de-obfuscate by writing directory and path
413         separators explicitly.
414
415         * file-name.h: (macro DIR_SEPARATOR) Removed.  Changed all usages
416         to just '/'.
417         (macro PATH_SEPARATOR) Removed.  Changed all usages to just ':'.
418         (macro DIR_SEPARATOR_STRING) Removed.  Changed all usages to just
419         "/".
420         (macro PATH_SEPARATOR_STRING) Removed.  Changed all usages to just
421         ":"
422
423 Sun Apr 16 18:28:35 2006  Ben Pfaff  <blp@gnu.org>
424
425         GNU standards require "file name" instead of "filename" in
426         documentation.  It's nice for our code to follow the convention
427         too.
428         
429         * filename.c: Rename to file-name.c.
430
431         * filename.h: Rename to file-name.h.  Update all inclusions.
432         Update header guards.
433
434         * automake.mk: Update file names.
435
436 Sun Apr 16 16:42:47 2006  Ben Pfaff  <blp@gnu.org>
437
438         * filename.c: (fn_dirname) Renamed fn_dir_name(), all references
439         updated.
440         (fn_basename) Removed (dead code).
441         (fn_absolute_p) Renamed fn_is_absolute(), all references updated.
442         (fn_special_p) Renamed fn_is_special(), all references updated.
443         (fn_exists_p) Renamed fn_exists(), all references updated.
444
445 Sun Apr 16 16:33:58 2006  Ben Pfaff  <blp@gnu.org>
446
447         * filename.c: (fn_tilde_expand) Rewrite for cleaner code.  
448         Also, now it only tilde-expands file names, not paths.
449         (fn_search_path) Tilde-expand one directory at a time.
450
451 Sun Apr 16 16:28:06 2006  Ben Pfaff  <blp@gnu.org>
452
453         * filename.c: (fn_search_path) rewrite for cleaner code.  Also,
454         get rid of non-Unixlike version of the code, which has probably
455         never been tested.
456         (fn_prepend_dir) Removed (dead code).
457
458         * filename.h: (macro DIR_SEPARATOR_STRING) New.
459         (macro PATH_SEPARATOR_STRING) New.
460 Sun Apr 16 16:05:28 2006  Ben Pfaff  <blp@gnu.org>
461
462         Continue reforming error message support.  In this phase, we get
463         rid of VM() and the other msg() support for "verbosity", replacing
464         it by a new function verbose_msg().
465
466         * filename.c: (fn_search_path) Use verbose_msg() instead of
467         msg(VM(), ...).  
468
469 Sat Apr 15 19:53:19 2006  Ben Pfaff  <blp@gnu.org>
470
471         * sfm-private.h: Get rid of #defines after #error, which makes no
472         sense.
473
474 Sat Apr 15 19:48:57 2006  Ben Pfaff  <blp@gnu.org>
475
476         Get rid of our own int32 type in favor of the standard int32_t
477         type.
478         
479         * sfm-private.h: (int32 macro) Don't define this anymore.  Do
480         include <stdint.h>.
481
482         * sys-file-reader.c: Use int32_t instead of int32 throughout.
483         
484         * sys-file-writer.c: Use int32_t instead of int32 throughout.
485
486 Sat Apr 15 19:36:47 2006  Ben Pfaff  <blp@gnu.org>
487
488         Remove ill-considered file routines that are no longer used.
489         
490         * filename.c: (fn_open_ext) Removed.
491         (fn_close_ext) Removed.
492
493         * filename.h: (struct file_ext) Removed.
494
495 Mon Apr  3 13:22:39 2006  Ben Pfaff  <blp@gnu.org>
496
497         * variable.c (var_is_valid_name): Move declarations before code
498         for C90 compliance.
499
500 Tue Apr  4 15:28:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
501
502         * filename.ch (fn_interp_vars): Fixed small buglet.
503
504 Tue Mar 28 13:47:16 WST 2006 John Darrington <john@darrington.wattle.id.au>
505         
506         * filename.[ch] (fn_interp_vars): Changed the signature and semantics
507         so as to modify the string inline.   Thus makeing it easier to
508         destroy the results when no longer needed.
509         
510 2006-03-25  Jason Stover  <jhs@math.gcsu.edu>
511
512         * category.c (cat_stored_values_destroy): Fixed memory leak.
513
514 Fri Mar 24 18:15:41 2006  Ben Pfaff  <blp@gnu.org>
515
516         Add some missing frees.  Thanks to John Darrington for reporting
517         these.
518
519         * any-writer.c (any_writer_close): Free writer.
520
521         * any-reader.c (any_reader_close): Free reader.
522
523 Mon Mar 20 16:33:53 2006  Ben Pfaff  <blp@gnu.org>
524
525         * por-file-reader.c: (error) Mark as NO_RETURN.
526
527 Sat Mar 11 15:06:07 WST 2006 John Darrington <john@darrington.wattle.id.au>
528
529         * settings.c: Changed default value of scompress to true.
530
531 Sat Mar  4 13:22:51 2006  Ben Pfaff  <blp@gnu.org>
532
533         * sfm-private.h: Include variable.h, to get SHORT_NAME_LEN.
534
535         * value.h: Remove check on MAX_SHORT_STRING, which I don't think
536         really applies.
537
538         * variable.h: Move definition of SHORT_NAME_LEN, LONG_NAME_LEN
539         here from pref.h.orig.
540
541 Sat Mar  4 12:50:48 WST 2006 John Darrington <john@darrington.wattle.id.au>
542
543         * sys-file-reader.c: Fixed bug reading compressed files.
544
545 Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
546
547         * Numerous renames.  See src/ChangeLog for details.
548         
549         * Moved files from src directory