diff -r e77ccf1c4bb3 -r 4d58cbcc9efa libidav/methods.c --- a/libidav/methods.c Sun Dec 07 20:16:59 2025 +0100 +++ b/libidav/methods.c Fri Dec 19 17:53:18 2025 +0100 @@ -74,7 +74,7 @@ curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, cxBufferWrite); curl_easy_setopt(handle, CURLOPT_WRITEDATA, response); CxMap *respheaders = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 32); - cxDefineDestructor(respheaders, free); + cxSetDestructor(respheaders, free); util_capture_header(handle, respheaders); for(int i=0;i\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); return buf; } CxBuffer* create_cryptoprop_propfind_request(void) { - CxBuffer *buf = cxBufferCreate(NULL, 256, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); + CxBuffer *buf = cxBufferCreate(cxDefaultAllocator, NULL, 256, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); cxstring s; - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); return buf; } CxBuffer* create_propfind_request(DavSession *sn, CxList *properties, char *rootelm, DavBool nocrypt) { - CxBuffer *buf = cxBufferCreate(NULL, 512, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); + CxBuffer *buf = cxBufferCreate(cxDefaultAllocator, NULL, 512, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); cxstring s; int add_crypto_name = 1; @@ -193,7 +193,7 @@ cxMapPut(namespaces, cx_hash_key_str("idav"), &idav_ns); } - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); // write root element and namespaces @@ -201,31 +201,31 @@ CxMapIterator mapi = cxMapIteratorValues(namespaces); cx_foreach(DavNamespace*, ns, mapi) { - s = CX_STR(" xmlns:"); + s = cx_str(" xmlns:"); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(ns->prefix); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("=\""); + s = cx_str("=\""); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(ns->name); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\""); + s = cx_str("\""); cxBufferWrite(s.ptr, 1, s.length, buf); } - s = CX_STR(">\n"); + s = cx_str(">\n"); cxBufferWrite(s.ptr, 1, s.length, buf); // default properties - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n\n"); + s = cx_str("\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n\n"); + s = cx_str("\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); // crypto properties @@ -233,19 +233,19 @@ if(add_crypto_name) { cxBufferPut(buf, '<'); cxBufferPutString(buf, crypto_ns); - s = CX_STR(":crypto-name />\n"); + s = cx_str(":crypto-name />\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } if(add_crypto_key) { cxBufferPut(buf, '<'); cxBufferPutString(buf, crypto_ns); - s = CX_STR(":crypto-key />\n"); + s = cx_str(":crypto-key />\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } if(add_crypto_hash) { cxBufferPut(buf, '<'); cxBufferPutString(buf, crypto_ns); - s = CX_STR(":crypto-hash />\n"); + s = cx_str(":crypto-hash />\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } } @@ -254,15 +254,15 @@ if(properties) { CxIterator i = cxListIterator(properties); cx_foreach(DavProperty*, prop, i) { - s = CX_STR("<"); + s = cx_str("<"); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(prop->ns->prefix); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR(":"); + s = cx_str(":"); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(prop->name); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR(" />\n"); + s = cx_str(" />\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } } @@ -275,35 +275,35 @@ } CxBuffer* create_basic_propfind_request(void) { - CxBuffer *buf = cxBufferCreate(NULL, 512, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); + CxBuffer *buf = cxBufferCreate(cxDefaultAllocator, NULL, 512, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); cxstring s; - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\" >\n"); cxBufferWrite(s.ptr, 1, s.length, buf); // properties - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); // end - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); return buf; @@ -356,7 +356,7 @@ char *crypto_name = NULL; // name set by crypto-name property char *crypto_key = NULL; - result->properties = cxLinkedListCreateSimple(CX_STORE_POINTERS); // xmlNode list + result->properties = cxLinkedListCreate(NULL, CX_STORE_POINTERS); // xmlNode list xmlNode *node = parser->current->children; while(node) { @@ -389,7 +389,7 @@ return -1; } status_str = cx_strsubsl(status_str, 9, 3); - if(!cx_strcmp(status_str, CX_STR("200"))) { + if(!cx_strcmp(status_str, cx_str("200"))) { ok = 1; } } @@ -590,7 +590,7 @@ //DavResource *res = resource; DavResource *res = NULL; const char *href = NULL; - CxList *properties = cxLinkedListCreateSimple(CX_STORE_POINTERS); // xmlNode list + CxList *properties = cxLinkedListCreate(NULL, CX_STORE_POINTERS); // xmlNode list char *crypto_name = NULL; // name set by crypto-name property char *crypto_key = NULL; @@ -639,7 +639,7 @@ return 1; } status_str = cx_strsubsl(status_str, 9, 3); - if(!cx_strcmp(status_str, CX_STR("200"))) { + if(!cx_strcmp(status_str, cx_str("200"))) { ok = 1; } } @@ -822,11 +822,11 @@ } CxBuffer* create_proppatch_request(DavResourceData *data) { - CxBuffer *buf = cxBufferCreate(NULL, 512, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); + CxBuffer *buf = cxBufferCreate(cxDefaultAllocator, NULL, 512, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); cxstring s; CxMap *namespaces = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 8); - cxDefineDestructor(namespaces, free); + cxSetDestructor(namespaces, free); { char prefix[8]; @@ -851,30 +851,30 @@ } } - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); // write root element and namespaces - s = CX_STR("value); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("=\""); + s = cx_str("=\""); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_strn(entry->key->data, entry->key->len); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\""); + s = cx_str("\""); cxBufferWrite(s.ptr, 1, s.length, buf); } - s = CX_STR(">\n"); + s = cx_str(">\n"); cxBufferWrite(s.ptr, 1, s.length, buf); if(data->set) { - s = CX_STR("\n\n"); + s = cx_str("\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); CxIterator i = cxListIterator(data->set); cx_foreach(DavProperty*, property, i) { @@ -884,15 +884,15 @@ } // begin tag - s = CX_STR("<"); + s = cx_str("<"); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(prefix); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR(":"); + s = cx_str(":"); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(property->name); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR(">"); + s = cx_str(">"); cxBufferWrite(s.ptr, 1, s.length, buf); // content @@ -904,43 +904,43 @@ } // end tag - s = CX_STR("name); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR(">\n"); + s = cx_str(">\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } - s = CX_STR("\n\n"); + s = cx_str("\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } if(data->remove) { - s = CX_STR("\n\n"); + s = cx_str("\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); CxIterator i = cxListIterator(data->remove); cx_foreach(DavProperty*, property, i) { char *prefix = cxMapGet(namespaces, cx_hash_key_str(property->ns->name)); - s = CX_STR("<"); + s = cx_str("<"); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(prefix); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR(":"); + s = cx_str(":"); cxBufferWrite(s.ptr, 1, s.length, buf); s = cx_str(property->name); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR(" />\n"); + s = cx_str(" />\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } - s = CX_STR("\n\n"); + s = cx_str("\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); // cleanup namespace map @@ -950,43 +950,43 @@ } CxBuffer* create_crypto_proppatch_request(DavSession *sn, DavKey *key, const char *name, const char *hash) { - CxBuffer *buf = cxBufferCreate(NULL, 512, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); + CxBuffer *buf = cxBufferCreate(cxDefaultAllocator, NULL, 512, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); cxstring s; - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n\n"); + s = cx_str("\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); if(DAV_ENCRYPT_NAME(sn)) { - s = CX_STR(""); + s = cx_str(""); cxBufferWrite(s.ptr, 1, s.length, buf); char *crname = aes_encrypt(name, strlen(name), key); cxBufferPutString(buf, crname); free(crname); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } - s = CX_STR(""); + s = cx_str(""); cxBufferWrite(s.ptr, 1, s.length, buf); cxBufferPutString(buf, key->name); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); if(hash) { - s = CX_STR(""); + s = cx_str(""); cxBufferWrite(s.ptr, 1, s.length, buf); cxBufferPutString(buf, hash); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); } - s = CX_STR("\n\n\n"); + s = cx_str("\n\n\n"); cxBufferWrite(s.ptr, 1, s.length, buf); return buf; @@ -1025,7 +1025,7 @@ CxBuffer *buf = NULL; if(!read_func) { - buf = cxBufferCreate(data, length, cxDefaultAllocator, 0); + buf = cxBufferCreate(cxDefaultAllocator, data, length, 0); buf->size = length; data = buf; read_func = (dav_read_func)cxBufferRead; @@ -1148,7 +1148,7 @@ free(ltheader); } //cxstring deststr = ucx_sprintf("Destination: %s", dest); - cxmutstr deststr = cx_strcat(2, CX_STR("Destination: "), cx_str(dest)); + cxmutstr deststr = cx_strcat(2, cx_str("Destination: "), cx_str(dest)); headers = curl_slist_append(headers, deststr.ptr); if(override) { headers = curl_slist_append(headers, "Overwrite: T"); @@ -1167,19 +1167,19 @@ CxBuffer* create_lock_request(void) { - CxBuffer *buf = cxBufferCreate(NULL, 512, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); + CxBuffer *buf = cxBufferCreate(cxDefaultAllocator, NULL, 512, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); cxstring s; - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n" + s = cx_str("\n" "\n" "\n" "http://davutils.org/libidav/\n"); cxBufferWrite(s.ptr, 1, s.length, buf); - s = CX_STR("\n"); + s = cx_str("\n"); cxBufferWrite(s.ptr, 1, s.length, buf); return buf;