Index: chan_skinny.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_skinny.c,v retrieving revision 1.81 retrieving revision 1.82 diff -u -r1.81 -r1.82 --- chan_skinny.c 7 Jun 2005 17:06:33 -0000 1.81 +++ chan_skinny.c 21 Jun 2005 23:06:44 -0000 1.82 @@ -32,7 +32,7 @@ #include "asterisk.h" -ASTERISK_FILE_VERSION(__FILE__, "$Revision: 1.81 $") +ASTERISK_FILE_VERSION(__FILE__, "$Revision: 1.82 $") #include "asterisk/lock.h" #include "asterisk/channel.h" @@ -774,8 +774,10 @@ AST_MUTEX_DEFINE_STATIC(sessionlock); /* Protect the device list */ AST_MUTEX_DEFINE_STATIC(devicelock); +#if 0 /* Protect the paging device list */ AST_MUTEX_DEFINE_STATIC(pagingdevicelock); +#endif /* This is the thread for the monitor which checks for input on the channels which are not currently in use. */ @@ -1070,10 +1072,14 @@ req->len = htolel(sizeof(struct call_info_message)); req->e = htolel(CALL_INFO_MESSAGE); - strncpy(req->data.callinfo.callingPartyName, fromname, 39); - strncpy(req->data.callinfo.callingParty, fromnum, 23); - strncpy(req->data.callinfo.calledPartyName, toname, 39); - strncpy(req->data.callinfo.calledParty, tonum, 23); + if (fromname) + ast_copy_string(req->data.callinfo.callingPartyName, fromname, sizeof(req->data.callinfo.callingPartyName)); + if (fromnum) + ast_copy_string(req->data.callinfo.callingParty, fromnum, sizeof(req->data.callinfo.callingParty)); + if (toname) + ast_copy_string(req->data.callinfo.calledPartyName, toname, sizeof(req->data.callinfo.calledPartyName)); + if (tonum) + ast_copy_string(req->data.callinfo.calledParty, tonum, sizeof(req->data.callinfo.calledParty)); req->data.callinfo.instance = htolel(instance); req->data.callinfo.reference = htolel(callid); @@ -1452,10 +1458,12 @@ static struct ast_cli_entry cli_no_debug = { { "skinny", "no", "debug", NULL }, skinny_no_debug, "Disable Skinny debugging", no_debug_usage }; +#if 0 static struct skinny_paging_device *build_paging_device(char *cat, struct ast_variable *v) { return NULL; } +#endif static struct skinny_device *build_device(char *cat, struct ast_variable *v) { @@ -1933,49 +1941,34 @@ transmit_lamp_indication(session, STIMULUS_LINE, l->instance, SKINNY_LAMP_BLINK); transmit_ringer_mode(session, SKINNY_RING_INSIDE); - if (ast->cid.cid_num){ - - char ciddisplay[41] = ""; + if (ast->cid.cid_num) { + char ciddisplay[41]; + char *work; + int size = sizeof(ciddisplay); /* We'll assume that if it is 10 numbers, it is a standard NANPA number Why? Because I am bloody American, and I'm bigoted that way. */ if (strlen(ast->cid.cid_num) == 10) { - - strcat (ciddisplay, "("); - strncat (ciddisplay, ast->cid.cid_num,3); - strcat (ciddisplay, ") "); - - strncat (ciddisplay, &ast->cid.cid_num[3],3); - strcat (ciddisplay,"-"); - strncat (ciddisplay, &ast->cid.cid_num[6],4); - - strncat (ciddisplay, " ", 6); - - strncat (ciddisplay, ast->cid.cid_name,17); + ast_build_string(&work, &size, "(xxx)xxx-xxxx %s", + ast->cid.cid_name ? ast->cid.cid_name : ""); + memcpy(&ciddisplay[1], ast->cid.cid_num, 3); + memcpy(&ciddisplay[5], &ast->cid.cid_num[3], 3); + memcpy(&ciddisplay[9], &ast->cid.cid_num[6], 4); } else { - if (strlen(ast->cid.cid_num) < 40) { - strncpy(ciddisplay,ast->cid.cid_num,strlen(ast->cid.cid_num)); - strcat (ciddisplay," -- "); - - if (sizeof(ast->cid.cid_name) > (40 - (strlen(ast->cid.cid_num) + 4))) { - strncat (ciddisplay, ast->cid.cid_name, (40 - (strlen(ast->cid.cid_num) + 4))); - } else { - strncat (ciddisplay, ast->cid.cid_name, strlen(ast->cid.cid_name)); - } - } else { + if (strlen(ast->cid.cid_num) < 41) + ast_build_string(&work, &size, "%s -- %s", ast->cid.cid_num, + ast->cid.cid_name ? ast->cid.cid_name : ""); + else strncpy(ciddisplay, "Number too long!", 15); - } } - if (skinnydebug) { + if (skinnydebug) ast_verbose("Trying to send: '%s'\n",ciddisplay); - } transmit_displaymessage(session, ciddisplay); - }else{ + } else transmit_displaymessage(session, "Unknown Name"); - } transmit_tone(session, tone); transmit_callstate(session, l->instance, SKINNY_RINGIN, sub->callid);