dav/main.c

changeset 178
e137883e620f
parent 165
b66bed169fc3
child 179
802b48ae791d
equal deleted inserted replaced
177:3c0734eeab33 178:e137883e620f
733 } 733 }
734 734
735 int ret; 735 int ret;
736 if(!strcmp(file, "-")) { 736 if(!strcmp(file, "-")) {
737 FILE *in = stdin; 737 FILE *in = stdin;
738 ret = put_file(repo, a, sn, path, "stdin", in); 738 ret = put_file(repo, a, sn, path, "stdin", in, 0);
739 } else { 739 } else {
740 ret = put_entry(repo, a, sn, path, file); 740 ret = put_entry(repo, a, sn, path, file);
741 } 741 }
742 742
743 free(path); 743 free(path);
790 fprintf(stderr, "cannot open input file\n"); 790 fprintf(stderr, "cannot open input file\n");
791 return -1; 791 return -1;
792 } 792 }
793 char *filename = util_resource_name(file); 793 char *filename = util_resource_name(file);
794 //path = util_concat_path(path, filename); 794 //path = util_concat_path(path, filename);
795 ret = put_file(repo, a, sn, path, filename, in); 795 ret = put_file(repo, a, sn, path, filename, in, s.st_size);
796 //free(path); 796 //free(path);
797 fclose(in); 797 fclose(in);
798 } 798 }
799 799
800 return ret; 800 return ret;
801 } 801 }
802 802
803 int put_file(Repository *repo, CmdArgs *a, DavSession *sn, char *path, char *name, FILE *in) { 803 int put_file(Repository *repo, CmdArgs *a, DavSession *sn, char *path, char *name, FILE *in, off_t len) {
804 DavResource *res = dav_query(sn, "select - from %s", path); 804 DavResource *res = dav_query(sn, "select - from %s", path);
805 if(!res) { 805 if(!res) {
806 if(sn->error == DAV_NOT_FOUND) { 806 if(sn->error == DAV_NOT_FOUND) {
807 res = dav_resource_new(sn, path); 807 res = dav_resource_new(sn, path);
808 if(dav_create(res)) { 808 if(dav_create(res)) {
821 // TODO: free res 821 // TODO: free res
822 char *newpath = util_concat_path(path, name); 822 char *newpath = util_concat_path(path, name);
823 path = newpath; 823 path = newpath;
824 res = dav_resource_new(sn, path); 824 res = dav_resource_new(sn, path);
825 free(newpath); 825 free(newpath);
826 int ret = put_file(repo, a, sn, res->path, NULL, in); 826 int ret = put_file(repo, a, sn, res->path, NULL, in, len);
827 // TODO: free res 827 // TODO: free res
828 return ret; 828 return ret;
829 } 829 }
830 830
831 dav_set_content(res, in, (dav_read_func)fread); 831 dav_set_content(res, in, (dav_read_func)fread);
832 if(len > 0) {
833 //dav_set_content_length(res, (size_t)len);
834 }
832 835
833 if(dav_store(res)) { 836 if(dav_store(res)) {
834 print_resource_error(sn, res->path); 837 print_resource_error(sn, res->path);
835 fprintf(stderr, "Cannot upload file.\n"); 838 fprintf(stderr, "Cannot upload file.\n");
836 if(sn->errorstr) { 839 if(sn->errorstr) {

mercurial