</listitem>
</varlistentry>
+ <varlistentry>
+ <term>fruit:veto_appledouble = yes | no</term>
+ <listitem>
+ <para>Whether ._ AppleDouble files are vetoed which
+ prevents the client from seing and accessing internal
+ AppleDouble files created by vfs_fruit itself for the
+ purpose of storing a Mac resource fork.</para>
+ <para>Vetoing ._ files may break some applications, eg
+ extracting Mac ZIP archives from Mac clients failes,
+ because they contain ._ files. Setting this option to
+ false will fix this, but the abstraction leak of
+ exposing the internally created ._ files may have other
+ unknown side effects.</para>
+ <para>The default is <emphasis>yes</emphasis>.</para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
</refsect1>
bool use_aapl;
bool readdir_attr_enabled;
bool unix_info_enabled;
+ bool veto_appledouble;
/*
* Additional options, all enabled by default,
}
config->encoding = (enum fruit_encoding)enumval;
+ if (lp_parm_bool(SNUM(handle->conn),
+ FRUIT_PARAM_TYPE_NAME, "veto_appledouble", true)) {
+ config->veto_appledouble = true;
+ }
+
if (lp_parm_bool(-1, FRUIT_PARAM_TYPE_NAME, "aapl", true)) {
config->use_aapl = true;
}
return rc;
}
- list = lp_veto_files(talloc_tos(), SNUM(handle->conn));
-
- if (list) {
- if (strstr(list, "/" ADOUBLE_NAME_PREFIX "*/") == NULL) {
- newlist = talloc_asprintf(
- list,
- "%s/" ADOUBLE_NAME_PREFIX "*/",
- list);
- lp_do_parameter(SNUM(handle->conn),
- "veto files",
- newlist);
- }
- } else {
- lp_do_parameter(SNUM(handle->conn),
- "veto files",
- "/" ADOUBLE_NAME_PREFIX "*/");
- }
-
- TALLOC_FREE(list);
-
rc = init_fruit_config(handle);
if (rc != 0) {
return rc;
SMB_VFS_HANDLE_GET_DATA(handle, config,
struct fruit_config_data, return -1);
+ if (config->veto_appledouble) {
+ list = lp_veto_files(talloc_tos(), SNUM(handle->conn));
+
+ if (list) {
+ if (strstr(list, "/" ADOUBLE_NAME_PREFIX "*/") == NULL) {
+ newlist = talloc_asprintf(
+ list,
+ "%s/" ADOUBLE_NAME_PREFIX "*/",
+ list);
+ lp_do_parameter(SNUM(handle->conn),
+ "veto files",
+ newlist);
+ }
+ } else {
+ lp_do_parameter(SNUM(handle->conn),
+ "veto files",
+ "/" ADOUBLE_NAME_PREFIX "*/");
+ }
+
+ TALLOC_FREE(list);
+ }
+
if (config->encoding == FRUIT_ENC_NATIVE) {
lp_do_parameter(
SNUM(handle->conn),