diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-10-08 15:49:37 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-10-08 15:49:37 +0000 |
commit | 36f6aa6650377e2d63ea74f8746c5061ba98e89b (patch) | |
tree | 44e51fc30b444ba5a3db95b7ddfa96f885716677 /callerid.c | |
parent | 679f51131db153d20f064051278394d2a24e0a53 (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-x | callerid.c | 21 |
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'; } |