diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-05-10 15:33:35 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-05-10 15:33:35 +0000 |
commit | 97446e79c74169ac0e923ce8693933af5ec02459 (patch) | |
tree | dd332fa837d1d5f60f939fc72edef17389802287 /app.c | |
parent | ff68902855a31774d388719ab596750d5835019d (diff) |
Make voicemail segmentable into multiple contexts
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@986 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'app.c')
-rwxr-xr-x | app.c | 24 |
1 files changed, 20 insertions, 4 deletions
@@ -148,6 +148,7 @@ int ast_app_has_voicemail(const char *mailbox) char fn[256]; char tmp[256]=""; char *mb, *cur; + char *context; int ret; /* If no mailbox, return immediately */ if (!strlen(mailbox)) @@ -156,7 +157,7 @@ int ast_app_has_voicemail(const char *mailbox) strncpy(tmp, mailbox, sizeof(tmp)); mb = tmp; ret = 0; - while((cur = strsep(&mb, ", "))) { + while((cur = strsep(&mb, ","))) { if (strlen(cur)) { if (ast_app_has_voicemail(cur)) return 1; @@ -164,7 +165,14 @@ int ast_app_has_voicemail(const char *mailbox) } return 0; } - snprintf(fn, sizeof(fn), "%s/vm/%s/INBOX", (char *)ast_config_AST_SPOOL_DIR, mailbox); + strncpy(tmp, mailbox, sizeof(tmp) - 1); + context = strchr(tmp, '@'); + if (context) { + *context = '\0'; + context++; + } else + context = "default"; + snprintf(fn, sizeof(fn), "%s/voicemail/%s/%s/INBOX", (char *)ast_config_AST_SPOOL_DIR, context, mailbox); dir = opendir(fn); if (!dir) return 0; @@ -185,6 +193,7 @@ int ast_app_messagecount(const char *mailbox, int *newmsgs, int *oldmsgs) char fn[256]; char tmp[256]=""; char *mb, *cur; + char *context; int ret; if (newmsgs) *newmsgs = 0; @@ -212,8 +221,15 @@ int ast_app_messagecount(const char *mailbox, int *newmsgs, int *oldmsgs) } return 0; } + strncpy(tmp, mailbox, sizeof(tmp) - 1); + context = strchr(tmp, '@'); + if (context) { + *context = '\0'; + context++; + } else + context = "default"; if (newmsgs) { - snprintf(fn, sizeof(fn), "%s/vm/%s/INBOX", (char *)ast_config_AST_SPOOL_DIR, mailbox); + snprintf(fn, sizeof(fn), "%s/voicemail/%s/%s/INBOX", (char *)ast_config_AST_SPOOL_DIR, context, mailbox); dir = opendir(fn); if (dir) { while ((de = readdir(dir))) { @@ -226,7 +242,7 @@ int ast_app_messagecount(const char *mailbox, int *newmsgs, int *oldmsgs) } } if (oldmsgs) { - snprintf(fn, sizeof(fn), "%s/vm/%s/Old", (char *)ast_config_AST_SPOOL_DIR, mailbox); + snprintf(fn, sizeof(fn), "%s/voicemail/%s/%s/Old", (char *)ast_config_AST_SPOOL_DIR, context, mailbox); dir = opendir(fn); if (dir) { while ((de = readdir(dir))) { |