dav/scfg.c

changeset 623
7870656d302d
parent 576
62cc92445234
child 630
046b869a1c49
equal deleted inserted replaced
622:6524f45f304e 623:7870656d302d
391 | SYNC_CMD_ARCHIVE | SYNC_CMD_RESTORE; 391 | SYNC_CMD_ARCHIVE | SYNC_CMD_RESTORE;
392 bool backuppull = false; 392 bool backuppull = false;
393 bool lockpull = false; 393 bool lockpull = false;
394 bool lockpush = false; 394 bool lockpush = false;
395 bool hashing = false; 395 bool hashing = false;
396 bool detect_copy = false; 396 //bool detect_copy = false;
397 time_t lock_timeout = 0; 397 time_t lock_timeout = 0;
398 uint32_t metadata = 0; 398 uint32_t metadata = 0;
399 uint32_t symlink = 0;
399 400
400 unsigned short parentlineno = node->line; 401 unsigned short parentlineno = node->line;
401 node = node->children; 402 node = node->children;
402 while(node) { 403 while(node) {
403 if(node->type == XML_ELEMENT_NODE) { 404 if(node->type == XML_ELEMENT_NODE) {
487 print_warning(node->line, "integer value " 488 print_warning(node->line, "integer value "
488 "expected in <lock-timeout> element\n"); 489 "expected in <lock-timeout> element\n");
489 } 490 }
490 } else if(xstreq(node->name, "hashing")) { 491 } else if(xstreq(node->name, "hashing")) {
491 hashing = util_getboolean(value); 492 hashing = util_getboolean(value);
493 } else if(xstreq(node->name, "symlinks")) {
494 uint32_t symlinkconfig = 0;
495 const char *delims = " ,\r\n";
496 char *cmdstr = strdup(value);
497 char *s = strtok(cmdstr, delims);
498 while(s) {
499 if(!strcmp(s, "sync")) {
500 symlinkconfig |= SYNC_SYMLINK_SYNC;
501 } else if(!strcmp(s, "extern_nofollow")) {
502 symlinkconfig |= SYNC_SYMLINK_EXTERN_NOFOLLOW;
503 } else if(!strcmp(s, "intern_nofollow")) {
504 symlinkconfig |= SYNC_SYMLINK_INTERN_NOFOLLOW;
505 }
506 s = strtok(NULL, delims);
507 }
508 free(cmdstr);
509 symlink = symlinkconfig;
492 } else { 510 } else {
493 print_error(node->line, 511 print_error(node->line,
494 "unknown directory config element: %s\n", node->name); 512 "unknown directory config element: %s\n", node->name);
495 return 1; 513 return 1;
496 } 514 }
533 dir->lockpush = lockpush; 551 dir->lockpush = lockpush;
534 dir->hashing = hashing; 552 dir->hashing = hashing;
535 dir->lock_timeout = lock_timeout; 553 dir->lock_timeout = lock_timeout;
536 dir->metadata = metadata; 554 dir->metadata = metadata;
537 dir->splitconfig = splitconfig; 555 dir->splitconfig = splitconfig;
538 dir->symlink = SYNC_SYMLINK_STORE; // TODO: add config elements 556 dir->symlink = symlink;
539 if((metadata & FINFO_MODE) == FINFO_MODE) { 557 if((metadata & FINFO_MODE) == FINFO_MODE) {
540 dir->db_settings = DB_STORE_MODE; 558 dir->db_settings = DB_STORE_MODE;
541 } 559 }
542 if((metadata & FINFO_OWNER) == FINFO_OWNER) { 560 if((metadata & FINFO_OWNER) == FINFO_OWNER) {
543 dir->db_settings |= DB_STORE_OWNER; 561 dir->db_settings |= DB_STORE_OWNER;

mercurial