aboutsummaryrefslogtreecommitdiffstats
path: root/callerid.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-08 15:49:37 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-10-08 15:49:37 +0000
commit36f6aa6650377e2d63ea74f8746c5061ba98e89b (patch)
tree44e51fc30b444ba5a3db95b7ddfa96f885716677 /callerid.c
parent679f51131db153d20f064051278394d2a24e0a53 (diff)
Don't strip bracketed hyphens (bug #2608)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3951 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'callerid.c')
-rwxr-xr-xcallerid.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/callerid.c b/callerid.c
index d88822a2a..7fd064114 100755
--- a/callerid.c
+++ b/callerid.c
@@ -574,9 +574,26 @@ int callerid_generate(unsigned char *buf, char *number, char *name, int flags, i
void ast_shrink_phone_number(char *n)
{
int x,y=0;
- for (x=0;n[x];x++)
- if (!strchr("( )-.", n[x]))
+ int bracketed=0;
+ for (x=0;n[x];x++) {
+ switch(n[x]) {
+ case '[':
+ bracketed++;
+ n[y++] = n[x];
+ break;
+ case ']':
+ bracketed--;
n[y++] = n[x];
+ break;
+ case '-':
+ if (bracketed)
+ n[y++] = n[x];
+ break;
+ default:
+ if (!strchr("( ).", n[x]))
+ n[y++] = n[x];
+ }
+ }
n[y] = '\0';
}