Commit 4e58693c authored by Kevin Wolf's avatar Kevin Wolf

shell: Parsen des Pipeoperators gefixt

* shell: In tyndur folgt ein Pipeoperator nur auf Leerzeichen, weil
  ansonsten die Pipezeichen in Pfaden nicht mehr funktionieren

! shell: Endlosschleife gefixt, die durch eine nur halbe Implementierung
  verursacht wurde (Wechsel in Zustand fürs Parsen von Operatoren, aber
  dort wird er nicht erkannt)
Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
parent 468aabab
......@@ -76,7 +76,7 @@
static bool valid_operator(const char* buf)
{
const char* operators[] = {
"<", ">", ">>",
"<", ">", ">>", "|",
};
int i;
......@@ -140,7 +140,6 @@ int tokenize_cmdline(const char* str, char** output, struct token* tokens)
case '\\': TOKENIZER_OUTPUT(*str); state = ESCAPED; break;
case '<': TOKENIZER_ACCEPT(TT_WORD); state = OPERATOR; continue;
case '>': TOKENIZER_ACCEPT(TT_WORD); state = OPERATOR; continue;
case '|': TOKENIZER_ACCEPT(TT_WORD); state = OPERATOR; continue;
default:
if (isspace(*str)) {
TOKENIZER_ACCEPT(TT_WORD);
......@@ -156,6 +155,10 @@ int tokenize_cmdline(const char* str, char** output, struct token* tokens)
if (*str == '#') {
TOKENIZER_IGNORE();
state = COMMENT;
} else if (*str == '|') {
TOKENIZER_IGNORE();
state = OPERATOR;
continue;
} else if (!isspace(*str)) {
TOKENIZER_IGNORE();
state = NUMBER;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment