From 0d40ab9b5c60569387e69b0505a7748af10e29ae Mon Sep 17 00:00:00 2001 From: Marco van Wieringen Date: Fri, 10 Jun 2016 19:01:47 +0200 Subject: [PATCH] bcommand: Add type= filtering to .pools cmd. --- src/defaultconfigs/diskonly/bareos-dir.conf.in | 2 +- src/dird/ua_cmds.c | 2 +- src/dird/ua_dotcmds.c | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/defaultconfigs/diskonly/bareos-dir.conf.in b/src/defaultconfigs/diskonly/bareos-dir.conf.in index 1403977ec2b..d90a192cb6e 100644 --- a/src/defaultconfigs/diskonly/bareos-dir.conf.in +++ b/src/defaultconfigs/diskonly/bareos-dir.conf.in @@ -330,7 +330,7 @@ Pool { # Pool { Name = Scratch - Pool Type = Backup + Pool Type = Scratch } # diff --git a/src/dird/ua_cmds.c b/src/dird/ua_cmds.c index 35fdbcfd769..b9b14538de9 100644 --- a/src/dird/ua_cmds.c +++ b/src/dird/ua_cmds.c @@ -192,7 +192,7 @@ static struct cmdstruct commands[] = { { NT_(".msgs"), dot_msgs_cmd, _("List all message resources"), NULL, false, false }, { NT_(".pools"), dot_pools_cmd, _("List all pool resources"), - NULL, true, false }, + NT_("type="), true, false }, { NT_(".profiles"), dot_profiles_cmd, _("List all profile resources"), NULL, true, false }, { NT_(".quit"), quit_cmd, _("Close connection"), diff --git a/src/dird/ua_dotcmds.c b/src/dird/ua_dotcmds.c index 5bcfabfda55..71a90ac01b6 100644 --- a/src/dird/ua_dotcmds.c +++ b/src/dird/ua_dotcmds.c @@ -942,15 +942,25 @@ bool dot_msgs_cmd(UAContext *ua, const char *cmd) bool dot_pools_cmd(UAContext *ua, const char *cmd) { + int pos, length; POOLRES *pool; + pos = find_arg_with_value(ua, "type"); + if (pos >= 0) { + length = strlen(ua->argv[pos]); + } else { + length = 0; + } + LockRes(); ua->send->array_start("pools"); foreach_res(pool, R_POOL) { if (acl_access_ok(ua, Pool_ACL, pool->name())) { - ua->send->object_start(); - ua->send->object_key_value("name", pool->name(), "%s\n"); - ua->send->object_end(); + if (pos == -1 || bstrncasecmp(pool->pool_type, ua->argv[pos], length)) { + ua->send->object_start(); + ua->send->object_key_value("name", pool->name(), "%s\n"); + ua->send->object_end(); + } } } ua->send->array_end("pools");