* Given a stream name, populate xattr_name with the xattr name to use for
* accessing the stream.
*/
-static NTSTATUS streams_xattr_get_name(vfs_handle_struct *handle,
- TALLOC_CTX *ctx,
- const char *stream_name,
- char **xattr_name)
+static int streams_xattr_get_name(vfs_handle_struct *handle,
+ TALLOC_CTX *ctx,
+ const char *stream_name,
+ char **xattr_name)
{
size_t stream_name_len = strlen(stream_name);
char *stype;
struct streams_xattr_config *config;
- SMB_VFS_HANDLE_GET_DATA(handle, config, struct streams_xattr_config,
- return NT_STATUS_UNSUCCESSFUL);
+ SMB_VFS_HANDLE_GET_DATA(handle,
+ config,
+ struct streams_xattr_config,
+ return EACCES);
SMB_ASSERT(stream_name[0] == ':');
stream_name += 1;
* We only support one stream type: "$DATA"
*/
if (strcasecmp_m(stype, ":$DATA") != 0) {
- return NT_STATUS_INVALID_PARAMETER;
+ return EINVAL;
}
/* Split name and type */
stream_name,
config->store_stream_type ? ":$DATA" : "");
if (*xattr_name == NULL) {
- return NT_STATUS_NO_MEMORY;
+ return ENOMEM;
}
DEBUG(10, ("xattr_name: %s, stream_name: %s\n", *xattr_name,
stream_name));
- return NT_STATUS_OK;
+ return 0;
}
static bool streams_xattr_recheck(struct stream_io *sio)
{
- NTSTATUS status;
+ int ret;
char *xattr_name = NULL;
if (sio->fsp->fsp_name == sio->fsp_name_ptr) {
return false;
}
- status = streams_xattr_get_name(sio->handle, talloc_tos(),
- sio->fsp->fsp_name->stream_name,
- &xattr_name);
- if (!NT_STATUS_IS_OK(status)) {
+ ret = streams_xattr_get_name(sio->handle,
+ talloc_tos(),
+ sio->fsp->fsp_name->stream_name,
+ &xattr_name);
+ if (ret != 0) {
return false;
}
struct smb_filename *smb_fname)
{
NTSTATUS status;
+ int ret;
int result = -1;
char *xattr_name = NULL;
char *tmp_stream_name = NULL;
}
/* Derive the xattr name to lookup. */
- status = streams_xattr_get_name(handle, talloc_tos(),
- smb_fname->stream_name, &xattr_name);
- if (!NT_STATUS_IS_OK(status)) {
- errno = map_errno_from_nt_status(status);
+ ret = streams_xattr_get_name(handle,
+ talloc_tos(),
+ smb_fname->stream_name,
+ &xattr_name);
+ if (ret != 0) {
+ errno = ret;
return -1;
}
SMB_ASSERT(fsp_is_alternate_stream(fsp));
SMB_ASSERT(dirfsp == NULL);
- status = streams_xattr_get_name(handle, talloc_tos(),
- smb_fname->stream_name, &xattr_name);
- if (!NT_STATUS_IS_OK(status)) {
- errno = map_errno_from_nt_status(status);
+ ret = streams_xattr_get_name(handle,
+ talloc_tos(),
+ smb_fname->stream_name,
+ &xattr_name);
+ if (ret != 0) {
+ errno = ret;
goto fail;
}
/* A stream can never be rmdir'ed */
SMB_ASSERT((flags & AT_REMOVEDIR) == 0);
- status = streams_xattr_get_name(handle, talloc_tos(),
- smb_fname->stream_name, &xattr_name);
- if (!NT_STATUS_IS_OK(status)) {
- errno = map_errno_from_nt_status(status);
+ ret = streams_xattr_get_name(handle,
+ talloc_tos(),
+ smb_fname->stream_name,
+ &xattr_name);
+ if (ret != 0) {
+ errno = ret;
goto fail;
}
}
/* Get the xattr names. */
- status = streams_xattr_get_name(handle, talloc_tos(),
- smb_fname_src->stream_name,
- &src_xattr_name);
- if (!NT_STATUS_IS_OK(status)) {
- errno = map_errno_from_nt_status(status);
+ ret = streams_xattr_get_name(handle,
+ talloc_tos(),
+ smb_fname_src->stream_name,
+ &src_xattr_name);
+ if (ret != 0) {
+ errno = ret;
goto fail;
}
- status = streams_xattr_get_name(handle, talloc_tos(),
- smb_fname_dst->stream_name,
- &dst_xattr_name);
- if (!NT_STATUS_IS_OK(status)) {
- errno = map_errno_from_nt_status(status);
+ ret = streams_xattr_get_name(handle,
+ talloc_tos(),
+ smb_fname_dst->stream_name,
+ &dst_xattr_name);
+ if (ret != 0) {
+ errno = ret;
goto fail;
}