@ -51,6 +51,7 @@ static int callerpres_write(struct ast_channel *chan, const char *cmd, char *dat
static int callerid_read ( struct ast_channel * chan , const char * cmd , char * data ,
static int callerid_read ( struct ast_channel * chan , const char * cmd , char * data ,
char * buf , size_t len )
char * buf , size_t len )
{
{
int res = - 1 ;
char * opt = data ;
char * opt = data ;
if ( ! chan )
if ( ! chan )
@ -64,10 +65,13 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data,
if ( ! strncasecmp ( " all " , data , 3 ) ) {
if ( ! strncasecmp ( " all " , data , 3 ) ) {
snprintf ( buf , len , " \" %s \" <%s> " , name , num ) ;
snprintf ( buf , len , " \" %s \" <%s> " , name , num ) ;
res = 0 ;
} else if ( ! strncasecmp ( " name " , data , 4 ) ) {
} else if ( ! strncasecmp ( " name " , data , 4 ) ) {
ast_copy_string ( buf , name , len ) ;
ast_copy_string ( buf , name , len ) ;
res = 0 ;
} else if ( ! strncasecmp ( " num " , data , 3 ) ) {
} else if ( ! strncasecmp ( " num " , data , 3 ) ) {
ast_copy_string ( buf , num , len ) ;
ast_copy_string ( buf , num , len ) ;
res = 0 ;
} else {
} else {
ast_log ( LOG_ERROR , " Unknown callerid data type '%s'. \n " , data ) ;
ast_log ( LOG_ERROR , " Unknown callerid data type '%s'. \n " , data ) ;
}
}
@ -78,32 +82,40 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data,
snprintf ( buf , len , " \" %s \" <%s> " ,
snprintf ( buf , len , " \" %s \" <%s> " ,
S_OR ( chan - > cid . cid_name , " " ) ,
S_OR ( chan - > cid . cid_name , " " ) ,
S_OR ( chan - > cid . cid_num , " " ) ) ;
S_OR ( chan - > cid . cid_num , " " ) ) ;
res = 0 ;
} else if ( ! strncasecmp ( " name " , data , 4 ) ) {
} else if ( ! strncasecmp ( " name " , data , 4 ) ) {
if ( chan - > cid . cid_name ) {
if ( chan - > cid . cid_name ) {
ast_copy_string ( buf , chan - > cid . cid_name , len ) ;
ast_copy_string ( buf , chan - > cid . cid_name , len ) ;
res = 0 ;
}
}
} else if ( ! strncasecmp ( " num " , data , 3 ) ) {
} else if ( ! strncasecmp ( " num " , data , 3 ) ) {
if ( chan - > cid . cid_num ) {
if ( chan - > cid . cid_num ) {
ast_copy_string ( buf , chan - > cid . cid_num , len ) ;
ast_copy_string ( buf , chan - > cid . cid_num , len ) ;
res = 0 ;
}
}
} else if ( ! strncasecmp ( " ani " , data , 3 ) ) {
} else if ( ! strncasecmp ( " ani " , data , 3 ) ) {
if ( ! strncasecmp ( data + 3 , " 2 " , 1 ) ) {
if ( ! strncasecmp ( data + 3 , " 2 " , 1 ) ) {
snprintf ( buf , len , " %d " , chan - > cid . cid_ani2 ) ;
snprintf ( buf , len , " %d " , chan - > cid . cid_ani2 ) ;
} else if ( chan - > cid . cid_ani ) {
} else if ( chan - > cid . cid_ani ) {
ast_copy_string ( buf , chan - > cid . cid_ani , len ) ;
ast_copy_string ( buf , chan - > cid . cid_ani , len ) ;
res = 0 ;
}
}
} else if ( ! strncasecmp ( " dnid " , data , 4 ) ) {
} else if ( ! strncasecmp ( " dnid " , data , 4 ) ) {
if ( chan - > cid . cid_dnid ) {
if ( chan - > cid . cid_dnid ) {
ast_copy_string ( buf , chan - > cid . cid_dnid , len ) ;
ast_copy_string ( buf , chan - > cid . cid_dnid , len ) ;
res = 0 ;
}
}
} else if ( ! strncasecmp ( " rdnis " , data , 5 ) ) {
} else if ( ! strncasecmp ( " rdnis " , data , 5 ) ) {
if ( chan - > cid . cid_rdnis ) {
if ( chan - > cid . cid_rdnis ) {
ast_copy_string ( buf , chan - > cid . cid_rdnis , len ) ;
ast_copy_string ( buf , chan - > cid . cid_rdnis , len ) ;
res = 0 ;
}
}
} else if ( ! strncasecmp ( " pres " , data , 4 ) ) {
} else if ( ! strncasecmp ( " pres " , data , 4 ) ) {
ast_copy_string ( buf , ast_named_caller_presentation ( chan - > cid . cid_pres ) , len ) ;
ast_copy_string ( buf , ast_named_caller_presentation ( chan - > cid . cid_pres ) , len ) ;
res = 0 ;
} else if ( ! strncasecmp ( " ton " , data , 3 ) ) {
} else if ( ! strncasecmp ( " ton " , data , 3 ) ) {
snprintf ( buf , len , " %d " , chan - > cid . cid_ton ) ;
snprintf ( buf , len , " %d " , chan - > cid . cid_ton ) ;
res = 0 ;
} else {
} else {
ast_log ( LOG_ERROR , " Unknown callerid data type '%s'. \n " , data ) ;
ast_log ( LOG_ERROR , " Unknown callerid data type '%s'. \n " , data ) ;
}
}
@ -111,7 +123,7 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data,
ast_channel_unlock ( chan ) ;
ast_channel_unlock ( chan ) ;
}
}
return 0 ;
return res ;
}
}
static int callerid_write ( struct ast_channel * chan , const char * cmd , char * data ,
static int callerid_write ( struct ast_channel * chan , const char * cmd , char * data ,