From 51fc9d1bf1b7de1edc467be24b5d46636db8faa3 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 1 Apr 2020 17:24:41 +0200 Subject: [PATCH] MINOR: sample: add ltrim converter This converter strips specified characters from the beginning of a string. --- doc/configuration.txt | 4 ++++ src/sample.c | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/doc/configuration.txt b/doc/configuration.txt index df4465caf..c8e9cbc46 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -14249,6 +14249,10 @@ ltime([,]) # e.g. 20140710162350 127.0.0.1:57325 log-format %[date,ltime(%Y%m%d%H%M%S)]\ %ci:%cp +ltrim() + Skips any characters from from the beginning of the string + representation of the input sample. + map([,]) map_([,]) map__([,]) diff --git a/src/sample.c b/src/sample.c index 43d932d84..fbbdab1af 100644 --- a/src/sample.c +++ b/src/sample.c @@ -2994,6 +2994,27 @@ static int sample_conv_cut_crlf(const struct arg *arg_p, struct sample *smp, voi return 1; } +/**/ +static int sample_conv_ltrim(const struct arg *arg_p, struct sample *smp, void *private) +{ + char *delimiters, *p; + size_t dlen, l; + + delimiters = arg_p[0].data.str.area; + dlen = arg_p[0].data.str.data; + + l = smp->data.u.str.data; + p = smp->data.u.str.area; + while (l && memchr(delimiters, *p, dlen) != NULL) { + p++; + l--; + } + + smp->data.u.str.area = p; + smp->data.u.str.data = l; + return 1; +} + /************************************************************************/ /* All supported sample fetch functions must be declared here */ /************************************************************************/ @@ -3464,6 +3485,7 @@ static struct sample_conv_kw_list sample_conv_kws = {ILH, { { "htonl", sample_conv_htonl, 0, NULL, SMP_T_SINT, SMP_T_BIN }, { "cut_crlf", sample_conv_cut_crlf, 0, NULL, SMP_T_STR, SMP_T_STR }, + { "ltrim", sample_conv_ltrim, ARG1(1,STR), NULL, SMP_T_STR, SMP_T_STR }, { NULL, NULL, 0, 0, 0 }, }};