mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-18 14:30:41 +01:00
added new capability to property replacer.
Multiple immediately successive field delimiters are treated as a single one. Signed-off-by: Rainer Gerhards <rgerhards@adiscon.com>
This commit is contained in:
parent
ae425d47c5
commit
d65470842d
@ -1,5 +1,8 @@
|
|||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
Version 3.21.5 [DEVEL] (rgerhards), 2008-09-??
|
Version 3.21.5 [DEVEL] (rgerhards), 2008-09-??
|
||||||
|
- added new capability to property replacer: multiple immediately
|
||||||
|
successive field delimiters are treated as a single one.
|
||||||
|
Thanks to Zhuang Yuyao for the patch.
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
Version 3.21.4 [DEVEL] (rgerhards), 2008-09-04
|
Version 3.21.4 [DEVEL] (rgerhards), 2008-09-04
|
||||||
- removed compile time fixed message size limit (was 2K), limit can now
|
- removed compile time fixed message size limit (was 2K), limit can now
|
||||||
|
|||||||
@ -1809,6 +1809,11 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe,
|
|||||||
++pFld; /* skip to field terminator */
|
++pFld; /* skip to field terminator */
|
||||||
if(*pFld == pTpe->data.field.field_delim) {
|
if(*pFld == pTpe->data.field.field_delim) {
|
||||||
++pFld; /* eat it */
|
++pFld; /* eat it */
|
||||||
|
if (pTpe->data.field.field_expand != 0) {
|
||||||
|
while (*pFld == pTpe->data.field.field_delim) {
|
||||||
|
++pFld;
|
||||||
|
}
|
||||||
|
}
|
||||||
++iCurrFld;
|
++iCurrFld;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -603,6 +603,7 @@ static int do_Parameter(unsigned char **pp, struct template *pTpl)
|
|||||||
/* now we fall through the "regular" FromPos code */
|
/* now we fall through the "regular" FromPos code */
|
||||||
#endif /* #ifdef FEATURE_REGEXP */
|
#endif /* #ifdef FEATURE_REGEXP */
|
||||||
if(*p == 'F') {
|
if(*p == 'F') {
|
||||||
|
pTpe->data.field.field_expand = 0;
|
||||||
/* we have a field counter, so indicate it in the template */
|
/* we have a field counter, so indicate it in the template */
|
||||||
++p; /* eat 'F' */
|
++p; /* eat 'F' */
|
||||||
if (*p == ':') {
|
if (*p == ':') {
|
||||||
@ -630,6 +631,10 @@ static int do_Parameter(unsigned char **pp, struct template *pTpl)
|
|||||||
pTpe->data.field.field_delim = 9;
|
pTpe->data.field.field_delim = 9;
|
||||||
} else {
|
} else {
|
||||||
pTpe->data.field.field_delim = iNum;
|
pTpe->data.field.field_delim = iNum;
|
||||||
|
if (*p == '+') {
|
||||||
|
pTpe->data.field.field_expand = 1;
|
||||||
|
p ++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -84,6 +84,8 @@ struct templateEntry {
|
|||||||
#endif
|
#endif
|
||||||
unsigned has_fields; /* support for field-counting: field to extract */
|
unsigned has_fields; /* support for field-counting: field to extract */
|
||||||
unsigned char field_delim; /* support for field-counting: field delemiter char */
|
unsigned char field_delim; /* support for field-counting: field delemiter char */
|
||||||
|
int field_expand; /* use multiple instances of the field delimiter as a single one? */
|
||||||
|
|
||||||
enum tplFormatTypes eDateFormat;
|
enum tplFormatTypes eDateFormat;
|
||||||
enum tplFormatCaseConvTypes eCaseConv;
|
enum tplFormatCaseConvTypes eCaseConv;
|
||||||
struct { /* bit fields! */
|
struct { /* bit fields! */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user