lcr/callerid.c

69 lines
2.1 KiB
C

/*****************************************************************************\
** **
** PBX4Linux **
** **
**---------------------------------------------------------------------------**
** Copyright: Andreas Eversberg **
** **
** caller id support file **
** **
\*****************************************************************************/
#include <string.h>
#include <time.h>
#include "extension.h"
#include "message.h"
#include "callerid.h"
/* create caller id from digits by comparing with national and international
* prefixes.
*/
const char *nationalize_callerinfo(const char *string, int *ntype, const char *national, const char *international)
{
if (!strncmp(international, string, strlen(international))) {
*ntype = INFO_NTYPE_INTERNATIONAL;
return(string+strlen(international));
}
if (!strncmp(national, string, strlen(national))) {
*ntype = INFO_NTYPE_NATIONAL;
return(string+strlen(national));
}
*ntype = INFO_NTYPE_SUBSCRIBER;
return(string);
}
/* create number (including access codes) from caller id
* prefixes.
*/
const char *numberrize_callerinfo(const char *string, int ntype, const char *national, const char *international)
{
static char result[256];
switch(ntype) {
case INFO_NTYPE_NOTPRESENT:
return("");
case INFO_NTYPE_INTERNATIONAL:
strcpy(result, international);
strncat(result, string, sizeof(result)-1);
result[sizeof(result)-1] = '\0';
return(result);
break;
case INFO_NTYPE_NATIONAL:
strcpy(result, national);
strncat(result, string, sizeof(result)-1);
result[sizeof(result)-1] = '\0';
return(result);
break;
default:
strncpy(result, string, sizeof(result)-1);
result[sizeof(result)-1] = '\0';
return(result);
}
}