Fix bugs deleting temporary files and their containing directory.
[pspp-builds.git] / src / language / stats / npar.c
index 3a178b233dddbcfae06d8559d01587c4a589231b..d34ec11932e5ffdd204b00f8a1fe850b3b873821 100644 (file)
@@ -24,8 +24,8 @@
 #include "data/case.h"
 #include "data/casegrouper.h"
 #include "data/casereader.h"
+#include "data/dataset.h"
 #include "data/dictionary.h"
-#include "data/procedure.h"
 #include "data/settings.h"
 #include "data/variable.h"
 #include "language/command.h"
@@ -258,8 +258,8 @@ parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests
               NOT_REACHED ();
             }
         }
-      else if (lex_match_hyphenated_word (lexer, "K-W") ||
-              lex_match_hyphenated_word (lexer, "KRUSKAL-WALLIS"))
+      else if (lex_match_phrase (lexer, "K-W") ||
+              lex_match_phrase (lexer, "KRUSKAL-WALLIS"))
         {
           lex_match (lexer, T_EQUALS);
           npt->kruskal_wallis++;
@@ -276,8 +276,8 @@ parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests
               NOT_REACHED ();
             }
         }
-      else if (lex_match_hyphenated_word (lexer, "M-W") ||
-              lex_match_hyphenated_word (lexer, "MANN-WHITNEY"))
+      else if (lex_match_phrase (lexer, "M-W") ||
+              lex_match_phrase (lexer, "MANN-WHITNEY"))
         {
           lex_match (lexer, T_EQUALS);
           npt->mann_whitney++;
@@ -759,44 +759,39 @@ npar_chisquare (struct lexer *lexer, struct dataset *ds,
 
   cstp->n_expected = 0;
   cstp->expected = NULL;
-  if ( lex_match (lexer, T_SLASH) )
+  if (lex_match_phrase (lexer, "/EXPECTED"))
     {
-      if ( lex_match_id (lexer, "EXPECTED") )
-       {
-         lex_force_match (lexer, T_EQUALS);
-         if ( ! lex_match_id (lexer, "EQUAL") )
-           {
-             double f;
-             int n;
-             while ( lex_is_number (lexer) )
-               {
-                 int i;
-                 n = 1;
-                 f = lex_number (lexer);
-                 lex_get (lexer);
-                 if ( lex_match (lexer, T_ASTERISK))
-                   {
-                     n = f;
-                     f = lex_number (lexer);
-                     lex_get (lexer);
-                   }
-                 lex_match (lexer, T_COMMA);
-
-                 cstp->n_expected += n;
-                 cstp->expected = pool_realloc (specs->pool,
-                                                cstp->expected,
-                                                sizeof (double) *
-                                                cstp->n_expected);
-                 for ( i = cstp->n_expected - n ;
-                       i < cstp->n_expected;
-                       ++i )
-                   cstp->expected[i] = f;
+      lex_force_match (lexer, T_EQUALS);
+      if ( ! lex_match_id (lexer, "EQUAL") )
+        {
+          double f;
+          int n;
+          while ( lex_is_number (lexer) )
+            {
+              int i;
+              n = 1;
+              f = lex_number (lexer);
+              lex_get (lexer);
+              if ( lex_match (lexer, T_ASTERISK))
+                {
+                  n = f;
+                  f = lex_number (lexer);
+                  lex_get (lexer);
+                }
+              lex_match (lexer, T_COMMA);
 
-               }
-           }
-       }
-      else
-        retval = 3;
+              cstp->n_expected += n;
+              cstp->expected = pool_realloc (specs->pool,
+                                             cstp->expected,
+                                             sizeof (double) *
+                                             cstp->n_expected);
+              for ( i = cstp->n_expected - n ;
+                    i < cstp->n_expected;
+                    ++i )
+                cstp->expected[i] = f;
+
+            }
+        }
     }
 
   if ( cstp->ranged && cstp->n_expected > 0 &&
@@ -828,7 +823,7 @@ npar_binomial (struct lexer *lexer, struct dataset *ds,
   struct binomial_test *btp = pool_alloc (specs->pool, sizeof (*btp));
   struct one_sample_test *tp = &btp->parent;
   struct npar_test *nt = &tp->parent;
-  bool equals;
+  bool equals = false;
 
   nt->execute = binomial_execute;
   nt->insert_variables = one_sample_insert_variables;
@@ -893,14 +888,6 @@ npar_binomial (struct lexer *lexer, struct dataset *ds,
 }
 
 
-static bool
-parse_two_sample_related_test (struct lexer *lexer,
-                                   const struct dictionary *dict,
-                                   struct two_sample_test *test_parameters,
-                                   struct pool *pool
-                                   );
-
-
 static bool
 parse_two_sample_related_test (struct lexer *lexer,
                               const struct dictionary *dict,
@@ -970,8 +957,8 @@ parse_two_sample_related_test (struct lexer *lexer,
          assert (n_vlist1 == n_vlist2);
          for ( i = 0 ; i < n_vlist1; ++i )
            {
-             test_parameters->pairs[n][1] = vlist1[i];
-             test_parameters->pairs[n][0] = vlist2[i];
+             test_parameters->pairs[n][0] = vlist1[i];
+             test_parameters->pairs[n][1] = vlist2[i];
              n++;
            }
        }
@@ -982,8 +969,8 @@ parse_two_sample_related_test (struct lexer *lexer,
            {
              for ( j = 0 ; j < n_vlist2; ++j )
                {
-                 test_parameters->pairs[n][1] = vlist1[i];
-                 test_parameters->pairs[n][0] = vlist2[j];
+                 test_parameters->pairs[n][0] = vlist1[i];
+                 test_parameters->pairs[n][1] = vlist2[j];
                  n++;
                }
            }
@@ -997,8 +984,8 @@ parse_two_sample_related_test (struct lexer *lexer,
          for ( j = i + 1 ; j < n_vlist1; ++j )
            {
              assert ( n < test_parameters->n_pairs);
-             test_parameters->pairs[n][1] = vlist1[i];
-             test_parameters->pairs[n][0] = vlist1[j];
+             test_parameters->pairs[n][0] = vlist1[i];
+             test_parameters->pairs[n][1] = vlist1[j];
              n++;
            }
        }
@@ -1032,7 +1019,7 @@ parse_n_sample_related_test (struct lexer *lexer,
     return false;
 
   value_init (&nst->val1, var_get_width (nst->indep_var));
-  if ( ! parse_value (lexer, &nst->val1, var_get_width (nst->indep_var)))
+  if ( ! parse_value (lexer, &nst->val1, nst->indep_var))
     {
       value_destroy (&nst->val1, var_get_width (nst->indep_var));
       return false;
@@ -1041,7 +1028,7 @@ parse_n_sample_related_test (struct lexer *lexer,
   lex_match (lexer, T_COMMA);
 
   value_init (&nst->val2, var_get_width (nst->indep_var));
-  if ( ! parse_value (lexer, &nst->val2, var_get_width (nst->indep_var)))
+  if ( ! parse_value (lexer, &nst->val2, nst->indep_var))
     {
       value_destroy (&nst->val2, var_get_width (nst->indep_var));
       return false;