Add support for optional fields

This commit is contained in:
Miloslav Trmač 2012-08-29 16:07:23 +02:00 committed by Rainer Gerhards
parent d18a93e943
commit a73058031f
3 changed files with 10 additions and 0 deletions

View File

@ -714,6 +714,10 @@ Useful for secure pathname generation (with dynafiles).
Useful for secure pathname generation (with dynafiles).
</td>
</tr>
<tr>
<td><b>optional-field</b></td>
<td>In templates that are used for building field lists (in particular, ommongodb), completely remove this field if the corresponding property is not present. Currently implemented only for the <b>$!&lt;name&gt;</b> properties.</td>
</tr>
</tbody>
</table>
<p>To use multiple options, simply place them one after each other with a comma delmimiting

View File

@ -663,6 +663,8 @@ static void doOptions(unsigned char **pp, struct templateEntry *pTpe)
} else {
pTpe->data.field.options.bJSONf = 1;
}
} else if(!strcmp((char*)Buf, "optional-field")) {
pTpe->data.field.options.bOptionalField = 1;
} else {
dbgprintf("Invalid field option '%s' specified - ignored.\n", Buf);
}
@ -1988,6 +1990,9 @@ void tplPrintList(rsconf_t *conf)
if(pTpe->data.field.options.bJSONf) {
dbgprintf("[format as JSON field] ");
}
if(pTpe->data.field.options.bOptionalField) {
dbgprintf("[optional field - skip in field template if not present] ");
}
if(pTpe->data.field.options.bDropLastLF) {
dbgprintf("[drop last LF in msg] ");
}

View File

@ -115,6 +115,7 @@ struct templateEntry {
unsigned bCSV: 1; /* format field in CSV (RFC 4180) format */
unsigned bJSON: 1; /* format field JSON escaped */
unsigned bJSONf: 1; /* format field JSON *field* (n/v pair) */
unsigned bOptionalField: 1; /* optional field - skip in field template if not present */
} options; /* options as bit fields */
} field;
} data;