diff options
author | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-29 13:02:54 +0000 |
---|---|---|
committer | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-29 13:02:54 +0000 |
commit | 001a1d99682a109e55f1c1bac13b9528a19b86c7 (patch) | |
tree | 2e1eeb22042f2482928a9101792d70e8e85640dd /channels/chan_oss.c | |
parent | 949c2def5eee13d399c77995ce5b979d440c4e74 (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.c | 19 |
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; } |