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; }