X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2FChangeLog;h=bba2afaa6411b24035633c02927e78334774b54f;hb=aab828a13b340ac7f3302e3a009274ed49d43ef1;hp=ba6d517a26ef2f2f53dbbe2d9682792e486c3222;hpb=ad01fea350354a7df11790a561e935a8bffd3636;p=pspp-builds.git diff --git a/src/ChangeLog b/src/ChangeLog index ba6d517a..bba2afaa 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,1322 @@ +2007-11-03 John Darrington + + * gnumeric-reader.c gnumeric-reader.h: New files. + +Thu May 4 21:47:48 2006 Ben Pfaff + + Continue reforming procedure execution. In this phase, move + procedure.c and procedure.h from src to src/data. Update + makefiles and #includes accordingly. + + * automake.mk: Remove special rule for src/procedure.o. + + * procedure.c: Moved to src/data. + + * procedure.h: Moved to src/data. + +Wed May 3 22:24:34 2006 Ben Pfaff + + Continue reforming procedure execution. In this phase, get rid of + many global variables, consolidating procedure execution in + procedure.c. Encapsulate transformations in new "struct + trns_chain". Also, change implementation of N OF CASES, FILTER, + and PROCESS IF from special cases to transformations. + + * procedure.c: (global var vfm_source) Make static. Changed + external references to use in_input_program(), proc_set_source(), + or proc_capture_output() instead. + (global var vfm_sink) Make static. Changed external references to + use proc_set_sink() instead. + (global var default_dict) Move here from data/dictionary.c. + (static var permanent_trns_chain) New var. + (static var temp_dict) Renamed permanent_dict, updated references. + (static var temporary_trns_chain) New var. + (static var cur_trns_chain) New var. + (static var in_procedure) Removed. + (global var t_trns) Removed. + (global var n_trns) Removed. + (global var m_trns) Removed. + (global var f_trns) Removed. + (procedure) Even if there's "nothing to do" we need to clear + PROCESS IF, N OF CASES, vector state. (This should be + abstracted.) + (multipass_callback) New function. + (multipass_procedure) New function. + (open_active_file) Add N OF CASES, FILTER, PROCESS IF + transformations. Finalize transformations. No need to call + ctl_stack_clear() anymore because finalizers will do that. + (write_case) Simplify and rewrite. + (execute_transformations) Removed. + (filter_case) Removed. + (close_active_file) Use proc_cancel_temporary_transformations(). + No need to clear PROCESS IF, N OF CASES here anymore because + helpers do that. + (multipass_procedure_with_splits) Keep track of success. + (multipass_split_callback) Ditto. + (multipass_split_output) Ditto. + (discard_variables) No need to call ctl_stack_clear() anymore + because finalizers will do that. + (proc_capture_transformations) New function. + (add_transformation) Rewrite in terms of trns_chain_append(). + (add_transformation_with_finalizer) New function. + (next_transformation) Rewrite in terms of trns_chain_next(). + (proc_in_temporary_transformations) New function. + (proc_start_temporary_transformations) New function. + (proc_make_temporary_transformations_permanent) New function. + (proc_cancel_temporary_transformations) New function. + (cancel_transformations) Rename proc_cancel_all_transformations(), + rewrite in terms of trns_chain_destroy(). + (proc_init) New function. + (proc_done) New function. + (proc_set_sink) New function. + (proc_set_source) New function. + (proc_has_source) New function. + (proc_capture_output) New function. + (add_case_limit_trns) New function. + (case_limit_trns_proc) New function. + (case_limit_trns_free) New function. + (add_filter_trns) New function. + (filter_trns_proc) New function. + (add_process_if_trns) New function. + (process_if_trns_proc) New function. + (process_if_trns_free) New function. + +Wed Apr 26 20:00:00 2006 Ben Pfaff + + * procedure.c (create_trns_case): Fix inverted decision on whether + numeric values should be initialized to 0 or SYSMIS. + +Wed Apr 26 19:48:52 2006 Ben Pfaff + + Continue reforming procedure execution. In this phase, assert + that add_transformation() is not called during procedure + execution. Thanks to John Darrington for the suggestion. + + * procedure.c: (static var in_procedure) New var. + (internal_procedure) Get rid of recursive_call local var and + logic. + (open_active_file) Set in_procedure and make sure it wasn't + already set. + (close_active_file) Reset in_procedure and make sure it was + already set. + (add_transformation) Make sure we're not in a procedure. + +Wed Apr 26 19:33:52 2006 Ben Pfaff + + Continue reforming procedure execution. In this phase, break + procedure.c into multiple files. + + * procedure.c (vfm_last_invocation): Rename + time_of_last_procedure(). Update all references. + (struct storage_stream_info) Move to data/storage-stream.c. + (storage_sink_open) Ditto. + (destroy_storage_stream_info) Ditto. + (storage_sink_write) Ditto. + (storage_sink_destroy) Ditto. + (storage_sink_make_source) Ditto. + (var storage_sink_class) Ditto. + (storage_source_count) Ditto. + (storage_source_read) Ditto. + (storage_source_destroy) Ditto. + (storage_source_class) Ditto. + (storage_source_get_casefile) Ditto. + (storage_source_create) Ditto. + (null_sink_class) Move to data/case-sink.c. + (create_case_source) Move to data/case-source.c. + (free_case_source) Ditto. + (case_source_is_class) Ditto. + (create_case_sink) Move to data/case-sink.c. + (free_case_sink) Ditto. + + * procedure.h: (struct case_source) Move to data/case-source.h. + (struct case_source_class) Ditto. + (struct case_sink) Move to data/case-sink.h. + (struct case_sink_class) Ditto. + +Thu Apr 27 09:28:25 WST 2006 John Darrington + + * automake.mk: Removed explicit dependencies for message.o, since + that module no longer exists. + +Wed Apr 26 15:29:45 2006 Ben Pfaff + + Start reforming procedure execution. In this phase, get rid of + function prototypes for never-defined functions. + + * procedure.h: Get rid of function prototypes for never-defined + functions. + +Wed Apr 26 12:58:46 2006 Ben Pfaff + + Improve the way we handle the various parsing "states". Until now + we've hard-coded the state transitions in the command definition + file, but that's error-prone and, worse, it's redundant--we can + figure out what state we're in anyhow. We can cleanly handle + INPUT PROGRAM and FILE TYPE with a nested command-processing loop. + + * procedure.c (case_source_is_complex): Removed. + (discard_variables) No need to set pgm_state anymore. + +Tue Apr 25 11:06:49 2006 Ben Pfaff + + Finish reforming error message support. In this phase, move + message.c into libpspp. + + * message.c: Move to libpspp. + +Tue Apr 25 10:47:37 2006 Ben Pfaff + + Continue reforming error message support. In this phase, drop + actual message printing from core code, substituting a callback, + and add the callback to each UI. Also, move verbose_msg() into + its own module. + + * message.c: (var err_error_count) Renamed error_count and moved + to ui/terminal/msg-ui.c. + (var err_warning_count) Renamed warning_count and moved to + ui/terminal/msg-ui.c. + (err_check_count) Renamed check_msg_count() and moved to + ui/terminal/msg-ui.c. + (dump_message) Rewrote to take stream instead of function pointer + and moved to ui/terminal/msg-ui.c. + (msg_emit) Moved its guts to ui/terminal/msg-ui.c as handle_msg() + and rewrote to just pass message to callback. + + (var err_verbosity) Renamed "verbosity" and moved to + libpspp/verbose-msg.c. + (verbose_msg) Moved to libpspp/verbose-msg.c. + + (var err_already_flagged) Removed. + (puts_stdout) Removed. + + (var msg_handler) New static variable. + (msg_init) New function. + (msg_get_command_name) New function. + +Mon Apr 24 17:40:08 2006 Ben Pfaff + + Continue reforming error message support. In this phase, rename + all the message functions and types to start with "msg", except + for the ones that will be moving to other modules anyway. + + All references to the identifiers below were updated likewise. + + * message.c: (err_done) Renamed msg_done(). + (err_push_file_locator) Renamed msg_push_msg_locator(). + (err_pop_file_locator) Renamed msg_pop_msg_locator(). + (err_location) Renamed msg_location(). + (err_set_command_name) Renamed msg_set_command_name(). + +Mon Apr 24 14:11:33 2006 Ben Pfaff + + * message.c: Use exit.h from gnulib instead of checking for and + defining EXIT_SUCCESS and EXIT_FAILURE by hand. + +Sun Apr 23 22:00:23 2006 Ben Pfaff + + Continue reforming error message support. In this phase, get rid + of message "titles" and put the message text in `struct error'. + Now `struct error' encapsulates a message more properly. + + * message.c: (tmsg) Removed. + (msg) Use err_msg() instead of err_vmsg(). Format message + ourselves. + (err_vmsg) Renamed err_msg(). Changed interface, dropping message + and va_list args which are now in the error struct. + +Sun Apr 23 20:35:28 2006 Ben Pfaff + + Continue reforming error message support. + + * message.c: Use linebreak module from gnulib instead of home-brew + line breaking. + (puts_stdout) Rewrote. + (dump_message) Rewrote. Changed interface and updated all callers. + (compulsory_break) Removed. + (char_is_break) Removed. + (break_before) Removed. + (break_after) Removed. + (macro BREAK_LONG_WORD) Removed. + +Sun Apr 16 20:41:10 2006 Ben Pfaff + + Continue reforming error message support. In this phase, we + divide the classification of messages along "category" and + "severity" axes. + + * message.c: (err_vmsg) Rewrite to deal with categories and + severities in a straightforward manner instead of mixing them into + classes. + [0] (puts_stderr) Removed (dead code). + (msg) Changed first argument from `int' to `enum msg_class'. + (tmsg) Ditto. + +Sun Apr 16 18:53:12 2006 Ben Pfaff + + GNU standards require "file name" instead of "filename" in + documentation. It's nice for our code to follow the convention + too. + + Basically did search and replace in the whole source tree. Major + changes in function names or struct member names have their own + change log entries. + +Sun Apr 16 15:58:56 2006 Ben Pfaff + + Continue reforming error message support. In this phase, we get + rid of VM() and the other msg() support for "verbosity", replacing + it by a new function verbose_msg(). + + * message.c: (verbose_msg) New function. + (err_vmsg) Remove support for verbosity levels. + +Sun Apr 16 11:46:51 2006 Ben Pfaff + + Start reforming error message support. In this phase, we get rid + of "installation errors" and change all uses of msg() in the + output drivers to uses of error() or error_at_line(). + + * message.c: (err_vmsg) Get rid of IE, IS support. + +Sat Mar 11 14:17:47 WST 2006 John Darrington + + * automake.mk: Changed the pattern specific AM_CPPFLAGS to two target + specific ones. Eventually there will be none at all. + + * automake.mk: Moved the pspp binary to ui/terminal + +Sat Mar 4 12:59:08 2006 Ben Pfaff + + * In many source files, #include "compiler.h" to get GCC attribute + definitions. + +Sat Mar 4 12:28:09 2006 Ben Pfaff + + * In many source files, replace INT_DIGITS by + INT_STRLEN_BOUND(int) and include intprops.h. + +John Darrington: + + * Replaced '_' with '-' in most filenames. + + * Renamed files as follows: + vfm.[ch] to procedure.[ch] + error.[ch] to message.[ch] + getl.[ch] to line-buffer.[ch] + mkfile.[ch] to make-file.[ch] + pfm-write.h to por-file-writer.h + pfm-write.c to por-file-writer.c + sfmP.h to sfm-private.h + lex-def.c to identifier.c + lex-def.h to identifier.h + sfm-read.c to sys-file-reader.c + sfm-read.h to sys-file-reader.h + sfm-write.h to sys-file-writer.h + sfm-write.c to sys-file-writer.c + chart.[ch] to chart-geometry.[ch] + val.h to value.h + var.h to variable.h + vars-atr.c to variable.c + ctl-stack.c to control-stack.c + ctl-stack.h to control-stack.h + dfm-read.c to data-reader.c + dfm-write.c to data-writer.c + dfm-write.h to data-writer.h + dfm-read.h to data-reader.h + apply-dict.c to apply-dictionary.c + mis-val.c to missing-values.c + sysfile-info.c to sys-file-info.c + modify-vars.c to modifiy-variables.c + rename-vars.c to rename-variables.c + val-labs.c to value-labels.c + var-display.c to variable-display.c + var-labs.c to variable-label.c + format-prs.c to format-parser.c + range-prs.c to range-parser.c + range-prs.h to range-parser.h + subclist.c to subcommand-list.c + subclist.h to subcommand-list.h + vars-prs.c to variable-parser.c + descript.c to descriptives.c + sort-prs.c to sort-criteria.c/sort-cases.c + sort-prs.h to sort-criteria.h + sel-if.c to select-if.c + algorithm.c to array.c + algorithm.h to array.h + bitvector.h to bit-vector.h + som.c to manager.c + som.h to manager.h + tab.h to table.h + tab.c to table.c + readln.c to read-line.c + readln.h to read-line.h + cmdline.c to command-line.c + cmdline.h to command-line.h + + +Sat Feb 11 22:35:20 2006 Ben Pfaff + + General clean-ups and minor bug fixes. + + * filename.h: Move DIR_SEPARATOR, PATH_SEPARATOR here from + pref.h.orig. + + * lex-def.h: (macro CHAR_IS_ID1) Removed. All references changed + to lex_is_id1(). + (macro CHAR_IS_IDN) Removed. All references changed to + lex_is_idn(). + + * lex-def.c: (lex_is_id1) New function. + (lex_is_idn) New function. + (lex_skip_identifier) New function. + (lex_id_match_len) Return bool instead of int. + (lex_id_match) Ditto. + + * command.c: (parse_command_name) Convert parsed words to + uppercase to make error messages easier to read. + (cmd_host) Fix return value. + + * dfm-read.c: (read_inline_record) Use tokens to check for BEGIN + DATA, not specialized lexical analysis. + + * print.c: (print_space_trns_proc) Count of lines should be `int', + otherwise we might never finish. + (print_space_trns_free) Close writer. + + * lexer.c: (enum string_type) New enum. + (lex_get) Remove essentially unused local variable `cp'. + Use enum string_type values. Use parse_id(). + (parse_id) New function. + (lex_look_ahead) Recognize octal strings too. + (strip_comments) New function. + (lex_get_line) Rewrite. + (lex_preprocess_line) Removed. + (convert_numeric_string_to_char_string) Use enum string_type. + (parse_string) Ditto. + + * autorecode.c: (recode) Clone correct number of bytes based on + source string width. + +Sat Feb 11 22:34:38 2006 Ben Pfaff + + Reduce dependencies on getl, and of getl. + + * data-in.c: (vdls_error) Don't output different message depending + on whether we're interactive. + + * getl.h: (struct getl_line_list) Removed. + (struct getl_script) Removed. + (GETL_PRPT_*) Removed. + (GETL_MODE_*) Removed. + (GETL_PROMPT_FIRST, GETL_PROMPT_LATER, GETL_PROMPT_DATA, + GETL_PROMPT_CNT) New enums. + + * settings.c: (static var prompt) Removed. + (static var cprompt) Removed. + (static var dprompt) Removed. + (settings_done) Don't initialize prompt, cprompt, dprompt. + (get_prompt) Removed. + (set_prompt) Removed. + (get_dprompt) Removed. + (set_dprompt) Removed. + (get_cprompt) Removed. + (set_cprompt) Removed. + + * pfm-read.c: (corrupt_msg) Don't show filename and line number, + to get rid of getl_location(). + + * sfm-read.c: (corrupt_msg) Ditto. + + * getl.c: (struct getl_source) New. + (static var cur_source) New. + (static var last_source) New. + (static var DO_REPEAT_level) Removed. + (global var getl_head) Removed. + (global var getl_tail) Removed. + (getl_initialize) Call init_prompts(). + (getl_add_file) Removed. + (getl_include) Removed. + (getl_add_DO_REPEAT_file) Removed. + (getl_handle_line_buffer) Removed. + (getl_close_file) Removed. + (getl_close_all) Removed. + (getl_is_separate) Removed. + (getl_set_separate) Removed. + (getl_reading_script) Removed. + (append_source) New function. + (include_source) New function. + (create_source) New function. + (create_syntax_file_source) New function. + (create_filter_source) New function. + (create_function_source) New function. + (create_interactive_source) New function. + (getl_append_syntax_file) New function. + (getl_include_syntax_file) New function. + (getl_include_filter) New function. + (getl_include_function) New function. + (getl_append_interactive) New function. + (getl_abort_noninteractive) New function. + (getl_is_interactive) New function. + (close_source) New function. + (getl_location) Use new `cur_source' var. + (getl_uninitialize) Use close_source(). Call uninit_prompts(). + (read_syntax_file) New function. + (read_line_from_source) New function. + (do_read_line) New function. + (getl_read_line) Rewrite. + (static var prompts) New. + (static var current_style) New. + (init_prompts) New function. + (uninit_prompts) New function. + (getl_get_prompt) New function. + (getl_set_prompt) New function. + (getl_set_prompt_style) New function. + (get_prompt) New function. + + * command.c: Merge the EXIT (aka Q, aka QUIT) and FINISH commands, + and make EXIT undocumented. EXIT was a PSPP extension that never + really entirely made sense. + (cmd_exit) Removed. + (cmd_finish) Return CMD_EOF unconditionally. + (cmd_clear_transformations) Drop requirement of interactivity. + + * command.def: Merge the EXIT (aka Q, aka QUIT) and FINISH + commands. + + * repeat.c: Major changes to match getl revision. + (struct line_list) New struct. + (enum repeat_entry_type) New. + (struct repeat_entry) Made `type' an enum repeat_entry_type. + (struct repeat_block) New. + (static var repeat_tab) Removed. + (static var count) Removed. + (static var line_buf_head) Removed. + (static var line_buf_tail) Removed. + (cmd_do_repeat) Rewritten. + (clean_up) Removed. + (append_record) Removed. + (recognize_keyword) New function. + (internal_cmd_do_repeat) Removed. + (parse_specification) New function. + (skip_indentor) New function. + (recognize_do_repeat) New function. + (recognize_end_repeat) New function. + (parse_lines) New function. + (create_vars) New function. + (parse_ids) Use enum repeat_entry_type. + (parse_strings) Ditto. + (find_DO_REPEAT_substitution) Renamed find_substitution(), + rewrote. + (perform_DO_REPEAT_substitutions) Renamed do_repeat_filter(), + rewrote. + (do_repeat_read) New function. + (do_repeat_close) New function. + + * data-list.c: Don't need to keep track of eof from getl anymore, + because getl can tell us now. + (struct data_list_pgm) Removed `eof' member. + (cmd_data_list) Don't assign to `eof'. + (get_data_list_read_func) Renamed read_from_data_list(), changed + interface. + (read_from_data_list_fixed) Changed interface. + (read_from_data_list_free) Changed interface. + (read_from_data_list_list) Changed interface. + (data_list_trns_proc) Rewrote based on dfm_eof() and + dfm_reader_error(). + (data_list_source_read) Check for dfm reader errors. + + * dfm-read.c: (enum dfm_reader_flags) Removed DFM_EOF in favor of + new `eof_cnt' member in struct dfm_reader. + (struct dfm_reader) New `eof_cnt' member. + (dfm_close_reader) Check `eof_cnt', not DFM_EOF. + (dfm_open_reader) Initialize `eof_cnt'. + (read_inline_record) Set prompt style with + getl_set_prompt_style(). + (read_record) Rewrite. + (cmd_begin_data) Set prompt style with getl_set_prompt_style(). + + * include.c: (cmd_include) Use getl_include_syntax_file(). + + * set.q: (cmd_set) Use getl_set_prompt(). + + * html.c: (postopen) Remove "source-file" expansion variable, to + avoid use of getl_location(). + + * postscript.c: (postopen) Remove "source-file" expansion + variable, to avoid use of getl_location(). + + * cmdline.c: (parse_command_line) Drop -c command line option, + because it wasn't very useful. -i command line option now calls + getl_append_interactive(). Use new getl function interfaces. + Drop support for clearing dictionary between syntax files and thus + the "+" command line syntax. + (static var pre_syntax_message) Remove description of now-gone -c + option. Remove "+" command line syntax. + + * main.c: (main) Only call handle_error() if the return value is + an error. + (execute_command) Use getl_set_prompt_style(). Drop support for + clearing dictionary between syntax files. + (handle_error) Handle CMD_CASCADING_FAILURE. Don't call err_break(). + + * readln.c: Drop lots of #ifdefs. Now that the Autoconf tests are + pickier, we can just use HAVE_READLINE. + (static var welcomed) Move into welcome(). + (welcome) Make `welcomed' a local static var. Check for and read + history file here. + (global var getl_mode) Removed. + (global var getl_interactive) Removed. + (global var getl_prompt) Removed. + (getl_read_line) removed. + (readln_read) New function. + (read_console) Removed. + + +Sat Feb 11 22:16:21 2006 Ben Pfaff + + Try to reduce some of the nastier dependencies on the error + module, and at the same time make PSPP nicer to deal with, by + getting rid of fatal errors. All the existing calls to msg (FE, + ...) or err_cond_fail() or err_failure() have been replaced by + propagating an error upward to the command-dispatch layer. + Unfortunately this propagation took a fair bit of extra mechanism, + because now a lot of functions can fail that couldn't before. + + New command return value CMD_CASCADING_FAILURE which indicates to + the command processor that syntax file processing should be + abandoned. Many commands were modified to return + CMD_CASCADING_FAILURE. When this modification was trivial it + isn't mentioned in detail below. + + Transformation procedures (trns_proc_func) and free functions + (trns_free_func) now have a `bool' return type, which is normally + true, but false when an I/O or other serious error occurs. All + transformation functions were modified to have this return type. + When this modification was trivial it isn't mentioned in detail + below. + + * pspp-error.h: (FE) Removed this error class. + + * error.c: (err_failure) Removed. + (err_cond_fail) Removed. + (err_break) Removed (it was unused). + (err_check_count) Don't cause a fatal error--instead, stop reading + the syntax file. + (err_vmsg) Don't have FE anymore, so no need to call terminate(). + + * any-reader.c: (any_reader_error) New function. + + * any-writer.c: (any_writer_write) Propagate + scratch_writer_write_case()'s new return value. + (any_writer_error) New function. + (any_writer_close) Propagate underlying function's new return + value. + + * casefile.c: Add an "error state" to a casefile. A casefile that + encounters an I/O error enters the error state, and afterward + reading and writing cases fails. + (struct casefile) Add `ok' member. + (casefile_create) Set `ok' to true. + (casefile_destroy) Use io_error(). + (casefile_error) New function. + (casefile_sleep) Now returns bool to indicate success. + (casefile_append) Ditto. + (casefile_append_xfer) Ditto. + (casefile_to_disk) Ditto. + (write_case_to_disk) Don't do anything in error state. + (flush_buffer) Don't do anything in error state. Use io_error(). + (reader_open_file) Ditto. + (fill_buffer) Ditto. + (casereader_read) Don't do anything in error state. Handle + errors. + (casereader_read_xfer_assert) Removed, because now an I/O error + can occur even if the caller knows a case exists. + (io_error) New function. + + * mkfile.c: (make_temp_file) Make failure non-fatal. + (make_unique_file_stream) Ditto. + + * pfm-read.c: Add an error state. + (struct pfm_reader) Add `ok' member to indicate error state. + (error) Set `ok' to false. + (pfm_open_reader) Set `ok' to true. Make failure non-fatal. + (pfm_read_case) Don't do anything in error state. + (pfm_read_error) New function. + + * pfm-write.c: Postpone most error checking in favor of checking + ferror() afterward. + (pfm_open_writer) Make failure non-fatal. Check for write error + after writing header. + (buf_write) Don't do anything if error has occurred. Postpone + error checking. Change return type to void. + (write_float) Postpone error checking. Change return type to + void. + (write_int) Ditto. + (write_string) Ditto. + (write_header) Ditto. + (write_version_data) Ditto. + (write_format) Ditto. + (write_value) Ditto. + (write_variables) Ditto. + (write_value_labels) Ditto. + (pfm_write_case) Don't do anything if error has occurred. + (pfm_write_error) New function. + (pfm_close_writer) Change return type to bool. Return false if an + I/O error occurred. + + * scratch-reader.c: (scratch_reader_error) New function. + + * scratch-writer.c: (scratch_writer_write_case) Change return type + to bool. Propagate casefile error return. + (scratch_writer_error) New function. + (scratch_writer_close) Change return type to bool. Propagate + casefile error return. + + * sfm-read.c: Add an error state. + (struct sfm_reader) Add `ok' member. + (sfm_open_reader) Initialize `ok'. Make errors non-fatal. + (buf_read) Set `ok' to false on error. + (buffer_input) Do nothing in error state. Set `ok' to false on + error. + (read_compressed_data) Set `ok' false on error. + (sfm_read_case) Return false in error state. + (fread_ok) Set `ok' false on error. + (sfm_read_error) New function. + + * sfm-write.c: Postpone most error checking in favor of checking + ferror() afterward. + (sfm_open_writer) Make failure non-fatal. Check for write error + after writing header. + (write_header) Postpone error checking. Change return type to + void. + (write_variable) Ditto. + (write_value_labels) Ditto. + (write_documents) Ditto. + (write_variable_display_parameters) Ditto. + (write_longvar_table) Ditto. + (write_rec_7_34) Ditto. + (buf_write) Ditto. + (ensure_buf_space) Ditto. + (sfm_write_case) Do nothing if write error has occurred. + (sfm_write_error) New function. + (pfm_close_writer) Change return type to bool. Return false if an + I/O error occurred. + + * var.h: Introduced a new return value for trns_proc_func that + means "a serious error has occurred, so abort the procedure + entirely". Because the hard-coded values of -1, -2, etc. were + becoming even a worse idea now, also introduced some macros for + them: TRNS_CONTINUE, TRNS_DROP_CASE, TRNS_ERROR, TRNS_NEXT_CASE, + TRNS_END_FILE. Also replaced all references to the hard-coded + values by uses of the macros. + + * command.h: New command return value CMD_CASCADING_FAILURE which + indicates to the command processor that syntax file processing + should be abandoned. + + * dfm-read.c: (dfm_open_reader) Make failure non-fatal. + (dfm_reader_error) New function. + (read_inline_record) Make unexpected end of file nonfatal. + (read_file_record) Make read error nonfatal. + (dfm_eof) Make second unexpected end of file nonfatal. + (cmd_begin_data) Make errors nonfatal. + + * dfm-write.c: (dfm_open_writer) Make failure non-fatal. + (dfm_write_error) New function. + (dfm_put_record) Do nothing in error state. Now return error + state. + (dfm_close_reader) Now return `bool' indicating error state. + + * file-type.c: (file_type_source_read) Now return `bool' + indicating error state. + + * get.c: (case_reader_source_read) Now return `bool' indicating + write error. + (case_writer_destroy) Ditto. + (case_writer_write_case) Ditto. + (struct mtf_proc) New member `ok' indicating error state. + (cmd_match_files) Initialize and deal with `ok'. + (mtf_processing_finish) Now return `bool' indicating I/O error. + (mtf_free_file) Renamed mtf_close_file(). Now return `bool' + indicating I/O error. + (mtf_free) Now return `bool' indicating I/O error. + (mtf_delete_file_in_place) Ditto. + (mtf_read_nonactive_records) Ditto. + (mtf_processing) Ditto. + + * inpt-pgm.c: (input_program_source_read) Now return `bool' + indicating I/O error. Handle new TRNS_ERROR transformation return + value. + + * matrix-data.c: Introduce error state. + (cmd_matrix_data) Check error return values. + (read_matrices_without_rowtype) Now return `bool' indicating I/O + error. + (matrix_data_read_without_rowtype) Ditto. + (dump_cell_content) Ditto. + (nr_output_data) Ditto. + (read_matrices_with_rowtype) Ditto. + (matrix_data_read_with_rowtype) Ditto. + (wr_output_data) Ditto. + + * lexer.c: (lex_init) Make unexpected eof non-fatal. + (lex_get) Ditto. + (lex_look_ahead) Ditto. + (unexpected_eof) Removed. + (convert_numeric_string_to_char_string) Make unexpected eof + non-fatal. + (parse_string) Ditto. + + * flip.c: Make I/O errors non-fatal. + (struct flip_pgm) Add `pool', `output_buf' members. + (cmd_flip) Create and use pool. Propagate errors. + (destroy_flip_pgm) Rewrite, using pool. + (struct flip_sink_info) Removed. + (flip_sink_create) Use pool. Make errors non-fatal. + (flip_sink_write) Make errors non-fatal. + (flip_file) Make errors non-fatal. Make `bool' return type to + indicate failure. + (flip_sink_destroy) Remove. + (static var flip_sink_class) Use NULL as destroy func, not + flip_sink_destroy(). + + * sort.c: Make I/O errors non-fatal. Propagate errors. + (sort_active_file_in_place) Propagate errors. + (sort_active_file_to_casefile) Ditto. + (do_internal_sort) Ditto. + (do_external_sort) Ditto. + (write_runs) Ditto. + (destroy_initial_run_state) Propagate errors via new `bool' return + type. + (merge) Propagate errors. + (merge_once) Ditto. + + * output.c: [GLOBAL_DEBUGGING] Remove reentrancy detection, + because it used msg (FE, ...) and wasn't very useful. + + * main.c: (handle_error) Handle CMD_CASCADING_FAILURE. + + * vfm.c: (struct write_case_data) Change `proc_func' return type + to bool. + (procedure) Add `bool' return type to indicate I/O error. + Propagate errors. + (internal_procedure) Ditto. + (write_case) Ditto. + (execute_transformations) If a transformation returns TRNS_ERROR, + propagate the error. + (close_active_file) Add `bool' return type to indicate I/O error. + Propagate errors. + (cancel_transformations) Add `bool' return type to indicate I/O + error. Propagate errors. + (struct split_aux_data) Change `proc_func' return type to bool. + (procedure_with_splits) Change `proc_func' return type to bool. + Add `bool' return type to indicate I/O error. + (multipass_procedure_with_splits) Change `split_func' return type + to bool. Add `bool' return type to indicate I/O error. + (multipass_split_callback) Add `bool' return type to indicate I/O + error. Propagate errors. + + * vfm.h: (struct case_source_class) Change `read' return type from + void to bool to allow reporting I/O errors. Updated all + implementations to do so. + (struct case_sink_class) Change `write' return type from void to + bool to allow reporting I/O errors. Updated all implementations + to do so. + +Sun Feb 12 18:12:56 2006 Ben Pfaff + + * pool.c: Useful new functions. + (pool_tmpfile) New function. + (pool_attach_file) New function. + (pool_detach_file) New function. + (pool_fopen) Reimplement in terms of pool_attach_file(). + (pool_fclose) Reimplement in terms of pool_detach_file(). Fix + double-free. + + * str.c: Useful new functions. + (ds_swap) New function. + (ds_rtrim_spaces) New function. + (ds_chomp) New function. + (ds_is_empty) New function. + (ds_first) New function. + (ds_last) New function. + +Sat Feb 11 21:51:21 2006 Ben Pfaff + + Get rid of finished, start_interactive globals. + + * command.c: (cmd_exit) Instead of setting `finished', return + CMD_EOF. + (cmd_finish) Ditto. + + * command.h: New enum CMD_EOF. + + * main.c: (global var finished) Removed. + (global var start_interactive) Removed. + (main) Execute commands until CMD_EOF is the return value. + If parse_command_line() returns false, don't execute any commands + at all. + + * cmdline.c: (parse_command_line) If the command line indicates we + shouldn't execute syntax files, return false instead of + terminating. + (usage) Don't terminate. + +Sat Feb 11 21:48:31 2006 Ben Pfaff + + Get rid of cur_proc global. Replace by functions in err and tab + modules, which were the users. + + * error.c: (static var command_name) New static var. + (err_vmsg) Use command_name. + (err_set_command_name) New function. + + * tab.c: (static var command_name) New static var. + (tabi_title) Use command_name. + (tab_set_command_name) New function. + + * command.c: (global var cur_proc) Removed. + (cmd_parse) Call err_set_command_name(), tab_set_command_name() + around executing command to set and clear command name. + +Sat Feb 11 21:44:50 2006 Ben Pfaff + + Get rid of glob.c, glob.h. + + * Makefile.am: (pspp_SOURCES) Remove glob.c, glob.h. + + * dictionary.c: Move default_dict definition here. + + * glob.c: Removed. + (global var FILTER_before_TEMPORARY) Variable removed. All + references deleted. The info in this var was redundant with + temp_dict, so they were changed to use temp_dict where needed. + + * glob.h: Removed. + + * start-date.c: New file. Moved get_start_date() here. + + * start-date.h: New file. + +Fri Feb 3 20:34:52 2006 Ben Pfaff + + * font.h: (struct font_set) Removed, because unused. + +Sat Jan 28 17:45:36 2006 Ben Pfaff + + Cleaner (faster?) way to compact cases. + + * dictionary.c: (dict_compact_case) Removed. + (dict_needs_compaction) New function. + (struct copy_map) New structure. + (struct dict_compactor) New structure. + (dict_make_compactor) New function. + (dict_compactor_compact) New function. + (dict_compactor_destroy) New function. + +Sat Jan 28 17:24:22 2006 Ben Pfaff + + Cleanups. + + * data-list.c: Make data_list_source_class static. + (dump_fixed_table) Use fh_get_name() to describe source of data. + (dump_free_table) Ditto. + (cmd_repeating_data) Eliminate special cases for inline file. + + * dictionary.c: (dict_contains_var) Change return value from int to + bool. + (dict_rename_vars) Ditto. + (dict_create_vector) Ditto. + +Sat Jan 28 17:20:50 2006 Ben Pfaff + + Add scratch file handles. + + Now a file handle can refer to a disk file, to an in-memory + structure, or to the "inline" file, instead of just to a disk + file. The introduction of new categories means that special cases + for the inline file in a few places could be eliminated, but it + also means that code that assumed that a handle refers to a file + has to check for that. + + Also, now file handles can be freed, so code now must be sure not + to access a handle after closing it (with fh_close()). + + * Makefile.am: Add any-reader.c, any-reader.h, any-writer.c, + any-writer.h, scratch-handle.c, scratch-handle.h, + scratch-reader.c, scratch-reader.h, scratch-writer.c, + scratch-writer.h to pspp_SOURCES. + + * any-reader.c: New file. + + * any-reader.h: New file. + + * any-writer.c: New file. + + * any-writer.h: New file. + + * scratch-handle.c: New file. + + * scratch-handle.h: New file. + + * scratch-reader.c: New file. + + * scratch-reader.h: New file. + + * scratch-writer.c: New file. + + * scratch-writer.h: New file. + + * aggregate.c: Use an any_writer instead of an sfm_writer, to add + flexibility. + + * apply-dict.c: Use an any_reader instead of an sfm_reader, to add + flexibility. + + * command.def: Add CLOSE FILE HANDLE command. + + * dfm-reader.c: Now fewer special cases for inline file. + (static var inline_open_cnt) Removed. + (static var inline_file) Removed. + (dfm_close_reader) Eliminate a special case for inline file. + Reorganize to avoid access-after-free. + (dfm_open_reader) Eliminate a special case for inline file. + (read_inline_record) Use bool instead of int. No need to + increment line number. + (read_file_record) Use bool instead of int. + (read_record) Check whether file handle is inline file, instead of + for null pointer. + (dfm_eof) Ditto. + (dfm_expand_tabs) Ditto. + (dfm_push) Ditto. + (dfm_pop) Ditto. + (cmd_begin_data) Fix inaccurate check for whether the inline file + is in use--now we can tell by checking whether the inline file's + open count is positive. + + * file-handle-def.c: (struct file_handle) Reorder members. Add + `deleted' member. Add `referent' member. Add `sh' member. + (static var default_handle) New variable. + (static var inline_file) New variable. + (fh_init) Initialize inline file. + (free_handle) New function. + (fh_done) Rewrite. + (fh_from_name) Don't return deleted handles. + (fh_from_filename) Ditto. + (fh_create) Removed. + (create_handle) New function. + (fh_create_file) New function. + (fh_create_scratch) New function. + (fh_inline_file) New function. + (fh_free) Rewrite. + (fh_open) Now requires a referent type mask and verifies it. All + references updated. + (fh_close) If open_cnt goes to 0 on a deleted handle, free it. + (fh_is_open) New function. + (fh_get_referent) New function. + (fh_get_filename) Limit to handles that refer to files. + (fh_get_mode) Ditto. + (fh_get_record_width) Limit to handles that refer to files or the + inline file. + (fh_get_tab_width) Ditto. + (fh_get_scratch_handle) New function. + (fh_set_scratch_handle) New function. + (fh_get_default_handle) New function. + (fh_set_default_handle) New function. + + * file-handle.h: (enum fh_referent) New type. + (enum fh_mode) Rename MODE_TEXT to FH_MODE_TEXT, MODE_BINARY to + FH_MODE_BINARY, and update all usages. + + * file-handle.q: Add "scratch" as a possible mode. + (cmd_file_handle) Mention CLOSE FILE HANDLE in error message. + Use lex_end_of_command(), lex_sbc_missing(). Support creating + scratch handles. + (cmd_close_file_handle) New function. + (referent_name) New function. + (fh_parse) Now takes a referent type mask to specify handles that + can be accepted. Updated all references. + + * filename.c: (fn_extension) New function. + + * get.c: Use any_reader and any_writer and thereby merge code that + has been duplicated for each kind of file. Also, we had something + here called `any_writer' before, so its name had to be changed to + `case_writer'. + (enum operation) Removed, because unused. + (struct get_pgm) Removed. + (get_pgm_free) Removed. + (get_source_destroy) Removed. + (get_source_read) Removed. + (global var get_source_class) Removed. + (static var case_reader_source_class) Removed. + (enum reader_command) New enum. + (struct case_reader_pgm) New struct. + (parse_read_command) New function. + (case_reader_pgm_free) New function. + (case_reader_source_destroy) New function. + (case_Reader_source_Read) New function. + (cmd_get) Rewrote as a call to parse_read_command(). + (cmd_import) Ditto. + (struct any_writer) Rename to case_writer. Drop `writer_type', + `writer' members in favor of an `any_writer' member named + `writer'. + (any_writer_destroy) Rename case_writer_destroy. Use + any_writer_close(). + (parse_write_command) Allow scratch files. Use any_writer. + (any_writer_write_case) Rename case_writer_write_case(). Use + any_writer_write(). +` (struct mtf_file) Use any_reader. + (cmd_match_files) Allow scratch files. Use any_reader. + (mtf_free_file) Use any_reader_close(). + (mtf_read_nonactive_records) Use any_reader_read(). + (mtf_processing) Use any_reader_read(). + (struct import_pgm) Removed. + (import_pgm_free) Removed. + (import_source_destroy) Removed. + (import_source_read) Removed. + (global var import_source_class) Removed. + + * glob.c: (global var default_handle) Removed. Replaced all + references by fh_get_default_handle() or fh_set_default_handle(). + + * pfm-read.c: (static var portable_to_local) Moved from inside + read_header() to top level. + (pfm_detect) New function. + + * pfm-write.c: (pfm_write_case) Make case argument const. + Reorganize to avoid access-after-free. + + * print.c: (dump_table) Use fh_get_name() to describe source of + data. + + * sfm-read.c: (sfm_close_reader) Reorganize to avoid + access-after-free. + (sfm_detect) New function. + + * str.c: (str_lowercase) New function. + + * vfm.c: Use new compaction interface. + (static var compaction_necessary) Removed. + (static var compactor) New variable. + (open_active_file) Initialize compactor. + (write_case) Use compactor. + (close_active_file) Free compactor. + +Wed Jan 11 19:28:39 2006 Ben Pfaff + + Clean up file handle code in preparation to add scratch file + handles. + + * file-handle-def.c: Lots of formatting cleanup. Added function + comments. + (struct file_handle) Renamed `length' member + to `record_width'. All references updated. + (fh_init) New function. Moved here from file-handle.q. + (fh_done) New function. Moved here from file-handle.q and + rewrote. + (get_handle_with_name) Renamed fh_from_name(). + (get_handle_for_filename) Renamed fh_from_filename(). + (create_file_handle) Renamed fh_create(). Changed to take a + `struct fh_properties' instead of discrete values. Updated all + references. + (create_file_handle_with_defaults) Removed. Updated all + references to use fh_create() with fh_default_properties(). + (fh_default_properties) New function. + (destroy_file_handle) Removed. The code is now in fh_done(). + (handle_get_name) Renamed fh_get_name(). + (handle_get_filename) Renamed fh_get_filename(). + (handle_get_record_width) Renamed fh_get_record_width(). + (handle_get_tab_width) Renamed fh_get_tab_width(). + + * file-handle-def.h: Formatting, comment fixes. + (enum file_handle_mode) Renamed struct fh_mode. + (struct fh_properties) New structure. + (fh_init) Move prototype here from file-handle.h. + (fh_done) Ditto. + (fh_close) Ditto. + + * file-handle.q: (static var handle_list) Removed. + (fh_parse) Don't add handle to handle_list, because + file-handle-def.c has its own list. + (fh_init) Moved to file-handle-def.c. + (fh_done) Ditto. + +Sun Jan 9 01:09 Jason Stover + + * regression.q: (run_regression) Moved coefficient initialization + to the linreg library. Altered other functions accordingly. + +Sat Jan 7 13:30:54 WST 2006 John Darrington + + * command.c data-in.c main.c: Fixed bug which crept in when + separating getl from readline. + + * vars-atr.c value-labels.h: Fixed constness of val_labs_count. + +Fri Dec 23 20:59:01 WST 2005 John Darrington + + * getl.c error.c: Separated file_loc functionality from error.c + +Mon Dec 19 14:01:56 WST 2005 John Darrington + + * format.c: Additional error checking. + * getl.[ch]: Separated into getl.c and readln.c + * settings.[ch]: Made CC_CNT public + +Fri Dec 16 09:11:48 WST 2005 John Darrington + + * examine.q: Fixed buglet when cleaning up at end of procedure. + +Tue Dec 13 22:34:42 2005 Ben Pfaff + + Move global initialization and cleanup code into main.c. + Remove vestigial log infrastructure. + Minor related cleanups. + + * command.c: (shell) When execl() fails, use _exit(), not + err_hcf(). + + * error.c: (err_hcf) Move into main.c, rename terminate(). All + callers updated. + (err_done) New function with just the error.c-specific code for + err_hcf(). Called by terminate(). + + * glob.c: Removed all Borland C, DJGPP cruft. + (init_glob) Merged into main(). + (done_glob) Merged into terminate(). + (get_date) Removed. + (get_start_date) New function. All users of curdate updated to call + this function instead. + + * lexer.c: (lex_init) Moved initialization of tokstr here, from + init_glob(). + (lex_done) Moved destruction of tokstr here, from done_glob(). + + * main.c: (global var pgmname) Removed. Changed all references to + program_name, which is defined by gnulib. + (global var curdate) Removed. + (main) Moved init_glob() code here. Merged parse_script() in + here. + (parse_script) Removed. + (terminate) Moved err_hcf() here from error.c and renamed + terminate(). Merged done_glob() code in here. Call err_done(). + All callers updated. + (i18n_init) New function. + (fpu_init) New function. + + * output.c: (outp_init) Make void. + (init_default_drivers) New function. + (outp_read_devices) If no drivers are initialized successfully, + call init_default_drivers() to initialize a default driver. + (outp_done) Make void. + (static var prog) Make const. + (parse_options) Make parameter const. + (colon_tokenize) Make return value const. + (configure_driver) Change prototype to take a broken-down driver + configuration instead of a line of text. + (configure_driver_line) New function that does what + configure_driver() did before. + + * q2c.c: (global var pgmname) Rename program_name. + + * settings.c: (settings_init) Renamed from init_settings(). + (settings_done) Renamed from done_settings(). + + * vfm.c: (global var last_vfm_invocation) Make static. + (vfm_last_invocation) New function. All references to + last_vfm_invocation update to call this. + (procedure) Call update_last_vfm_invocation(). + (internal_procedure) Ditto. + (update_last_vfm_invocation) New function. + +Sat Dec 10 23:30:19 2005 Ben Pfaff + + Separate random numbers from other settings because of GSL + dependency. + + * Makefile.am: Add random.c, random.h to sources. + + * glob.c: (init_glob) Call random_init(). + (done_glob) Call random_done(). + + * settings.c: (static var rng) Move to random.c. + (done_settings) Move freeing of RNG to random_done(). + (get_rng) Move to random.c + (set_rng) Ditto. + + * random.c: New file. + + * random.h: New file. + +Sat Dec 10 18:13:36 2005 Ben Pfaff + + Separate settings and the SET command, for modularity. + + * Makefile.am: Add settings.c to sources. + + * glob.c: (global variable test_mode) Removed. + + * set.q: Remove all the set_* variables. Remove a lot of obsolete + SPSS/PC+ settings. Remove the aux_*() routines. Moved the + get_*() functions into settings.c. Rewrite the settings code and + functions to call the new set_*() functions. Rewrite custom + currency parsing. Write new by-hand cmd_show(). + + * esttings.c: New file. Moved the get_*() functions here from + set.q. Created new set_*() functions to correspond with them. + Regularized the names and types of some functions and updated + their callers. Added static, file-scope variables to support the + settings. + + * q2c.c: Remove "aux" support, which was only needed by set.q. + +Sun Nov 27 06:43:46 WST 2005 John Darrington + + * data-out.c format.h: Added return value to data_out function. + + * value-labels.c: Fixed bug in val_labs_remove. + +Sat Nov 5 18:37:26 2005 Ben Pfaff + + * Makefile.am: Remove devind.c, devind.h from list of source + files. + + * devind.c: Removed. + + * devind.h: Removed. + + * list.q: Removed "support" for devind. + + * output.c: Don't add devind class. + +Sat Nov 5 18:21:00 2005 Ben Pfaff + + * var.h: (struct variable) Make `init', `reinit' bool values. + Rearrange fields. + +Fri Nov 4 19:43:01 2005 Ben Pfaff + + * recode.c: Rewrote whole file, as clean-up. + +Fri Nov 4 19:37:50 2005 Ben Pfaff + + * pool.c: Don't make alignment exception for x86. + (pool_alloc) Return null for 0-size blocks. + (pool_alloc_unaligned) New function. + (pool_strndup) Removed. Changed callers to use pool_clone_unaligned(). + (pool_clone_unaligned) New function. + (pool_strdup) Use pool_clone_unaligned(). + + * var.h: (enum var_type) Give the NUMERIC, ALPHA enum this name. + (struct variable) Use `enum var_type' for `type'. + + * vars-atr.c: (var_type_adj) New function. + (var_type_noun) New function. + + * vars-prs: (parse_mixed_vars) Fix freeing code. + (parse_mixed_vars_pool) New function. + Wed Nov 2 21:24:48 2005 Ben Pfaff * file-handle-def.c: Needed another #include, to avoid missing