summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalph Boehme <rb@sernet.de>2014-09-27 08:54:57 +0200
committerMichael Adam <obnox@samba.org>2014-10-01 01:59:25 +0200
commit1ef2be68f802f44dd0e751b71a758f1a8f3ce865 (patch)
tree40a03b27d1a1ffff94651b984b5f2e8745df57de
parentb2626c2d23cc9b9fdc0706f39d4c926aa12d679d (diff)
downloadsamba-1ef2be68f802f44dd0e751b71a758f1a8f3ce865.tar.gz
vfs_fruit: deal with vfs_catia not being loaded
Signed-off-by: Ralph Boehme <rb@sernet.de> Reviewed-by: Jeremy Allison <jra@samba.org> Reviewed-by: Michael Adam <obnox@samba.org> Autobuild-User(master): Michael Adam <obnox@samba.org> Autobuild-Date(master): Wed Oct 1 01:59:25 CEST 2014 on sn-devel-104
-rw-r--r--source3/modules/vfs_fruit.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
index 242a6cbbc84..c1555f0d674 100644
--- a/source3/modules/vfs_fruit.c
+++ b/source3/modules/vfs_fruit.c
@@ -2242,7 +2242,13 @@ static ssize_t fruit_pread(vfs_handle_struct *handle,
fsp->base_fsp->fsp_name->base_name,
vfs_translate_to_unix,
talloc_tos(), &name);
- if (!NT_STATUS_IS_OK(status)) {
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+ name = talloc_strdup(talloc_tos(), tmp_base_name);
+ if (name == NULL) {
+ rc = -1;
+ goto exit;
+ }
+ } else if (!NT_STATUS_IS_OK(status)) {
errno = map_errno_from_nt_status(status);
rc = -1;
goto exit;
@@ -2332,7 +2338,13 @@ static ssize_t fruit_pwrite(vfs_handle_struct *handle,
fsp->base_fsp->fsp_name->base_name,
vfs_translate_to_unix,
talloc_tos(), &name);
- if (!NT_STATUS_IS_OK(status)) {
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+ name = talloc_strdup(talloc_tos(), tmp_base_name);
+ if (name == NULL) {
+ rc = -1;
+ goto exit;
+ }
+ } else if (!NT_STATUS_IS_OK(status)) {
errno = map_errno_from_nt_status(status);
rc = -1;
goto exit;
@@ -2613,7 +2625,13 @@ static int fruit_fstat(vfs_handle_struct *handle, files_struct *fsp,
vfs_translate_to_unix,
talloc_tos(), &name);
- if (!NT_STATUS_IS_OK(status)) {
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+ name = talloc_strdup(talloc_tos(), tmp_base_name);
+ if (name == NULL) {
+ rc = -1;
+ goto exit;
+ }
+ } else if (!NT_STATUS_IS_OK(status)) {
errno = map_errno_from_nt_status(status);
rc = -1;
goto exit;