X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcommand.c;h=5e4e1a5f7c035264a9d37836201fa0973b717119;hb=5156fa5a8323a16f6b4bbc8950221cdc1d0e023d;hp=071c7e4e9ecb89942d1a3394c229a4019357126f;hpb=97d6c6f6b1922621ca013668eba9a9a9f71d60fe;p=pspp-builds.git diff --git a/src/command.c b/src/command.c index 071c7e4e..5e4e1a5f 100644 --- a/src/command.c +++ b/src/command.c @@ -25,6 +25,7 @@ #include #include #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 */