@@ -737,7 +737,7 @@ void callerid_free(struct callerid_state *cid)
737737}
738738
739739static int callerid_genmsg (char * msg , int size , const char * number , const char * name , int flags , int format ,
740- const char * ddn , int redirecting )
740+ const char * ddn , int redirecting , const char * tz )
741741{
742742 struct timeval now = ast_tvnow ();
743743 struct ast_tm tm ;
@@ -746,7 +746,7 @@ static int callerid_genmsg(char *msg, int size, const char *number, const char *
746746 int i , x ;
747747
748748 /* Get the time */
749- ast_localtime (& now , & tm , NULL );
749+ ast_localtime (& now , & tm , tz );
750750
751751 ptr = msg ;
752752
@@ -850,8 +850,7 @@ static int callerid_genmsg(char *msg, int size, const char *number, const char *
850850 return (ptr - msg );
851851}
852852
853- int ast_callerid_vmwi_generate (unsigned char * buf , int active , int type , struct ast_format * codec ,
854- const char * name , const char * number , int flags )
853+ int ast_callerid_vmwi_generate (unsigned char * buf , int active , int type , struct ast_format * codec , const char * name , const char * number , int flags )
855854{
856855 char msg [256 ];
857856 int len = 0 ;
@@ -867,7 +866,7 @@ int ast_callerid_vmwi_generate(unsigned char *buf, int active, int type, struct
867866 msg [0 ] = 0x82 ;
868867
869868 /* put date, number info at the right place */
870- len = callerid_genmsg (msg + 2 , sizeof (msg )- 2 , number , name , flags , CID_TYPE_MDMF , "" , -1 );
869+ len = callerid_genmsg (msg + 2 , sizeof (msg )- 2 , number , name , flags , CID_TYPE_MDMF , "" , -1 , NULL );
871870
872871 /* length of MDMF CLI plus Message Waiting Structure */
873872 msg [1 ] = len + 3 ;
@@ -945,6 +944,13 @@ int callerid_generate(unsigned char *buf, const char *number, const char *name,
945944
946945int callerid_full_generate (unsigned char * buf , const char * number , const char * name , const char * ddn , int redirecting ,
947946 int flags , int format , int callwaiting , struct ast_format * codec )
947+ {
948+ /* Default time zone is NULL (system time zone) */
949+ return callerid_full_tz_generate (buf , number , name , ddn , redirecting , flags , format , callwaiting , codec , NULL );
950+ }
951+
952+ int callerid_full_tz_generate (unsigned char * buf , const char * number , const char * name , const char * ddn , int redirecting ,
953+ int flags , int format , int callwaiting , struct ast_format * codec , const char * tz )
948954{
949955 int bytes = 0 ;
950956 int x , sum ;
@@ -955,7 +961,7 @@ int callerid_full_generate(unsigned char *buf, const char *number, const char *n
955961 float ci = 0.0 ;
956962 float scont = 0.0 ;
957963 char msg [256 ];
958- len = callerid_genmsg (msg , sizeof (msg ), number , name , flags , format , ddn , redirecting );
964+ len = callerid_genmsg (msg , sizeof (msg ), number , name , flags , format , ddn , redirecting , tz );
959965 if (!callwaiting ) {
960966 /* Wait a half a second */
961967 for (x = 0 ; x < 4000 ; x ++ )
@@ -1101,11 +1107,11 @@ int ast_callerid_parse(char *input_str, char **name, char **location)
11011107}
11021108
11031109static int __ast_callerid_generate (unsigned char * buf , const char * name , const char * number ,
1104- const char * ddn , int redirecting , int pres , int qualifier , int format , int callwaiting , struct ast_format * codec )
1110+ const char * ddn , int redirecting , int pres , int qualifier , int format , int callwaiting , struct ast_format * codec , const char * tz )
11051111{
11061112 int flags = 0 ;
11071113
1108- ast_debug (1 , "Caller ID Type %s: Number: %s, Name: %s, Redirecting No : %s, Redirecting Reason: %s, Pres: %s, Qualifier: %s, Format: %s\n" ,
1114+ ast_debug (1 , "Caller ID Type %s: Number: %s, Name: %s, DDN : %s, Redirecting Reason: %s, Pres: %s, Qualifier: %s, Format: %s\n" ,
11091115 callwaiting ? "II" : "I" , number , name , ddn , ast_redirecting_reason_describe (redirecting ),
11101116 ast_named_caller_presentation (pres ), qualifier ? "LDC" : "None" , format == CID_TYPE_MDMF ? "MDMF" : "SDMF" );
11111117
@@ -1126,30 +1132,43 @@ static int __ast_callerid_generate(unsigned char *buf, const char *name, const c
11261132 flags |= CID_QUALIFIER ;
11271133 }
11281134
1129- return callerid_full_generate (buf , number , name , ddn , redirecting , flags , format , callwaiting , codec );
1135+ return callerid_full_tz_generate (buf , number , name , ddn , redirecting , flags , format , callwaiting , codec , tz );
11301136}
11311137
11321138int ast_callerid_generate (unsigned char * buf , const char * name , const char * number , struct ast_format * codec )
11331139{
1134- return __ast_callerid_generate (buf , name , number , "" , -1 , 0 , 0 , CID_TYPE_MDMF , 0 , codec );
1140+ return __ast_callerid_generate (buf , name , number , "" , -1 , 0 , 0 , CID_TYPE_MDMF , 0 , codec , NULL );
11351141}
11361142
11371143int ast_callerid_callwaiting_generate (unsigned char * buf , const char * name , const char * number , struct ast_format * codec )
11381144{
1139- return __ast_callerid_generate (buf , name , number , "" , -1 , 0 , 0 , CID_TYPE_MDMF , 1 , codec );
1145+ return __ast_callerid_generate (buf , name , number , "" , -1 , 0 , 0 , CID_TYPE_MDMF , 1 , codec , NULL );
11401146}
11411147
11421148int ast_callerid_full_generate (unsigned char * buf , const char * name , const char * number ,
11431149 const char * ddn , int redirecting , int pres , int qualifier , int format , struct ast_format * codec )
11441150{
1145- return __ast_callerid_generate (buf , name , number , ddn , redirecting , pres , qualifier , format , 0 , codec );
1151+ return __ast_callerid_generate (buf , name , number , ddn , redirecting , pres , qualifier , format , 0 , codec , NULL );
11461152}
11471153
11481154int ast_callerid_callwaiting_full_generate (unsigned char * buf , const char * name , const char * number ,
11491155 const char * ddn , int redirecting , int pres , int qualifier , struct ast_format * codec )
11501156{
11511157 /* Type II Caller ID (CWCID) only uses MDMF, so format isn't an argument */
1152- return __ast_callerid_generate (buf , name , number , ddn , redirecting , pres , qualifier , CID_TYPE_MDMF , 1 , codec );
1158+ return __ast_callerid_generate (buf , name , number , ddn , redirecting , pres , qualifier , CID_TYPE_MDMF , 1 , codec , NULL );
1159+ }
1160+
1161+ int ast_callerid_full_tz_generate (unsigned char * buf , const char * name , const char * number ,
1162+ const char * ddn , int redirecting , int pres , int qualifier , int format , struct ast_format * codec , const char * tz )
1163+ {
1164+ return __ast_callerid_generate (buf , name , number , ddn , redirecting , pres , qualifier , format , 0 , codec , tz );
1165+ }
1166+
1167+ int ast_callerid_callwaiting_full_tz_generate (unsigned char * buf , const char * name , const char * number ,
1168+ const char * ddn , int redirecting , int pres , int qualifier , struct ast_format * codec , const char * tz )
1169+ {
1170+ /* Type II Caller ID (CWCID) only uses MDMF, so format isn't an argument */
1171+ return __ast_callerid_generate (buf , name , number , ddn , redirecting , pres , qualifier , CID_TYPE_MDMF , 1 , codec , tz );
11531172}
11541173
11551174char * ast_callerid_merge (char * buf , int bufsiz , const char * name , const char * num , const char * unknown )
0 commit comments