# HG changeset patch # User Olaf Wintermann # Date 1552379704 -3600 # Node ID ac5ac55b1b2ed7ec7bda2841947388823034bd42 # Parent cca3e7aa30ed88507423bc24350334ad7d85d2f6 adds file mode to fileinfo property diff -r cca3e7aa30ed -r ac5ac55b1b2e dav/finfo.c --- a/dav/finfo.c Sat Mar 09 16:29:59 2019 +0100 +++ b/dav/finfo.c Tue Mar 12 09:35:04 2019 +0100 @@ -75,19 +75,13 @@ return resource_set_finfo_s(&s, res, finfo); } -static int buf_write_date(UcxBuffer *buf, time_t t) { - struct tm *date = gmtime(&t); - char str[32]; - size_t len = strftime(str, 32, "%a, %d %b %Y %H:%M:%S GMT", date); - return ucx_buffer_write(str, 1, len, buf); -} - int resource_set_finfo_s(struct stat *s, DavResource *res, uint32_t finfo) { if(finfo == 0) { return 0; } DavXmlNode *content = NULL; + DavXmlNode *last = NULL; if(finfo & FINFO_DATE == FINFO_DATE) { char str[32]; @@ -95,13 +89,23 @@ strftime(str, 32, "%a, %d %b %Y %H:%M:%S GMT", date); DavXmlNode *mtime = dav_xml_createnode_with_text(DAV_NS, "mtime", str); content = mtime; + last = mtime; } #ifndef _WIN32 if(finfo & FINFO_OWNER == FINFO_OWNER) { // TODO } if(finfo & FINFO_MODE == FINFO_MODE) { - // TODO + mode_t mode = s->st_mode & 07777; + char str[32]; + snprintf(str, 32, "%o", (int)mode); + DavXmlNode *xmode = dav_xml_createnode_with_text(DAV_NS, "mode", str); + if(last) { + last->next = xmode; + } else { + content = xmode; + } + last = xmode; } #endif