+ if (vdgoption_bool(obj->iniconfig, section, "force xattr with sticky bit", preset, 0))
+ volume->v_flags |= AFPVOL_FORCE_STICKY_XATTR;
+
+ if ((val = getoption(obj->iniconfig, section, "ignored attributes", preset, obj->options.ignored_attr))) {
+ if (strstr(val, "all")) {
+ volume->v_ignattr |= ATTRBIT_NOWRITE | ATTRBIT_NORENAME | ATTRBIT_NODELETE;
+ }
+ if (strstr(val, "nowrite")) {
+ volume->v_ignattr |= ATTRBIT_NOWRITE;
+ }
+ if (strstr(val, "norename")) {
+ volume->v_ignattr |= ATTRBIT_NORENAME;
+ }
+ if (strstr(val, "nodelete")) {
+ volume->v_ignattr |= ATTRBIT_NODELETE;
+ }
+ }
+
+ val = getoption(obj->iniconfig, section, "chmod request", preset, NULL);
+ if (val == NULL) {
+ val = atalk_iniparser_getstring(obj->iniconfig, INISEC_GLOBAL, "chmod request", "preserve");
+ }
+ if (strcasecmp(val, "ignore") == 0) {
+ volume->v_flags |= AFPVOL_CHMOD_IGNORE;
+ } else if (strcasecmp(val, "preserve") == 0) {
+ volume->v_flags |= AFPVOL_CHMOD_PRESERVE_ACL;
+ } else if (strcasecmp(val, "simple") != 0) {
+ LOG(log_warning, logtype_afpd, "unknown 'chmod request' setting: '%s', using default", val);
+ volume->v_flags |= AFPVOL_CHMOD_PRESERVE_ACL;
+ }