All pastes #826085 Raw Edit

Unnamed

public text v1 · immutable
#826085 ·published 2007-12-21 00:12 UTC
rendered paste body
const char *first_arg( const char *argument, char *arg_first, bool fCase )
{
    char cEnd;

    while( *argument == ' ' )
	argument++;

    cEnd = ' ';
    if( strchr( "'\"%([{<", *argument ) )
    {
	switch( *argument )
	{
	    /* Careful here, we could run off the end by accident. */ 
	case '\0':
	    cEnd = ' ';
	    argument--;
	    break;

	case '(':	cEnd = ')';	break;
	case '[':	cEnd = ']';	break;
	case '{':	cEnd = '}';	break;
	case '<':	cEnd = '>';	break;
	    
	default:
	    cEnd = *argument;
	    break;
	}
	argument++;
    }

    while( *argument != '\0' )
    {
	if( *argument == cEnd || ( cEnd == ' ' && isspace( *argument ) ) )
	{
	    argument++;
	    break;
	}
	if( fCase )
	    *arg_first = LOWER( *argument );
	else
	    *arg_first = *argument;
	arg_first++;
	argument++;
    }
    *arg_first = '\0';

    while( isspace( *argument ) )
	argument++;

    return argument;
}