From: John Darrington Date: Thu, 23 Jul 2009 06:15:20 +0000 (+0200) Subject: Merge commit 'origin/stable' X-Git-Tag: build37~48 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp-builds.git;a=commitdiff_plain;h=b5c82cc9aabe7e641011130240ae1b2e84348e23;hp=91a5888ad22ff93d212c9534d720d8f8bf52e56b Merge commit 'origin/stable' Conflicts: src/language/stats/t-test.q --- diff --git a/src/data/por-file-reader.c b/src/data/por-file-reader.c index cd8b213e..a4631242 100644 --- a/src/data/por-file-reader.c +++ b/src/data/por-file-reader.c @@ -882,17 +882,30 @@ pfm_detect (FILE *file) { unsigned char header[464]; char trans[256]; - int cooked_cnt, raw_cnt; + int cooked_cnt, raw_cnt, line_len; int i; cooked_cnt = raw_cnt = 0; + line_len = 0; while (cooked_cnt < sizeof header) { int c = getc (file); if (c == EOF || raw_cnt++ > 512) return false; - else if (c != '\n' && c != '\r') - header[cooked_cnt++] = c; + else if (c == '\n') + { + while (line_len < 80 && cooked_cnt < sizeof header) + { + header[cooked_cnt++] = ' '; + line_len++; + } + line_len = 0; + } + else if (c != '\r') + { + header[cooked_cnt++] = c; + line_len++; + } } memset (trans, 0, 256); diff --git a/src/data/sys-file-reader.c b/src/data/sys-file-reader.c index 9978d43a..b0a41a83 100644 --- a/src/data/sys-file-reader.c +++ b/src/data/sys-file-reader.c @@ -505,9 +505,21 @@ read_header (struct sfm_reader *r, struct dictionary *dict, read_bytes (r, raw_bias, sizeof raw_bias); if (float_identify (100.0, raw_bias, sizeof raw_bias, &r->float_format) == 0) { - sys_warn (r, _("Compression bias is not the usual " - "value of 100, or system file uses unrecognized " - "floating-point format.")); + uint8_t zero_bias[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + + if (memcmp (raw_bias, zero_bias, 8)) + sys_warn (r, _("Compression bias is not the usual " + "value of 100, or system file uses unrecognized " + "floating-point format.")); + else + { + /* Some software is known to write all-zeros to this + field. Such software also writes floating-point + numbers in the format that we expect by default + (it seems that all software most likely does, in + reality), so don't warn in this case. */ + } + if (r->integer_format == INTEGER_MSB_FIRST) r->float_format = FLOAT_IEEE_DOUBLE_BE; else diff --git a/src/language/data-io/data-parser.c b/src/language/data-io/data-parser.c index 6ec3d0d5..020f8e4c 100644 --- a/src/language/data-io/data-parser.c +++ b/src/language/data-io/data-parser.c @@ -485,7 +485,8 @@ cut_field (const struct data_parser *parser, struct dfm_reader *reader, /* Regular field. */ ss_get_chars (&p, ss_cspan (p, ds_ss (&parser->any_sep)), field); *last_column = dfm_column_start (reader); - if (!ss_ltrim (&p, parser->soft_seps) || ss_is_empty (p)) + if (!ss_ltrim (&p, parser->soft_seps) || ss_is_empty (p) + || ss_find_char (parser->hard_seps, p.string[0]) != SIZE_MAX) { /* Advance past a trailing hard separator, regardless of whether one actually existed. If diff --git a/src/language/stats/t-test.q b/src/language/stats/t-test.q index 09a96cfc..d02cdb28 100644 --- a/src/language/stats/t-test.q +++ b/src/language/stats/t-test.q @@ -974,8 +974,8 @@ trbox_paired_populate (struct trbox *trb, /* Degrees of freedom */ tab_double (trb->t, 8, i + 3, TAB_RIGHT, df, &proc->weight_format); - p = gsl_cdf_tdist_P (t, df); - q = gsl_cdf_tdist_P (t, df); + p = gsl_cdf_tdist_P (t,df); + q = gsl_cdf_tdist_Q (t,df); tab_double (trb->t, 9, i + 3, TAB_RIGHT, 2.0 * (t > 0 ? q : p), NULL); } diff --git a/tests/automake.mk b/tests/automake.mk index aba1a62c..15e297a0 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -143,6 +143,7 @@ dist_TESTS = \ tests/bugs/t-test-alpha.sh \ tests/bugs/t-test-alpha2.sh \ tests/bugs/t-test-alpha3.sh \ + tests/bugs/t-test-paired.sh \ tests/bugs/temporary.sh \ tests/bugs/unwritable-dir.sh \ tests/bugs/val-labs.sh \ diff --git a/tests/bugs/t-test-paired.sh b/tests/bugs/t-test-paired.sh new file mode 100755 index 00000000..f722f614 --- /dev/null +++ b/tests/bugs/t-test-paired.sh @@ -0,0 +1,117 @@ +#!/bin/sh + +# This program tests for a bug in the paired samples T test. +# Thanks to Mike Griffiths for reporting this problem. + +TEMPDIR=/tmp/pspp-tst-$$ +TESTFILE=$TEMPDIR/`basename $0`.sps + +# ensure that top_srcdir and top_builddir are absolute +if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi +if [ -z "$top_builddir" ] ; then top_builddir=. ; fi +top_srcdir=`cd $top_srcdir; pwd` +top_builddir=`cd $top_builddir; pwd` + +PSPP=$top_builddir/src/ui/terminal/pspp + +STAT_CONFIG_PATH=$top_srcdir/config +export STAT_CONFIG_PATH + +LANG=C +export LANG + + +cleanup() +{ + if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then + echo "NOT cleaning $TEMPDIR" + return ; + fi + rm -rf $TEMPDIR +} + + +fail() +{ + echo $activity + echo FAILED + cleanup; + exit 1; +} + + +no_result() +{ + echo $activity + echo NO RESULT; + cleanup; + exit 2; +} + +pass() +{ + cleanup; + exit 0; +} + +mkdir -p $TEMPDIR + +cd $TEMPDIR + +cat >> $TESTFILE <