summaryrefslogtreecommitdiffstats
path: root/grammar/rainerscript.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2011-07-22 18:03:43 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2011-07-22 18:03:43 +0200
commit9757aeb56445eee3aca2b43e6b3efa1f1cb59ba3 (patch)
treeb44dad3ab3f3477c4b6c45b615b60f5e51f58e35 /grammar/rainerscript.c
parent6b8b7ba0091a4e59b9a45057756fc7f754576242 (diff)
downloadrsyslog-9757aeb56445eee3aca2b43e6b3efa1f1cb59ba3.tar.gz
rsyslog-9757aeb56445eee3aca2b43e6b3efa1f1cb59ba3.tar.xz
rsyslog-9757aeb56445eee3aca2b43e6b3efa1f1cb59ba3.zip
milestone: queue object now has a param handler for new conf interface
... and action queue defs use this new interface (but not yet the main queues)
Diffstat (limited to 'grammar/rainerscript.c')
-rw-r--r--grammar/rainerscript.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index fe99e4aa..1b44974c 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -35,9 +35,11 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <libestr.h>
+#include "rsyslog.h"
#include "rainerscript.h"
#include "parserif.h"
#include "grammar.h"
+#include "queue.h"
#include "srUtils.h"
void
@@ -271,6 +273,30 @@ doGetBinary(struct nvlst *valnode, struct cnfparamdescr *param,
}
}
+static inline void
+doGetQueueType(struct nvlst *valnode, struct cnfparamdescr *param,
+ struct cnfparamvals *val)
+{
+ char *cstr;
+ if(!es_strcasebufcmp(valnode->val.d.estr, (uchar*)"fixedarray", 10)) {
+ val->val.d.n = QUEUETYPE_FIXED_ARRAY;
+ } else if(!es_strcasebufcmp(valnode->val.d.estr, (uchar*)"linkedlist", 10)) {
+ val->val.d.n = QUEUETYPE_LINKEDLIST;
+ } else if(!es_strcasebufcmp(valnode->val.d.estr, (uchar*)"disk", 4)) {
+ val->val.d.n = QUEUETYPE_DISK;
+ } else if(!es_strcasebufcmp(valnode->val.d.estr, (uchar*)"direct", 6)) {
+ val->val.d.n = QUEUETYPE_DIRECT;
+ } else {
+ cstr = es_str2cstr(valnode->val.d.estr, NULL);
+ parser_errmsg("param '%s': unknown queue type: '%s'",
+ param->name, cstr);
+ free(cstr);
+ }
+dbgprintf("XXXXX: queue type: %d\n", (int)val->val.d.n);
+ val->val.datatype = 'N';
+}
+
+
/* A file create-mode must be a four-digit octal number
* starting with '0'.
*/
@@ -416,6 +442,9 @@ nvlstGetParam(struct nvlst *valnode, struct cnfparamdescr *param,
valnode->bUsed = 1;
val->bUsed = 1;
switch(param->type) {
+ case eCmdHdlrQueueType:
+ doGetQueueType(valnode, param, val);
+ break;
case eCmdHdlrUID:
doGetUID(valnode, param, val);
break;