dav/finfo.c

changeset 646
37a8bfae995e
parent 618
4b34d12cf211
child 736
40be8db6fe45
equal deleted inserted replaced
645:ad61c1654dce 646:37a8bfae995e
44 44
45 uint32_t parse_finfo_settings(const char *str, char **error) { 45 uint32_t parse_finfo_settings(const char *str, char **error) {
46 scstr_t s = scstr(str); 46 scstr_t s = scstr(str);
47 47
48 if(!sstrcmp(s, SC("*")) || !sstrcmp(s, SC("a")) || !sstrcmp(s, SC("all"))) { 48 if(!sstrcmp(s, SC("*")) || !sstrcmp(s, SC("a")) || !sstrcmp(s, SC("all"))) {
49 return FINFO_DATE|FINFO_OWNER|FINFO_MODE|FINFO_XATTR; 49 return FINFO_MTIME|FINFO_OWNER|FINFO_MODE|FINFO_XATTR;
50 } 50 }
51 51
52 ssize_t count = 0; 52 ssize_t count = 0;
53 sstr_t *fs = sstrsplit(s, SC(","), &count); 53 sstr_t *fs = sstrsplit(s, SC(","), &count);
54 54
55 char *err = NULL; 55 char *err = NULL;
56 56
57 uint32_t finfo = 0; 57 uint32_t finfo = 0;
58 for(int i=0;i<count;i++) { 58 for(int i=0;i<count;i++) {
59 sstr_t f = fs[i]; 59 sstr_t f = fs[i];
60 if(!sstrcasecmp(f, SC("date"))) { 60 if(!sstrcasecmp(f, SC("mtime"))) {
61 finfo |= FINFO_DATE; 61 finfo |= FINFO_MTIME;
62 } else if(!sstrcasecmp(f, SC("owner"))) { 62 } else if(!sstrcasecmp(f, SC("owner"))) {
63 finfo |= FINFO_OWNER; 63 finfo |= FINFO_OWNER;
64 } else if(!sstrcasecmp(f, SC("mode"))) { 64 } else if(!sstrcasecmp(f, SC("mode"))) {
65 finfo |= FINFO_MODE; 65 finfo |= FINFO_MODE;
66 } else if(!sstrcasecmp(f, SC("xattr"))) { 66 } else if(!sstrcasecmp(f, SC("xattr"))) {
95 } 95 }
96 96
97 DavXmlNode *content = NULL; 97 DavXmlNode *content = NULL;
98 DavXmlNode *last = NULL; 98 DavXmlNode *last = NULL;
99 99
100 if((finfo & FINFO_DATE) == FINFO_DATE) { 100 if((finfo & FINFO_MTIME) == FINFO_MTIME) {
101 char str[32]; 101 char str[32];
102 struct tm *date = gmtime(&s->st_mtime); 102 struct tm *date = gmtime(&s->st_mtime);
103 strftime(str, 32, "%a, %d %b %Y %H:%M:%S GMT", date); 103 strftime(str, 32, "%a, %d %b %Y %H:%M:%S GMT", date);
104 DavXmlNode *mtime = dav_xml_createnode_with_text(DAV_PROPS_NS, "mtime", str); 104 DavXmlNode *mtime = dav_xml_createnode_with_text(DAV_PROPS_NS, "mtime", str);
105 content = mtime; 105 content = mtime;

mercurial