aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2005-11-08 04:48:00 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2005-11-08 04:48:00 +0000
commit465d1d7712849904d15efcdeaf97d7bcee060d95 (patch)
treec7e639938f2771490a3e7a7ca4e92fc23eb6ce01 /apps
parent488a0f5ebbe12ff1b438cad6b44359f91a38084e (diff)
make app_queue 1.2 jump compliant (issue #5580)
add missing includes of stdio.h remove some unused and duplicate headers git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7026 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rwxr-xr-xapps/app_chanisavail.c4
-rwxr-xr-xapps/app_chanspy.c3
-rwxr-xr-xapps/app_controlplayback.c3
-rwxr-xr-xapps/app_db.c3
-rwxr-xr-xapps/app_dictate.c3
-rwxr-xr-xapps/app_directed_pickup.c3
-rwxr-xr-xapps/app_dumpchan.c3
-rwxr-xr-xapps/app_echo.c1
-rwxr-xr-xapps/app_enumlookup.c4
-rwxr-xr-xapps/app_externalivr.c4
-rwxr-xr-xapps/app_flash.c3
-rwxr-xr-xapps/app_forkcdr.c4
-rwxr-xr-xapps/app_getcpeid.c1
-rwxr-xr-xapps/app_hasnewvoicemail.c5
-rwxr-xr-xapps/app_image.c3
-rwxr-xr-xapps/app_lookupblacklist.c3
-rwxr-xr-xapps/app_lookupcidname.c3
-rwxr-xr-xapps/app_macro.c5
-rwxr-xr-xapps/app_md5.c3
-rwxr-xr-xapps/app_meetme.c4
-rwxr-xr-xapps/app_milliwatt.c4
-rwxr-xr-xapps/app_mixmonitor.c3
-rwxr-xr-xapps/app_parkandannounce.c5
-rwxr-xr-xapps/app_playback.c1
-rwxr-xr-xapps/app_privacy.c3
-rwxr-xr-xapps/app_queue.c271
-rwxr-xr-xapps/app_read.c3
-rwxr-xr-xapps/app_realtime.c3
-rwxr-xr-xapps/app_record.c3
-rwxr-xr-xapps/app_senddtmf.c3
-rwxr-xr-xapps/app_sendtext.c3
-rwxr-xr-xapps/app_setcallerid.c3
-rwxr-xr-xapps/app_setcidname.c3
-rwxr-xr-xapps/app_setcidnum.c3
-rwxr-xr-xapps/app_setrdnis.c3
-rwxr-xr-xapps/app_sms.c7
-rwxr-xr-xapps/app_softhangup.c5
-rwxr-xr-xapps/app_striplsd.c3
-rwxr-xr-xapps/app_substring.c6
-rwxr-xr-xapps/app_system.c2
-rwxr-xr-xapps/app_talkdetect.c3
-rwxr-xr-xapps/app_test.c7
-rwxr-xr-xapps/app_transfer.c3
-rwxr-xr-xapps/app_url.c3
-rwxr-xr-xapps/app_userevent.c4
-rwxr-xr-xapps/app_waitforring.c4
-rwxr-xr-xapps/app_waitforsilence.c4
-rwxr-xr-xapps/app_while.c3
-rwxr-xr-xapps/app_zapateller.c3
-rwxr-xr-xapps/app_zapbarge.c4
-rwxr-xr-xapps/app_zapscan.c4
51 files changed, 269 insertions, 175 deletions
diff --git a/apps/app_chanisavail.c b/apps/app_chanisavail.c
index 10a377f01..acdc4d9f8 100755
--- a/apps/app_chanisavail.c
+++ b/apps/app_chanisavail.c
@@ -24,10 +24,10 @@
*/
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
#include <sys/ioctl.h>
#include "asterisk.h"
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 07b8d8d60..4e96d8f6d 100755
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -23,8 +23,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <ctype.h>
#include "asterisk.h"
diff --git a/apps/app_controlplayback.c b/apps/app_controlplayback.c
index 47b82ac4e..6cd577d7f 100755
--- a/apps/app_controlplayback.c
+++ b/apps/app_controlplayback.c
@@ -22,8 +22,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_db.c b/apps/app_db.c
index 60d25f0e6..659f9686e 100755
--- a/apps/app_db.c
+++ b/apps/app_db.c
@@ -26,8 +26,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_dictate.c b/apps/app_dictate.c
index 0feee10b8..91a1650ea 100755
--- a/apps/app_dictate.c
+++ b/apps/app_dictate.c
@@ -26,8 +26,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <sys/stat.h> /* for mkdir */
#include "asterisk.h"
diff --git a/apps/app_directed_pickup.c b/apps/app_directed_pickup.c
index 400ee0728..cd9c62e01 100755
--- a/apps/app_directed_pickup.c
+++ b/apps/app_directed_pickup.c
@@ -24,8 +24,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_dumpchan.c b/apps/app_dumpchan.c
index 15fb3baba..4802dfee1 100755
--- a/apps/app_dumpchan.c
+++ b/apps/app_dumpchan.c
@@ -26,8 +26,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_echo.c b/apps/app_echo.c
index 1fbfba5ef..2b7c20079 100755
--- a/apps/app_echo.c
+++ b/apps/app_echo.c
@@ -24,6 +24,7 @@
*/
#include <stdlib.h>
+#include <stdio.h>
#include <unistd.h>
#include <string.h>
diff --git a/apps/app_enumlookup.c b/apps/app_enumlookup.c
index 6ff2141b0..435ff61e1 100755
--- a/apps/app_enumlookup.c
+++ b/apps/app_enumlookup.c
@@ -24,9 +24,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <stdlib.h>
+#include <unistd.h>
#include <ctype.h>
#include "asterisk.h"
diff --git a/apps/app_externalivr.c b/apps/app_externalivr.c
index c3e3c5627..ff5147d72 100755
--- a/apps/app_externalivr.c
+++ b/apps/app_externalivr.c
@@ -27,9 +27,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <stdlib.h>
+#include <unistd.h>
#include <errno.h>
#include "asterisk.h"
diff --git a/apps/app_flash.c b/apps/app_flash.c
index 9a53dd382..a9aae22b8 100755
--- a/apps/app_flash.c
+++ b/apps/app_flash.c
@@ -23,9 +23,10 @@
* \ingroup applications
*/
+#include <stdlib.h>
+#include <stdio.h>
#include <string.h>
#include <errno.h>
-#include <stdlib.h>
#include <sys/ioctl.h>
#ifdef __linux__
#include <linux/zaptel.h>
diff --git a/apps/app_forkcdr.c b/apps/app_forkcdr.c
index ad8eaa0a7..21073ff50 100755
--- a/apps/app_forkcdr.c
+++ b/apps/app_forkcdr.c
@@ -23,9 +23,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <pthread.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_getcpeid.c b/apps/app_getcpeid.c
index 0eb16917a..b2d883bc1 100755
--- a/apps/app_getcpeid.c
+++ b/apps/app_getcpeid.c
@@ -24,6 +24,7 @@
*/
#include <stdlib.h>
+#include <stdio.h>
#include <unistd.h>
#include <string.h>
diff --git a/apps/app_hasnewvoicemail.c b/apps/app_hasnewvoicemail.c
index abb42e0c2..678d8c69b 100755
--- a/apps/app_hasnewvoicemail.c
+++ b/apps/app_hasnewvoicemail.c
@@ -27,11 +27,12 @@
* \ingroup applications
*/
-#include <sys/types.h>
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <dirent.h>
+#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_image.c b/apps/app_image.c
index 3e0f858d2..e23b274a9 100755
--- a/apps/app_image.c
+++ b/apps/app_image.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_lookupblacklist.c b/apps/app_lookupblacklist.c
index 93d3c8c49..1f7e30fd8 100755
--- a/apps/app_lookupblacklist.c
+++ b/apps/app_lookupblacklist.c
@@ -24,8 +24,9 @@
*
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_lookupcidname.c b/apps/app_lookupcidname.c
index bce2768f4..52587b03a 100755
--- a/apps/app_lookupcidname.c
+++ b/apps/app_lookupcidname.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_macro.c b/apps/app_macro.c
index 6d99a79ca..72b75777c 100755
--- a/apps/app_macro.c
+++ b/apps/app_macro.c
@@ -23,10 +23,11 @@
* \ingroup applications
*/
-#include <sys/types.h>
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_md5.c b/apps/app_md5.c
index b9d5412b1..c9f4f0e11 100755
--- a/apps/app_md5.c
+++ b/apps/app_md5.c
@@ -24,8 +24,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index bca2ad972..e9f52a707 100755
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -24,10 +24,10 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <errno.h>
-#include <stdlib.h>
#include <sys/ioctl.h>
#ifdef __linux__
#include <linux/zaptel.h>
diff --git a/apps/app_milliwatt.c b/apps/app_milliwatt.c
index 446fd150a..5ef708c1f 100755
--- a/apps/app_milliwatt.c
+++ b/apps/app_milliwatt.c
@@ -24,9 +24,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <stdlib.h>
+#include <unistd.h>
#include <errno.h>
#include "asterisk.h"
diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c
index ddf8f5248..666737717 100755
--- a/apps/app_mixmonitor.c
+++ b/apps/app_mixmonitor.c
@@ -27,8 +27,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_parkandannounce.c b/apps/app_parkandannounce.c
index a40c2efd7..bb7aa38b0 100755
--- a/apps/app_parkandannounce.c
+++ b/apps/app_parkandannounce.c
@@ -26,10 +26,11 @@
* \ingroup applications
*/
-#include <sys/types.h>
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_playback.c b/apps/app_playback.c
index 89e72669b..485e73519 100755
--- a/apps/app_playback.c
+++ b/apps/app_playback.c
@@ -25,6 +25,7 @@
#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
#include "asterisk.h"
diff --git a/apps/app_privacy.c b/apps/app_privacy.c
index fe5669485..799f31bd2 100755
--- a/apps/app_privacy.c
+++ b/apps/app_privacy.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_queue.c b/apps/app_queue.c
index ae622f05a..5d8b4bc4f 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -74,6 +74,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/options.h"
+#include "asterisk/app.h"
+#include "asterisk/linkedlists.h"
#include "asterisk/module.h"
#include "asterisk/translate.h"
#include "asterisk/say.h"
@@ -151,27 +153,39 @@ static char *descrip =
static char *app_aqm = "AddQueueMember" ;
static char *app_aqm_synopsis = "Dynamically adds queue members" ;
static char *app_aqm_descrip =
-" AddQueueMember(queuename[|interface[|penalty]]):\n"
+" AddQueueMember(queuename[|interface[|penalty[|options]]]):\n"
"Dynamically adds interface to an existing queue.\n"
"If the interface is already in the queue and there exists an n+101 priority\n"
"then it will then jump to this priority. Otherwise it will return an error\n"
+"The option string may contain zero or more of the following characters:\n"
+" 'j' -- jump to +101 priority when appropriate.\n"
+" This application sets the following channel variable upon completion:\n"
+" AQMSTATUS The status of the attempt to add a queue member as a \n"
+" text string, one of\n"
+" ADDED | MEMBERALREADY | NOSUCHQUEUE \n"
"Example: AddQueueMember(techsupport|SIP/3000)\n"
"";
static char *app_rqm = "RemoveQueueMember" ;
static char *app_rqm_synopsis = "Dynamically removes queue members" ;
static char *app_rqm_descrip =
-" RemoveQueueMember(queuename[|interface]):\n"
+" RemoveQueueMember(queuename[|interface[|options]]):\n"
"Dynamically removes interface to an existing queue\n"
"If the interface is NOT in the queue and there exists an n+101 priority\n"
"then it will then jump to this priority. Otherwise it will return an error\n"
+"The option string may contain zero or more of the following characters:\n"
+" 'j' -- jump to +101 priority when appropriate.\n"
+" This application sets the following channel variable upon completion:\n"
+" RQMSTATUS The status of the attempt to remove a queue member as a\n"
+" text string, one of\n"
+" REMOVED | NOTINQUEUE | NOSUCHQUEUE \n"
"Example: RemoveQueueMember(techsupport|SIP/3000)\n"
"";
static char *app_pqm = "PauseQueueMember" ;
static char *app_pqm_synopsis = "Pauses a queue member" ;
static char *app_pqm_descrip =
-" PauseQueueMember([queuename]|interface):\n"
+" PauseQueueMember([queuename]|interface[|options]):\n"
"Pauses (blocks calls for) a queue member.\n"
"The given interface will be paused in the given queue. This prevents\n"
"any calls from being sent from the queue to the interface until it is\n"
@@ -179,17 +193,30 @@ static char *app_pqm_descrip =
"queuename is given, the interface is paused in every queue it is a\n"
"member of. If the interface is not in the named queue, or if no queue\n"
"is given and the interface is not in any queue, it will jump to\n"
-" priority n+101, if it exists. The application will fail if the interface is not\n"
-"found and no extension to jump to exists.\n"
+"priority n+101, if it exists and the appropriate options are set.\n"
+"The application will fail if the interface is not found and no extension\n"
+"to jump to exists.\n"
+"The option string may contain zero or more of the following characters:\n"
+" 'j' -- jump to +101 priority when appropriate.\n"
+" This application sets the following channel variable upon completion:\n"
+" PQMSTATUS The status of the attempt to pause a queue member as a\n"
+" text string, one of\n"
+" PAUSED | NOTFOUND\n"
"Example: PauseQueueMember(|SIP/3000)\n";
static char *app_upqm = "UnpauseQueueMember" ;
static char *app_upqm_synopsis = "Unpauses a queue member" ;
static char *app_upqm_descrip =
-" UnpauseQueueMember([queuename]|interface):\n"
+" UnpauseQueueMember([queuename]|interface[|options]):\n"
"Unpauses (resumes calls to) a queue member.\n"
"This is the counterpart to PauseQueueMember and operates exactly the\n"
"same way, except it unpauses instead of pausing the given interface.\n"
+"The option string may contain zero or more of the following characters:\n"
+" 'j' -- jump to +101 priority when appropriate.\n"
+" This application sets the following channel variable upon completion:\n"
+" UPQMSTATUS The status of the attempt to unpause a queue \n"
+" member as a text string, one of\n"
+" UNPAUSED | NOTFOUND\n"
"Example: UnpauseQueueMember(|SIP/3000)\n";
/*! \brief Persistent Members astdb family */
@@ -243,6 +270,7 @@ struct localuser {
LOCAL_USER_DECL;
+
struct queue_ent {
struct ast_call_queue *parent; /*!< What queue is our parent */
char moh[80]; /*!< Name of musiconhold to be used */
@@ -2554,88 +2582,112 @@ static void reload_queue_members(void)
static int pqm_exec(struct ast_channel *chan, void *data)
{
struct localuser *u;
- char *queuename, *interface;
+ char *parse;
+ int priority_jump = 0;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(queuename);
+ AST_APP_ARG(interface);
+ AST_APP_ARG(options);
+ );
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "PauseQueueMember requires an argument ([queuename]|interface])\n");
+ ast_log(LOG_WARNING, "PauseQueueMember requires an argument ([queuename]|interface[|options])\n");
return -1;
}
LOCAL_USER_ADD(u);
- queuename = ast_strdupa((char *)data);
- if (!queuename) {
- ast_log(LOG_ERROR, "Out of memory\n");
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
LOCAL_USER_REMOVE(u);
return -1;
}
- interface = strchr(queuename, '|');
- if (!interface) {
- ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface])\n");
+ AST_STANDARD_APP_ARGS(args, parse);
+
+ if (args.options) {
+ if (strchr(args.options, 'j'))
+ priority_jump = 1;
+ }
+
+ if (ast_strlen_zero(args.interface)) {
+ ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface[|options])\n");
LOCAL_USER_REMOVE(u);
return -1;
}
- *interface = '\0';
- interface++;
-
- if (set_member_paused(queuename, interface, 1)) {
- ast_log(LOG_WARNING, "Attempt to pause interface %s, not found\n", interface);
- if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) {
- LOCAL_USER_REMOVE(u);
- return 0;
+ if (set_member_paused(args.queuename, args.interface, 1)) {
+ ast_log(LOG_WARNING, "Attempt to pause interface %s, not found\n", args.interface);
+ if (priority_jump || option_priority_jumping) {
+ if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) {
+ pbx_builtin_setvar_helper(chan, "PQMSTATUS", "NOTFOUND");
+ LOCAL_USER_REMOVE(u);
+ return 0;
+ }
}
LOCAL_USER_REMOVE(u);
+ pbx_builtin_setvar_helper(chan, "PQMSTATUS", "NOTFOUND");
return -1;
}
LOCAL_USER_REMOVE(u);
-
+ pbx_builtin_setvar_helper(chan, "PQMSTATUS", "PAUSED");
return 0;
}
static int upqm_exec(struct ast_channel *chan, void *data)
{
struct localuser *u;
- char *queuename, *interface;
+ char *parse;
+ int priority_jump = 0;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(queuename);
+ AST_APP_ARG(interface);
+ AST_APP_ARG(options);
+ );
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "UnpauseQueueMember requires an argument ([queuename]|interface])\n");
+ ast_log(LOG_WARNING, "UnpauseQueueMember requires an argument ([queuename]|interface[|options])\n");
return -1;
}
LOCAL_USER_ADD(u);
- queuename = ast_strdupa((char *)data);
- if (!queuename) {
- ast_log(LOG_ERROR, "Out of memory\n");
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
LOCAL_USER_REMOVE(u);
return -1;
}
- interface = strchr(queuename, '|');
- if (!interface) {
- ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface])\n");
+ AST_STANDARD_APP_ARGS(args, parse);
+
+ if (args.options) {
+ if (strchr(args.options, 'j'))
+ priority_jump = 1;
+ }
+
+ if (ast_strlen_zero(args.interface)) {
+ ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface[|options])\n");
LOCAL_USER_REMOVE(u);
return -1;
}
- *interface = '\0';
- interface++;
-
- if (set_member_paused(queuename, interface, 0)) {
- ast_log(LOG_WARNING, "Attempt to unpause interface %s, not found\n", interface);
- if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) {
- LOCAL_USER_REMOVE(u);
- return 0;
+ if (set_member_paused(args.queuename, args.interface, 0)) {
+ ast_log(LOG_WARNING, "Attempt to unpause interface %s, not found\n", args.interface);
+ if (priority_jump || option_priority_jumping) {
+ if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) {
+ pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "NOTFOUND");
+ LOCAL_USER_REMOVE(u);
+ return 0;
+ }
}
LOCAL_USER_REMOVE(u);
+ pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "NOTFOUND");
return -1;
}
LOCAL_USER_REMOVE(u);
-
+ pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "UNPAUSED");
return 0;
}
@@ -2643,52 +2695,58 @@ static int rqm_exec(struct ast_channel *chan, void *data)
{
int res=-1;
struct localuser *u;
- char *info, *queuename;
- char tmpchan[256]="";
- char *interface = NULL;
+ char *parse, *temppos = NULL;
+ int priority_jump = 0;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(queuename);
+ AST_APP_ARG(interface);
+ AST_APP_ARG(options);
+ );
+
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "RemoveQueueMember requires an argument (queuename[|interface])\n");
+ ast_log(LOG_WARNING, "RemoveQueueMember requires an argument (queuename[|interface[|options]])\n");
return -1;
}
LOCAL_USER_ADD(u);
- info = ast_strdupa(data);
- if (!info) {
- ast_log(LOG_ERROR, "Out of memory\n");
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
LOCAL_USER_REMOVE(u);
return -1;
}
- queuename = info;
- if (queuename) {
- interface = strchr(queuename, '|');
- if (interface) {
- *interface = '\0';
- interface++;
- }
- else {
- ast_copy_string(tmpchan, chan->name, sizeof(tmpchan));
- interface = strrchr(tmpchan, '-');
- if (interface)
- *interface = '\0';
- interface = tmpchan;
- }
+ AST_STANDARD_APP_ARGS(args, parse);
+
+ if (ast_strlen_zero(args.interface)) {
+ ast_copy_string(args.interface, chan->name, sizeof(args.interface));
+ temppos = strrchr(args.interface, '-');
+ if (temppos)
+ *temppos = '\0';
}
- switch (remove_from_queue(queuename, interface)) {
+ if (args.options) {
+ if (strchr(args.options, 'j'))
+ priority_jump = 1;
+ }
+
+ switch (remove_from_queue(args.queuename, args.interface)) {
case RES_OKAY:
- ast_log(LOG_NOTICE, "Removed interface '%s' from queue '%s'\n", interface, queuename);
+ ast_log(LOG_NOTICE, "Removed interface '%s' from queue '%s'\n", args.interface, args.queuename);
+ pbx_builtin_setvar_helper(chan, "RQMSTATUS", "REMOVED");
res = 0;
break;
case RES_EXISTS:
- ast_log(LOG_WARNING, "Unable to remove interface '%s' from queue '%s': Not there\n", interface, queuename);
- ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
+ ast_log(LOG_WARNING, "Unable to remove interface '%s' from queue '%s': Not there\n", args.interface, args.queuename);
+ if (priority_jump || option_priority_jumping)
+ ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
+ pbx_builtin_setvar_helper(chan, "RQMSTATUS", "NOTINQUEUE");
res = 0;
break;
case RES_NOSUCHQUEUE:
- ast_log(LOG_WARNING, "Unable to remove interface from queue '%s': No such queue\n", queuename);
+ ast_log(LOG_WARNING, "Unable to remove interface from queue '%s': No such queue\n", args.queuename);
+ pbx_builtin_setvar_helper(chan, "RQMSTATUS", "NOSUCHQUEUE");
res = 0;
break;
case RES_OUTOFMEMORY:
@@ -2704,72 +2762,71 @@ static int aqm_exec(struct ast_channel *chan, void *data)
{
int res=-1;
struct localuser *u;
- char *queuename;
- char *info;
- char tmpchan[512]="";
- char *interface=NULL;
- char *penaltys=NULL;
+ char *parse, *temppos = NULL;
+ int priority_jump = 0;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(queuename);
+ AST_APP_ARG(interface);
+ AST_APP_ARG(penalty);
+ AST_APP_ARG(options);
+ );
int penalty = 0;
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "AddQueueMember requires an argument (queuename[|[interface][|penalty]])\n");
+ ast_log(LOG_WARNING, "AddQueueMember requires an argument (queuename[|[interface]|[penalty][|options]])\n");
return -1;
}
LOCAL_USER_ADD(u);
- info = ast_strdupa(data);
- if (!info) {
- ast_log(LOG_ERROR, "Out of memory\n");
+ if (!(parse = ast_strdupa(data))) {
+ ast_log(LOG_WARNING, "Memory Error!\n");
LOCAL_USER_REMOVE(u);
return -1;
}
- queuename = info;
- if (queuename) {
- interface = strchr(queuename, '|');
- if (interface) {
- *interface = '\0';
- interface++;
- }
- if (interface) {
- penaltys = strchr(interface, '|');
- if (penaltys) {
- *penaltys = '\0';
- penaltys++;
- }
- }
- if (ast_strlen_zero(interface)) {
- ast_copy_string(tmpchan, chan->name, sizeof(tmpchan));
- interface = strrchr(tmpchan, '-');
- if (interface)
- *interface = '\0';
- interface = tmpchan;
- }
- if (!ast_strlen_zero(penaltys)) {
- if ((sscanf(penaltys, "%d", &penalty) != 1) || penalty < 0) {
- ast_log(LOG_WARNING, "Penalty '%s' is invalid, must be an integer >= 0\n", penaltys);
- penalty = 0;
- }
+ AST_STANDARD_APP_ARGS(args, parse);
+
+ if (ast_strlen_zero(args.interface)) {
+ ast_copy_string(args.interface, chan->name, sizeof(args.interface));
+ temppos = strrchr(args.interface, '-');
+ if (temppos)
+ *temppos = '\0';
+ }
+
+ if (!ast_strlen_zero(args.penalty)) {
+ if ((sscanf(args.penalty, "%d", &penalty) != 1) || penalty < 0) {
+ ast_log(LOG_WARNING, "Penalty '%s' is invalid, must be an integer >= 0\n", args.penalty);
+ penalty = 0;
}
}
+
+ if (args.options) {
+ if (strchr(args.options, 'j'))
+ priority_jump = 1;
+ }
- switch (add_to_queue(queuename, interface, penalty, 0, queue_persistent_members)) {
+
+ switch (add_to_queue(args.queuename, args.interface, penalty, 0, queue_persistent_members)) {
case RES_OKAY:
- ast_log(LOG_NOTICE, "Added interface '%s' to queue '%s'\n", interface, queuename);
+ ast_log(LOG_NOTICE, "Added interface '%s' to queue '%s'\n", args.interface, args.queuename);
+ pbx_builtin_setvar_helper(chan, "AQMSTATUS", "ADDED");
res = 0;
break;
case RES_EXISTS:
- ast_log(LOG_WARNING, "Unable to add interface '%s' to queue '%s': Already there\n", interface, queuename);
- ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
+ ast_log(LOG_WARNING, "Unable to add interface '%s' to queue '%s': Already there\n", args.interface, args.queuename);
+ if (priority_jump || option_priority_jumping)
+ ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
+ pbx_builtin_setvar_helper(chan, "AQMSTATUS", "MEMBERALREADY");
res = 0;
break;
case RES_NOSUCHQUEUE:
- ast_log(LOG_WARNING, "Unable to add interface to queue '%s': No such queue\n", queuename);
+ ast_log(LOG_WARNING, "Unable to add interface to queue '%s': No such queue\n", args.queuename);
+ pbx_builtin_setvar_helper(chan, "AQMSTATUS", "NOSUCHQUEUE");
res = 0;
break;
case RES_OUTOFMEMORY:
- ast_log(LOG_ERROR, "Out of memory adding member %s to queue %s\n", interface, queuename);
+ ast_log(LOG_ERROR, "Out of memory adding member %s to queue %s\n", args.interface, args.queuename);
break;
}
diff --git a/apps/app_read.c b/apps/app_read.c
index e024a5c38..90e180fcf 100755
--- a/apps/app_read.c
+++ b/apps/app_read.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_realtime.c b/apps/app_realtime.c
index 80f092528..a731fd7c9 100755
--- a/apps/app_realtime.c
+++ b/apps/app_realtime.c
@@ -25,8 +25,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_record.c b/apps/app_record.c
index 31905a6c6..7c50a1d73 100755
--- a/apps/app_record.c
+++ b/apps/app_record.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_senddtmf.c b/apps/app_senddtmf.c
index 41ba1bbc4..c2c3c765d 100755
--- a/apps/app_senddtmf.c
+++ b/apps/app_senddtmf.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_sendtext.c b/apps/app_sendtext.c
index 177a6a6b4..7830ee860 100755
--- a/apps/app_sendtext.c
+++ b/apps/app_sendtext.c
@@ -25,8 +25,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_setcallerid.c b/apps/app_setcallerid.c
index 2d01ccfa3..877efb533 100755
--- a/apps/app_setcallerid.c
+++ b/apps/app_setcallerid.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_setcidname.c b/apps/app_setcidname.c
index 2cb5896a0..6906c132a 100755
--- a/apps/app_setcidname.c
+++ b/apps/app_setcidname.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_setcidnum.c b/apps/app_setcidnum.c
index 95ea2c0eb..a8a7e0706 100755
--- a/apps/app_setcidnum.c
+++ b/apps/app_setcidnum.c
@@ -24,8 +24,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_setrdnis.c b/apps/app_setrdnis.c
index f7f01c2e6..69c3ed568 100755
--- a/apps/app_setrdnis.c
+++ b/apps/app_setrdnis.c
@@ -24,8 +24,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_sms.c b/apps/app_sms.c
index cf47d6d9d..c6feb5560 100755
--- a/apps/app_sms.c
+++ b/apps/app_sms.c
@@ -22,13 +22,14 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <dirent.h>
#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
#include "asterisk.h"
diff --git a/apps/app_softhangup.c b/apps/app_softhangup.c
index e9b0f24f3..804a39259 100755
--- a/apps/app_softhangup.c
+++ b/apps/app_softhangup.c
@@ -23,10 +23,11 @@
* \ingroup applications
*/
-#include <sys/types.h>
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_striplsd.c b/apps/app_striplsd.c
index e9053946f..29968d402 100755
--- a/apps/app_striplsd.c
+++ b/apps/app_striplsd.c
@@ -24,8 +24,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_substring.c b/apps/app_substring.c
index dbaafd849..9771df98d 100755
--- a/apps/app_substring.c
+++ b/apps/app_substring.c
@@ -24,11 +24,11 @@
* \todo Deprecate this application in 1.3dev
*/
-#include <sys/types.h>
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_system.c b/apps/app_system.c
index 5d5216960..63e9baacb 100755
--- a/apps/app_system.c
+++ b/apps/app_system.c
@@ -24,9 +24,9 @@
*/
#include <stdlib.h>
+#include <stdio.h>
#include <unistd.h>
#include <string.h>
-#include <stdlib.h>
#include <errno.h>
#include "asterisk.h"
diff --git a/apps/app_talkdetect.c b/apps/app_talkdetect.c
index 30e27e3e0..11efe7068 100755
--- a/apps/app_talkdetect.c
+++ b/apps/app_talkdetect.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_test.c b/apps/app_test.c
index 56b5bf2b9..dba8bcafb 100755
--- a/apps/app_test.c
+++ b/apps/app_test.c
@@ -24,12 +24,13 @@
* \ingroup applications
*/
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
#include "asterisk.h"
diff --git a/apps/app_transfer.c b/apps/app_transfer.c
index 4443a7874..aaff52be0 100755
--- a/apps/app_transfer.c
+++ b/apps/app_transfer.c
@@ -26,8 +26,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_url.c b/apps/app_url.c
index b44fb218b..7f274b46a 100755
--- a/apps/app_url.c
+++ b/apps/app_url.c
@@ -22,8 +22,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_userevent.c b/apps/app_userevent.c
index 74fa58f2a..95f5fbc84 100755
--- a/apps/app_userevent.c
+++ b/apps/app_userevent.c
@@ -23,9 +23,9 @@
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <stdlib.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_waitforring.c b/apps/app_waitforring.c
index 0de20560f..25e651d9e 100755
--- a/apps/app_waitforring.c
+++ b/apps/app_waitforring.c
@@ -24,9 +24,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <stdlib.h>
+#include <unistd.h>
#include <sys/types.h>
#include "asterisk.h"
diff --git a/apps/app_waitforsilence.c b/apps/app_waitforsilence.c
index 79d2b2274..cbba6cfc6 100755
--- a/apps/app_waitforsilence.c
+++ b/apps/app_waitforsilence.c
@@ -30,9 +30,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
-#include <pthread.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_while.c b/apps/app_while.c
index 757171ad1..7c98afe80 100755
--- a/apps/app_while.c
+++ b/apps/app_while.c
@@ -24,8 +24,9 @@
*/
#include <stdlib.h>
-#include <unistd.h>
+#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "asterisk.h"
diff --git a/apps/app_zapateller.c b/apps/app_zapateller.c
index 00fb64787..3120a4267 100755
--- a/apps/app_zapateller.c
+++ b/apps/app_zapateller.c
@@ -23,8 +23,9 @@
* \ingroup applications
*/
-#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include "asterisk.h"
diff --git a/apps/app_zapbarge.c b/apps/app_zapbarge.c
index 9511c4f6b..10c5c49e5 100755
--- a/apps/app_zapbarge.c
+++ b/apps/app_zapbarge.c
@@ -27,10 +27,10 @@
*/
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
#include <sys/ioctl.h>
#ifdef __linux__
diff --git a/apps/app_zapscan.c b/apps/app_zapscan.c
index a199d4e02..ed0c77977 100755
--- a/apps/app_zapscan.c
+++ b/apps/app_zapscan.c
@@ -29,10 +29,10 @@
*/
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
#include <sys/ioctl.h>
#ifdef __linux__