You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Ruediger Pluem <rp...@apache.org> on 2010/09/22 08:23:09 UTC
Re: svn commit: r999533 - in /httpd/httpd/trunk: CHANGES include/ap_regex.h
server/Makefile.in server/util_pcre.c server/util_regex.c
On 09/21/2010 08:42 PM, niq@apache.org wrote:
> Author: niq
> Date: Tue Sep 21 18:42:20 2010
> New Revision: 999533
>
> URL: http://svn.apache.org/viewvc?rev=999533&view=rev
> Log:
> Introduce ap_rxplus class: higher-level regexps supporting perl-style
> regexp operations.
>
> Added:
> httpd/httpd/trunk/server/util_regex.c
> Modified:
> httpd/httpd/trunk/CHANGES
> httpd/httpd/trunk/include/ap_regex.h
> httpd/httpd/trunk/server/Makefile.in
> httpd/httpd/trunk/server/util_pcre.c
>
> Added: httpd/httpd/trunk/server/util_regex.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util_regex.c?rev=999533&view=auto
> ==============================================================================
> --- httpd/httpd/trunk/server/util_regex.c (added)
> +++ httpd/httpd/trunk/server/util_regex.c Tue Sep 21 18:42:20 2010
> +
> +AP_DECLARE(int) ap_rxplus_exec(apr_pool_t *pool, ap_rxplus_t *rx,
> + const char *pattern, char **newpattern)
> + //int max_iterations)
This looks like a C++ style comment.
> +{
> +#if 1
> + int ret = 1;
> + int startl, oldl, newl, diffsz;
> + const char *remainder;
> + char *subs;
> +/* snrf process_regexp from mod_headers */
> + if (ap_regexec(&rx->rx, pattern, rx->nmatch, rx->pmatch, rx->flags) != 0) {
> + rx->match = NULL;
> + return 0; /* no match, nothing to do */
> + }
> + rx->match = pattern;
> + if (rx->subs) {
> + *newpattern = ap_pregsub(pool, rx->subs, pattern,
> + rx->nmatch, rx->pmatch);
> + if (!*newpattern) {
> + return 0; /* FIXME - should we do more to handle error? */
> + }
> + startl = rx->pmatch[0].rm_so;
> + oldl = rx->pmatch[0].rm_eo - startl;
> + newl = strlen(*newpattern);
> + diffsz = newl - oldl;
> + remainder = pattern + startl + oldl;
> + if (rx->flags & AP_REG_MULTI) {
> + /* recurse to do any further matches */
> + char *subs;
> + ret += ap_rxplus_exec(pool, rx, remainder, &subs);
> + if (ret > 1) {
> + /* a further substitution happened */
> + diffsz += strlen(subs) - strlen(remainder);
> + remainder = subs;
> + }
> + }
> + subs = apr_palloc(pool, strlen(pattern) + 1 + diffsz);
> + memcpy(subs, pattern, startl);
> + memcpy(subs+startl, *newpattern, newl);
> + strcpy(subs+startl+newl, remainder);
> + *newpattern = subs;
> + }
> + return ret;
> +
> +
> +
> +
> +#else
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> +
> + if (!(rx->flags & AP_REG_MULTI) || (rx->subs == NULL)) {
> + max_iterations = 1;
> + }
> + /* FIXME: multi-matching is incorrect */
> + while (max_iterations-- > 0) {
> + if (ap_regexec(&rx->rx, pattern, rx->nmatch, rx->pmatch, rx->flags)
> + == 0) {
> + ret++;
> + if (rx->subs) {
> + rx->match = pattern;
> + *newpattern = ap_pregsub(pool, rx->subs, pattern,
> + rx->nmatch, rx->pmatch);
> + pattern = *newpattern;
> + if (pattern == NULL) {
> + max_iterations = 0;
> + }
> + }
> + }
> + else {
> + max_iterations = 0;
> + }
> + }
> +
> + if (ret == 0 || rx->flags&AP_REG_NOMEM) {
> + rx->match = NULL; /* no match, so don't pretend to remember a match */
> + }
> + else {
> +#if 0
> + /* FIXME - should we be 'safe' and take the performance hit,
> + * or just document thou-shalt-keep-pattern-in-scope?
> + */
> + if (rx->match == inpattern) {
> + rx->match = apr_pstrdup(pool, inpattern);
> + }
> +#endif
> + }
> + return ret;
> +#endif
Why do you commit dead code that is never used?
Regards
RĂ¼diger
Re: svn commit: r999533 - in /httpd/httpd/trunk: CHANGES include/ap_regex.h
server/Makefile.in server/util_pcre.c server/util_regex.c
Posted by Ruediger Pluem <rp...@apache.org>.
On 09/22/2010 08:23 AM, Ruediger Pluem wrote:
>
> On 09/21/2010 08:42 PM, niq@apache.org wrote:
>> Author: niq
>> Date: Tue Sep 21 18:42:20 2010
>> New Revision: 999533
>>
>> URL: http://svn.apache.org/viewvc?rev=999533&view=rev
>> Log:
>> Introduce ap_rxplus class: higher-level regexps supporting perl-style
>> regexp operations.
>>
>> Added:
>> httpd/httpd/trunk/server/util_regex.c
>> Modified:
>> httpd/httpd/trunk/CHANGES
>> httpd/httpd/trunk/include/ap_regex.h
>> httpd/httpd/trunk/server/Makefile.in
>> httpd/httpd/trunk/server/util_pcre.c
>>
>
>> Added: httpd/httpd/trunk/server/util_regex.c
>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util_regex.c?rev=999533&view=auto
>> ==============================================================================
>> --- httpd/httpd/trunk/server/util_regex.c (added)
>> +++ httpd/httpd/trunk/server/util_regex.c Tue Sep 21 18:42:20 2010
>
>> +
>> +AP_DECLARE(int) ap_rxplus_exec(apr_pool_t *pool, ap_rxplus_t *rx,
>> + const char *pattern, char **newpattern)
>> + //int max_iterations)
>
>
> This looks like a C++ style comment.
Nevermind. I see now that all this stuff is already addressed.
Regards
RĂ¼diger