538 |
538 |
539 |
539 |
540 |
540 |
541 /* WebDAV Default Backend */ |
541 /* WebDAV Default Backend */ |
542 static PersistenceManager dav_file_backend = { |
542 static PersistenceManager dav_file_backend = { |
543 NULL, |
543 dav_rq_propfind_begin, |
544 NULL, |
544 dav_rq_propfind_end, |
545 dav_rq_propfind, |
545 dav_rq_propfind, |
546 dav_rq_proppatch, |
546 dav_rq_proppatch, |
547 0 |
547 0 |
548 }; |
548 }; |
549 |
549 |
550 PersistenceManager* create_property_backend() { |
550 PersistenceManager* create_property_backend() { |
551 return &dav_file_backend; |
551 return &dav_file_backend; |
|
552 } |
|
553 |
|
554 void dav_rq_propfind_begin(PersistenceManager *mgr, PropfindRequest *rq) { |
|
555 |
|
556 } |
|
557 |
|
558 void dav_rq_propfind_end(PersistenceManager *mgr, PropfindRequest *rq) { |
|
559 |
552 } |
560 } |
553 |
561 |
554 void dav_rq_propfind(PersistenceManager *b, PropfindRequest *rq ,char *path) { |
562 void dav_rq_propfind(PersistenceManager *b, PropfindRequest *rq ,char *path) { |
555 struct stat st; |
563 struct stat st; |
556 if(stat(path, &st) != 0) { |
564 if(stat(path, &st) != 0) { |
631 /*---------------------------------- utils ----------------------------------*/ |
639 /*---------------------------------- utils ----------------------------------*/ |
632 |
640 |
633 /* XmlNsMap */ |
641 /* XmlNsMap */ |
634 |
642 |
635 XmlNsMap* xmlnsmap_create(pool_handle_t *pool) { |
643 XmlNsMap* xmlnsmap_create(pool_handle_t *pool) { |
636 XmlNsMap *map = malloc(sizeof(XmlNsMap)); |
644 XmlNsMap *map = pool_malloc(pool, sizeof(XmlNsMap)); |
637 UcxMap *uxm = ucx_map_new(16); |
645 UcxMap *uxm = ucx_map_new(16); // TODO: use pool for map |
638 if(map == NULL || uxm == NULL) { |
646 if(map == NULL || uxm == NULL) { |
639 return NULL; |
647 return NULL; |
640 } |
648 } |
641 map->map = uxm; |
649 map->map = uxm; |
642 map->pool = pool; |
650 map->pool = pool; |
675 xmlns->nslen = newns.length; |
683 xmlns->nslen = newns.length; |
676 |
684 |
677 xmlns->prefix = pool_calloc(map->pool, 1, 8); |
685 xmlns->prefix = pool_calloc(map->pool, 1, 8); |
678 xmlns->prelen = snprintf(xmlns->prefix, 7, "x%d", map->num); |
686 xmlns->prelen = snprintf(xmlns->prefix, 7, "x%d", map->num); |
679 |
687 |
680 ucx_map_cstr_put(map->map, ns, xmlns); /* TODO: check return value */ |
688 ucx_map_cstr_put(map->map, ns, xmlns); // TODO: check return value |
681 map->num++; |
689 map->num++; |
682 return xmlns; |
690 return xmlns; |
683 } |
691 } |
684 |
692 |
685 XmlNs* xmlnsmap_get(XmlNsMap *map, char *ns) { |
693 XmlNs* xmlnsmap_get(XmlNsMap *map, char *ns) { |