diff options
-rw-r--r-- | apps/app_voicemail.c | 83 | ||||
-rw-r--r-- | include/asterisk/adsi.h | 2 | ||||
-rw-r--r-- | res/res_adsi.c | 10 |
3 files changed, 36 insertions, 59 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index d64c4963e..f8e8219a2 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -769,7 +769,7 @@ static void vm_change_password_shell(struct ast_vm_user *vmu, char *newpassword) ast_copy_string(vmu->password, newpassword, sizeof(vmu->password)); } -static int make_dir(char *dest, int len, char *context, char *ext, char *folder) +static int make_dir(char *dest, int len, const char *context, const char *ext, const char *folder) { return snprintf(dest, len, "%s%s/%s/%s", VM_SPOOL_DIR, context, ext, folder); } @@ -786,7 +786,7 @@ static int make_file(char *dest, int len, char *dir, int num) * \param folder String. Ignored if is null or empty string. * \return 0 on failure, 1 on success. */ -static int create_dirpath(char *dest, int len, char *context, char *ext, char *folder) +static int create_dirpath(char *dest, int len, const char *context, const char *ext, const char *folder) { mode_t mode = VOICEMAIL_DIR_MODE; @@ -1929,10 +1929,7 @@ static int invent_message(struct ast_channel *chan, char *context, char *ext, in if (res) return res; } - if (busy) - res = ast_streamfile(chan, "vm-isonphone", chan->language); - else - res = ast_streamfile(chan, "vm-isunavail", chan->language); + res = ast_streamfile(chan, busy ? "vm-isonphone" : "vm-isunavail", chan->language); if (res) return -1; res = ast_waitstream(chan, ecodes); @@ -1950,32 +1947,21 @@ static void free_zone(struct vm_zone *z) free(z); } -static char *mbox(int id) +static const char *mbox(int id) { - switch(id) { - case 0: - return "INBOX"; - case 1: - return "Old"; - case 2: - return "Work"; - case 3: - return "Family"; - case 4: - return "Friends"; - case 5: - return "Cust1"; - case 6: - return "Cust2"; - case 7: - return "Cust3"; - case 8: - return "Cust4"; - case 9: - return "Cust5"; - default: - return "Unknown"; - } + static const char *msgs[] = { + "INBOX", + "Old", + "Work", + "Family", + "Friends", + "Cust1", + "Cust2", + "Cust3", + "Cust4", + "Cust5", + }; + return (id >= 0 && id < (sizeof(msgs)/sizeof(msgs[0]))) ? msgs[id] : "Unknown"; } #ifdef USE_ODBC_STORAGE @@ -2279,7 +2265,7 @@ static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu, static int copy_message(struct ast_channel *chan, struct ast_vm_user *vmu, int imbox, int msgnum, long duration, struct ast_vm_user *recip, char *fmt) { char fromdir[256], todir[256], frompath[256], topath[256]; - char *frombox = mbox(imbox); + const char *frombox = mbox(imbox); int recipmsgnum; ast_log(LOG_NOTICE, "Copying message from %s@%s to %s@%s\n", vmu->mailbox, vmu->context, recip->mailbox, recip->context); @@ -2389,17 +2375,14 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_ ext = tmp; context = strchr(tmp, '@'); if (context) { - *context = '\0'; - context++; + *context++ = '\0'; tmpptr = strchr(context, '&'); } else { tmpptr = strchr(ext, '&'); } - if (tmpptr) { - *tmpptr = '\0'; - tmpptr++; - } + if (tmpptr) + *tmpptr++ = '\0'; category = pbx_builtin_getvar_helper(chan, "VM_CATEGORY"); @@ -2693,7 +2676,7 @@ static int save_to_folder(struct ast_vm_user *vmu, char *dir, int msg, char *con char sfn[256]; char dfn[256]; char ddir[256]; - char *dbox = mbox(box); + const char *dbox = mbox(box); int x; make_file(sfn, sizeof(sfn), dir, msg); create_dirpath(ddir, sizeof(ddir), context, username, dbox); @@ -5899,26 +5882,20 @@ static char *complete_show_voicemail_users(const char *line, const char *word, i int which = 0; int wordlen; struct ast_vm_user *vmu; - char *context = ""; + const char *context = ""; /* 0 - show; 1 - voicemail; 2 - users; 3 - for; 4 - <context> */ if (pos > 4) return NULL; - if (pos == 3) { - if (state == 0) - return strdup("for"); - else - return NULL; - } + if (pos == 3) + return (state == 0) ? ast_strdup("for") : NULL; wordlen = strlen(word); AST_LIST_TRAVERSE(&users, vmu, list) { if (!strncasecmp(word, vmu->context, wordlen)) { - if (context && strcmp(context, vmu->context)) { - if (++which > state) { - return strdup(vmu->context); - } - context = vmu->context; - } + if (context && strcmp(context, vmu->context) && ++which > state) + return ast_strdup(vmu->context); + /* ignore repeated contexts ? */ + context = vmu->context; } } return NULL; @@ -5980,7 +5957,7 @@ static int load_config(void) ast_set_flag(cur, VM_ALLOCED); free_user(cur); } - AST_LIST_TRAVERSE_SAFE_END + AST_LIST_TRAVERSE_SAFE_END; zcur = zones; while (zcur) { zl = zcur; diff --git a/include/asterisk/adsi.h b/include/asterisk/adsi.h index 97a785692..3b7a2d1ca 100644 --- a/include/asterisk/adsi.h +++ b/include/asterisk/adsi.h @@ -309,7 +309,7 @@ int adsi_set_line(unsigned char *buf, int page, int line); * Returns number of bytes added to buffer or -1 on error. * */ -int adsi_load_soft_key(unsigned char *buf, int key, char *llabel, char *slabel, char *ret, int data); +int adsi_load_soft_key(unsigned char *buf, int key, const char *llabel, const char *slabel, const char *ret, int data); /*! Set which soft keys should be displayed */ /*! diff --git a/res/res_adsi.c b/res/res_adsi.c index 730b336d1..2e0a004f4 100644 --- a/res/res_adsi.c +++ b/res/res_adsi.c @@ -428,7 +428,7 @@ int adsi_transmit_message(struct ast_channel *chan, unsigned char *msg, int msgl return adsi_transmit_message_full(chan, msg, msglen, msgtype, 1); } -static inline int ccopy(unsigned char *dst, unsigned char *src, int max) +static inline int ccopy(unsigned char *dst, const unsigned char *src, int max) { int x=0; /* Carefully copy the requested data */ @@ -439,7 +439,7 @@ static inline int ccopy(unsigned char *dst, unsigned char *src, int max) return x; } -int adsi_load_soft_key(unsigned char *buf, int key, char *llabel, char *slabel, char *ret, int data) +int adsi_load_soft_key(unsigned char *buf, int key, const char *llabel, const char *slabel, const char *ret, int data) { int bytes=0; @@ -453,13 +453,13 @@ int adsi_load_soft_key(unsigned char *buf, int key, char *llabel, char *slabel, buf[bytes++] = key; /* Carefully copy long label */ - bytes += ccopy(buf + bytes, (unsigned char *)llabel, 18); + bytes += ccopy(buf + bytes, (const unsigned char *)llabel, 18); /* Place delimiter */ buf[bytes++] = 0xff; /* Short label */ - bytes += ccopy(buf + bytes, (unsigned char *)slabel, 7); + bytes += ccopy(buf + bytes, (const unsigned char *)slabel, 7); /* If specified, copy return string */ @@ -469,7 +469,7 @@ int adsi_load_soft_key(unsigned char *buf, int key, char *llabel, char *slabel, if (data) buf[bytes++] = ADSI_SWITCH_TO_DATA2; /* Carefully copy return string */ - bytes += ccopy(buf + bytes, (unsigned char *)ret, 20); + bytes += ccopy(buf + bytes, (const unsigned char *)ret, 20); } /* Replace parameter length */ |