diff options
Diffstat (limited to 'funcs/func_callerid.c')
-rw-r--r-- | funcs/func_callerid.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/funcs/func_callerid.c b/funcs/func_callerid.c index ef3c447bb..19b8f413f 100644 --- a/funcs/func_callerid.c +++ b/funcs/func_callerid.c @@ -41,6 +41,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") static int callerid_read(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) { + int res = -1; char *opt = data; if (!chan) @@ -54,12 +55,15 @@ static int callerid_read(struct ast_channel *chan, char *cmd, char *data, if (!strncasecmp("all", data, 3)) { snprintf(buf, len, "\"%s\" <%s>", name, num); + res = 0; } else if (!strncasecmp("name", data, 4)) { ast_copy_string(buf, name, len); + res = 0; } else if (!strncasecmp("num", data, 3) || !strncasecmp("number", data, 6)) { ast_copy_string(buf, num, len); + res = 0; } else { ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); } @@ -70,26 +74,32 @@ static int callerid_read(struct ast_channel *chan, char *cmd, char *data, snprintf(buf, len, "\"%s\" <%s>", S_OR(chan->cid.cid_name, ""), S_OR(chan->cid.cid_num, "")); + res = 0; } else if (!strncasecmp("name", data, 4)) { if (chan->cid.cid_name) { ast_copy_string(buf, chan->cid.cid_name, len); + res = 0; } } else if (!strncasecmp("num", data, 3) || !strncasecmp("number", data, 6)) { if (chan->cid.cid_num) { ast_copy_string(buf, chan->cid.cid_num, len); + res = 0; } } else if (!strncasecmp("ani", data, 3)) { if (chan->cid.cid_ani) { ast_copy_string(buf, chan->cid.cid_ani, len); + res = 0; } } else if (!strncasecmp("dnid", data, 4)) { if (chan->cid.cid_dnid) { ast_copy_string(buf, chan->cid.cid_dnid, len); + res = 0; } } else if (!strncasecmp("rdnis", data, 5)) { if (chan->cid.cid_rdnis) { ast_copy_string(buf, chan->cid.cid_rdnis, len); + res = 0; } } else { ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); @@ -98,7 +108,7 @@ static int callerid_read(struct ast_channel *chan, char *cmd, char *data, ast_channel_unlock(chan); } - return 0; + return res; } static int callerid_write(struct ast_channel *chan, char *cmd, char *data, |