aboutsummaryrefslogtreecommitdiffstats
path: root/callerid.c
diff options
context:
space:
mode:
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';
}