1288 int *counter) |
1288 int *counter) |
1289 { |
1289 { |
1290 LocalResource *local = ucx_map_cstr_get(db->resources, path); |
1290 LocalResource *local = ucx_map_cstr_get(db->resources, path); |
1291 char *local_path = create_local_path(dir, path); |
1291 char *local_path = create_local_path(dir, path); |
1292 |
1292 |
1293 char *link = dav_get_string_property_ns(res, DAV_NS, "link"); |
1293 char *link = SYNC_SYMLINK(dir) ? |
|
1294 dav_get_string_property_ns(res, DAV_NS, "link") : NULL; |
1294 |
1295 |
1295 char *etag = dav_get_string_property(res, "D:getetag"); |
1296 char *etag = dav_get_string_property(res, "D:getetag"); |
1296 SYS_STAT s; |
1297 SYS_STAT s; |
1297 memset(&s, 0, sizeof(SYS_STAT)); |
1298 memset(&s, 0, sizeof(SYS_STAT)); |
1298 |
1299 |
1299 char *blocksize_str = dav_get_string_property_ns(res, DAV_NS, "split"); |
1300 char *blocksize_str = dav_get_string_property_ns(res, DAV_NS, "split"); |
1300 uint64_t blocksize = 0; |
1301 uint64_t blocksize = 0; |
1301 DavBool issplit = FALSE; |
1302 DavBool issplit = FALSE; |
1302 if(blocksize_str) { |
1303 if(blocksize_str && !link) { |
1303 if(!util_strtouint(blocksize_str, &blocksize)) { |
1304 if(!util_strtouint(blocksize_str, &blocksize)) { |
1304 fprintf(stderr, "Error: split property does not contain an integer.\n"); |
1305 fprintf(stderr, "Error: split property does not contain an integer.\n"); |
1305 return 1; |
1306 return 1; |
1306 } |
1307 } |
1307 issplit = TRUE; |
1308 issplit = TRUE; |
1408 fprintf(stderr, "Cannot store metadata: %s\n", path); |
1409 fprintf(stderr, "Cannot store metadata: %s\n", path); |
1409 } |
1410 } |
1410 |
1411 |
1411 if(local->etag) { |
1412 if(local->etag) { |
1412 free(local->etag); |
1413 free(local->etag); |
|
1414 local->etag = NULL; |
1413 } |
1415 } |
1414 if(local->hash) { |
1416 if(local->hash) { |
1415 free(local->hash); |
1417 free(local->hash); |
|
1418 local->hash = NULL; |
1416 } |
1419 } |
1417 if(local->link_target) { |
1420 if(local->link_target) { |
1418 free(local->link_target); |
1421 free(local->link_target); |
1419 } |
1422 local->link_target = NULL; |
1420 |
1423 } |
|
1424 |
|
1425 stat_func statfn; |
1421 if(link) { |
1426 if(link) { |
1422 local->link_target = strdup(link); |
1427 local->link_target = strdup(link); |
|
1428 statfn = sys_lstat; |
|
1429 } else { |
|
1430 statfn = sys_stat; |
1423 } |
1431 } |
1424 |
1432 |
1425 update_parts(local, part_updates, blockcount); |
1433 update_parts(local, part_updates, blockcount); |
1426 |
1434 |
1427 if(sys_stat(local_path, &s)) { |
1435 if(statfn(local_path, &s)) { |
1428 fprintf(stderr, |
1436 fprintf(stderr, |
1429 "Cannot stat file %s: %s\n", local_path, strerror(errno)); |
1437 "Cannot stat file %s: %s\n", local_path, strerror(errno)); |
1430 } |
1438 } |
1431 |
1439 |
1432 // set metadata from stat |
1440 // set metadata from stat |