X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2FChangeLog;h=1fdf0d54e451195d1425d1fc135d04d346f1d66d;hb=bf6d99567a762b20bee4bb71147b6387c986bb90;hp=c7a160c67b1be9bfc163ec548a0be91ef5e7325c;hpb=14e7292894533c5491a774a2d749386362660812;p=pspp diff --git a/src/ChangeLog b/src/ChangeLog index c7a160c67b..1fdf0d54e4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,841 @@ +Sun Apr 11 14:22:12 2004 Ben Pfaff + + Rework moments routines for improved numerical stability based on + Michael Kiefte's advice. Any bugs or remaining numerical problems + are still mine though. + + There is now a struct moments1 for use with one-pass moments. It + uses a provisional means algorithm as an attempt to improve + accuracy of higher moments. The older struct moments now only + handles two-pass moments. + + * aggregate.c: Use moments1 instead moments. + + * descript.c: Revert previous change, which is no longer needed + due to the moments revision. + + * moments.c: (calc_moments) New function for calculating variance, + skewness, kurtosis. + (moments_pass_one) Only accumulate weights bigger than zero. + (moments_calculate) Allow calculating the mean on pass one, others + require pass two. Implement in terms of calc_moments(). + (struct moments1) New structure. + (init_moments1) New function. + (moments1_clear) Ditto. + (moments1_create) Ditto. + (moments1_add) Ditto. + (moments1_calculate) Ditto. + (moments1_destroy) Ditto. + (cmd_debug_moments) Deal with `struct moments' or `struct + moments1' as requested by user. + +Sun Apr 11 14:21:55 2004 Ben Pfaff + + * Makefile.am (pspp_SOURCES): Remove debug.c. + + * debug.c: Removed. It was empty anyway. + +Fri Apr 9 20:04:49 2004 Ben Pfaff + + * descript.c (calc_descriptives): Fix assert failure when only + MOMENT_MEAN is needed. + +2004-04-09 Michael Kiefte + + * descript.c: + + fixed problem with parsing in match_statistic() causing + "DESCRIPTIVE STAT=MEAN." to barf. + + "MEAN" is now default if "SORT" given without specification. + + Fixed infinite loop with "DESCRIPT GIBBERISH=ALL." Parsing is + generally less forgiving of syntax errors: better to have it do + nothing and type it in again then to not know what it actually did + instead. + + z-score transformation now checks score for user-missing values + and checks std_dev for SYSMIS. + +2004-04-06 Michael Kiefte + + * aggregate.c, crosstabs.q, descript.c, dictionary.c, frequencies.q, levene.c, t-test.q, var.h: + Changed dict_get_case_weight() to accept an additional int * flag + to complain about system-missing, user-missing, zero, or negative + weights and updated existing functions to pass int * to + dict_get_case_weight(). + +2004-04-05 jmd + + * main.c: Fixed configuration problems with gsl + + * t-test.q: Fixed some problems encountered when compiling under Cygwin + +2004-04-03 blp + + * lexer.c, ChangeLog: + Fix infinite loop on comment at end of file, add test. + +2004-04-03 jmd + + * settings.h, var.h, ChangeLog, Makefile.am, cmdline.c, command.c, command.h, error.h, filename.c, frequencies.q, lexer.h, main.c, q2c.c, set.q: + Fixed the calculation of percentiles and added --syntax and --algorithm options + +Sat Apr 3 11:43:37 2004 Ben Pfaff + + * lexer.c: (lex_skip_comment) Handle end-of-file correctly (I + hope). + +Sat Apr 3 15:00:18 WST 2004 John Darrington + + * frequencies.q: Fixed the calculation of percentiles + + * Makefile.am: Added the --ansi flag and dealt with the + consequences. Added some entries to PSPP_sources so that + make distcheck would pass + + * cmdline.c: Added the --syntax and --algorithm options + + * q2c.c: Added an implicit /ALGORITHM subcommand to everything. + +Fri Apr 2 11:25:22 WAST 2004 John Darrington + + * t-test.q, levene.c, levene.h Converted t-test (incl levene) to + use the new multipass_split_... mechanism. + +Wed Mar 31 22:36:22 2004 Ben Pfaff + + * frequencies.q: (calc_stats) Use moments data structure and + calc_seskew(), calc_sekurt() functions. + + * set.q main.c settings.h Added support for --syntax and --algorithm + options + +Tue Mar 30 22:04:19 2004 Ben Pfaff + + * vfm.c: Had to get last call to multipass_split_output() inside + open_active_file()/close_active_file() pairing, so introduce new + function. + (internal_procedure) Move procedure() code here, except for calls + to open_active_file() and close_active_file(). + (procedure) Wrap open_active_file() and close_active_file() around + internal_procedure(). + (multipass_procedure_with_splits) Wrap open_active_file() and + close_active_file() around internal_procedure(). + +Tue Mar 30 22:01:57 2004 Ben Pfaff + + * descript.c: (cmd_descriptives) Free `vars' to avoid memory leak. + +Mon Mar 29 16:26:40 2004 Ben Pfaff + + * debug.c: Removed. Moved cmd_debug_evaluate() into expr-evl.c. + + * expr-evl.c: (cmd_debug_evaluate) Moved here from debug.c. + +Mon Mar 29 16:03:08 2004 Ben Pfaff + + * algorithm.c: By default turn off some of the more expensive + assertions. + (expensive_assert) New macro which expands to assert if + EXTRA_CHECKS is defined, to nothing otherwise. + (unique) Use expensive_assert(). + (binary_search) Ditto. + (push_heap) Ditto. + (pop_heap) Ditto. + (make_heap) Ditto. + (sort_heap) Ditto. + + * command.c: (conflicting_3char_prefixes) Words that are the same + don't cause conflicts when they are abbreviated to the first three + letters. + + * expr-evl.c: (CONCAT_func) Fix memory leak by incrementing struct + nonterm_node's n earlier. + (generic_str_func) Ditto. + +Mon Mar 29 15:32:17 2004 Ben Pfaff + + Add support for multipass procedures. Rewrite DESCRIPTIVES to + test multipass support, take advantage of new moments + calculation, and to not be such crappy code. Get rid of q2c + processing for DESCRIPTIVES. + + * vfm.c: (struct multipass_split_aux_data) New structure. + (multipass_procedure_with_splits) New function. + (multipass_split_callback) New function. + (multipass_split_output) New function. + * descript.q: Removed. + + * descript.c: New file. + + * var.h: Removed descriptives enums. + (struct descriptives_proc) Removed. + (struct variable) Removed p.dsc. + + * Makefile.am: (q_sources_c) Remove descript.c. + (q_sources_q) Removed descript.q. + +Mon Mar 29 15:31:55 2004 Ben Pfaff + + New manager for keeping track of used workspace. + + * workspace.c: New file. + + * workspace.h: New file. + + * Makefile.am: (pspp_SOURCES) Add workspace.c, workspace.h. + + * sort.c: (do_internal_sort) Use workspace_malloc(). + (destroy_internal_sort) Use workspace_free(). + +Mon Mar 29 15:31:08 2004 Ben Pfaff + + New `struct casefile' for managing sets of cases. + + * casefile.c: New file. + + * casefile.h: New file. + + * command.def: Add DEBUG CASEFILE command. + + * Makefile.am: (pspp_SOURCES) Add casefile.c, casefile.h. + + * sort.c: (sort_cases) Move logic for sending storage file to disk + into do_external_sort(). + (struct internal_sort) Use an array of ccase pointers instead of a + case_list. + (do_internal_sort) Rewrite to handle casefiles. + (compare_case_list) Removed. + (compare_cases) New function. + (compare_case_dblptrs) New function. + (read_internal_sort_output) Deal with new struct internal_sort. + + * vfm.c: (static var workspace_overflow) Removed. + (struct storage_stream_info) Removed all the members. Added + struct casefile * member. + (storage_sink_open) Use casefile. + (open_storage_file) Removed. + (write_storage_file) Removed. + (storage_to_disk) Removed. + (destroy_storage_stream_info) Use casefile. + (storage_sink_write) Use casefile. + (storage_sink_make_source) Use casefile. + (storage_source_count) Use casefile. + (storage_source_read) Use casefile. + (storage_source_on_disk) Removed. + (storage_source_get_cases) Removed. + (storage_source_set_cases) Removed. + (storage_source_get_casefile) New function. + +Mon Mar 29 15:30:09 2004 Ben Pfaff + + New `struct moments' for calculating moments. + + * stats.c: Removed. + + * stats.h: Removed. + + * moments.c: New file. + + * moments.h: New file. + + * command.def: Add DEBUG MOMENTS command. + + * Makefile.am: (pspp_SOURCES) Add moments.c, moments.h. Remove + stats.c, stats.h. + + * aggregate.c: Modify AGGREGATE to use the new moments + calculation, even if not in such a great way. + (struct agr_var) Add `moments' member. + (parse_aggregate_functions) Set `moments' member to null. + (agr_destroy) Destroy `moments' member. + (accumulate_aggregate_info) Use `moments' for standard deviation. + (dump_aggregate_info) Ditto. + (initialize_aggregate_info) Create or clear `moments'. + + * misc.h: Add pow2(), pow3(), pow4() functions in place of sqr(), + cube(), pow4() that were in stats.h. All references updated. + + * crosstabs.q: stats.h had chi-square significance functions. Use + GSL instead. + (display_chisq) Use gsl_cdf_chisq_Q() instead of chisq_sig(). + + * expr-evl.c: (expr_evaluate) Use moments_of_values() for + OP_CFVAR, OP_MEAN, OP_SD, OP_VARIANCE. + +Fri Mar 26 14:21:23 2004 Ben Pfaff + + * dictionary.c: (dict_compact_values) Compacted values need to + start off from 0. + +Fri Mar 26 00:54:57 2004 Ben Pfaff + + * var-labs.c: (cmd_variable_labels) For compatibility, don't allow + `/' at start. Check return value of parse_variables() for error + return. + +Fri Mar 26 00:19:27 2004 Ben Pfaff + + Revamp expressions: make the code a little nicer, and fix bugs + found in testing. + + * expr-evl.c: (expr_evaluate) Make expression argument const. + Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL. + OP_POW is missing for arg 2 <= 0. OP_LOG is natural log, not + base-10 log. Fix OP_ANY, OP_ANY_STRING, OP_RANGE, OP_RANGE_STRING + off-by-ones. Add OP_MAX_STRING, OP_MIN_STRING. Fix OP_TIME_HMS, + OP_DATE_WKYR boundary conditions. Add OP_CTIME_DAYS, + OP_CTIME_HOURS, OP_CTIME_MINUTES, OP_CTIME_DAYS, OP_CTIME_SECONDS. + Support OP_INDEX_2, OP_INDEX_3, OP_RINDEX_2, OP_RINDEX_3 instead + of OP_INDEX, OP_INDEX_OPT, OP_RINDEX, OP_RINDEX_OPT. Merge + OP_LPAD_OPT into OP_LPAD, OP_RPAD_OPT into OP_RPAD, OP_LTRIM_OPT + into OP_LTRIM, OP_RTRIM_OPT into OP_RTRIM, OP_NUMBER_OPT into + OP_NUMBER. Fix OP_RTRIM fragility. Support OP_SUBSTR_2, + OP_SUBSTR_3 instead of OP_SUBSTR, OP_SUBSTR_OPT. Remove OP_INV. + Simplify OP_SYSMIS. Remove OP_STR_MIS. + + * expr-opt.c: (optimize_expression) Rewrite. + (macro n0) Removed. + (macro n1) Removed. + (macro n2) Removed. + (macro s0) Removed. + (macro s0l) Removed. + (macro s1) Removed. + (macro s1l) Removed. + (macro s2) Removed. + (macro s2l) Removed. + (macro s) Removed. + (macro sl) Removed. + (eq_num_con) New function. + (optimize_tree) New function. + (macro rnc) Removed. + (macro frnc) Removed. + (str_search) Add const to string params. + (str_rsearch) Ditto. + (evaluate_tree_no_missing) Renamed from evaluate_tree. Add num[], + str[], str_len[] locals to substitute for most of removed macros. + Support OP_ADD, OP_SUB, OP_MUL, OP_DIV instead of OP_PLUS, OP_MUL. + Removed support for missing values because we're never called with + missing values. Use set_number() or set_number_errno() instead of + rnc or frnc. Removed any stuff that caused trouble in testing. + We can re-add it later if it really slows anything. Fix some + random problems. + (evaluate_tree_with_missing) Not yet supported. To be added later + if it's important. + (repl_num_con) Removed. + (collapse_node) New function. + (force_repl_num_con) Removed. + (set_number) New function. + (set_number_errno) New function. + (repl_str_con) Removed. + (set_string) New function. + (yrmoda) Tighten boundary conditions. Adopt 2030 cut-off for + 2-digit years. + (dump_node) No special case for OP_AND, OP_OR. + + * expr-prs.c: (expr_prs) Honor EXPR_NO_OPTIMIZE bit. Rewrite. + (expr_get_type) New function. + (type_check) Rewrite. + (type_coercion) New function. + (struct operator) New structure. + (match_operator New function. + (parse_binary_operators) New function. + (parse_inverting_unary_operator) New function. + (parse_or) Rewritten. + (parse_and) Rewritten. + (parse_not) Rewritten. + (parse_rel) Rewritten. + (parse_add) Rewritten. + (parse_mul) Rewritten. + (parse_neg) Rewritten. + (parse_exp) Rewritten. + (parse_sysvar) Add $TRUE, $FALSE system variables. + Get $LENGTH, $WIDTH from get_viewlength(), get_viewwidth(). + (parse_primary) Use allocate_var_node(), allocate_num_con(), + allocate_str_con(). + (struct function) Remove desc, change `func' prototype. + (unary_func) Remove special cases. + (MISSING_func) Reduce to unary_func() that just returns a boolean. + (SYSMIS_func) Handle SYSMIS((x)) like SYSMIS(x). + (VALUE_func) Use allocate_var_node(). + (nary_num_func) Allow MIN and MAX for strings. + Use allocate_var_node(). Properly clean up. + Fix return type. + (generic_str_func) Use local table instead of removed `desc' + member. Mostly rewrite. + (get_num_args) Revise error message. + (parse_function) Return EXPR_ERROR, not 0 on error. + (macro op) Removed. + (macro varies) Removed. + (ops[]) Use expr.def. + (free_node) Do nothing if node is null. + (allocate_num_con) New function. + (allocate_str_con) New function. + (allocate_var_node) New function. + (allocate_binary_nonterminal) New function. + (append_nonterminal_arg) Removed. + (static var func_tab[]) Revised. + (expr_debug_print_postfix) Make parameter const. + Use printf() instead of debug_printf(). + + * expr.def: New file. + + * expr.h: Change PXP_* to EXPR_*, all references updated. Also + use named enum instead of unnamed, all references updated. Add + EXPR_ANY, EXPR_NO_OPTIMIZE. + + * exprP.h: Remove EX_*. Add DEFINE_OPERATOR. Use expr.def + instead of defining OP_* directly. + (macro IS_TERMINAL) New macro. + (macro IS_NONTERMINAL) New macro. + (enum OP_NO_FLAGS) New. + +Fri Mar 26 00:18:01 2004 Ben Pfaff + + * error.c: (err_assert_fail) msg variable needs to be non-const. + +Fri Mar 26 00:17:24 2004 Ben Pfaff + + * debug.c: (cmd_debug_evaluate) Rewrite. + +Fri Mar 26 00:15:13 2004 Ben Pfaff + + Fix some CROSSTABS bit rot stupidity. + + * crosstabs.q: Reorder the CELLS subcommands for compatibility. + (internal_cmd_crosstabs) Initializes cells[] correctly. + (float_M_suffix) Rename format_cell_entry(), change prototype, + rewrite. + (display_crosstabulation) Fix cell formatting. + +Fri Mar 26 00:14:09 2004 Ben Pfaff + + Make lex_rest_of_line(), lex_entire_end() not discard lines. Have + to call lex_discard_line() to do that. + + * command.c: (run_command) Call lex_discard_line() after + lex_rest_of_line(). + + * lexer.c: (lex_entire_end) Change behavior. + (lex_rest_of_line) Change behavior. Return const char *. + (lex_discard_line) Don't clear getl_buf, don't emit message. + + * main.c: (handle_error) Emit message here. + + * repeat.c: (internal_cmd_do_repeat) Use lex_discard_line() + instead of lex_entire_line(). + + * str.c: (mm_find_reverse) Make length params size_t. Rewrite. + + * title.c: (get_title) Call lex_discard_line() after + lex_rest_of_line(). + (cmd_file_label) Ditto. + (cmd_document) Deal with const char * return value. + +Fri Mar 26 00:10:16 2004 Ben Pfaff + + Removed REMARK command. + + * command.c: (extract_prefix) Removed. + (output_line) Removed. + (cmd_remark) Removed. + + * command.def: Remove REMARK. + +Fri Mar 26 00:08:38 2004 Ben Pfaff + + Added abort() after lots of assert(0) invocations to avoid some + compiler warnings. We really need a NOT_REACHED macro. + +Tue Mar 23 08:00:42 WAST 2004 John Darrington + + * sort.c: Added missing call to temp_file_close. Changed error + messages to warnings. + + * set.q: Improved setting of set_view{length,width} to be more tolerant + of buggy OSes. + +Sun Mar 21 10:11:14 WST 2004 John Darrington + + * val-labs.c: Fixed a bug where PSPP would crash, if VALUE LABELS was + used with incorrect syntax. + + * error.c, error.h et al: Overridden definition of assert for a + custom one. + + * test-q.c: Fixed a buglet where it would crash if no /VARIABLES + subcommand was given when it ought to have been. + +Sat Mar 20 22:19:08 2004 Ben Pfaff + + * tab.c: (tab_vline) Fix assertions to respect row_ofs and + col_ofs. + (tab_hline) Ditto. + (tab_box) Ditto. + (tab_joint_text) Ditto. + +Sat Mar 20 17:57:23 2004 Ben Pfaff + + * levene.c: Add #include. + + * set.q: (set_viewport) Add `int' argument to make its prototype + correct for signal(). + +Sat Mar 20 15:35:17 2004 Ben Pfaff + + * expr-evl.c: (expr_evaluate) Assert that `c' is nonzero before + using it. + +Sat Mar 20 15:18:16 2004 Ben Pfaff + + Changed DFM from open-at-first-access to explicit-open. Before, + calling dfm_get_record() or dfm_put_record() would automatically + open the file. Now, you have to call dfm_open_for_reading() or + dfm_open_for_writing() explicitly. This makes it possible to + check permissions, file existence, etc. earlier. + + Also made struct file_handle more opaque, and clean up in general. + + * data-list.c: (cmd_data_list) Open handle for reading. + + * dfm.c: (struct dfm_fhuser_ext) Add `where', `saw_begin_data' + members. + (open_file_r) Renamed dfm_open_for_reading(), rewrote. + (open_file_w) Renamed dfm_open_for_writing(), rewrote. + (open_inline_file) Removed. + (read_record) For inline_file, if we haven't seen BEGIN DATA, read + it. Deal with line_number in extension record instead of file + handle. + (dfm_get_record) Rewrote. + (dfm_put_record) Rewrote. + (dfm_push) Assert file is open and one of ours. Deal with + line_number in extension record instead of file handle. + (dfm_pop) Assert file is open and one of ours. Deal with + line_number in extension record instead of file handle. + (cmd_begin_data) Use dfm_open_for_reading(). Mark that we saw + BEGIN DATA. + + * file-handle.h: (enum constants RH_RF_*) Removed. + (enum constants FH_MD_*) Removed. + (struct file_handle) Removed `name', `norm_fn', `fn', `where', + `recform', `lrecl', `mode' members. Public references to + `recform' changed to use handle_get_mode(), references to `lrecl' + changed to use handle_get_record_width(). Added `private' member. + (enum file_handle_mode) New. + + * file-handle.q: (struct private_file_handle) New structure. + (struct file_handle_list) New structure. + (static var files) New. + (static var file_handles) Removed. + (init_file_handle) Removed. + (create_file_handle) Removed. + (get_handle_with_name) New function. + (get_handle_for_filename) New function. + (cmd_file_handle) Rewritten. + (hash_file_handle) Removed. + (cmp_file_handle) Removed. + (fh_init_files) Rewritten. + (fh_parse_file_handle) Rewritten. Allows identifiers as + filenames. + (fh_get_handle_by_name) Renamed handle_get_name(), all references + updated. Rewritten. + (fh_get_handle_by_filename) Renamed handle_get_filename(), all + references updated. Rewritten. + (fh_record_width) Renamed handle_get_record_width(), all + references updated. Rewritten. + (handle_get_mode) New function. + + * file-type.c: (cmd_file_type) Open handle for reading. + + * filename.c: [unix] (struct file_identity) New structure. + [unix] (fn_get_identity) New function. + [unix] (fn_free_identity) New function. + [unix] (fn_compare_file_identities) New function. + [!unix] (struct file_identity) New structure. + [!unix] (fn_get_identity) New function. + [!unix] (fn_free_identity) New function. + [!unix] (fn_compare_file_identities) New function. + + * lexer.c: (static var put) Renamed put_token, all references + updated. + (static var put_tokstr) New. + (static var put_tokval) New. + (lex_init) Initialize put_tokstr(). + (restore_token) New function. + (save_token) New function. + (lex_get) Use restore_token(). + (lex_put_back) Use save_token(). + (lex_put_back_id) New function. + (lex_put_forward) Removed. + (lex_preprocess_line) Set put_token instead of using + lex_put_forward(). + (lex_negative_to_dash) Use save_token(), set put_token directly. + (dump_token) Use stderr instead of stdout. + + * main.c: (main) Remove call to cmd_init(). + + * matrix-data.c: (cmd_matrix_data) Open file for reading. + + * pfm-read.c: Use handle_get_filename() instead of trying to use + h->fn directly, all over. + + * pfm-write.c: Ditto. + + * print.c: (internal_cmd_print) Open handle for writing. + (dump_table) Use handle_get_filename(). + (print_trns_proc) Use handle_get_mode(). + (cmd_print_space) Use fh_parse_file_handle(). + Open handle for writing. + [0] (debug_print) Removed. + + * sfm-read.c: Use handle_get_filename() instead of trying to use + h->fn directly, all over. + + * sfm-write.c: Ditto. + +Sat Mar 20 14:35:48 2004 Ben Pfaff + + Fix memory leaks. + + * autorecode.c: (arc_free) Free arc->src_values. + + * error.c: (msg) Free buf. + + * val-labs.c: (do_value_labels) Always free vars. + + * vfm.c: (close_active_file) If sink has no make_source then call + its destroy function. + +Sat Mar 20 14:00:24 2004 Ben Pfaff + + Fixed cmd_parse() so that it always skips past a full command + name. A few special commands for which this would be bad get + special treatment. This lets us drop code for skipping past the + end of a command name in most cmd_*() functions. It's not worth + listing all the commands affected. + + * command.c: (struct command) Remove `cmd' member, replace by + `name' member, all references updated. Remove `word', `next', + `skip_entire_name' members. + (macro DEFCMD) Deal with revised `struct command'. + (macro UNIMPL) Ditto. + (macro SPCCMD) New macro for commands whose last word shouldn't be + skipped. + (static array cmd_table[]) Make const, rename `commands', remove + sentinel element. + (macro COMMAND_CNT) New macro. + (split_words) Removed. + (cmd_init) Removed. + (FILE_TYPE_okay) Make parameter const. + (cmd_parse) Improve error messages. + (match_strings) New function. + (next_word) New function. + (enum command_match) New enum. + (conflicting_3char_prefixes) New function. + (conflicting_3char_prefix_command) New function. + (cmd_match_words) New function. + (count_matching_commands) New function. + (get_command_name) New function. + (free_words) New function. + (unknown_command_error) New function. + (figure_out_command) Renamed parse_command_name(), rewritten. + + * command.def: Removed @ command. Marked BEGIN DATA, DOCUMENT, + FILE LABEL, REMARK, SUBTITLE, TITLE as special. Renamed EVALUATE + to DEBUG EVALUATE. Added N alias for N OF CASES, SORT alias for + SORT CASES. + + * command.h: (macro SPCCMD) New. + + * include.c: (cmd_include_at) Removed. + (cmd_include) Allow identifier to be used as filename. + + * inpt-pgm.c: (cmd_reread) Use fh_parse_file_handle(). + + * t-test.q: (cmd_t_test) Command name is now parsed for us. + + +Sat Mar 20 13:56:00 2004 Ben Pfaff + + Start work on better test framework. + + * Makefile.am: (pspp_sources) Add debug.c. + + * debug.c: New file. + + * compute.c: (cmd_evaluate) Moved to debug.c, renamed + cmd_debug_evaluate(). + + * expr-prs.c: (expr_parse) Remove PXP_DUMP support. + + * expr.h: (enum constant PXP_DUMP) Removed. + +Sat Mar 20 00:05:42 WST 2004 John Darrington + + * set.q: Implemented the SHOW command, and synced it to the existing + SET cmd. + + Added a handler for SIGWINCH so that viewlength and viewwidth follow + changes as the window size is changed. + + Added fallback to set viewlength and viewwidth from LINES and COLUMS + environment variables if other methods are not available. + + glob.c: Removed a lot of global variables from glob.c and encapsulated + them in set.q + + random.c: Tidied up the way the random seed is set. + + str.c: Added a ds_vprintf function. + + error.c: Extended dump_message so that messages are always broken at + '\n' characters. + +Thu Mar 18 11:07:14 2004 Ben Pfaff + + * pfm-write.c: (bufwrite) Write out the correct element for string + variables. From Andreas Streichardt . + +Mon Mar 15 20:48:03 2004 Ben Pfaff + + Get rid of static and global (!) vars in matrix-data.c. + + * matrix-data.c: (static var nr_data) Removed. + (static var nr_factor_values) Removed. + (static var max_cell_index) Removed. + (static var split_values) Removed. + (struct nr_aux_data) New structure. + (read_matrices_without_rowtype) Use a local struct nr_aux_data in + place of static vars, pass to create_case_source() and procedure() + as aux data. + (nr_read_data_lines) Use struct nr_aux_data * parameter instead of + struct matrix_data_pgm *. + (nr_read_splits) Ditto. + (nr_read_factors) Ditto. + (nr_output_data) Ditto. + (static var wr_content) Removed. + (global var wr_data) Removed. + (global var wr_current) Removed. + (struct wr_aux_data) New structure. + (read_matrices_with_rowtype) Use a local struct wr_aux_data in + place of static vars, pass to create_case_source() and procedure() + as aux data. + (matrix_data_read_with_rowtype) Use struct wr_aux_data * parameter + instead of matrix_data_pgm *. + (wr_read_splits) Ditto. + (wr_output_data) Ditto. + (wr_read_rowtype) Ditto. + (wr_read_factors) Ditto. + (wr_read_indeps) Ditto. + +Mon Mar 15 20:07:29 2004 Ben Pfaff + + Get rid of static vars in autorecode.c. + + * autorecode.c: (struct autorecode_trns) Rename `arc' to `specs', + `n_arc' to `spec_cnt'. All references updated. + (static var v_src) Removed. + (static var v_dest) Removed. + (static var h_trns) Removed. + (static var nv_src) Removed. + (static var descend) Removed. + (static var print) Removed. + (enum direction) New enum. + (struct autorecode_pgm) New structure. + (cmd_autorecode) Use struct autorecode_pgm instead of static vars. + Move n_dest local var into struct autorecode_pgm for ease of + clean-up. Use arc_free(). + (arc_free) New function. + (recode) Modify to take struct autorecode_pgm * parameter instead + of using statics. Let the caller clean up. + (autorecode_proc_func) Use struct autorecode_pgm * auxiliary data + instead of statics. Rearrange code a little. + +Mon Mar 15 00:25:02 2004 Ben Pfaff + + Get rid of static, global vars in recode.c. Remove debug code. + + * recode.c: (static var head) Removed. + (global var v) Removed. + (global var nv) Removed. + (cmd_recode) New local variables head, v, nv. Initialize and free + v. Don't call debug_print(). + [DEBUGGING] (dump_dest) Removed. + [DEBUGGING] (debug_print) Removed. + +Mon Mar 15 00:14:49 2004 Ben Pfaff + + Get rid of static vars in expr-opt.c. + + * expr-opt.c: (static var e) Removed. + (static var nop) Removed. + (static var mop) Removed. + (static var ndbl) Removed. + (static var mdbl) Removed. + (static var nstr) Removed. + (static var mstr) Removed. + (static var nvars) Removed. + (static var mvars) Removed. + (struct expr_dump_state) New structure. + (dump_expression) Use new struct expr_dump_state instead of static + vars and pass to functions we call. + (dump_node) Use struct expr_dump_state * parameter. + (emit) Ditto. + (emit_num_con) Ditto. + (emit_str_con) Ditto. + (emit_var) Ditto. + +Mon Mar 15 00:03:51 2004 Ben Pfaff + + Get rid of static var in COUNT. + + * count.c: (static var head) Move into cmd_count(). + (cmd_count) [DEBUGGING] Don't call debug_print. + [DEBUGGING] (debug_print) Removed. + +Sun Mar 14 23:56:09 2004 Ben Pfaff + + Get rid of static vars in VALUE LABELS, ADD VALUE LABELS. + + * val-labs.c: (static var v) Removed. + (static var nv) Removed. + [DEBUGGING] (debug_print) Removed. + (verify_val_labs) Add struct variable **, int parameters. + (get_label) Ditto. Improve error messages, streamline. + (erase_labels) New function for erasing value labels, taking over + part of verify_val_labs()'s function. + (init) Removed. + (done) Removed. + (cmd_value_labels) No need to call init() or done() anymore. + (cmd_add_value_labels) Ditto. + (do_value_labels) Add vars, var_cnt local variables. Clean up + after them internally. Call erase_labels() if we should. Don't + call debug_print(). + +Sun Mar 14 23:33:53 2004 Ben Pfaff + + Get rid of static vars in MATCH FILES. + + * get.c: (static var mtf_head) Removed. + (static var mtf_tail) Removed. + (static var mtf_by) Removed. + (static var mtf_n_by) Removed. + (static var mtf_master) Removed. + (static var mtf_seq_num) Removed. + (static var mtf_seq_nums) Removed. + (static var mtf_sink) Removed. + (static var mtf_case) Removed. + (struct mtf_proc) New structure. + (cmd_match_files) Use struct mtf_proc instead of static vars. + (mtf_processing_finish) Ditto. + (mtf_free) Ditto. + (mtf_delete_file_in_place) Ditto. + (mtf_read_nonactive_records) Ditto. + (mtf_compare_BY_values) Ditto. + (mtf_processing) Ditto. + (mtf_merge_dictionary) Ditto. + Sun Mar 14 22:48:12 2004 Ben Pfaff * command.def: Add CASESTOVARS, VARSTOCASES unimplemented commands.