1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef FINFO_H
30 #define FINFO_H
31
32 #include <libidav/webdav.h>
33 #include <inttypes.h>
34 #include <sys/stat.h>
35
36 #include <cx/string.h>
37
38 #include "system.h"
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 #define FINFO_MTIME 1
45 #define FINFO_OWNER 2
46 #define FINFO_MODE 4
47 #define FINFO_XATTR 8
48
49 typedef struct XAttributes {
50 size_t nattr;
51 char **names;
52 cxmutstr *values;
53 char *hash;
54 } XAttributes;
55
56 typedef struct FileInfo {
57 time_t last_modified;
58 mode_t mode;
59 uid_t uid;
60 gid_t gid;
61 DavBool date_set;
62 DavBool mode_set;
63 DavBool uid_set;
64 DavBool gid_set;
65 } FileInfo;
66
67 typedef int(*xattr_filter_func)(
const char*,
void*);
68
69 uint32_t parse_finfo_settings(
const char *str,
char **unknown);
70
71 int resource_set_finfo(
const char *path, DavResource *res,
uint32_t finfo);
72 int resource_set_finfo_s(
struct stat *s, DavResource *res,
uint32_t finfo);
73
74 XAttributes* xml_get_attributes(DavXmlNode *xml);
75 XAttributes* file_get_attributes(
76 const char *path,
77 xattr_filter_func filter,
78 void *filterdata);
79 int resource_set_xattr(DavResource *res, XAttributes *xattr);
80 void xattributes_free(XAttributes *xattr);
81
82 char* get_xattr_hash(DavXmlNode *finfo);
83
84 void finfo_get_values(DavXmlNode *xml, FileInfo *outval);
85
86 #ifdef __cplusplus
87 }
88 #endif
89
90 #endif
91
92