forked from Bananymous/banan-os
Shell: String leading and trailing whitespace from commands
This fixes a bug of inserting empty argument if command had trailing whitespace
This commit is contained in:
parent
27adb9486b
commit
c84b66d078
|
@ -159,6 +159,21 @@ BAN::Optional<BAN::String> parse_dollar(BAN::StringView command, size_t& i)
|
|||
return "$"sv;
|
||||
}
|
||||
|
||||
BAN::StringView strip_whitespace(BAN::StringView sv)
|
||||
{
|
||||
size_t leading = 0;
|
||||
while (leading < sv.size() && isspace(sv[leading]))
|
||||
leading++;
|
||||
sv = sv.substring(leading);
|
||||
|
||||
size_t trailing = 0;
|
||||
while (trailing < sv.size() && isspace(sv[sv.size() - trailing - 1]))
|
||||
trailing++;
|
||||
sv = sv.substring(0, sv.size() - trailing);
|
||||
|
||||
return sv;
|
||||
}
|
||||
|
||||
BAN::Vector<BAN::Vector<BAN::String>> parse_command(BAN::StringView command_view)
|
||||
{
|
||||
enum class State
|
||||
|
@ -168,6 +183,8 @@ BAN::Vector<BAN::Vector<BAN::String>> parse_command(BAN::StringView command_view
|
|||
DoubleQuote,
|
||||
};
|
||||
|
||||
command_view = strip_whitespace(command_view);
|
||||
|
||||
BAN::Vector<BAN::Vector<BAN::String>> result;
|
||||
BAN::Vector<BAN::String> command_args;
|
||||
|
||||
|
|
Loading…
Reference in New Issue