Wed, 05 Jun 2024 19:50:44 +0200
add extra nullptr check in the event loop to handle the case when the finish ptr is set to NULL after it was already scheduled
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | * Copyright 2019 Olaf Wintermann. All rights reserved. |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #ifndef OPERATION_H |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #define OPERATION_H |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
32 | #include "../public/webdav.h" |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
33 | #include <cx/list.h> |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
34 | #include <cx/map.h> |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
36 | #ifdef __cplusplus |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
37 | extern "C" { |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
38 | #endif |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
39 | |
239
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
40 | typedef int(*response_close_func)(WebdavOperation *, WebdavResource *); |
245
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
41 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
42 | typedef struct WebdavVFSOperation WebdavVFSOperation; |
252
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
43 | |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
44 | typedef struct WebdavCopy WebdavCopy; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
45 | typedef struct CopyResource CopyResource; |
239
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
46 | |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
47 | struct WebdavOperation { |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
48 | WebdavBackend *dav; |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
49 | Request *rq; |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
50 | Session *sn; |
237
ee1680ef1ef2
handle missing properties in multistatus.c
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
51 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
52 | WebdavProppatchRequest *proppatch; /* proppatch request or NULL */ |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
53 | WebdavPList *reqprops; /* requested properties */ |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
54 | WebdavPropfindRequestList *requests; /* backend specific request objects */ |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
55 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
56 | WebdavResponse *response; |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
57 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
58 | response_close_func response_close; |
239
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
59 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
60 | VFS_DIR parent; /* current directory */ |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
61 | struct stat *stat; /* current stat object */ |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
62 | }; |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
63 | |
245
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
64 | struct WebdavVFSOperation { |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
65 | WebdavBackend *dav; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
66 | Request *rq; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
67 | Session *sn; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
68 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
69 | VFSContext *vfs; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
70 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
71 | char *path; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
72 | struct stat *stat; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
73 | int stat_errno; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
74 | }; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
75 | |
252
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
76 | struct WebdavCopy { |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
77 | WebdavResponse response; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
78 | Session *sn; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
79 | Request *rq; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
80 | CopyResource *current; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
81 | |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
82 | char *src_href; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
83 | char *src_path; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
84 | char *dst_href; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
85 | char *dst_path; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
86 | }; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
87 | |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
88 | struct CopyResource { |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
89 | WebdavResource resource; |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
90 | CxMap *properties; |
252
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
91 | }; |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
92 | |
245
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
93 | enum WebdavVFSOpType { |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
94 | WEBDAV_VFS_MKDIR = 0, |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
95 | WEBDAV_VFS_DELETE |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
96 | }; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
97 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
98 | typedef enum WebdavVFSOpType WebdavVFSOpType; |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
99 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
100 | typedef int(*vfs_op_func)(WebdavVFSRequest *, WSBool *); |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
101 | typedef int(*vfs_op_finish_func)(WebdavVFSRequest *, WSBool); |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
102 | |
246
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
103 | typedef int(*vfs_op_child_func)( |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
104 | VFSContext *, |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
105 | const char *, /* href */ |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
106 | const char *, /* path */ |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
107 | VFSDir *, /* parent dir */ |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
108 | struct stat *, /* child stat */ |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
109 | void *); /* user data */ |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
110 | |
241
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
111 | /* |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
112 | * counts the number of backends |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
113 | */ |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
114 | size_t webdav_num_backends(WebdavBackend *dav); |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
115 | |
239
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
116 | WebdavOperation* webdav_create_propfind_operation( |
222
5f05e56cb8e2
create namespace definition lists when properties are added to a multistatus response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
221
diff
changeset
|
117 | Session *sn, |
5f05e56cb8e2
create namespace definition lists when properties are added to a multistatus response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
221
diff
changeset
|
118 | Request *rq, |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
119 | WebdavBackend *dav, |
237
ee1680ef1ef2
handle missing properties in multistatus.c
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
222
diff
changeset
|
120 | WebdavPList *reqprops, |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
252
diff
changeset
|
121 | WebdavPropfindRequestList *requests, |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
122 | WebdavResponse *response); |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
123 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
124 | int webdav_op_propfind_begin( |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
125 | WebdavOperation *op, |
221
ff5826fc6a6c
add href parameter to webdav_op_propfind_children
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
217
diff
changeset
|
126 | const char *href, |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
127 | VFS_DIR parent, |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
128 | struct stat *s); |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
129 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
130 | int webdav_op_propfind_children( |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
131 | WebdavOperation *op, |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
132 | VFSContext *vfs, |
221
ff5826fc6a6c
add href parameter to webdav_op_propfind_children
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
217
diff
changeset
|
133 | const char *href, |
ff5826fc6a6c
add href parameter to webdav_op_propfind_children
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
217
diff
changeset
|
134 | const char *path); |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
135 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
136 | int webdav_op_propfiond_close_resource( |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
137 | WebdavOperation *op, |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
138 | WebdavResource *resource); |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
139 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
140 | int webdav_op_propfind_finish(WebdavOperation *op); |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
141 | |
239
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
142 | WebdavOperation* webdav_create_proppatch_operation( |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
143 | Session *sn, |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
144 | Request *rq, |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
145 | WebdavBackend *dav, |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
146 | WebdavProppatchRequest *proppatch, |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
147 | WebdavResponse *response); |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
148 | |
241
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
149 | int webdav_op_proppatch( |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
150 | WebdavOperation *op, |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
151 | const char *href, |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
152 | const char *path); |
4adad7faf452
add proppatch op
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
239
diff
changeset
|
153 | |
239
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
154 | int webdav_op_proppatch_close_resource( |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
155 | WebdavOperation *op, |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
156 | WebdavResource *resource); |
d5031c30022c
make multistatus response ready for proppatch requests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
237
diff
changeset
|
157 | |
245
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
158 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
159 | WebdavVFSOperation* webdav_vfs_op( |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
160 | Session *sn, |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
161 | Request *rq, |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
162 | WebdavBackend *dav, |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
163 | WSBool precondition); |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
164 | |
247
1df803e06076
implement webdav delete for collections
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
246
diff
changeset
|
165 | WebdavVFSOperation webdav_vfs_sub_op( |
1df803e06076
implement webdav delete for collections
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
246
diff
changeset
|
166 | WebdavVFSOperation *op, |
1df803e06076
implement webdav delete for collections
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
246
diff
changeset
|
167 | char *path, |
1df803e06076
implement webdav delete for collections
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
246
diff
changeset
|
168 | struct stat *s); |
1df803e06076
implement webdav delete for collections
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
246
diff
changeset
|
169 | |
246
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
170 | int webdav_op_iterate_children( |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
171 | VFSContext *vfs, |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
172 | int depth, |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
173 | const char *href, |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
174 | const char *path, |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
175 | vfs_op_child_func func, |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
176 | void *userdata); |
155bdef7fe7e
add webdav op function for iterating directories
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
245
diff
changeset
|
177 | |
245
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
178 | int webdav_vfs_stat(WebdavVFSOperation *op); |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
179 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
180 | int webdav_vfs_op_do(WebdavVFSOperation *op, WebdavVFSOpType type); |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
181 | |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
182 | int webdav_vfs_unlink(WebdavVFSOperation *op); |
a193c42fc809
add mkcol and delete interface to webdav backend, move webdav vfs logic to operation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
241
diff
changeset
|
183 | |
252
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
184 | |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
185 | WebdavCopy* webdav_copy_create( |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
186 | Session *sn, |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
187 | Request *rq, |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
188 | VFSContext *vfs, |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
189 | char *from_href, |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
190 | char *from_path, |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
191 | char *to_href, |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
192 | char *to_path); |
5653a9626cc0
prepare webdav copy
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
247
diff
changeset
|
193 | |
217
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
194 | #ifdef __cplusplus |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
195 | } |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
196 | #endif |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
197 | |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
198 | #endif /* OPERATION_H */ |
8ed14d76db42
add backend chaining
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
199 |