Received: (from majordom@localhost) by hyperreal.org (8.8.5/8.8.5) id KAA07260; Mon, 28 Jul 1997 10:37:48 -0700 (PDT) Received: from colin.muc.de (root@colin.muc.de [193.174.4.1]) by hyperreal.org (8.8.5/8.8.5) with SMTP id KAA07239 for ; Mon, 28 Jul 1997 10:37:35 -0700 (PDT) Received: from en by colin.muc.de with UUCP id <86018-1>; Mon, 28 Jul 1997 19:37:08 +0200 Received: by en1.engelschall.com (Sendmail 8.8.2) for new-httpd@hyperreal.org id TAA04911; Mon, 28 Jul 1997 19:34:48 +0200 (MET DST) Message-Id: <199707281734.TAA04911@en1.engelschall.com> Subject: [PATCH] trivial enhancement to RewriteCond patterns To: new-httpd@hyperreal.org (Apache Developer ML) Date: Mon, 28 Jul 1997 19:34:43 +0200 From: rse@engelschall.com (Ralf S. Engelschall) Organization: Engelschall, Germany. X-Home: http://www.engelschall.com/ X-Mailer: ELM [version 2.4ME+ PL32 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org For a lot of mod_rewrite rulesets a rewrite condition like RewriteRule %{ENV:BLABLA} ^$ and RewriteRule %{ENV:BLABLA} !^$ is used to check if "BLABLA" is set. This is both complicated to read and has bad performance. The above patch, which I want to commit to HEAD, makes just a trivial enhancement to mod_rewrite, so now we can both write RewriteRule %{ENV:BLABLA} ="" and RewriteRule %{ENV:BLABLA} !="" and which also is evaluated more performant. Ralf S. Engelschall rse@engelschall.com www.engelschall.com Index: mod_rewrite.c =================================================================== RCS file: /export/home/cvs/apache/src/mod_rewrite.c,v retrieving revision 1.41 diff -c -r1.41 mod_rewrite.c *** mod_rewrite.c 1997/07/27 02:10:39 1.41 --- mod_rewrite.c 1997/07/28 17:29:20 *************** *** 1783,1789 **** rc = (compare_lexicography(input, p->pattern+1) == -1 ? 1 : 0); } else if (strlen(p->pattern) > 1 && *(p->pattern) == '=') { ! rc = (strcmp(input, p->pattern+1) == 0 ? 1 : 0); } else { /* it is really a regexp pattern, so apply it */ --- 1783,1792 ---- rc = (compare_lexicography(input, p->pattern+1) == -1 ? 1 : 0); } else if (strlen(p->pattern) > 1 && *(p->pattern) == '=') { ! if (strcmp(p->pattern+1, "\"\"") == 0) ! rc = (*input == '\0'); ! else ! rc = (strcmp(input, p->pattern+1) == 0 ? 1 : 0); } else { /* it is really a regexp pattern, so apply it */