dav/main.c

changeset 21
78935b45e2ce
parent 18
651989681053
child 22
e593f7e41be0
equal deleted inserted replaced
20:6bb9479d9c64 21:78935b45e2ce
588 if(!in) { 588 if(!in) {
589 fprintf(stderr, "cannot open input file\n"); 589 fprintf(stderr, "cannot open input file\n");
590 return -1; 590 return -1;
591 } 591 }
592 592
593 DavResource *res = dav_resource_new(sn, path); 593 DavResource *res = dav_query(sn, "get - from %s", path);
594 if(!res) { 594 if(!res) {
595 fprintf(stderr, "error\n"); 595 if(sn->error = DAV_NOT_FOUND) {
596 return -1; 596 res = dav_resource_new(sn, path);
597 } else {
598 fprintf(stderr, "error\n");
599 return -1;
600 }
601 } else if(res->iscollection) {
602 // TODO: free res
603 char *newpath = util_concat_path(path, file);
604 free(path);
605 path = newpath;
606 res = dav_resource_new(sn, path);
597 } 607 }
598 608
599 AESEncrypter *enc = NULL; 609 AESEncrypter *enc = NULL;
600 char *keyname = cmd_getoption(a, "key"); 610 char *keyname = cmd_getoption(a, "key");
601 char *kn = NULL; 611 char *kn = NULL;
602 char *plain = cmd_getoption(a, "plain"); 612 char *plain = cmd_getoption(a, "plain");
603 if(!plain && (keyname || repo)) { 613 if(!plain && (keyname || repo)) {
604 kn = keyname ? keyname : repo->default_key; 614 kn = keyname ? keyname : repo->default_key;
605 Key *key = get_key(kn); 615 if(kn) {
606 if(!key) { 616 Key *key = get_key(kn);
607 fprintf(stderr, "Key %s not found!\nAbort.\n", kn); 617 if(!key) {
608 // TODO: free 618 fprintf(stderr, "Key %s not found!\nAbort.\n", kn);
609 return -1; 619 // TODO: free
610 } 620 return -1;
611 if(keyname || repo->encrypt) { 621 }
612 enc = aes_encrypter_new(key, in, (dav_read_func)fread); 622 if(keyname || repo->encrypt) {
623 enc = aes_encrypter_new(key, in, (dav_read_func)fread);
624 }
613 } 625 }
614 } 626 }
615 if(enc) { 627 if(enc) {
616 dav_set_content(res, enc, (dav_read_func)aes_read); 628 dav_set_content(res, enc, (dav_read_func)aes_read);
617 dav_set_property_ns(res, "http://www.uap-core.de/", "crypto-key", kn); 629 dav_set_property_ns(res, "http://www.uap-core.de/", "crypto-key", kn);

mercurial