src/server/webdav/requestparser.c

branch
webdav
changeset 227
3c23855f7b46
parent 216
ce2866ec97f6
child 239
d5031c30022c
equal deleted inserted replaced
226:49adcbd7d473 227:3c23855f7b46
36 36
37 #include "requestparser.h" 37 #include "requestparser.h"
38 38
39 #define xstreq(a, b) !strcmp((const char*)a, (const char*)b) 39 #define xstreq(a, b) !strcmp((const char*)a, (const char*)b)
40 40
41 // TODO: make function public
42 int proplist_add(
43 pool_handle_t *pool,
44 WebdavPList **begin,
45 WebdavPList **end,
46 WebdavProperty *prop)
47 {
48 WebdavPList *elm = pool_malloc(pool, sizeof(WebdavPList));
49 if(!elm) {
50 return 1;
51 }
52 elm->prev = *end;
53 elm->next = NULL;
54 elm->property = prop;
55
56 if(!*begin) {
57 *begin = elm;
58 *end = elm;
59 return 0;
60 }
61
62 (*end)->next = elm;
63 *end = elm;
64
65 return 0;
66 }
67
68 void proplist_free(pool_handle_t *pool, WebdavPList *list) { 41 void proplist_free(pool_handle_t *pool, WebdavPList *list) {
69 while(list) { 42 while(list) {
70 WebdavPList *next = list->next; 43 WebdavPList *next = list->next;
71 pool_free(pool, list); 44 pool_free(pool, list);
72 list = next; 45 list = next;
132 if(proppatch) { 105 if(proppatch) {
133 prop->value.node = pnode->children; 106 prop->value.node = pnode->children;
134 prop->vtype = WS_VALUE_XML_NODE; 107 prop->vtype = WS_VALUE_XML_NODE;
135 } 108 }
136 if(prop) { 109 if(prop) {
137 if(proplist_add(sn->pool, plist_begin, plist_end, prop)) { 110 if(webdav_plist_add(sn->pool, plist_begin, plist_end, prop)) {
138 *error = proppatch ? 111 *error = proppatch ?
139 PROPPATCH_PARSER_OOM : PROPFIND_PARSER_OOM; 112 PROPPATCH_PARSER_OOM : PROPFIND_PARSER_OOM;
140 } 113 }
141 (*propcount)++; 114 (*propcount)++;
142 } else { 115 } else {

mercurial