src/server/webdav/webdav.c

changeset 50
4d39adda7a38
parent 48
37a512d7b8f6
child 51
b28cf69f42e8
--- a/src/server/webdav/webdav.c	Sat Jan 19 20:51:16 2013 +0100
+++ b/src/server/webdav/webdav.c	Sat Jan 19 21:52:21 2013 +0100
@@ -520,6 +520,35 @@
         fprintf(stderr, "Cannot get stat of file: %s\n", path);
     }
     
+    if(rq->allprop) {
+        DavProperty prop;
+        prop.xmlns = "DAV:";
+        
+        prop.name = "resourcetype";
+        if(S_ISDIR(st.st_mode)) {
+            dav_propfind_add_str_prop(rq, &prop, "<D:collection/>", 15);
+        } else {
+            dav_propfind_add_str_prop(rq, &prop, NULL, 0);
+        }
+        
+        if(!S_ISDIR(st.st_mode)) {
+            prop.name = "getcontentlength";
+            char buf[32];
+            size_t n = snprintf(buf, 32, "%d", st.st_size);
+            dav_propfind_add_str_prop(rq, &prop, buf, n);
+        }
+        
+        prop.name = "getlastmodified";
+        sstr_t s = date_format_http(st.st_mtim.tv_sec, rq->sn->pool);
+        dav_propfind_add_str_prop(rq, &prop, s.ptr, s.length);
+        
+        prop.name = "creationdate";
+        s = date_format_iso8601(st.st_ctim.tv_sec, rq->sn->pool);
+        dav_propfind_add_str_prop(rq, &prop, s.ptr, s.length);
+        
+        return;
+    }
+    
     DAV_FOREACH(elm, rq->properties) {
         DavProperty *prop = (DavProperty*)elm->data;
         

mercurial