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; |
49 return FINFO_DATE|FINFO_OWNER|FINFO_MODE; |
50 } |
50 } |
51 |
51 |
52 size_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; |
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_DATE) == FINFO_DATE) { |
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_NS, "mtime", str); |
104 DavXmlNode *mtime = dav_xml_createnode_with_text(DAV_NS, "mtime", str); |
105 content = mtime; |
105 content = mtime; |
106 last = mtime; |
106 last = mtime; |
107 } |
107 } |
108 #ifndef _WIN32 |
108 #ifndef _WIN32 |
109 if(finfo & FINFO_OWNER == FINFO_OWNER) { |
109 if((finfo & FINFO_OWNER) == FINFO_OWNER) { |
110 // TODO |
110 // TODO |
111 } |
111 } |
112 if(finfo & FINFO_MODE == FINFO_MODE) { |
112 if((finfo & FINFO_MODE) == FINFO_MODE) { |
113 mode_t mode = s->st_mode & 07777; |
113 mode_t mode = s->st_mode & 07777; |
114 char str[32]; |
114 char str[32]; |
115 snprintf(str, 32, "%o", (int)mode); |
115 snprintf(str, 32, "%o", (int)mode); |
116 DavXmlNode *xmode = dav_xml_createnode_with_text(DAV_NS, "mode", str); |
116 DavXmlNode *xmode = dav_xml_createnode_with_text(DAV_NS, "mode", str); |
117 if(last) { |
117 if(last) { |