Fix bug causing flood of error messages in terminal when trying to highlight an invalid command, reported by Denilson F. de Sa.

darcs-hash:20080204230905-ac50b-0829b69835347e5875656ae735181b724f10de2a.gz
This commit is contained in:
axel 2008-02-05 09:09:05 +10:00
parent 3f439e9cd3
commit d7396ac59f
2 changed files with 22 additions and 4 deletions

View File

@ -58,6 +58,10 @@
Use unencoded private-use keycodes for internal characters
*/
#define EXPAND_RESERVED 0xf000
/**
End of range reserved for expand
*/
#define EXPAND_RESERVED_END 0xf000f
enum
{

View File

@ -530,6 +530,20 @@ static void highlight_param( const wchar_t * buff,
}
}
static int has_expand_reserved( wchar_t *str )
{
while( *str )
{
if( *str >= EXPAND_RESERVED &&
*str <= EXPAND_RESERVED_END )
{
return 1;
}
str++;
}
return 0;
}
void highlight_shell( wchar_t * buff,
int *color,
@ -636,10 +650,10 @@ void highlight_shell( wchar_t * buff,
Command. First check that the command actually exists.
*/
cmd = expand_one( context,
wcsdup(tok_last( &tok )),
EXPAND_SKIP_CMDSUBST | EXPAND_SKIP_VARIABLES);
wcsdup(tok_last( &tok )),
EXPAND_SKIP_CMDSUBST | EXPAND_SKIP_VARIABLES);
if( cmd == 0 )
if( (cmd == 0) || has_expand_reserved( cmd ) )
{
color[ tok_get_pos( &tok ) ] = HIGHLIGHT_ERROR;
}
@ -698,7 +712,7 @@ void highlight_shell( wchar_t * buff,
}
tok_set_pos( &tok, mark );
}
if( !is_subcommand )
{
wchar_t *tmp;