src/server/webdav/webdav.c

branch
webdav
changeset 249
3b302093945c
parent 247
1df803e06076
child 251
f727a21497bb
equal deleted inserted replaced
248:bc8f8ddbad2e 249:3b302093945c
535 deletelist_add, &del)) 535 deletelist_add, &del))
536 { 536 {
537 return 1; 537 return 1;
538 } 538 }
539 539
540 // add root to list of dir list
541 DeleteFile root;
542 root.path = op->path;
543 root.s = *op->stat;
544 UcxList root_elm;
545 root_elm.data = &root;
546 root_elm.prev = NULL;
547 root_elm.next = del.dirs_begin;
548
549 if(del.dirs_begin) {
550 del.dirs_begin->prev = &root_elm;
551 del.dirs_begin = &root_elm;
552 } else {
553 del.dirs_begin = &root_elm;
554 del.dirs_end = &root_elm;
555 }
556
540 // delete files first 557 // delete files first
541 UCX_FOREACH(elm, del.files_begin) { 558 UCX_FOREACH(elm, del.files_begin) {
542 DeleteFile *file = elm->data; 559 DeleteFile *file = elm->data;
543 WebdavVFSOperation sub = webdav_vfs_sub_op(op, file->path, &file->s); 560 WebdavVFSOperation sub = webdav_vfs_sub_op(op, file->path, &file->s);
544 if(webdav_vfs_op_do(&sub, WEBDAV_VFS_DELETE)) { 561 if(webdav_vfs_op_do(&sub, WEBDAV_VFS_DELETE)) {
568 struct stat s; 585 struct stat s;
569 if(vfs_stat(op->vfs, op->path, &s)) { 586 if(vfs_stat(op->vfs, op->path, &s)) {
570 sys_set_error_status(op->vfs); 587 sys_set_error_status(op->vfs);
571 return REQ_ABORTED; 588 return REQ_ABORTED;
572 } 589 }
590 op->stat = &s;
573 591
574 int ret; 592 int ret;
575 if(S_ISDIR(s.st_mode)) { 593 if(S_ISDIR(s.st_mode)) {
576 ret = webdav_delete_collection(op); 594 ret = webdav_delete_collection(op);
577 } else { 595 } else {

mercurial