aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2015-02-12 16:47:56 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2015-02-12 17:59:06 +0200
commitf06fcc848fa5a5b15d170bf5cc34986ed6164621 (patch)
tree399b822af71efe9240bb9352465f8ab32bbc7c68
parent133e104d9efac43c0cf243207c2c5eaf0343bced (diff)
downloadvmod-variable-f06fcc848fa5a5b15d170bf5cc34986ed6164621.tar.gz
vmod-variable-f06fcc848fa5a5b15d170bf5cc34986ed6164621.tar.bz2
Rename batchset to regset
-rw-r--r--src/variable.c27
-rw-r--r--src/variable.vcc2
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/regset.at (renamed from tests/batchset.at)6
-rw-r--r--tests/testsuite.at2
5 files changed, 18 insertions, 21 deletions
diff --git a/src/variable.c b/src/variable.c
index 9442b6b..667cfc0 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -608,46 +608,45 @@ bref_expand(const char *str, const char *input, pcre *re,
continue;
}
}
*rptr++ = *p++;
}
*rptr = 0;
return rbase;
}
VCL_VOID
-vmod_batchset(VARIABLE_CTX ctx,
- VCL_STRING vars, VCL_STRING rxs, VCL_STRING input)
+vmod_regset(VARIABLE_CTX ctx, VCL_STRING vars, VCL_STRING rxs, VCL_STRING input)
{
struct symtab *vt = get_symtab(ctx);
struct vardef *head = NULL, *tail = NULL, *def;
size_t count = 0;
size_t n;
const char *v = vars;
const char *error_ptr;
int error_offset;
int cflags = 0;
long lval;
union value value;
char *p;
int ovsize;
int *ovector;
int i;
int rc;
pcre *re;
if (!vars || !rxs || !input) {
- log_error("variable.batchset: bad arguments: vars=%s, rxs=%s, input=%s",
+ log_error("variable.regset: bad arguments: vars=%s, rxs=%s, input=%s",
S(vars), S(rxs), S(input));
return;
}
while (*v) {
char const *nameptr = v;
size_t n = strcspn(v, ":=,");
size_t namelen;
char const *replptr;
size_t repllen;
char rbuf[3];
enum variable_type type;
@@ -690,90 +689,88 @@ vmod_batchset(VARIABLE_CTX ctx,
++count;
def->type = type;
def->name = (char*)(def + 1);
memcpy(def->name, nameptr, namelen);
def->name[namelen] = 0;
def->repl = def->name + namelen + 1;
memcpy(def->repl, replptr, repllen);
def->repl[repllen] = 0;
}
re = pcre_compile(rxs, cflags, &error_ptr, &error_offset, NULL);
if (!re) {
- log_error("variable.batchset: %s: compilation failed near %s: %s",
+ log_error("variable.regset: %s: compilation failed near %s: %s",
rxs, rxs + error_offset, error_ptr);
vardef_free(head);
return;
}
rc = pcre_fullinfo(re, NULL, PCRE_INFO_CAPTURECOUNT, &n);
if (rc) {
log_error("pcre_fullinfo() failed: %d", rc);
vardef_free(head);
return;
}
if (n < count) {
- log_error("variable.batchset: %s: too few subexpressions to satisfy %s",
+ log_error("variable.regset: %s: too few subexpressions to satisfy %s",
rxs, vars);
vardef_free(head);
return;
}
ovsize = (count + 1) * 3;
ovector = calloc(ovsize, sizeof(*ovector));
rc = pcre_exec(re, 0, input, strlen(input), 0, 0, ovector, ovsize);
if (rc <= 0) {
- if (rc == 0)
- log_error("matched, but too many substrings");
- else
- /*FIXME*/;
+ if (rc != PCRE_ERROR_NOMATCH)
+ log_error("variable.regset: pcre_exec failed: %d", rc);
vardef_free(head);
return;
- }
+ }
for (def = head; def; def = def->next, i++) {
char *s = bref_expand(def->repl, input, re, ovsize, ovector);
switch (def->type) {
case variable_string:
value.s = (char*)s;
break;
case variable_int:
errno = 0;
lval = strtol(s, &p, 10);
if (*p) {
- log_error("variable.batchset: %s(%s)#%d: not an integer", rxs, input, i);
+ log_error("variable.regset: %s(%s)#%d: not an integer", rxs, input, i);
value.i = 0;
} else if (errno) {
- log_error("variable.batchset: %s(%s)#%d: %s",
+ log_error("variable.regset: %s(%s)#%d: %s",
rxs, input, i, strerror(errno));
value.i = 0;
} else if (lval < INT_MIN || lval > INT_MAX) {
- log_error("variable.batchset: %s(%s)#%d: value out of range",
+ log_error("variable.regset: %s(%s)#%d: value out of range",
rxs, input, i);
value.i = 0;
} else
value.i = lval;
free(s);
break;
case variable_real:
errno = 0;
value.r = strtod(s, &p);
if (*p) {
- log_error("variable.batchset: %s(%s)#%d: not a valid number", rxs, input, i);
+ log_error("variable.regset: %s(%s)#%d: not a valid number", rxs, input, i);
value.r = 0;
} else if (errno) {
- log_error("variable.batchset: %s(%s)#%d: %s",
+ log_error("variable.regset: %s(%s)#%d: %s",
rxs, input, i, strerror(errno));
value.r = 0;
}
free(s);
break;
case variable_duration:
value.d = str2duration(s);
free(s);
break;
default:
abort();
diff --git a/src/variable.vcc b/src/variable.vcc
index b8eb8e2..7fca518 100644
--- a/src/variable.vcc
+++ b/src/variable.vcc
@@ -24,14 +24,14 @@ $Function VOID set_int(STRING, INT)
$Function INT get_int(STRING)
$Function VOID set_string(STRING, STRING)
$Function STRING get_string(STRING)
$Function VOID set_real(STRING, REAL)
$Function REAL get_real(STRING)
$Function VOID set_duration(STRING, DURATION)
$Function DURATION get_duration(STRING)
$Function VOID clear()
$Function INT defined(STRING)
$Function STRING type_of(STRING)
$Function VOID undef(STRING)
-$Function VOID batchset(STRING, STRING, STRING)
+$Function VOID regset(STRING, STRING, STRING)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 1a81bea..99769ae 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -32,32 +32,32 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac
echo 'm4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@])'; \
echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >$(srcdir)/package.m4
#
## ------------ ##
## Test suite. ##
## ------------ ##
TESTSUITE_AT = \
testsuite.at\
- batchset.at\
complex.at\
clear.at\
defined.at\
duration.at\
gstring.at\
int.at\
real.at\
+ regset.at\
string.at\
type_of.at\
undef.at
TESTSUITE = $(srcdir)/testsuite
M4=m4
AUTOTEST = $(AUTOM4TE) --language=autotest
$(TESTSUITE): package.m4 $(TESTSUITE_AT)
$(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp
mv $@.tmp $@
diff --git a/tests/batchset.at b/tests/regset.at
index 506fe78..cc92578 100644
--- a/tests/batchset.at
+++ b/tests/regset.at
@@ -5,30 +5,30 @@
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# Vmod-variable is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with vmod-variable. If not, see <http://www.gnu.org/licenses/>.
-AT_SETUP(batchset)
-AT_KEYWORDS(batchset)
+AT_SETUP(regset)
+AT_KEYWORDS(regset)
AT_VARNISHTEST([
sub vcl_recv {
- variable.batchset("y:i,x,time:d=\3s", "^/(\d+)/(.+)/(\d+)", req.url);
+ variable.regset("y:i,x,time:d=\3s", "^/(\d+)/(.+)/(\d+)", req.url);
}
sub vcl_deliver {
set resp.http.X-X = variable.get("x");
set resp.http.X-Y = variable.get_int("y");
set resp.http.X-Time = variable.get_duration("time");
}
],[
txreq -url /10/test/60
rxresp
expect resp.http.X-X == "test"
expect resp.http.X-Y == "10"
expect resp.http.X-Time == "60.000"
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 7312433..d0cc846 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -45,16 +45,16 @@ $VARNISHTEST test.vtc | sed 's/^#.*TEST test.vtc passed.*/OK/'
])])
AT_INIT
m4_include([string.at])
m4_include([int.at])
m4_include([real.at])
m4_include([duration.at])
m4_include([complex.at])
m4_include([clear.at])
m4_include([defined.at])
m4_include([type_of.at])
m4_include([undef.at])
-m4_include([batchset.at])
+m4_include([regset.at])
m4_include([gstring.at])
# End of testsuite.at

Return to:

Send suggestions and report system problems to the System administrator.