diff options
author | Jeremy Allison <jra@samba.org> | 2016-03-09 14:56:49 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2016-03-10 20:55:09 +0100 |
commit | 59f6a73c93c100406851d40e1d676f5b44fd355e (patch) | |
tree | 5704217bd0b32af6c1c41b2bfb9cac384e0365d1 /source3/lib/filename_util.c | |
parent | b96511f81b404466aefe5adb623334be254cafa4 (diff) | |
download | samba-59f6a73c93c100406851d40e1d676f5b44fd355e.tar.gz |
s3:lib. Add split_stream_filename() Not yet used.
Will replace internals of synthetic_smb_fname_split().
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>
Diffstat (limited to 'source3/lib/filename_util.c')
-rw-r--r-- | source3/lib/filename_util.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/source3/lib/filename_util.c b/source3/lib/filename_util.c index 9cd348a2939..1084c21be7d 100644 --- a/source3/lib/filename_util.c +++ b/source3/lib/filename_util.c @@ -280,3 +280,45 @@ bool ea_list_has_invalid_name(struct ea_list *ea_list) } return false; } + +/**************************************************************************** + Split an incoming name into tallocd filename and stream components. + Returns true on success, false on out of memory. +****************************************************************************/ + +bool split_stream_filename(TALLOC_CTX *ctx, + const char *filename_in, + char **filename_out, + char **streamname_out) +{ + const char *stream_name = NULL; + char *stream_out = NULL; + char *file_out = NULL; + + stream_name = strchr_m(filename_in, ':'); + + if (stream_name) { + stream_out = talloc_strdup(ctx, stream_name); + if (stream_out == NULL) { + return false; + } + file_out = talloc_strndup(ctx, + filename_in, + PTR_DIFF(stream_name, filename_in)); + } else { + file_out = talloc_strdup(ctx, filename_in); + } + + if (file_out == NULL) { + TALLOC_FREE(stream_out); + return false; + } + + if (filename_out) { + *filename_out = file_out; + } + if (streamname_out) { + *streamname_out = stream_out; + } + return true; +} |