aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_oss.c
diff options
context:
space:
mode:
authorrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-29 13:02:54 +0000
committerrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-29 13:02:54 +0000
commit001a1d99682a109e55f1c1bac13b9528a19b86c7 (patch)
tree2e1eeb22042f2482928a9101792d70e8e85640dd /channels/chan_oss.c
parent949c2def5eee13d399c77995ce5b979d440c4e74 (diff)
implement a 'toggle' option for 'console mute' and 'console unmute'
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@126311 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_oss.c')
-rw-r--r--channels/chan_oss.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/channels/chan_oss.c b/channels/chan_oss.c
index 268ff782f..e665eb2e9 100644
--- a/channels/chan_oss.c
+++ b/channels/chan_oss.c
@@ -1125,25 +1125,32 @@ static char *console_mute(struct ast_cli_entry *e, int cmd, struct ast_cli_args
{
struct chan_oss_pvt *o = find_desc(oss_active);
char *s;
+ int toggle = 0;
if (cmd == CLI_INIT) {
- e->command = "console {mute|unmute}";
+ e->command = "console {mute|unmute} [toggle]";
e->usage =
- "Usage: console {mute|unmute}\n"
+ "Usage: console {mute|unmute} [toggle]\n"
" Mute/unmute the microphone.\n";
return NULL;
} else if (cmd == CLI_GENERATE)
return NULL;
- if (a->argc != e->args)
+ if (a->argc > e->args)
return CLI_SHOWUSAGE;
- s = a->argv[e->args-1];
+ if (a->argc == e->args) {
+ if (strcasecmp(a->argv[e->args-1], "toggle"))
+ return CLI_SHOWUSAGE;
+ toggle = 1;
+ }
+ s = a->argv[e->args-2];
if (!strcasecmp(s, "mute"))
- o->mute = 1;
+ o->mute = toggle ? ~o->mute : 1;
else if (!strcasecmp(s, "unmute"))
- o->mute = 0;
+ o->mute = toggle ? ~o->mute : 0;
else
return CLI_SHOWUSAGE;
+ ast_cli(a->fd, "Console mic is %s\n", o->mute ? "off" : "on");
return CLI_SUCCESS;
}