Fixed some problems which prevented compiling on Debian woody.
[pspp-builds.git] / src / ChangeLog
index b2ec733528199fb3acaf783f6de40838faeb1a3a..36bb152fed0589590c89116efa2dc30efbc1f245 100644 (file)
+Tue May  3 19:14:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * copyleft.c: Updated copyright date.
+
+       * Makefile.am: Removed erroneous explicit "-lplot"
+
+       * examine.q oneway.q: Made these files conform to ISO/IEC 9899:1990
+
+Tue May  3 16:20:31 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * command.c command.def: Added description string for unimplemented commands.
+
+       * oneway.q: Sorted the hash tables before shipping out the results. Closes 
+       bug [#12931].
+
+Mon May  2 23:45:01 2005  Ben Pfaff  <blp@gnu.org>
+
+       Code improvements.
+       
+       * data-list.c:  (parse_fixed) Use lex_end_of_command().
+       (parse_free) Ditto.
+       (cmd_repeating_data) Set cont_end.num in right situations.
+       (parse_repeating_data) Remove redundant test.
+
+Mon May  2 23:37:19 2005  Ben Pfaff  <blp@gnu.org>
+
+       Partial fix for PR 12859.
+       
+       * data-list.c: (cmd_data_list) Add transformation properly in
+       vfm_source == NULL case.
+
+Mon May  2 23:27:28 2005  Ben Pfaff  <blp@gnu.org>
+
+       * lexer.c: (lex_error) Improve error messages.
+
+Mon May  2 22:28:17 2005  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (cmd_match_files) Check token type before trying to match
+       tokid.  Fixes PR 12923.
+
+Mon May  2 22:16:51 2005  Ben Pfaff  <blp@gnu.org>
+
+       * flip.c: [HAVE_SYS_TYPES_H] Include <sys/types.h>.  Fixes PR
+       12789.
+
+Mon May  2 22:02:52 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/generate.pl: (get_token) Make use of /g
+       backward-compatible with Perl 5.6.1.
+
+Sun May  1 23:00:19 2005  Ben Pfaff  <blp@gnu.org>
+
+       * var-display.c: (cmd_variable_alignment) Fix memory leak.
+       (cmd_variable_level) Ditto.
+
+Sun May  1 22:49:04 2005  Ben Pfaff  <blp@gnu.org>
+
+       Hash table had buggy deletion function.  The fix required changing
+       other functions to do probing in the required order.
+
+       * hash.c: (locate_matching_entry) Rewrite and change interface.
+       (hsh_rehash) Rewrite to use locate_matching_entry().
+       (hsh_probe) Ditto.
+       (hsh_find) Ditto.
+       (hsh_delete) Ditto.  Also, fix stupid bugs.
+
+Sun May  1 22:24:58 2005  Ben Pfaff  <blp@gnu.org>
+
+       * dictionary.c: (dict_clone) Properly copy vectors.
+
+Sun May  1 22:07:58 2005  Ben Pfaff  <blp@gnu.org>
+
+       New implementation of long variable names.  Each variable has a
+       "normal" name, which may be up to 64 bytes long and which is used
+       for all normal operations.  Variables may have a "short" name,
+       which is limited to 8 bytes and used only for system and portable
+       file input and output.
+       
+       Make tokid case-preserving.  Update most uses of tokid to treat it
+       case-insensitively.
+
+       Update many commands to deal with long variable names.
+
+       * autorecode.c: (cmd_autorecode) Use strcasecmp() instead of strcmp().
+
+       * command.c: (cmd_parse) Ditto.
+       (match_strings) Use toupper() before comparing characters.
+       (conflicting_3char_prefixes) Use mm_case_compare() instead of
+       memcmp().
+       (cmd_match_words) Ditto.
+
+       * compute.c: (lvalue_parse) Use st_trim_copy() instead of
+       strncpy().
+
+       * count.c: (struct cnt_var_info) Change n[] to fit long var name.
+       Use st_trim_copy() instead of strcpy().
+
+       * data-in.c: (parse_enum) Use mm_case_compare() instead of
+       memcmp().
+
+       * data-list.c: (struct dls_var_spec) Change name[] to fit long var
+       name.
+       (parse_free) Use st_trim_copy() instead of strcpy().
+
+       * descript.c: (struct dsc_var) Change z_name[] to fit long var
+       name.
+       (try_name) Use strcasecmp() instead of strcmp().
+       (generate_z_varname) Use st_trim_copy() instead of strcpy().
+       (descriptives_compare_dsc_vars) Use strcasecmp() instead of
+       strcmp().
+
+       * dictionary.c: (struct dictionary) Removed `long_name_tab'
+       member.
+       (compare_long_names) Removed.
+       (hash_long_name) Removed.
+       (dict_create) Don't initialize `long_name_tab' member.
+       (dict_clone) Copy short names into new dictionary. 
+       (dict_clear) Don't clear `long_name_tab' member.
+       (dict_get_varname_block) Removed.
+       (dict_add_longvar_entry) Removed.
+       (free_nte) Removed.
+       (dict_destroy) Don't destroy `long_name_tab' member.
+       (dict_create_var_from_short) Removed.
+       (dict_create_var_x) Removed.
+       (dict_create_var) Get rid of longname handling.
+       Clear short name.
+       (dict_clone_var) Get rid of longname parameter and longname
+       handling.
+       (dict_lookup_var) Get rid of longname handling.
+       (dict_reorder_var) New function.
+       (dict_rename_var) Clear short name.
+       (dict_rename_vars) Get rid of longname handling.  Clear short
+       names.
+       (dict_create_vector) Support long vector names.
+       (dict_lookup_vector) Use strcasecmp() instead of strcmp().
+       (quasi_base27) Removed.
+       (make_short_name) Removed.
+       (compare_strings) New function.
+       (hash_string) New function.
+       (dict_assign_short_names) New function.
+
+       * file-handle.q: (get_handle_with_name) Use strcasecmp() instead
+       of strcmp().
+       (get_handle_for_filename) Support long handle names.
+
+       * file-type.c: (struct col_spec) Make `name' fit long var names.
+       (cmd_file_type) Use strcasecmp() instead of strcmp().
+
+       * flip.c: (make_new_var) Rewrite.
+       (flip_sink_write) Use st_trim_copy() instead of strncpy().
+
+       * format.c: (parse_format_specifier_name) Use mm_case_compare()
+       instead of memcmp().
+
+       * get.c: (cmd_save_internal) Rephrase.
+       (rename_variables) Drop test for identical variable name.
+       (struct mtf_proc) Change `first', `last' to fit long var name.
+
+       * hash.c: (hsh_hash_case_string) New function for case-insensitive
+       string hashing.
+
+       * lexer.c: (restore_token) Use st_trim_copy() instead of
+       strncpy().
+       (lex_get) Don't uppercase string when copying into tokid.
+       (lex_put_back_id) Use st_trim_copy() instead of
+       strncpy().
+
+       * list.q: (determine_layout) Consider length of variable names in
+       choosing vertical layout.
+
+       * matrix-data.c: (cmd_matrix_data) Use strcasecmp() instead of
+       strcmp().
+       (string_to_content_type) Ditto.
+
+       * modify-vars.c: (compare_variables_given_ordering) Ditto.
+       (struct var_renaming) Change `new_name' to fit long var name.
+       (compare_var_renaming_by_new_name) Use strcasecmp() instead of
+       strcmp().
+
+       * pfm-read.c: (read_variables) Disallow system variables in system
+       files.
+       (write_variables) Call dict_assign_short_names() and use
+       short_name[] members.
+
+       * repeat.c: (internal_cmd_do_repeat) Use strcasecmp() instead of
+       strcmp().
+
+       * sfm-read.c: (sfm_open_reader) Rewrite code for long variable
+       map.  Reorder variables into same order as long variable map.
+       (read_variables) Set short name.
+
+       * sfm-write.c: (sfm_open_writer) Call dict_assign_short_names().
+       (write_variable) Use st_bare_pad_copy().
+       (write_longvar_table) Rewrite.
+
+       * str.c: (mm_case_compare) New function.
+
+       * sysfile-info.c: (compare_vectors_by_name) Use strcasecmp()
+       instead of strcmp().
+
+       * t-test.q: (tts_custom_groups) Remove redundant test.
+       (tts_custom_pairs) Ditto.
+
+       * var.h: (struct variable) Change `name' to fit long var names.
+       Remove `longname'.  Add `short_name' member.  Reorder some
+       variables.
+       (struct name_table_entry) Removed.
+       (struct vector) Change `name' to fit long vector names.
+
+       * vars-atr.c: (var_is_valid_name) Allow long var names.
+       (compare_var_names) Use strcasecmp() instead of strcmp().
+       (compare_var_ptr_names) Ditto.
+       (hash_var_name) Use hsh_hash_case_string().
+       (hash_var_ptr_name) Ditto.
+       (var_set_short_name) New function.
+       (var_clear_short_name) New function.
+       (var_set_short_name_suffix) New function.
+
+       * vars-prs.c: (parse_DATA_LIST_vars) Support long names.
+       Use strcasecmp() instead of strcmp().
+       (struct array_var_set) Removed `longname_tab'.
+       (array_var_set_lookup_var_idx) Drop longname_tab support.
+       (array_var_set_destroy) Don't destroy `longname_tab'.
+       (var_set_create_from_array) Don't create `longname_tab'.
+
+       * vector.c: (cmd_vector) Use strcasecmp() instead of strcmp().
+       Support long names.
+
+       * expressions/parse.c: (word_matches) Use mm_case_compare()
+       instead of memcmp().
+       (compare_strings) New function.
+       (lookup_function) Use compare_strings() instead of strcmp().
+       
+Sun May  1 22:07:43 2005  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: (move_element) New function.
+
+Sun May  1 22:05:35 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (parse_aggregate_functions) Always initialize
+       destvar.
+
+Sun May  1 22:03:47 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (cmd_aggregate) Use dict_clone_var_assert().
+
+       * dictionary.c: (dict_clone) Ditto.
+       (dict_clone_var_assert) New function.
+
+       * get.c: (mtf_merge_dictionary) Use dict_clone_var_assert().
+
+Sun May  1 15:05:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * error.c: Added a string for the compiler version to the
+       request_bug_report_and_abort function.
+
+       * groff_font.c, font.c: Removed manpage(1) style references from 
+       comments, because RMS frowns upon them.
+
+Thu Apr 28 18:52:06 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/parse.c: Improve previous fix for PR 12858 (LAG).
+
+Fri Apr 29 09:28:00 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * expressions/parse.c: Added handler for OP_LAG_Vn and OP_LAG_Vs.  
+       Fixed bug [#12858] .
+
+Wed Apr 27 12:42:34 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * loop.c recode.c repeat.c: Fixed a couple of instances of SHORT_NAME_LEN 
+       which should be LONG_NAME_LEN
+
+Wed Apr 27 07:43:50 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * command.def echo.c:  Added the ECHO command.
+
+Mon Apr 25 22:55:59 2005  Ben Pfaff  <blp@gnu.org>
+
+       Finish fixing MATCH FILES (PR 11677).
+
+       * get.c: (trim_dictionary) Rewrite in terms of drop_variables(),
+       keep_variables(), rename_variables().
+       (drop_variables) New function.
+       (keep_variables) New function.
+       (struct mtf_file) Rename `in' to `in_name'.  Add `in_var'.
+       (cmd_match_files) Deal with in_var.  Use drop_variables(),
+       keep_variables().  When IN is specified, require BY.  Set master
+       variables after master dictionary is complete.  Add IN variables
+       after master dictionary is complete.
+       (mtf_free_file) Free `in_name'.
+       (mtf_delete_file_in_place) Set in_var value to 0.
+       (mtf_read_nonactive_records)  Rephrase.
+       (mtf_processing) Support IN.  Rephrase.  Fix bugs.
+       (mtf_merge_dictionary) Don't set master variables; we do that
+       later now.
+       (get_master) Don't insist that there's a master variable.
+       
+Mon Apr 25 22:55:22 2005  Ben Pfaff  <blp@gnu.org>
+
+       Kluge to make some variable renaming sort of work.
+       Needs real fix.
+
+       * dictionary.c: (dict_rename_var) Call dict_add_longvar_entry().
+
+Mon Apr 25 22:52:28 2005  Ben Pfaff  <blp@gnu.org>
+
+       Add functions for comparing sets of variables between cases.
+       Use the functions.
+
+       * case.c: (case_compare) New function.
+       (case_compare_2dict) New function.
+       
+       * aggregate.c: (struct agr_proc) Remove `prev_break' member.  Add
+       `break_case'.
+       (cmd_aggregate) Nullify break_case.  Don't call
+       initialize_aggregate_info().
+       (agr_destroy) Destroy break_case.
+       (aggregate_single_case) Rewrite.  Use case_compare().
+       (dump_aggregate_info) Copy from break_case into output.
+       (initialize_aggregate_info) Copy break_case from input.
+
+       * get.c: (mtf_compare_BY_values) Use case_compare_2dict().
+
+       * vfm.c: (equal_splits) Use case_compare().
+
+Sat Apr 23 17:01:04 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * dictionary.c vars-prs.c sfm-write.c: Fixed some memory leaks
+
+Sun Apr 17 23:08:15 2005  Ben Pfaff  <blp@gnu.org>
+
+       Start work on fixing MATCH FILES.
+
+       * get.c: (enum operation) Remove OP_MATCH.
+       (trim_dictionary) Change return value to bool.  Don't support
+       OP_MATCH.
+       (struct mtf_file) Remove `first', `last' members.
+       (struct mtf_proc) Add `first', `last' members.  Change mtf_case
+       from `struct ccase *' to `struct ccase'.  Remove `by' member.
+       (cmd_match_files) Essentially rewrite.
+       (mtf_free) Don't free `by' member.  Destroy `mtf_case' member.
+       (mtf_read_nonactive_records) mtf_ parameter is not unused.
+       (mtf_processing) Ditto.  Also rephrase some code.
+       (mtf_merge_dictionary) Rewrite for easy comprehension.  
+
+Sun Apr 17 23:06:00 2005  Ben Pfaff  <blp@gnu.org>
+
+       * matrix-data.c: (wr_output_data) [DEBUGGING] Fix compilation
+       error.
+
+       * q2c.c: (dump_token) [DEBUGGING] Fix compilation error.
+       
+Thu Apr 14 2005 John Darrington
+
+        * var-display.c: New file.
+
+       * format.h var.h sfm-read.c sfm-write.c dictionary.c :  Added 
+         display_width, measure and alignment parameters to variables.
+
+       * aggregate.c command.def compute.c count.c data-list.c descript.c
+         dictionary.c dictionary.h expr-prs.c file-type.c flip.c get.c 
+         lexer.c lexer.h loop.c modify-vars.c pfm-read.c recode.c repeat.c 
+         sfm-read.c sfm-write.c sfm-write.h sfmP.h val-labs.c val.h var.h 
+         vars-prs.c vector.c :  
+             - Replaced literal constants representing maximum variable name 
+               length with macro definitions. 
+             - Added support for long variable names.
+             - Changed lexer such that it no longer makes tokens upper
+               case, but relies upon case insensitive behaviour of commands.
+
+Mon Apr  4 22:27:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (parse_aggregate_functions) If dict_create_var()
+       fails, don't dereference the resulting null pointer (PR 12427).
+       Also, fix double free error.
+
+Sat Mar 19 23:06:02 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (parse_aggregate_functions) Fix N_NO_VARS format.
+       (accumulate_aggregate_info) Set int1 to 1 for SUM.
+       (dump_aggregate_info) Only make SUM non-missing if there was at
+       least one variate.
+
+Sat Mar 19 14:48:19 2005  Ben Pfaff  <blp@gnu.org>
+
+       * aggregate.c: (dump_aggregate_info) Properly test whether the
+       destination variable is numeric, when making the result
+       system-missing for columnwise missing values.
+
+Mon Mar 14 21:52:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * misc.h: Remove GCC specializations.
+
+Mon Mar 14 21:07:23 2005  Ben Pfaff  <blp@gnu.org>
+
+       Make sort stable (PR 12313).
+       
+       * sort.c: Don't need to include some headers anymore.
+       (static var min_buffers) New variable.
+       (static var max_buffers) New variable.
+       (static var allow_internal_sort) New variable.
+       (cmd_sort_cases) Add test mode.
+       (sort_execute) Rephrase.
+       (do_internal_sort) Don't try internal sorting if
+       allow_internal_sort is set.
+       (struct external_sort) Renamed `initial_runs' to `runs' and
+       updated all references.
+       (macro MIN_BUFFER_TOTAL_SIZE_RECS) Removed.
+       (macro MIN_BUFFER_SIZE_BYTES) Removed.
+       (macro MIN_BUFFER_SIZE_RECS) Removed.
+       (compare_initial_runs) Removed.
+       (struct record_run) Add member `idx'.
+       (write_initial_runs) Pass increasing values to process_case() as
+       index.
+       (process_case) Add `idx' parameter and use it to initialize new
+       `idx' member.
+       (allocate_cases) Limit allocated buffers to max_buffers.
+       (compare_record_run) Use new `idx' member for last resort
+       comparison, for stability.
+       (end_run) Call casefile_sleep() on irs->casefile, to prevent
+       running out of file descriptors.
+       (struct merge_state) Removed.
+       (merge) Don't need to allocate cases.  Always use MAX_MERGE_ORDER
+       unless we have fewer runs left.  Always merge consecutive runs,
+       for stability.  Return the final run.
+       (mod) Removed.
+       (choose_merge) New function.
+       (merge_once) Rewritten.
+
+Mon Mar 14 21:05:42 2005  Ben Pfaff  <blp@gnu.org>
+
+       * cmdline.c: (static var testing_mode) Move into
+       parse_command_line().
+       
+Mon Mar 14 21:05:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       * algorithm.c: (remove_range) New function.
+       (remove_element) New function.
+
+       * dictionary.c: (dict_delete_var) Use remove_element().
+
+       * flip.c: (cmd_flip) Ditto.
+
+Sun Mar 13 22:52:05 2005  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.q: (struct file_handle) `open_mode' should not be
+       const.
+       
+Sun Mar 13 22:40:54 2005  Ben Pfaff  <blp@gnu.org>
+
+       First phase of making SORT CASES stable (PR 12313).
+
+       * sort.c: (struct indexed_case) New structure.
+       (do_internal_sort) Rewrite to make internal sorting stable.
+       (compare_case_dblptrs) Removed.
+       (compare_indexed_cases) New function.
+
+Sun Mar 13 22:38:40 2005  Ben Pfaff  <blp@gnu.org>
+
+       Clean-ups.
+
+       * casefile.c: (casereader_read_xfer_assert) New function.
+
+       * dictionary.c: (dict_compact_case) New function.
+
+       * flip.c: (struct flip_pgm) New member idx_to_fv.
+       (cmd_flip) Initialize idx_to_fv member.
+       (destroy_flip_pgm) Free idx_to_fv member.
+       (flip_sink_write) Use struct flip_pgm member instead of case_sink
+       member.
+       (flip_sink_write) Ditto.
+
+       * vfm.c: (write_case) Use dict_compact_case() instead of
+       compact_case().
+       (compact_case) Removed.
+       (storage_source_create) Removed `dict' parameter.  All references
+       updated.
+
+       * vfm.h: (struct case_source) Removed `value_cnt' member.  All
+       references removed.
+       (struct case_sink) Removed `dict', `idx_to_fv' members.  All
+       references removed.
+
+Sun Mar 13 22:35:55 2005  Ben Pfaff  <blp@gnu.org>
+
+       More AGGREGATE fixes.
+
+       * aggregate.c: (accumulate_aggregate_info) Implement NMISS and
+       NUMISS for strings.  Fix FOUT, POUT, FGT, FLT, FIN, FOUT for
+       strings.
+       (initialize_aggregate_info) Fix initialization for MIN, MAX for
+       strings.
+
+Sat Mar 12 23:26:21 2005  Ben Pfaff  <blp@gnu.org>
+
+       Start work on testing and debugging AGGREGATE.
+
+       * aggregate.c: (cmd_aggregate) Use discrete bool variables instead
+       of a bit-map.  Require proper subcommand ordering.  Make OUTFILE
+       subcommand mandatory.
+       (parse_aggregate_functions) Check that PIN, POUT, FIN, FOUT
+       functions' arguments are in the correct order and swap them if
+       not.
+       (accumulate_aggregate_info) Make SUM include weights.  Add various
+       string functions.
+       (dump_aggregate_info) Add various string functions.
+       (initialize_aggregate_info) Initialize int1 for MIN, MAX.
+
+       * sort.c: (sort_parse_criteria) Add parameter for returning
+       whether any directions were specified.  All callers updated.
+
+Sun Mar 13 14:54:27 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q: Fixed erroneous logic in compare_group_binary.
+
+Sat Mar 12 13:29:21 2005  Ben Pfaff  <blp@gnu.org>
+
+       * split-file.c: (cmd_split_file) Ignore LAYERED and SEPARATE
+       keywords (PR 11628).
+
+Sat Mar 12 13:17:12 2005  Ben Pfaff  <blp@gnu.org>
+
+       * vfm.c: (procedure_with_splits) Fix PR 11492: end_func() must be
+       called *before* close_active_file().
+
+Sat Mar 12 12:20:57 2005  Ben Pfaff  <blp@gnu.org>
+
+       * file-handle.q: (struct file_handle) Change open_mode from
+       character pointer to 3-char array, for safety.  Updated all
+       references.
+
+Sat Mar 12 12:15:49 2005  Ben Pfaff  <blp@gnu.org>
+
+       Thanks to Ben Kujala <bkujala@oregonchildcare.org> for reporting
+       these bugs.
+       
+       * pfm-read.c: (read_header) Improve error message for many cases
+       in which the input is not actually a portable file.
+
+       * file-handle.q: (fh_open) When we give an error message, actually
+       return NULL.
+
+Fri Mar 11 11:50:30 2005  Ben Pfaff  <blp@gnu.org>
+
+       * format.c: (check_common_specifier) New function for checks
+       common to check_input_specifier() and check_output_specifier().
+       (check_input_specifier) Use check_common_specifier().
+       (check_output_specifier) Use check_common_specifier().
+       (check_string_specifier) Removed.
+       (check_specifier_type) New function.
+       (check_specifier_width) New function.
+       (get_format_var_width) Fix bug.
+
+       * formats.c: (internal_cmd_formats) Only accept numeric variables.
+
+       * lexer.c: (check_id) Rename lex_id_to_token(), make public,
+       update all references.  Make case-insensitive.
+
+       * pfm-read.c: Essentially rewrite the whole file.  Now much
+       cleaner.
+
+       * print.c: (check_string_width) New function.
+       (fixed_parse_compatible) Use check_string_width(),
+       check_specifier_type().
+       (dump_fmt_list) Ditto.
+
+       * str.c: (st_trim_copy) New function.
+       (st_uppercase) New function.
+
+       * vars-atr.c: (var_is_valid_name) New function.
+       
+       * expressions/parse.c: (type_coercion_core) Use
+       check_specifier_type().
+       
+Fri Mar 11 11:31:24 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/evaluate.c: (cmd_debug_evaluate) Fix memory leaks.
+
+       * expressions/parse.c: (no_match) Ditto.
+
+Wed Mar  9 09:54:27 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: (pspp_LDADD) Add libgsl-extras.a.
+
+       * expressions/helpers.c: (struct func_params) Removed.
+       (generalized_idf) Removed.
+       (cdf_beta) Removed.
+       (idf_beta) Removed.
+       (idf_fdist) Use gslextras_cdf_beta_Pinv() instead of idf_beta().
+
+       * expressions/operations.def: Implement IDF.BETA, CDF.BINOM,
+       CDF.GEOM, CDF.HYPER, CDF.NEGBIN, CDF.POISSON using gsl-extras.
+       Implement SIG.F, which I had overlooked previously.
+
+Tue Mar  8 12:47:53 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * command.c command.def glob.[ch] cmdline.c: Made DEBUG cmds
+       available only in testing mode.
+
+Sun Mar  6 23:25:40 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-in.c: Use `bool' throughout, where relevant.
+
+Sun Mar  6 19:52:22 2005  Ben Pfaff  <blp@gnu.org>
+
+       DATA LIST with free-field formats should not have implied decimal
+       places (PR 12035).  Also clean up data-in.c a bit.
+
+       * data-in.h: (enum) Add DI_IMPLIED_DECIMALS.
+
+       * data-in.c: (apply_implied_decimals) New function.
+       (parse_numeric) Don't adjust exponent if DI_IMPLIED_DECIMALS not
+       set.  Also, get rid of gotos.
+       (parse_Z) Use apply_implied_decimals() if the field doesn't
+       contain a decimal point.
+       (parse_N) Use apply_implied_decimals().
+       (parse_IB) Ditto.
+       (parse_PIB) Ditto.
+       (parse_P) Ditto.
+       (parse_PK) Ditto.
+       (to_roman) Removed.
+       (parse_enum) New function.
+       (macro CHAR_IS_ROMAN) Removed.
+       (macro ROMAN_VALUE) Removed.
+       (parse_month) Use parse_enum().
+       (parse_weekday) Use parse_enum().
+       (parse_DATETIME) Use long for weekday.
+
+       * data-list.c: (read_from_data_list_fixed) Use
+       DI_IMPLIED_DECIMALS.
+
+Sun Mar  6 17:07:20 2005  Ben Pfaff  <blp@gnu.org>
+
+       When the lexer sees something like `-5' in the input, it has to
+       decide whether it's a negative numeric constant token or a '-'
+       token followed by a positive numeric constant token.  It always
+       decides on the former, and then the parser can call
+       lex_negative_to_dash() if it wants the latter.  However, this
+       doesn't work for the case of `-0', because negative zero is
+       (portably) indistinguishable from positive zero.  So now we divide
+       T_NUM into two tokens, T_POS_NUM and T_NEG_NUM, to make the
+       distinction clear.  This requires a little bit of extra effort,
+       because there were several references to T_NUM in the code base.
+       
+       * lexer.c: (lex_get) Use T_NEG_NUM and T_POS_NUM to distinguish
+       positive and negative numeric constants.
+       (lex_double_p) Renamed lex_is_number().  Changed return type to
+       bool.  Updated all relevant references to T_NUM to instead use
+       this function.
+       (lex_double) Renamed lex_number().  All references updated.
+       (lex_integer_p) Renamed lex_is_integer().  Changed return type to
+       bool.  All references updated.
+       (lex_token_representation) Understand T_NEG_NUM and T_POS_NUM.
+       (lex_negative_to_dash) Ditto.
+       (dump_token) Ditto.
+       
+       * lexer.h: (enum) Add T_POS_NUM, T_NEG_NUM.  Remove T_NUM.
+
+Sun Mar  6 22:09:20 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/operations.def: (NUMBER) Use DI_IMPLIED_DECIMALS.
+
+Sun Mar  6 19:33:24 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/operations.def: (VEC_ELEM_NUM) Treat user-missing
+       values as system-missing.
+
+       * expressions/parse.c: (parse_vector_element) Fix order of
+       arguments in call to expr_allocate_binary().
+
+Sun Mar  6 17:51:05 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/optimize.c: (optimize_tree) Fix optimization bug for
+       x**2.
+
+       * expressions/parse.c: (type_coercion_core) Set *node to NULL on
+       failure, as indicated by function comment.
+       (parse_binary_operators) Always return NULL on type_coercion()
+       failure.  Should have been doing this anyway, but bug in
+       type_coercion_core() filtered through.
+       (parse_add) Fix typo in user message.
+       (parse_primary) Understand T_NEG_NUM and T_POS_NUM.
+
+Sun Mar  6 10:47:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/operations.def: Add VALUE function.
+
+       * expressions/parse.c: (parse_function) Need an unary composite
+       node for variables in A TO B, not a variable node.  Use
+       allocate_unary_variable().
+       (parse_primary) Use allocate_unary_variable().
+       (allocate_unary_variable) New function.
+
+Thu Mar  3 23:53:32 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/PSPP_expressions.pm: Renamed it back to generate.pl
+       but fixed the real problem that was preventing the build from a
+       separate directory.  I liked it my way better ;-)
+       
+Thu Mar  3 23:17:51 2005  Ben Pfaff  <blp@gnu.org>
+
+       * expressions/parse.c: (expr_parse) Fix parameter type.  Thanks to
+       John Darrington <john@darrington.wattle.id.au> for reporting this
+       bug.
+
+Thu Mar  3 22:10:25 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * expressions/Makefile.am expressions/evaluate.h.pl
+         expressions/evaluate.inc.pl expressions/operations.h.pl
+         expressions/optimize.inc.pl expressions/parse.inc.p:
+
+         Renamed generate.pl to PSPP_expressions.pm and adjusted *.pl
+         to suit. 
+
+         Fixed everything so that it can be built from an arbitrary
+         directory.
+       
+Thu Mar  3 22:08:35 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * Makefile.am : Fixed up CLEANFILES target.
+
+Mon Feb 28 23:49:56 2005  Ben Pfaff  <blp@gnu.org>
+
+       * str.h: Changed `struct len_string' to `struct fixed_string', a
+       more accurate name.  Updated all references.
+
+Mon Feb 28 23:35:30 2005  Ben Pfaff  <blp@gnu.org>
+
+       Redo calendar support.  Should now be bug-for-bug compatible.
+       
+       * calendar.c: New file.
+
+       * calendar.h: New file.
+
+       * data-in.c: Use new calendar functions.
+       (parse_sign) Change sense of return value.
+       (calendar_error) New function.
+       (ymd_to_ofs) New function.
+       (ymd_to_date) New function.
+       (parse_DATE) Use new function.
+       (parse_ADATE) Ditto.
+       (parse_EDATE) Ditto.
+       (parse_SDATE) Ditto.
+       (parse_JDATE) Ditto.
+       (parse_QYR) Ditto.
+       (parse_MOYR) Ditto.
+       (parse_WKYR) Ditto.
+       (parse_TIME) Ditto.
+       (parse_DTIME) Ditto.
+       (parse_DATETIME) Ditto.
+
+       * data-out.c: (convert_date) Use new calendar functions.
+
+       * error.c: (err_vmsg) Changed interface to be more sensible.
+       Updated all callers.
+       (dump_message) Don't double new-lines (why did we do this
+       anyway?).
+
+Mon Feb 28 23:30:25 2005  Ben Pfaff  <blp@gnu.org>
+
+       * sfmP.h: (macro flt64) Moved here from pref.h.orig.
+       (macro FLT64_MAX) Moved here from pref.h.orig.
+
+Mon Feb 28 23:28:01 2005  Ben Pfaff  <blp@gnu.org>
+
+       * set.q: Support SET EPOCH.
+       (static var set_epoch) New var.
+       (aux_stc_custom_epoch) New function.
+       (stc_custom_epoch) New function.
+       (get_epoch) New function.
+       (stc_custom_pager) [USE_INTERNAL_PAGER] Fix bug.
+
+       * format.c: Make it possible just to check whether a specifier is
+       valid without emitting an error message.
+       (parse_format_specifier_name) Change interface, update all
+       callers.
+       (check_input_specifier) Ditto.
+       (check_output_specifier) Ditto.
+       (parse_format_specifier) Ditto.
+
+Mon Feb 28 23:24:08 2005  Ben Pfaff  <blp@gnu.org>
+
+       * command.def: Add DEBUG POOL.
+
+       * pool.c: (pool_destroy) Fix bug in deleting this pool from its
+       parent.
+       (pool_clear) Properly account for size of pool gizmo.
+       (pool_realloc) Ditto.
+       (pool_clone) New function.
+
+       * pool.h: Mark our allocation functions MALLOC_LIKE.
+
+Mon Feb 28 23:21:26 2005  Ben Pfaff  <blp@gnu.org>
+
+       * Makefile.am: Move many definitions into new top-level
+       Make.build.  Add expressions to SUBDIRS.  Add calendar.c,
+       calendar.h.  Remove expr-evl.c, expr-opt.c expr-prs.c, expr.h,
+       exprP.h, expr.def.
+
+       * case.c: (case_resize) New function.
+       (case_swap) New function.
+
+       * casefile.c: Include mkfile.h.
+
+Fri Feb 25 21:11:35 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * sfm-read.c: Fixed a buglet which caused a crash when trying
+       to read a non-existent file.
+
+Sun Feb 13 16:11:13 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix PR 11955.
+
+       * aggregate.c: (parse_aggregate_functions) Code cleanup.
+       Important part: get rid of spurious copying of function->format to
+       destvar->print and destvar->write.
+
+Fri Feb 11 00:08:36 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix PR 11916, which was confusing a variable's `index' member
+       with the variable's position in a var_set.  Although these are
+       usually the same, they are not for array `var_set's.
+       
+       Took advantage of this bug as an opportunity to clean up and
+       rewrite parse_var_set_vars().
+
+       * vars-prs.c: (parse_vs_variable_idx) New function.
+       (parse_vs_variable) Reimplement in terms of
+       parse_vs_variable_idx().
+       (parse_var_idx_class) New function.
+       (add_variable) New function.
+       (add_variables) New function.
+       (parse_var_set_vars) Rewritten.
+       (struct var_set) Change `lookup_var' member that returns a
+       variable into `lookup_var_idx' member that returns an int.
+       Updated the var set implementations in obvious corresponding ways.
+       Used compare_var_ptr_names(), hash_var_ptr_name() just added.
+       
+Fri Feb 11 00:06:03 2005  Ben Pfaff  <blp@gnu.org>
+
+       Use our global variable compare & hash functions and give them
+       better names.  Add similar functions for dealing with double
+       pointers to variables.
+       
+       * vars-atr.c: (compare_variables) Renamed compare_var_names().
+       (hash_variable) Renamed hash_var_name().
+       (compare_var_ptr_names) New function.
+       (hash_var_ptr_name) New function.
+       
+       * t-test.q: (cmd_t_test) Use global compare_var_names(),
+       hash_var_name().
+       (compare_var_name) Removed.
+       (hash_var_name) Removed.
+
+Fri Feb 11 00:04:39 2005  Ben Pfaff  <blp@gnu.org>
+
+       Fix dictionary bug.
+       
+       * dictionary.c: (compare_variable_dblptrs) Rename
+       compare_var_ptrs() and fix it to properly dereference the double
+       pointers.
+
+Mon Feb  7 09:58:15 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       crosstabs.q examine.q oneway.q q2c.c:  Added a q2c feature to 
+       declare subcommands as mandatory.  Closed bug #11843
+
+Sat Feb  5 20:35:10 WST 2005 John Darrington <john@darrington.wattle.id.au>
+       
+       * getline.c command.[ch] command.def:  Added (very rudimentary)
+       support for line  completion when in interactive mode.  Partially 
+       addresses bug #11693
+       
+Mon Jan 31 09:52:51 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q factor_stats.c oneway.q output.c pfm-read.c: Fixed some
+       problems revealed by valgrind.
+
+
+Wed Jan 26 11:44:11 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * set.q: Affixed a fix to the previous fix such that we'll be OK now
+       whether or not PAGER is set.
+
+Wed Jan 26 09:25:54 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * set.q: Copied the string produced by getenv("PAGER") thus avoiding
+       "invalid free" errors.  Hopefully fixes bug #11722
+
+       * compute.c expr-prs.c: Check that lvalues are populated before 
+       attempting to destroy them.  Closes bug #11676
+
+Tue Jan 25 21:01:43 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * aggregate.c: Initialised the complete agr_proc structure.
+       Closes bug #11675
+
+
+Sun Jan 23 23:02:21 2005  Ben Pfaff  <blp@gnu.org>
+
+       * print.c: (print_trns_free) Close the dfm writer if there is one,
+       fixing a memory leak.
+
+Mon Jan 24 12:24:36 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * glob.c oneway.q q2c.c t-test.q vfm.c: Still *more* memory leaks 
+       fixed.
+
+
+Fri Jan 21 19:54:14 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * linked-list.[ch] Added
+
+       * examine.q file-handle.[hq] font.h glob.c groff-font.c postscript.c 
+         set.q:    Yet more memory leaks
+
+Tue Jan 18 23:12:40 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * t-test.q examine.q : More memory leaks fixed.
+
+Tue Jan 18 19:26:59 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q  factor_stats.[ch] get.c pfm-read.c: Plugged numerous
+       memory leaks.
+
+Mon Jan 10 14:43:45 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * ascii.c cartesian.c casefile.c chart.h devind.c 
+         examine.q frequencies.q
+         html.c output.h piechart.c plot-chart.c plot-hist.c
+
+         Integrated the chart rendering into the output stream
+         (currently only works for html).
+         
+         Removed gratuitous use of ifndef NO_CHARTS, and replaced with
+         dummy-chart.c for compiling without charts.
+
+       * mkfile.[ch] Created.  
+
+       * som.[ch] tab.[ch]: Changed name of som_table to som_entity
+       Added type element so we can tell if it's a chart or a table.
+
+       * chart.h examine.q piechart.c plot-chart.c plot-hist.c: changed the 
+       API of charts to be more like that of tables.
+
+Thu Jan 13 21:00:02 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile.c main.c: Moved the SIGINT handler from casefile.c to
+       main.c. Removed the handler for SIGQUIT.
+
+Mon Jan 10 14:43:45 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * casefile.c: Added a signal handler to delete temp files on 
+       SIGINT and SIGQUIT
+
+       * permissions.c Inhibited the PERMISSIONS command when SAFER is on.
+
+       * command.def Added a lot more unimplemented commands.
+
+       * copyleft.[ch] cmdline.c Moved legal information to copyleft.c
+
+Sat Jan  8 23:58:34 2005  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: (compare_initial_runs) Needed additional level of
+       dereferencing.
+       (merge_once) Fix plenty of stupid mistakes.
+
+Sat Jan  8 23:55:27 2005  Ben Pfaff  <blp@gnu.org>
+
+       * casefile.c: (casefile_sleep) Need to flush_buffer() after
+       calling casefile_to_disk() or we will lose the last block in the
+       file if the casefile started out as disk-based.
+       (casefile_get_reader) Initialize reader->destructive to 0.
+       (cmd_debug_casefile) Add new test pattern.
+       (test_casefile) Define new test pattern to make sure
+       casefile_sleep() works properly.
+
+Fri Jan  7 08:00:05 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * Makefile.am chart.[ch]  histogram.[ch] piechart.c (Modified);
+          plot-hist.c plot-chart.c (Added) Reorganised these files in an
+          attempt to seperate the creation and processing of charts from their
+          actuall renedering.
+
+        * examine.q frequencies.q generated charts conditional upon the NO_CHARTS
+          macro.
+
+Thu Jan  6 18:48:58 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * main.c Added a signal handler for SIGFPE
+
+       * sort.c Somewhat more robust fix to the previous entry.
+
+Wed Jan  5 21:23:31 2005  Ben Pfaff  <blp@gnu.org>
+
+       * sort.c: (merge) Fix assertion for proper Huffman merge pattern:
+       0 == 1 modulo 1.  See Knuth 5.4.9 (vol. 3, 2nd ed.,
+       pp. 361).  Thanks to John Darrington <john@cellform.com.au> for
+       reporting the bug.
+
+Wed Jan  5 22:42:26 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * case.h Fixed bug # 11307
+       
+Wed Jan  5 08:30:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * val-labs.c Fixed bug which caused a crash if VALUE LABELS had
+       a trailing slash.
+
+Mon Jan  3 17:44:37 2005  Ben Pfaff  <blp@gnu.org>
+
+       * pfm-read.c: (read_variables) Remove direct manipulation of
+       v->aux, which is no longer needed.  Fixes PR 11483.
+
+Sat Jan  1 19:01:16 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * data-list.c Fixed a bug in parsing delimiters.
+
+       * group.c vars-atr.c Fixed buglet in hash/compare functions for alpha
+       values.
+
+       * percentiles.c Properly handled calculation of Tukey hinges where
+       the number of data is small.
+
+       * oneway.q Used the generic value_to_string function for independent
+       variable instead of trying to do it ourselves.
+
+       * box-whisker.c Fixed a buglet which caused a crash if the number of
+       data was zero
+
+
+Fri Dec 31 16:47:45 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * examine.q box-whisker.c chart.h Implemented boxplots in EXAMINE
+
+       * percentiles.c Fixed some bugs when calculating percentiles when
+       there's a small number of cases.
+
 Wed Dec 29 08:18:08 WST 2004 John Darrington <john@darrington.wattle.id.au>
 
        * percentiles.[ch] Added. Calculates percentiles and Tukey hinges
@@ -121,7 +1160,6 @@ Tue Nov 16 13:19:18 WST 2004 John Darrington <john@darrington.wattle.id.au>
 
        * permissions.c command.def Added the PERMISSIONS command
 
->>>>>>> 1.110
 Mon Nov 15 01:33:32 2004  Ben Pfaff  <blp@gnu.org>
 
        * q2c.c: (dump_header) Don't try to emit #includes at very top of
@@ -348,7 +1386,6 @@ Mon Nov 15 00:30:33 2004  Ben Pfaff  <blp@gnu.org>
        (var_dtor_free) New function.
        (discard_variables) Use NULL instead of inline_file.
 
->>>>>>> 1.106
 Fri Nov 12 10:07:11 WST 2004 John Darrington <john@darrington.wattle.id.au>
 
        * value-labs.c  Fixed the implmentation of value_to_string, so