aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xchannel.c33
-rwxr-xr-xinclude/asterisk/channel.h2
-rwxr-xr-xinclude/asterisk/parking.h2
-rwxr-xr-xres/res_parking.c34
4 files changed, 35 insertions, 36 deletions
diff --git a/channel.c b/channel.c
index b05ea7589..e4a572af3 100755
--- a/channel.c
+++ b/channel.c
@@ -2496,3 +2496,36 @@ int ast_tonepair(struct ast_channel *chan, int freq1, int freq2, int duration, i
return 0;
}
+unsigned int ast_get_group(char *s)
+{
+ char *copy;
+ char *piece;
+ char *c=NULL;
+ int start=0, finish=0,x;
+ unsigned int group = 0;
+ copy = ast_strdupa(s);
+ if (!copy) {
+ ast_log(LOG_ERROR, "Out of memory\n");
+ return 0;
+ }
+ c = copy;
+
+ while((piece = strsep(&c, ","))) {
+ if (sscanf(piece, "%d-%d", &start, &finish) == 2) {
+ /* Range */
+ } else if (sscanf(piece, "%d", &start)) {
+ /* Just one */
+ finish = start;
+ } else {
+ ast_log(LOG_ERROR, "Syntax error parsing '%s' at '%s'. Using '0'\n", s,piece);
+ return 0;
+ }
+ for (x=start;x<=finish;x++) {
+ if ((x > 31) || (x < 0)) {
+ ast_log(LOG_WARNING, "Ignoring invalid group %d\n", x);
+ } else
+ group |= (1 << x);
+ }
+ }
+ return group;
+}
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h
index 71043ea7c..24699a7d9 100755
--- a/include/asterisk/channel.h
+++ b/include/asterisk/channel.h
@@ -843,6 +843,8 @@ static inline int ast_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds,
c->blocking = -1; \
} }
+extern unsigned int ast_get_group(char *s);
+
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
diff --git a/include/asterisk/parking.h b/include/asterisk/parking.h
index 785153696..4b9859592 100755
--- a/include/asterisk/parking.h
+++ b/include/asterisk/parking.h
@@ -48,8 +48,6 @@ extern char *ast_pickup_ext(void);
extern int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer, int allowredirect_in, int allowredirect_out, int allowdisconnect);
-extern unsigned int ast_get_group(char *s);
-
extern int ast_pickup_call(struct ast_channel *chan);
diff --git a/res/res_parking.c b/res/res_parking.c
index 5c8049822..2f54ee048 100755
--- a/res/res_parking.c
+++ b/res/res_parking.c
@@ -749,40 +749,6 @@ int ast_pickup_call(struct ast_channel *chan)
return res;
}
-unsigned int ast_get_group(char *s)
-{
- char *copy;
- char *piece;
- char *c=NULL;
- int start=0, finish=0,x;
- unsigned int group = 0;
- copy = ast_strdupa(s);
- if (!copy) {
- ast_log(LOG_ERROR, "Out of memory\n");
- return 0;
- }
- c = copy;
-
- while((piece = strsep(&c, ","))) {
- if (sscanf(piece, "%d-%d", &start, &finish) == 2) {
- /* Range */
- } else if (sscanf(piece, "%d", &start)) {
- /* Just one */
- finish = start;
- } else {
- ast_log(LOG_ERROR, "Syntax error parsing '%s' at '%s'. Using '0'\n", s,piece);
- return 0;
- }
- for (x=start;x<=finish;x++) {
- if ((x > 31) || (x < 0)) {
- ast_log(LOG_WARNING, "Ignoring invalid group %d\n", x);
- } else
- group |= (1 << x);
- }
- }
- return group;
-}
-
int unload_module(void)
{
STANDARD_HANGUP_LOCALUSERS;