mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-14 00:24:05 +00:00
Move ast_get_group from res_parking.c to channel.c
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2263 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
33
channel.c
33
channel.c
@@ -2496,3 +2496,36 @@ int ast_tonepair(struct ast_channel *chan, int freq1, int freq2, int duration, i
|
|||||||
return 0;
|
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;
|
||||||
|
}
|
||||||
|
@@ -843,6 +843,8 @@ static inline int ast_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds,
|
|||||||
c->blocking = -1; \
|
c->blocking = -1; \
|
||||||
} }
|
} }
|
||||||
|
|
||||||
|
extern unsigned int ast_get_group(char *s);
|
||||||
|
|
||||||
#if defined(__cplusplus) || defined(c_plusplus)
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -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 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);
|
extern int ast_pickup_call(struct ast_channel *chan);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -749,40 +749,6 @@ int ast_pickup_call(struct ast_channel *chan)
|
|||||||
return res;
|
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)
|
int unload_module(void)
|
||||||
{
|
{
|
||||||
STANDARD_HANGUP_LOCALUSERS;
|
STANDARD_HANGUP_LOCALUSERS;
|
||||||
|
Reference in New Issue
Block a user