Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv11553/apps

Modified Files:
        app_groupcount.c 
Log Message:
add GROUP_COUNT and GROU_MATCH_COUNT functions, deprecate GroupCount and 
GroupMatchCount apps, remove GROUPCOUNT variable from README.variables (bug 
#4133, with doc update)


Index: app_groupcount.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_groupcount.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- app_groupcount.c    29 Apr 2005 17:00:33 -0000      1.11
+++ app_groupcount.c    4 May 2005 04:13:31 -0000       1.12
@@ -17,6 +17,7 @@
 #include <string.h>
 #include <sys/types.h>
 #include <regex.h>
+
 #include "asterisk/file.h"
 #include "asterisk/logger.h"
 #include "asterisk/options.h"
@@ -31,6 +32,70 @@
 
 LOCAL_USER_DECL;
 
+static int deprecation_warning = 0;
+
+static char *group_count_function_read(struct ast_channel *chan, char *cmd, 
char *data, char *buf, size_t len) 
+{
+       int count;
+       struct localuser *u;
+       char group[80] = "";
+       char category[80] = "";
+       char *grp;
+
+       LOCAL_USER_ADD(u);
+
+       ast_app_group_split_group(data, group, sizeof(group), category, 
sizeof(category));
+
+       if (ast_strlen_zero(group)) {
+               grp = pbx_builtin_getvar_helper(chan, category);
+               strncpy(group, grp, sizeof(group) - 1);
+       }
+
+       count = ast_app_group_get_count(group, category);
+       snprintf(buf, len, "%d", count);
+
+       LOCAL_USER_REMOVE(u);
+
+       return buf;
+}
+
+static struct ast_custom_function_obj group_count_function_obj = {
+       .name = "GROUP_COUNT",
+       .desc = "Calculates the group count for the specified group, or uses 
the current channel's group if not specifed (and non-empty).",
+       .syntax = "GROUP_COUNT([EMAIL PROTECTED])",
+       .read = group_count_function_read,
+       .write = NULL,
+};
+
+static char *group_match_count_function_read(struct ast_channel *chan, char 
*cmd, char *data, char *buf, size_t len) 
+{
+       int count;
+       struct localuser *u;
+       char group[80] = "";
+       char category[80] = "";
+
+       LOCAL_USER_ADD(u);
+
+       ast_app_group_split_group(data, group, sizeof(group), category, 
sizeof(category));
+
+       if (!ast_strlen_zero(group)) {
+               count = ast_app_group_match_get_count(group, category);
+               snprintf(buf, len, "%d", count);
+       }
+
+       LOCAL_USER_REMOVE(u);
+
+       return buf;
+}
+
+static struct ast_custom_function_obj group_match_count_function_obj = {
+       .name = "GROUP_MATCH_COUNT",
+       .desc = "Calculates the group count for all groups that match the 
specified pattern. Uses standard regular expression matching (see regex(7)).",
+       .syntax = "GROUP_MATCH_COUNT([EMAIL PROTECTED])",
+       .read = group_match_count_function_read,
+       .write = NULL,
+};
+
 static int group_count_exec(struct ast_channel *chan, void *data)
 {
        int res = 0;
@@ -43,6 +108,11 @@
 
        LOCAL_USER_ADD(u);
 
+       if (!deprecation_warning) {
+               ast_log(LOG_WARNING, "The GetGroupCount and GetGroupMatchCount 
applications have been deprecated, please use the GROUP_COUNT and 
GROUP_MATCH_COUNT functions.\n");
+               deprecation_warning = 1;
+       }
+
        ast_app_group_split_group(data, group, sizeof(group), category, 
sizeof(category));
 
        if (ast_strlen_zero(group)) {
@@ -70,6 +140,11 @@
 
        LOCAL_USER_ADD(u);
 
+       if (!deprecation_warning) {
+               ast_log(LOG_WARNING, "The GetGroupCount and GetGroupMatchCount 
applications have been deprecated, please use the GROUP_COUNT and 
GROUP_MATCH_COUNT functions.\n");
+               deprecation_warning = 1;
+       }
+
        ast_app_group_split_group(data, group, sizeof(group), category, 
sizeof(category));
 
        if (!ast_strlen_zero(group)) {
@@ -195,7 +270,9 @@
 "Usage: GetGroupCount([EMAIL PROTECTED])\n"
 "  Calculates the group count for the specified group, or uses\n"
 "the current channel's group if not specifed (and non-empty).\n"
-"Stores result in GROUPCOUNT.  Always returns 0.\n";
+"Stores result in GROUPCOUNT.  Always returns 0.\n"
+"This application has been deprecated, please use the function\n"
+"GroupCount.\n";
 
 static char *group_set_descrip =
 "Usage: SetGroup([EMAIL PROTECTED])\n"
@@ -214,7 +291,9 @@
 "Usage: GetGroupMatchCount([EMAIL PROTECTED])\n"
 "  Calculates the group count for all groups that match the specified\n"
 "pattern. Uses standard regular expression matching (see regex(7)).\n"
-"Stores result in GROUPCOUNT.  Always returns 0.\n";
+"Stores result in GROUPCOUNT.  Always returns 0.\n"
+"This application has been deprecated, please use the function\n"
+"GroupMatchCount.\n";
 
 static char show_channels_usage[] = 
 "Usage: group show channels [pattern]\n"
@@ -232,6 +311,8 @@
        res |= ast_unregister_application(app_group_set);
        res |= ast_unregister_application(app_group_check);
        res |= ast_unregister_application(app_group_match_count);
+       res |= ast_custom_function_unregister(&group_count_function_obj);
+       res |= ast_custom_function_unregister(&group_match_count_function_obj);
        return res;
 }
 
@@ -242,6 +323,8 @@
        res |= ast_register_application(app_group_set, group_set_exec, 
group_set_synopsis, group_set_descrip);
        res |= ast_register_application(app_group_check, group_check_exec, 
group_check_synopsis, group_check_descrip);
        res |= ast_register_application(app_group_match_count, 
group_match_count_exec, group_match_count_synopsis, group_match_count_descrip);
+       res |= ast_custom_function_register(&group_count_function_obj);
+       res |= ast_custom_function_register(&group_match_count_function_obj);
        ast_cli_register(&cli_show_channels);
        return res;
 }

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to