summaryrefslogtreecommitdiffstats
path: root/grammar/utils.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2011-07-02 12:39:53 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2011-07-02 12:39:53 +0200
commit1ee14507b37bd7cb252341e7f6bdb6398407f1fd (patch)
treeb47951c56b97bb5e47ef1fa8c4ddeb126228c6c7 /grammar/utils.c
parentaff06b40a68eeb88fb37a0ef67ab7be1b4aaf701 (diff)
downloadrsyslog-1ee14507b37bd7cb252341e7f6bdb6398407f1fd.tar.gz
rsyslog-1ee14507b37bd7cb252341e7f6bdb6398407f1fd.tar.xz
rsyslog-1ee14507b37bd7cb252341e7f6bdb6398407f1fd.zip
milestone: grammar for objects and cfsysline created
Diffstat (limited to 'grammar/utils.c')
-rw-r--r--grammar/utils.c77
1 files changed, 76 insertions, 1 deletions
diff --git a/grammar/utils.c b/grammar/utils.c
index f9c50bc9..ccc9fbc7 100644
--- a/grammar/utils.c
+++ b/grammar/utils.c
@@ -1,7 +1,9 @@
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <ctype.h>
-#include "libestr.h"
+#include <libestr.h>
+#include "utils.h"
void
readConfFile(FILE *fp, es_str_t **str)
@@ -43,3 +45,76 @@ readConfFile(FILE *fp, es_str_t **str)
es_addChar(str, '\0');
es_addChar(str, '\0');
}
+
+struct nvlst*
+nvlstNew(es_str_t *name, es_str_t *value)
+{
+ struct nvlst *lst;
+
+ if((lst = malloc(sizeof(struct nvlst))) != NULL) {
+ lst->next = NULL;
+ lst->name = name;
+ lst->value = value;
+ }
+
+ return lst;
+}
+
+void
+nvlstDestruct(struct nvlst *lst)
+{
+ struct nvlst *toDel;
+
+ while(lst != NULL) {
+ toDel = lst;
+ lst = lst->next;
+ es_deleteStr(toDel->name);
+ es_deleteStr(toDel->value);
+ free(toDel);
+ }
+}
+
+
+void
+nvlstPrint(struct nvlst *lst)
+{
+ char *name, *value;
+ printf("nvlst %p:\n", lst);
+ while(lst != NULL) {
+ name = es_str2cstr(lst->name, NULL);
+ value = es_str2cstr(lst->value, NULL);
+ printf("\tname: '%s', value '%s'\n", name, value);
+ free(name);
+ free(value);
+ lst = lst->next;
+ }
+}
+
+struct cnfobj*
+cnfobjNew(enum cnfobjType objType, struct nvlst *lst)
+{
+ struct cnfobj *o;
+
+ if((o = malloc(sizeof(struct nvlst))) != NULL) {
+ o->objType = objType;
+ o->nvlst = lst;
+ }
+
+ return o;
+}
+
+void
+cnfobjDestruct(struct cnfobj *o)
+{
+ if(o != NULL) {
+ nvlstDestruct(o->nvlst);
+ free(o);
+ }
+}
+
+void
+cnfobjPrint(struct cnfobj *o)
+{
+ printf("obj: '%s'\n", cnfobjType2str(o->objType));
+ nvlstPrint(o->nvlst);
+}