dav/main.c

changeset 178
e137883e620f
parent 165
b66bed169fc3
child 179
802b48ae791d
--- a/dav/main.c	Sun Oct 18 12:44:57 2015 +0200
+++ b/dav/main.c	Sun Oct 18 12:46:56 2015 +0200
@@ -735,7 +735,7 @@
     int ret;
     if(!strcmp(file, "-")) {
         FILE *in = stdin;
-        ret = put_file(repo, a, sn, path, "stdin", in);
+        ret = put_file(repo, a, sn, path, "stdin", in, 0);
     } else {
         ret = put_entry(repo, a, sn, path, file); 
     }
@@ -792,7 +792,7 @@
         }
         char *filename = util_resource_name(file);
         //path = util_concat_path(path, filename);
-        ret = put_file(repo, a, sn, path, filename, in);
+        ret = put_file(repo, a, sn, path, filename, in, s.st_size);
         //free(path);
         fclose(in);
     }
@@ -800,7 +800,7 @@
     return ret;
 }
 
-int put_file(Repository *repo, CmdArgs *a, DavSession *sn, char *path, char *name, FILE *in) {
+int put_file(Repository *repo, CmdArgs *a, DavSession *sn, char *path, char *name, FILE *in, off_t len) {
     DavResource *res = dav_query(sn, "select - from %s", path);
     if(!res) {
         if(sn->error == DAV_NOT_FOUND) {
@@ -823,12 +823,15 @@
         path = newpath;
         res = dav_resource_new(sn, path);
         free(newpath);
-        int ret = put_file(repo, a, sn, res->path, NULL, in);
+        int ret = put_file(repo, a, sn, res->path, NULL, in, len);
         // TODO: free res
         return ret;
     }
     
     dav_set_content(res, in, (dav_read_func)fread);
+    if(len > 0) {
+        //dav_set_content_length(res, (size_t)len);
+    }
     
     if(dav_store(res)) {
         print_resource_error(sn, res->path);

mercurial