mirror of
https://github.com/samba-team/samba.git
synced 2025-03-20 22:50:26 +03:00
vfs_fruit: optionally delete AppleDouble files without Resourcefork data
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13642 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit 3649f1a41a299b14609318ef52b44e2d53cba4b5) Autobuild-User(v4-8-test): Karolin Seeger <kseeger@samba.org> Autobuild-Date(v4-8-test): Fri Nov 2 15:02:42 CET 2018 on sn-devel-144
This commit is contained in:
parent
5eb26a5e7c
commit
3587cca948
@ -1,3 +1,2 @@
|
||||
^samba3.vfs.fruit streams_depot.OS X AppleDouble file conversion\(nt4_dc\)
|
||||
^samba3.vfs.fruit streams_depot.OS X AppleDouble file conversion without embedded xattr\(nt4_dc\)
|
||||
^samba3.vfs.fruit_conversion delete_empty_adfiles.convert_xattr_and_empty_rfork_then_delete\(nt4_dc\)
|
||||
|
@ -1386,6 +1386,43 @@ static bool ad_convert_blank_rfork(struct adouble *ad,
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool ad_convert_delete_adfile(struct adouble *ad,
|
||||
const struct smb_filename *smb_fname)
|
||||
{
|
||||
struct fruit_config_data *config = NULL;
|
||||
struct smb_filename *ad_name = NULL;
|
||||
int rc;
|
||||
|
||||
if (ad_getentrylen(ad, ADEID_RFORK) > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
SMB_VFS_HANDLE_GET_DATA(ad->ad_handle, config,
|
||||
struct fruit_config_data, return false);
|
||||
|
||||
if (!config->delete_empty_adfiles) {
|
||||
return true;
|
||||
}
|
||||
|
||||
rc = adouble_path(talloc_tos(), smb_fname, &ad_name);
|
||||
if (rc != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
rc = SMB_VFS_NEXT_UNLINK(ad->ad_handle, ad_name);
|
||||
if (rc != 0) {
|
||||
DBG_ERR("Unlinking [%s] failed: %s\n",
|
||||
smb_fname_str_dbg(ad_name), strerror(errno));
|
||||
TALLOC_FREE(ad_name);
|
||||
return false;
|
||||
}
|
||||
|
||||
DBG_WARNING("Unlinked [%s] after conversion\n", smb_fname_str_dbg(ad_name));
|
||||
TALLOC_FREE(ad_name);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert from Apple's ._ file to Netatalk
|
||||
*
|
||||
@ -1426,6 +1463,11 @@ static int ad_convert(struct adouble *ad,
|
||||
return -1;
|
||||
}
|
||||
|
||||
ok = ad_convert_delete_adfile(ad, smb_fname);
|
||||
if (!ok) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user