string_truncate( buf, 0 );
builtin_match(	PARSE	*parse,	FRAME	*frame ){	LIST *l = lol_get( frame->args, 0 );	LIST *r = lol_get( frame->args, 1 );	LIST *result = 0;	regexp *re;	/* No pattern or string?  No results. */	if( !l || !r )	    return L0;	/* Just use first arg of each list. */	re = regcomp( l->string );	if( regexec( re, r->string ) )	{	    int i, top;            string buf[1];            string_new(buf);	    /* Find highest parameter */	    for( top = NSUBEXP; top-- > 1; )		if( re->startp[top] != re->endp[top] )		    break;	    /* And add all parameters up to highest onto list. */	    /* Must have parameters to have results! */	    for( i = 1; i <= top; i++ )	    {                string_append_range( buf, re->startp[i], re->endp[i] );		result = list_new( result, newstr( buf->value ) );	    }                        string_free( buf );	}	free( (char *)re );	return result;}