MINOR: sample: add ltrim converter

This converter strips specified characters from the beginning of a string.
diff --git a/doc/configuration.txt b/doc/configuration.txt
index df4465c..c8e9cbc 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -14249,6 +14249,10 @@
       # e.g.  20140710162350 127.0.0.1:57325
       log-format %[date,ltime(%Y%m%d%H%M%S)]\ %ci:%cp
 
+ltrim(<chars>)
+  Skips any characters from <chars> from the beginning of the string
+  representation of the input sample.
+
 map(<map_file>[,<default_value>])
 map_<match_type>(<map_file>[,<default_value>])
 map_<match_type>_<output_type>(<map_file>[,<default_value>])
diff --git a/src/sample.c b/src/sample.c
index 43d932d..fbbdab1 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -2994,6 +2994,27 @@
 	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 @@
 
 	{ "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 },
 }};