From ed0d24ebedccb812a80619f55e238c8a65dbf2ed Mon Sep 17 00:00:00 2001 From: Etienne Carriere Date: Wed, 13 Dec 2017 13:41:34 +0100 Subject: [PATCH] MINOR: sample: add len converter Add len converter that returns the length of a string --- doc/configuration.txt | 5 +++++ src/sample.c | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/doc/configuration.txt b/doc/configuration.txt index 208c11e51..a9587129b 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 f9c1ff4e4..213dd317b 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 },