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")) { |