summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2015-10-11 09:38:18 +0200
committerKarolin Seeger <kseeger@samba.org>2015-10-20 11:51:16 +0200
commit9e8a1cb44e8f63073b6df109fe4800c604132e6d (patch)
treea31e5e10c57e27bb79e565a0f8aae039876a64cc
parent60ea0df0887e686653d4ec944e070bc8be3eaa28 (diff)
downloadsamba-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.h3
-rw-r--r--source3/locking/share_mode_lock.c11
-rw-r--r--source3/rpc_server/srvsvc/srv_srvsvc_nt.c21
-rw-r--r--source3/utils/status.c6
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;