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
							
								
									a8d74f604e
								
							
						
					
					
						commit
						399d5338c6
					
				| 
						 | 
				
			
			@ -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