dav/scfg.c

changeset 642
4e23087d3d90
parent 630
046b869a1c49
child 644
a38b15061848
equal deleted inserted replaced
641:b138d1241e68 642:4e23087d3d90
396 bool store_hash = false; 396 bool store_hash = false;
397 //bool detect_copy = false; 397 //bool detect_copy = false;
398 time_t lock_timeout = 0; 398 time_t lock_timeout = 0;
399 uint32_t metadata = 0; 399 uint32_t metadata = 0;
400 uint32_t symlink = 0; 400 uint32_t symlink = 0;
401 PushStrategy pushstrat = PUSH_STRATEGY_METADATA;
401 402
402 unsigned short parentlineno = node->line; 403 unsigned short parentlineno = node->line;
403 node = node->children; 404 node = node->children;
404 while(node) { 405 while(node) {
405 if(node->type == XML_ELEMENT_NODE) { 406 if(node->type == XML_ELEMENT_NODE) {
455 print_warning(node->line, "unsigned integer value " 456 print_warning(node->line, "unsigned integer value "
456 "expected in <max-retry> element\n"); 457 "expected in <max-retry> element\n");
457 } 458 }
458 } else if(xstreq(node->name, "allow-cmd")) { 459 } else if(xstreq(node->name, "allow-cmd")) {
459 int cmds = 0; 460 int cmds = 0;
460 const char *delims = " ,\r\n"; 461 const char *delims = " ,\t\r\n";
461 char *cmdstr = strdup(value); 462 char *cmdstr = strdup(value);
462 char *cmd = strtok(cmdstr, delims); 463 char *cmd = strtok(cmdstr, delims);
463 while(cmd) { 464 while(cmd) {
464 if(!strcmp(cmd, "pull")) { 465 if(!strcmp(cmd, "pull")) {
465 cmds |= SYNC_CMD_PULL; 466 cmds |= SYNC_CMD_PULL;
489 print_warning(node->line, "integer value " 490 print_warning(node->line, "integer value "
490 "expected in <lock-timeout> element\n"); 491 "expected in <lock-timeout> element\n");
491 } 492 }
492 } else if(xstreq(node->name, "hashing")) { 493 } else if(xstreq(node->name, "hashing")) {
493 hashing = util_getboolean(value); 494 hashing = util_getboolean(value);
494 store_hash = hashing; // TODO: extra config for this? 495 store_hash = hashing;
496 } else if(xstreq(node->name, "push-strategy")) {
497 if(value) {
498 if(xstreq(value, "metadata")) {
499 pushstrat = PUSH_STRATEGY_METADATA;
500 } else if(xstreq(value, "hash")) {
501 pushstrat = PUSH_STRATEGY_HASH;
502 }
503 }
495 } else if(xstreq(node->name, "symlinks")) { 504 } else if(xstreq(node->name, "symlinks")) {
496 uint32_t symlinkconfig = 0; 505 uint32_t symlinkconfig = 0;
497 const char *delims = " ,\r\n"; 506 const char *delims = " ,\r\n";
498 char *cmdstr = strdup(value); 507 char *cmdstr = strdup(value);
499 char *s = strtok(cmdstr, delims); 508 char *s = strtok(cmdstr, delims);
555 dir->store_hash = store_hash; 564 dir->store_hash = store_hash;
556 dir->lock_timeout = lock_timeout; 565 dir->lock_timeout = lock_timeout;
557 dir->metadata = metadata; 566 dir->metadata = metadata;
558 dir->splitconfig = splitconfig; 567 dir->splitconfig = splitconfig;
559 dir->symlink = symlink; 568 dir->symlink = symlink;
569 dir->push_strategy = pushstrat;
560 if((metadata & FINFO_MODE) == FINFO_MODE) { 570 if((metadata & FINFO_MODE) == FINFO_MODE) {
561 dir->db_settings = DB_STORE_MODE; 571 dir->db_settings = DB_STORE_MODE;
562 } 572 }
563 if((metadata & FINFO_OWNER) == FINFO_OWNER) { 573 if((metadata & FINFO_OWNER) == FINFO_OWNER) {
564 dir->db_settings |= DB_STORE_OWNER; 574 dir->db_settings |= DB_STORE_OWNER;

mercurial