Fixed bug #11227 (T-Test not working with alpha independent variable )
[pspp-builds.git] / src / command.c
index 071c7e4e9ecb89942d1a3394c229a4019357126f..5e4e1a5f7c035264a9d37836201fa0973b717119 100644 (file)
@@ -25,6 +25,7 @@
 #include <ctype.h>
 #include <errno.h>
 #include "alloc.h"
+#include "dictionary.h"
 #include "error.h"
 #include "getline.h"
 #include "lexer.h"
@@ -293,6 +294,12 @@ conflicting_3char_prefixes (const char *a, const char *b)
   bw = find_word (b, &bw_len);
   assert (aw != NULL && bw != NULL);
 
+  /* Words that are the same don't conflict. */
+  if (aw_len == bw_len && !memcmp (aw, bw, aw_len))
+    return 0;
+  
+  /* Words that are otherwise the same in the first three letters
+     do conflict. */
   return ((aw_len > 3 && bw_len > 3)
           || (aw_len == 3 && bw_len > 3)
           || (bw_len == 3 && aw_len > 3)) && !memcmp (aw, bw, 3);
@@ -480,7 +487,7 @@ parse_command_name (void)
       
       assert (word_cnt < sizeof words / sizeof *words);
       if (token == T_ID)
-        words[word_cnt++] = xstrdup (ds_value (&tokstr));
+        words[word_cnt++] = xstrdup (ds_c_str (&tokstr));
       else
         words[word_cnt++] = xstrdup ("-");
 
@@ -626,10 +633,10 @@ cmd_erase (void)
   if (!lex_force_string ())
     return CMD_FAILURE;
 
-  if (remove (ds_value (&tokstr)) == -1)
+  if (remove (ds_c_str (&tokstr)) == -1)
     {
       msg (SW, _("Error removing `%s': %s."),
-          ds_value (&tokstr), strerror (errno));
+          ds_c_str (&tokstr), strerror (errno));
       return CMD_FAILURE;
     }
 
@@ -707,7 +714,7 @@ run_command (void)
        lex_get ();
        if (!lex_force_string ())
          return CMD_FAILURE;
-       cmd = ds_value (&tokstr);
+       cmd = ds_c_str (&tokstr);
        string = 1;
       }
     else
@@ -765,11 +772,11 @@ cmd_host (void)
   /* Make sure that the system has a command interpreter, then run a
      command. */
   if (system (NULL) != 0)
-    success = run_command ();
+    code = run_command ();
   else
     {
       msg (SE, _("No operating system support for this command."));
-      success = CMD_FAILURE;
+      code = CMD_FAILURE;
     }
 #endif /* !unix */