Add support for escaping spaces and tabs in shell.
This commit is contained in:
parent
5209258de0
commit
ab1901976c
|
@ -314,18 +314,32 @@ void get_and_run_command()
|
||||||
argv[0] = NULL;
|
argv[0] = NULL;
|
||||||
|
|
||||||
bool lastwasspace = true;
|
bool lastwasspace = true;
|
||||||
|
bool escaped = false;
|
||||||
for ( size_t i = 0; i <= commandused; i++ )
|
for ( size_t i = 0; i <= commandused; i++ )
|
||||||
{
|
{
|
||||||
switch ( command[i] )
|
switch ( command[i] )
|
||||||
{
|
{
|
||||||
|
case '\\':
|
||||||
|
if ( !escaped )
|
||||||
|
{
|
||||||
|
memmove(command + i, command + i + 1, commandused+1 - (i-1));
|
||||||
|
i--;
|
||||||
|
commandused--;
|
||||||
|
escaped = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case '\0':
|
case '\0':
|
||||||
case ' ':
|
case ' ':
|
||||||
case '\t':
|
case '\t':
|
||||||
case '\n':
|
case '\n':
|
||||||
|
if ( !command[i] || !escaped )
|
||||||
|
{
|
||||||
command[i] = 0;
|
command[i] = 0;
|
||||||
lastwasspace = true;
|
lastwasspace = true;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
|
escaped = false;
|
||||||
if ( lastwasspace ) { argv[argc++] = command + i; }
|
if ( lastwasspace ) { argv[argc++] = command + i; }
|
||||||
lastwasspace = false;
|
lastwasspace = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue