diff options
author | Ralph Boehme <slow@samba.org> | 2015-10-11 09:38:18 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2015-10-20 11:51:16 +0200 |
commit | 9e8a1cb44e8f63073b6df109fe4800c604132e6d (patch) | |
tree | a31e5e10c57e27bb79e565a0f8aae039876a64cc | |
parent | 60ea0df0887e686653d4ec944e070bc8be3eaa28 (diff) | |
download | samba-9e8a1cb44e8f63073b6df109fe4800c604132e6d.tar.gz |
s3:smbstatus: add stream name to share_entry_forall()
Add stream name argument to share_entry_forall machinery so smbstatus
can print the stream name of a file.
Bug: https://bugzilla.samba.org/show_bug.cgi?id=11550
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit cd0c2a5eca43cea76491ae0d820414287c234c1a)
Autobuild-User(v4-3-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-3-test): Tue Oct 20 11:51:16 CEST 2015 on sn-devel-104
-rw-r--r-- | source3/locking/proto.h | 3 | ||||
-rw-r--r-- | source3/locking/share_mode_lock.c | 11 | ||||
-rw-r--r-- | source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 21 | ||||
-rw-r--r-- | source3/utils/status.c | 6 |
4 files changed, 30 insertions, 11 deletions
diff --git a/source3/locking/proto.h b/source3/locking/proto.h index 652ec2a4c66..8ff1c7cd632 100644 --- a/source3/locking/proto.h +++ b/source3/locking/proto.h @@ -202,7 +202,8 @@ int share_mode_forall(int (*fn)(struct file_id fid, const struct share_mode_data *data, void *private_data), void *private_data); -int share_entry_forall(int (*fn)(const struct share_mode_entry *, const char *, +int share_entry_forall(int (*fn)(const struct share_mode_entry *, + const char *, const char *, const char *, void *), void *private_data); bool share_mode_cleanup_disconnected(struct file_id id, diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c index c05d65d9ce7..fe105e3900a 100644 --- a/source3/locking/share_mode_lock.c +++ b/source3/locking/share_mode_lock.c @@ -732,7 +732,9 @@ int share_mode_forall(int (*fn)(struct file_id fid, struct share_entry_forall_state { int (*fn)(const struct share_mode_entry *e, - const char *service_path, const char *base_name, + const char *service_path, + const char *base_name, + const char *stream_name, void *private_data); void *private_data; }; @@ -748,7 +750,9 @@ static int share_entry_traverse_fn(struct file_id fid, int ret; ret = state->fn(&data->share_modes[i], - data->servicepath, data->base_name, + data->servicepath, + data->base_name, + data->stream_name, state->private_data); if (ret != 0) { return ret; @@ -764,7 +768,8 @@ static int share_entry_traverse_fn(struct file_id fid, ********************************************************************/ int share_entry_forall(int (*fn)(const struct share_mode_entry *, - const char *, const char *, void *), + const char *, const char *, + const char *, void *), void *private_data) { struct share_entry_forall_state state = { diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c index be79e6ab2ae..96c022beaa0 100644 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c @@ -80,7 +80,9 @@ struct share_conn_stat { ********************************************************************/ static int enum_file_fn(const struct share_mode_entry *e, - const char *sharepath, const char *fname, + const char *sharepath, + const char *fname, + const char *sname, void *private_data) { struct file_enum_count *fenum = @@ -129,8 +131,9 @@ static int enum_file_fn(const struct share_mode_entry *e, if ( strcmp( fname, "." ) == 0 ) { fullpath = talloc_asprintf(fenum->ctx, "C:%s", sharepath ); } else { - fullpath = talloc_asprintf(fenum->ctx, "C:%s/%s", - sharepath, fname ); + fullpath = talloc_asprintf(fenum->ctx, "C:%s/%s%s", + sharepath, fname, + sname ? sname : ""); } if (!fullpath) { return 0; @@ -829,7 +832,9 @@ static WERROR init_srv_sess_info_0(struct pipes_struct *p, **********************************************************************/ static int count_sess_files_fn(const struct share_mode_entry *e, - const char *sharepath, const char *fname, + const char *sharepath, + const char *fname, + const char *sname, void *data) { struct sess_file_info *info = data; @@ -954,7 +959,9 @@ static WERROR init_srv_sess_info_1(struct pipes_struct *p, ********************************************************************/ static int share_file_fn(const struct share_mode_entry *e, - const char *sharepath, const char *fname, + const char *sharepath, + const char *fname, + const char *sname, void *data) { struct share_file_stat *sfs = data; @@ -2692,7 +2699,9 @@ struct enum_file_close_state { }; static int enum_file_close_fn(const struct share_mode_entry *e, - const char *sharepath, const char *fname, + const char *sharepath, + const char *fname, + const char *sname, void *private_data) { char msg[MSG_SMB_SHARE_MODE_ENTRY_SIZE]; diff --git a/source3/utils/status.c b/source3/utils/status.c index a22d05be7bb..f81ab5f1e22 100644 --- a/source3/utils/status.c +++ b/source3/utils/status.c @@ -117,6 +117,7 @@ static bool Ucrit_addPid( struct server_id pid ) static int print_share_mode(const struct share_mode_entry *e, const char *sharepath, const char *fname, + const char *sname, void *dummy) { static int count; @@ -190,7 +191,10 @@ static int print_share_mode(const struct share_mode_entry *e, d_printf("NONE "); } - d_printf(" %s %s %s",sharepath, fname, time_to_asc((time_t)e->time.tv_sec)); + d_printf(" %s %s%s %s", + sharepath, fname, + sname ? sname : "", + time_to_asc((time_t)e->time.tv_sec)); } return 0; |