mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-18 12:10:43 +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-??
|
||||
- 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
|
||||
- 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 */
|
||||
if(*pFld == pTpe->data.field.field_delim) {
|
||||
++pFld; /* eat it */
|
||||
if (pTpe->data.field.field_expand != 0) {
|
||||
while (*pFld == pTpe->data.field.field_delim) {
|
||||
++pFld;
|
||||
}
|
||||
}
|
||||
++iCurrFld;
|
||||
}
|
||||
}
|
||||
|
||||
@ -603,6 +603,7 @@ static int do_Parameter(unsigned char **pp, struct template *pTpl)
|
||||
/* now we fall through the "regular" FromPos code */
|
||||
#endif /* #ifdef FEATURE_REGEXP */
|
||||
if(*p == 'F') {
|
||||
pTpe->data.field.field_expand = 0;
|
||||
/* we have a field counter, so indicate it in the template */
|
||||
++p; /* eat 'F' */
|
||||
if (*p == ':') {
|
||||
@ -630,6 +631,10 @@ static int do_Parameter(unsigned char **pp, struct template *pTpl)
|
||||
pTpe->data.field.field_delim = 9;
|
||||
} else {
|
||||
pTpe->data.field.field_delim = iNum;
|
||||
if (*p == '+') {
|
||||
pTpe->data.field.field_expand = 1;
|
||||
p ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -84,6 +84,8 @@ struct templateEntry {
|
||||
#endif
|
||||
unsigned has_fields; /* support for field-counting: field to extract */
|
||||
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 tplFormatCaseConvTypes eCaseConv;
|
||||
struct { /* bit fields! */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user