libidav/utils.c

changeset 74
da079dc0724c
parent 71
c9aff0a0093d
child 75
56962faf2b42
equal deleted inserted replaced
73:41e88442ad4e 74:da079dc0724c
202 ucx_buffer_write(sn->base_url, 1, strlen(sn->base_url), url); 202 ucx_buffer_write(sn->base_url, 1, strlen(sn->base_url), url);
203 // remove trailing slash 203 // remove trailing slash
204 ucx_buffer_seek(url, -1, SEEK_CUR); 204 ucx_buffer_seek(url, -1, SEEK_CUR);
205 205
206 sstr_t p = sstr(path); 206 sstr_t p = sstr(path);
207 size_t ntk = 0; 207 ssize_t ntk = 0;
208 sstr_t *tks = sstrsplit(p, S("/"), &ntk); 208 sstr_t *tks = sstrsplit(p, S("/"), &ntk);
209 209
210 for(int i=0;i<ntk;i++) { 210 for(int i=0;i<ntk;i++) {
211 sstr_t node = tks[i]; 211 sstr_t node = tks[i];
212 if(node.length > 0) { 212 if(node.length > 0) {
213 char *esc = curl_easy_escape(sn->handle, node.ptr, node.length); 213 char *esc = curl_easy_escape(sn->handle, node.ptr, node.length);
214 ucx_buffer_putc(url, '/'); 214 ucx_buffer_putc(url, '/');
215 ucx_buffer_write(esc, 1, strlen(esc), url); 215 ucx_buffer_write(esc, 1, strlen(esc), url);
216 curl_free(esc); 216 curl_free(esc);
217 free(node.ptr); 217 }
218 } 218 free(node.ptr);
219 } 219 }
220 free(tks); 220 free(tks);
221 if(path[p.length-1] == '/') { 221 if(path[p.length-1] == '/') {
222 ucx_buffer_putc(url, '/'); 222 ucx_buffer_putc(url, '/');
223 } 223 }

mercurial