diff options
author | Volker Lendecke <vl@samba.org> | 2013-04-11 15:24:55 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2013-04-17 14:49:54 -0700 |
commit | e1f4942a07ef20f3540a47dd08a7a64dbd469398 (patch) | |
tree | a1b81fd4f17d1fda135ec1305e4a7b1e692871e5 | |
parent | 0fa404c7d5c8de826d31958613b3e97587f0835d (diff) | |
download | samba-e1f4942a07ef20f3540a47dd08a7a64dbd469398.tar.gz samba-e1f4942a07ef20f3540a47dd08a7a64dbd469398.tar.bz2 samba-e1f4942a07ef20f3540a47dd08a7a64dbd469398.zip |
lib: Add cp_smb_filename
The interface of copy_smb_filename is just silly ;-)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/lib/filename_util.c | 39 |
2 files changed, 41 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 00a9a69d73..2ebd14b59d 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1611,6 +1611,8 @@ const char *fsp_fnum_dbg(const struct files_struct *fsp); NTSTATUS copy_smb_filename(TALLOC_CTX *ctx, const struct smb_filename *smb_fname_in, struct smb_filename **smb_fname_out); +struct smb_filename *cp_smb_filename(TALLOC_CTX *mem_ctx, + const struct smb_filename *in); bool is_ntfs_stream_smb_fname(const struct smb_filename *smb_fname); bool is_ntfs_default_stream_smb_fname(const struct smb_filename *smb_fname); diff --git a/source3/lib/filename_util.c b/source3/lib/filename_util.c index 9a6ab2b34a..67fa1a98f2 100644 --- a/source3/lib/filename_util.c +++ b/source3/lib/filename_util.c @@ -161,6 +161,45 @@ const char *fsp_fnum_dbg(const struct files_struct *fsp) return str; } +struct smb_filename *cp_smb_filename(TALLOC_CTX *mem_ctx, + const struct smb_filename *in) +{ + struct smb_filename *out; + + /* stream_name must always be NULL if there is no stream. */ + if (in->stream_name) { + SMB_ASSERT(in->stream_name[0] != '\0'); + } + + out = talloc_zero(mem_ctx, struct smb_filename); + if (out == NULL) { + return NULL; + } + if (in->base_name != NULL) { + out->base_name = talloc_strdup(out, in->base_name); + if (out->base_name == NULL) { + goto fail; + } + } + if (in->stream_name != NULL) { + out->stream_name = talloc_strdup(out, in->stream_name); + if (out->stream_name == NULL) { + goto fail; + } + } + if (in->original_lcomp != NULL) { + out->original_lcomp = talloc_strdup(out, in->original_lcomp); + if (out->original_lcomp == NULL) { + goto fail; + } + } + out->st = in->st; + return out; +fail: + TALLOC_FREE(out); + return NULL; +} + NTSTATUS copy_smb_filename(TALLOC_CTX *ctx, const struct smb_filename *smb_fname_in, struct smb_filename **smb_fname_out) |