John Darrington [Sat, 22 Dec 2012 16:40:09 +0000 (17:40 +0100)]
str.c: New functions ds_put_c_vformat and ds_put_c_format
Added a new printf-like functions which are locale independent.
Added this new function, and changed syntax_gen_pspp_valist to use it.
Rationale: syntax generation should never be locale dependent.
This function used *printf with a %f directive, which under certain
locales would have generated a string like "270,00x210,00mm" which the
print driver would have rejected.
This change uses the newly available c_xasprintf function from gnulib
to alleviate this problem.
Ben Pfaff [Tue, 27 Nov 2012 05:15:02 +0000 (21:15 -0800)]
histogram: Add missing #include.
Commit 02b9b37698eb "Disable asserts in histogram code except in
--testing-mode" added a use of settings_get_testing_mode() but didn't
include the proper header. This fixes the problem.
John Darrington [Mon, 26 Nov 2012 20:09:08 +0000 (21:09 +0100)]
Disable asserts in histogram code except in --testing-mode
The assertions in histogram.c are algebraically correct,
but due to floating point errors may not actually be true.
This change disables them except when in testing mode.
The tests in charts.at rely upon them being enabled.
Closes bug #36395
Ben Pfaff [Mon, 26 Nov 2012 07:04:50 +0000 (23:04 -0800)]
DESCRIPTIVES: Make Z score calculation honor SPLIT FILE.
Until now, DESCRIPTIVES has not supported SPLIT FILE in Z score
calculations. That is, Z scores have been calculated on the basis of a
single group for the entire file, which doesn't make any sense. This
commit properly implements Z score calculation on a per-split group basis.
Ben Pfaff [Sun, 25 Nov 2012 17:04:54 +0000 (09:04 -0800)]
Remove feature to automatically connect to GDB when debugging is enabled.
This feature caused a few problems in "make check" on some distributions
when debugging was enabled at compile time. It is probably possible to
find and fix those particular problems, but the feature itself is
little-used, so this commit instead removes it.
Ben Pfaff [Sun, 25 Nov 2012 05:41:00 +0000 (21:41 -0800)]
psppire-data-window: Only allow saving a file with at least one variable.
A data file with no variables can't be saved to a file. Until now, this
wasn't detected until the user had already chosen a file name, and the
message used to report it was confusing: "SAVE is allowed only after the
active file has been defined." With this commit, the menu item and toolbar
item for save operations is, instead, disabled if the file has no
variables.
Bug #30700.
Reported by eric thivant, via Harry Thijssen, with help from Michel
Boaventura.
Ben Pfaff [Sun, 25 Nov 2012 01:50:05 +0000 (17:50 -0800)]
DATA LIST: Accept freefield format types without widths use minimum width.
A user reported that SPSS accepts syntax such as "DATA LIST FREE/
d (DATETIME)." using a default width for the field with no specified width.
This commit makes PSPP accept this syntax too, although it does not get
the width exactly right (please let me know if you figure out how to do
that).
Ben Pfaff [Sun, 25 Nov 2012 01:26:38 +0000 (17:26 -0800)]
format-parser: Improve error message when format specifier lacks width.
Until now, parse_format_specifier() was willing to parse, e.g. "datetime"
as a format specifier. It would then be rejected later by e.g.
fmt_check_input() with a message like "Input format DATETIME0.0 specifies
width 0, but DATETIME requires a width between 17 and 40," which makes no
sense to the user. This commit improves the error message.
Ben Pfaff [Sat, 24 Nov 2012 23:51:33 +0000 (15:51 -0800)]
data-parser: Use data-file error types for data-file errors.
The SW error type that these calls to msg() used before this command
include the name of the executing command in the error message. This can
be confusing because the executing command may not have any connection to
the command that said to read the data file. This commit changes these
error types to DW, which is intended for errors in a data file (and omits
the command name).
Ben Pfaff [Sat, 24 Nov 2012 22:14:16 +0000 (14:14 -0800)]
INPUT PROGRAM: Don't break out of INPUT PROGRAM on interactive error.
Until now, any erroneous command typed within an input program at an
interactive command prompt implicitly "broke out" of the input program,
causing confusing behavior. This commit fixes the problem: commands
following an erroneous command within INPUT PROGRAM continue to be part of
the input program.
Ben Pfaff [Sat, 24 Nov 2012 21:47:06 +0000 (13:47 -0800)]
DATA LIST FREE: Warn when a quoted string is not followed by a delimiter.
A field parsed by DATA LIST FREE (or LIST) is either quoted or unquoted.
When it is quoted, this means that the entire field has to be quoted, that
is, it is not possible to quote some initial part of the field, then leave
some part of it unquoted (then possibly quote an additional part, etc.).
That means that the quoted portion should be followed by a delimiter,
such as white space, a comma, or end of line, but PSPP didn't warn when
it was not. This commit makes PSPP warn in this situation, which makes
errors in the input easier to find.
Bug #26522.
Reported by Pascal Barbedor <pbarbedor@gmail.com>.
Ben Pfaff [Sat, 24 Nov 2012 20:03:42 +0000 (12:03 -0800)]
output: Make default output file name depend on the format.
Before this commit, "-O html" caused HTML output to be written to a file
named "-", which is confusing. After this commit, it is written to a file
named "pspp.html". Similarly for other output drivers, except that text
and CSV output are still written to stdout by default.
John Darrington [Fri, 23 Nov 2012 18:49:03 +0000 (19:49 +0100)]
Refactoring: common function set_sensitivity from toggle
Many dialog boxes have a signal handler to set the sensitivity
of a widget, according to the state of a toggle button. Until
now, they had all written their own.
John Darrington [Fri, 23 Nov 2012 08:01:36 +0000 (09:01 +0100)]
Logistic Regression: Ignore cases with missing dependent variables.
Prior to this change, cases with missing values in the predictor
variables were ignored, but cases with missing values only in the
dependent variable would provoke an error. Subsequent to this change
such cases are also ignored. This seems to be the behaviour of other
software, despite what their documentation may suggest.
John Darrington [Wed, 21 Nov 2012 21:13:27 +0000 (22:13 +0100)]
Logistic Regression: Calculate the logs of the likelihood instead of the raw value.
The likelihood values can become extremely large which can result in
lost precision in a double. This change therefore calculates the
logarithms of the likelihoods instead of their actual value.
John Darrington [Tue, 20 Nov 2012 11:32:34 +0000 (12:32 +0100)]
Fix (again) problems displaying a GtkSourceView widget on Cygwin
Under certain compiler options, the effect of the gtk_*get_type
function call was optimised away. This change fixes that. It
seems that both static and volatile are necessary, in order to
avoid the compiler from complaining and/or optimising the call
away.
John Darrington [Tue, 20 Nov 2012 09:32:14 +0000 (10:32 +0100)]
Logistic Regression: Optimise the classification calculations.
Instead of calculating the logit of the prediction for each case,
pre-calculate the inverse logit of the threshold before the process
starts. This should give a small performance gain..
John Darrington [Mon, 19 Nov 2012 10:15:49 +0000 (11:15 +0100)]
Fix possible memory corruption when creating dialogs with selectors.
The PsppireSelector widget's class structure contains a map of selectors
indexed by the source widget with which they are associated. Until now, that
map was never depopulated. This could have caused problems if newly created
widgets happened to use the same address as old, destroyed ones. This change
removes selectors from the map upon destruction.
John Darrington [Tue, 13 Nov 2012 18:00:38 +0000 (19:00 +0100)]
Remove _base_init and base_finalize functions from psppire-selector
Gtk+ documentation recommends these are avoided in modern code.
They differ only from class_init in the case where the class has subclasses,
which PsppireSelector does not.
John Darrington [Sun, 11 Nov 2012 13:19:05 +0000 (14:19 +0100)]
Logistic Regression: Added categorical variable support
With this commit Logistic Regression now supports the /CATEGORICALS
subcommand, allowing a dependent variable to be regressed against one
or more categorical predictor variables.
John Darrington [Thu, 8 Nov 2012 13:33:51 +0000 (14:33 +0100)]
Categoricals.c: Ensure that categories are processed order of their categorical variable(s).
Some procedures require that categoricals are processed in a particular order.
Mathematically, the order is irrelevant, however for reporting purposes it is
sometimes required. This change adds a level of indirection, so that the codes
are allocated in ascending order of the categorical variable.
John Darrington [Tue, 6 Nov 2012 19:50:33 +0000 (20:50 +0100)]
Categoricals: Provide separate functions for effects and dummy coding.
Until now, the function categoricals_get_code_for_case returned the
"effects" coding (ie, a bipolar code). Some uses require "dummy" coding
(a binary coding). This change provides seperate functions to return
whatever is desired.
John Darrington [Fri, 2 Nov 2012 14:31:45 +0000 (15:31 +0100)]
Categoricals: Accept null pointer as subject.
Previously, certain functions would crash, or behave badly if their
argument was NULL. This change makes them do nothing, or return
default values, as appropriate. This saves callers having to always
test for NULL.
Ben Pfaff [Fri, 5 Oct 2012 04:22:42 +0000 (21:22 -0700)]
configure.ac: Increase pango minimum version from 1.20 to 1.22
Commit bd4d6e7453 (cairo: Avoid deprecated
pango_cairo_font_map_create_context().) added a dependency on pango
version 1.22 or later, but configure.ac only checked for version 1.20
or later. This commit fixes the discrepancy.
INSTALL already documented that Pango 1.22 or later was needed.
Ben Pfaff [Sun, 30 Sep 2012 19:29:33 +0000 (12:29 -0700)]
tests: Better isolate search text in test of error reporting.
Some GNU/Linux distributions print additional text on a segfault,
e.g. "Cannot exec debugger: No such file or directory", which this
test was seeing in output and interpreting as a failed test. This
commit fixes the problem by ignoring text up to the ***** line that
marks the start of the expected output.
Ben Pfaff [Wed, 26 Sep 2012 04:18:32 +0000 (21:18 -0700)]
Suppress GCC 4.7 warnings by changes to code that make it less clear.
I'm not entirely happy with these changes, because they make the code
slightly less obvious. However, it's still not really bad code, and
it's convenient to have a warning-free build.
Ben Pfaff [Wed, 26 Sep 2012 00:09:47 +0000 (17:09 -0700)]
gnumeric-reader: Add cast to suppress warning.
This suppresses a GCC warning for a mismatch between
xmlInputCloseCallback, which takes a "void *" parameter, and
gzclose(), which takes a "gzFile" (which is "struct gzFile_s *").
This came up with an upgrade from "squeeze" to "wheezy". I assume
that a gzclose prototype became visible or that gzFile changed away
from "void *".
An alternative would be to write a trampoline to just transform one
pointer type to the other, but the xmlReaderForIO() invocation
already has one function cast so a second cast doesn't make it much
worse.