+2007-08-12 Ben Pfaff <blp@gnu.org>
+
+ Drop dict_compactor in favor of using the new struct case_map.
+
+ * dictionary.c (struct copy_map): Removed.
+ (struct dict_compactor): Removed.
+ (dict_make_compactor): Removed.
+ (dict_compactor_compact): Removed.
+ (dict_compactor_destroy): Removed.
+
+ * procedure.c (struct data_set): Change `compactor' member to be a
+ struct case_map *.
+ (proc_open): Use case_map_to_compact_dict instead of
+ dict_make_compactor.
+ (proc_casereader_read): Use case_map_execute instead of
+ dict_compactor_compact.
+ (proc_commit): Use case_map_destroy instead of
+ dict_compactor_destroy.
+
+ * scratch-writer.c (struct scratch_writer): Change `compactor'
+ member to be a struct case_map *.
+ (scratch_writer_open): Use case_map_to_compact_dict instead of
+ dict_make_compactor.
+ (scratch_writer_casewriter_write): Use case_map_execute instead of
+ dict_compactor_compact.
+o
+2007-08-12 Ben Pfaff <blp@gnu.org>
+
+ * automake.mk: Add case-map.c, case-map.h.
+
+ * case-map.c: New file.
+
+ * case-map.h: New file.
+
+2007-08-12 Ben Pfaff <blp@gnu.org>
+
+ * dictionary.c (dict_compact_values): Don't delete scratch
+ variables as well as compacting case indexes. Update all callers.
+ (dict_get_compacted_value_cnt): Rename dict_count_values and
+ change interface. Update all callers.
+ (dict_get_compacted_value_cnt): Remove.
+ (dict_compacting_would_shrink): Remove.
+ (dict_compacting_would_change): Remove.
+ (dict_make_compactor): Add new parameter. Update all callers.
+
+ * procedure.c (proc_casereader_read): Use casewriter_get_value_cnt
+ instead of dict_count_values, changing an O(N) operation into
+ O(1).
+
+2007-08-12 Ben Pfaff <blp@gnu.org>
+
+ * casereader.c (casereader_read): Don't require cases read by a
+ casereader to be exactly the expected size: as long as they're big
+ enough, it's OK.
+
+2007-08-12 Ben Pfaff <blp@gnu.org>
+
+ Make casewriters keep track of the number of `union value's in
+ each case. This is useful for two reasons: casewriter_write can
+ then check that the case being written is large enough, and later
+ recipients of the casewriter can determine the size of the case.
+
+ * casewriter-translator.c (casewriter_create_translator): Add
+ value_cnt parameter.
+
+ * casewriter.c (struct casewriter): Add value_cnt member.
+ (casewriter_write): Check that the case passed in is big enough.
+ (casewriter_get_value_cnt): New function.
+ (casewriter_create): Add value_cnt parameter.
+
+2007-08-09 Ben Pfaff <blp@gnu.org>
+
+ Fix bug reported by Jason Stover.
+ * settings.c: Move get_termcap_viewport and in particular the
+ #include for <curses.h> to the end of the file. curses.h
+ redefines bool on some systems (e.g. OpenBSD), which causes
+ disagreement between uses of bool before its inclusion and
+ afterward.
+ Tested by Jason Stover.
+
+2007-07-29 Ben Pfaff <blp@gnu.org>
+
+ Provisional fix for bug #18692 and bug #20161. Reviewed by John
+ Darrington.
+
+ * file-name.c (fn_open): Only pass "r" or "w" to popen as mode
+ argument (never "rb" or "wb") because SUSv3 says that only those
+ modes are defined, and glibc in fact rejects other modes.
+
+ Open portable files with fn_open so that they can be read from
+ pipes. Fix missing fh_close call to go along with fh_open.
+ Report an error if the file close reports an error.
+ * por-file-reader.c (close_reader): New function.
+ (por_file_casereader_destroy): Use close_reader.
+ (pfm_open_reader): Open file with fn_open.
+
+2007-07-28 Ben Pfaff <blp@gnu.org>
+
+ Make PSPP able to read all the portable files I could find on the
+ web. Thanks to John Darrington for review. Bug #17620.
+ * por-file-reader.c (struct pfm_reader): New member `line_length'.
+ (error): Print file offset in hexadecimal.
+ (warning): New function.
+ (advance): Treat lines less than 80 bytes long as padded to 80
+ bytes with spaces.
+ (pfm_open_reader): Call read_documents if we find an "E" record.
+ (convert_format): Convert invalid formats to the default format
+ instead of aborting reading the file.
+ (read_variables): Rename duplicate variable names instead of
+ aborting reading the file.
+ (read_value_label): Allow string variables of different widths to
+ be assigned value labels in the same record. Replace duplicate
+ value labels instead of aborting.
+ (read_documents): New function.
+
+ * por-file-writer.c (pfm_open_writer): Call write_documents if the
+ dictionary has documents.
+ (write_documents): New function.
+
+2007-07-25 Ben Pfaff <blp@gnu.org>
+
+ Fix bugs related to bug #17213.
+
+ * settings.c: Use HAVE_LIBNCURSES instead of HAVE_LIBTERMCAP,
+ since the former is what config.h has. Include the needed ncurses
+ headers.
+ (static var echo) Rename to `do_echo' because the original name is
+ the same as an ncurses identifier.
+ (get_termcap_viewport) Use error instead of msg.
+
+ * file-name.c (fn_interp_vars): Fix interpolation of $VARS.
+ (fn_close): Don't close stdin, stdout, stderr.
+
+2007-07-26 John Darrington <john@darrington.wattle.id.au>
+
+ * procedure.c procedure.h: Added callbacks which get invoked whenever
+ a dataset's transformation chain changes.
+
2007-07-24 Ben Pfaff <blp@gnu.org>
Fix bug #6113.