--- a/src/server/safs/nametrans.c Wed Nov 02 19:19:01 2022 +0100 +++ b/src/server/safs/nametrans.c Sun Nov 06 15:53:32 2022 +0100 @@ -48,22 +48,15 @@ rq->vfs = vfs; } - WebdavBackend *backend_first = NULL; - WebdavBackend *backend_last = NULL; - UCX_FOREACH(elm, repo->davBackends) { - WebdavBackendInitData *davInit = elm->data; + void *backend_first = NULL; + void *backend_last = NULL; + CxIterator i = cxListIterator(repo->davBackends, 0); + cx_foreach(WebdavBackendInitData *, davInit, i) { WebdavBackend *backend = davInit->davType->create(sn, rq, pb, davInit->davInitData); if(!backend) { return REQ_ABORTED; } - - if(backend_last) { - backend_last->next = backend; - backend_last = backend; - } else { - backend_first = backend; - backend_last = backend; - } + cx_linked_list_add(&backend_first, &backend_last, -1, offsetof(WebdavBackend, next), backend); } rq->davCollection = backend_first; @@ -75,7 +68,7 @@ if(!dav) return 0; ServerConfiguration *config = session_get_config(sn); - WebdavRepository *repo = ucx_map_cstr_get(config->dav, dav); + WebdavRepository *repo = cxMapGet(config->dav, cx_hash_key_str(dav)); if(!repo) { log_ereport(LOG_MISCONFIG, "nametrans: unknown dav repository '%s'", dav); @@ -181,8 +174,8 @@ return REQ_ABORTED; } - sstr_t root_str = sstr(root); - sstr_t uri_str = sstr(pblock_findkeyval(pb_key_uri, rq->reqpb)); + cxstring root_str = cx_str(root); + cxstring uri_str = cx_str(pblock_findkeyval(pb_key_uri, rq->reqpb)); request_set_path(root_str, uri_str, rq->vars); @@ -255,7 +248,7 @@ return REQ_ABORTED; } - request_set_path(sstr(dir), sstr(uri), rq->vars); + request_set_path(cx_str(dir), cx_str(uri), rq->vars); if(name) { // add object to rq->vars @@ -306,13 +299,13 @@ } char *uri = pblock_findkeyval(pb_key_uri, rq->reqpb); - sstr_t u = sstr(uri); - sstr_t f = sstr(from); - if(sstrprefix(u, f)) { - sstr_t suf = sstrsubs(u, f.length); - sstr_t ppath = sstrcat(2, sstr(path), suf); + cxstring u = cx_str(uri); + cxstring f = cx_str(from); + if(cx_strprefix(u, f)) { + cxstring suf = cx_strsubs(u, f.length); + cxmutstr ppath = cx_strcat(2, cx_str(path), suf); - request_set_path(sstr(root), ppath, rq->vars); + request_set_path(cx_str(root), (cxstring){ppath.ptr, ppath.length}, rq->vars); free(ppath.ptr); if(name) {