src/server/webdav/webdav.c

changeset 50
4d39adda7a38
parent 48
37a512d7b8f6
child 51
b28cf69f42e8
equal deleted inserted replaced
49:1fd94945796e 50:4d39adda7a38
518 if(stat(path, &st) != 0) { 518 if(stat(path, &st) != 0) {
519 perror("dav_be_propfind"); 519 perror("dav_be_propfind");
520 fprintf(stderr, "Cannot get stat of file: %s\n", path); 520 fprintf(stderr, "Cannot get stat of file: %s\n", path);
521 } 521 }
522 522
523 if(rq->allprop) {
524 DavProperty prop;
525 prop.xmlns = "DAV:";
526
527 prop.name = "resourcetype";
528 if(S_ISDIR(st.st_mode)) {
529 dav_propfind_add_str_prop(rq, &prop, "<D:collection/>", 15);
530 } else {
531 dav_propfind_add_str_prop(rq, &prop, NULL, 0);
532 }
533
534 if(!S_ISDIR(st.st_mode)) {
535 prop.name = "getcontentlength";
536 char buf[32];
537 size_t n = snprintf(buf, 32, "%d", st.st_size);
538 dav_propfind_add_str_prop(rq, &prop, buf, n);
539 }
540
541 prop.name = "getlastmodified";
542 sstr_t s = date_format_http(st.st_mtim.tv_sec, rq->sn->pool);
543 dav_propfind_add_str_prop(rq, &prop, s.ptr, s.length);
544
545 prop.name = "creationdate";
546 s = date_format_iso8601(st.st_ctim.tv_sec, rq->sn->pool);
547 dav_propfind_add_str_prop(rq, &prop, s.ptr, s.length);
548
549 return;
550 }
551
523 DAV_FOREACH(elm, rq->properties) { 552 DAV_FOREACH(elm, rq->properties) {
524 DavProperty *prop = (DavProperty*)elm->data; 553 DavProperty *prop = (DavProperty*)elm->data;
525 554
526 char *s = prop->name; 555 char *s = prop->name;
527 if(!strcmp(s, "resourcetype")) { 556 if(!strcmp(s, "resourcetype")) {

mercurial