From: Etienne Carriere Date: Wed, 13 Dec 2017 12:41:34 +0000 (+0100) Subject: MINOR: sample: add len converter X-Git-Tag: v1.9-dev1~580 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed0d24e;p=thirdparty%2Fhaproxy.git MINOR: sample: add len converter Add len converter that returns the length of a string --- diff --git a/doc/configuration.txt b/doc/configuration.txt index 208c11e51f..a9587129bc 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -12941,6 +12941,11 @@ language([,]) use_backend english if en default_backend choose_your_language +len + Get the length of the string. This can only be placed after a string + sample fetch function or after a transformation keyword returning a string + type. The result is of type integer. + lower Convert a string sample to lower case. This can only be placed after a string sample fetch function or after a transformation keyword returning a string diff --git a/src/sample.c b/src/sample.c index f9c1ff4e47..213dd317bc 100644 --- a/src/sample.c +++ b/src/sample.c @@ -1568,6 +1568,15 @@ static int sample_conv_djb2(const struct arg *arg_p, struct sample *smp, void *p return 1; } +static int sample_conv_strlen(const struct arg *arg_p, struct sample *smp, void *private) +{ + int i = smp->data.u.str.len; + smp->data.u.sint = i; + smp->data.type = SMP_T_SINT; + return 1; +} + + static int sample_conv_str2lower(const struct arg *arg_p, struct sample *smp, void *private) { int i; @@ -2787,6 +2796,7 @@ static struct sample_conv_kw_list sample_conv_kws = {ILH, { { "base64", sample_conv_bin2base64,0, NULL, SMP_T_BIN, SMP_T_STR }, { "upper", sample_conv_str2upper, 0, NULL, SMP_T_STR, SMP_T_STR }, { "lower", sample_conv_str2lower, 0, NULL, SMP_T_STR, SMP_T_STR }, + { "len", sample_conv_strlen, 0, NULL, SMP_T_STR, SMP_T_SINT }, { "hex", sample_conv_bin2hex, 0, NULL, SMP_T_BIN, SMP_T_STR }, { "hex2i", sample_conv_hex2int, 0, NULL, SMP_T_STR, SMP_T_SINT }, { "ipmask", sample_conv_ipmask, ARG1(1,MSK4), NULL, SMP_T_IPV4, SMP_T_IPV4 },