Shell: Implement specifying fds in file redirection

This commit is contained in:
Karol Baraniecki 2019-12-03 17:38:32 +01:00 committed by Andreas Kling
parent cf7910fc1e
commit 7ed8a468ec
Notes: sideshowbarker 2024-07-19 10:58:00 +09:00

View File

@ -1,6 +1,7 @@
#include "Parser.h"
#include <stdio.h>
#include <unistd.h>
#include <ctype.h>
void Parser::commit_token()
{
@ -102,6 +103,28 @@ Vector<Command> Parser::parse()
m_state = State::InDoubleQuotes;
break;
}
if (isdigit(ch)) {
if (i != m_input.length() - 1) {
char next_ch = m_input.characters()[i + 1];
if (next_ch == '>') {
commit_token();
begin_redirect_write(ch - '0');
++i;
// Search for another > for append.
m_state = State::InWriteAppendOrRedirectionPath;
break;
}
if (next_ch == '<') {
commit_token();
begin_redirect_read(ch - '0');
++i;
m_state = State::InRedirectionPath;
break;
}
}
}
m_token.append(ch);
break;
case State::InWriteAppendOrRedirectionPath: