@ -457,15 +457,11 @@ static void do_state_change(const char *device)
devstate_event ( device , state , CACHE_OFF ) ;
}
static int __ ast_devstate_changed_literal( enum ast_device_state state , char * buf , int norecurs e)
int ast_devstate_changed_literal( enum ast_device_state state , const char * devic e)
{
char * device ;
struct state_change * change ;
char * tmp = NULL ;
ast_debug ( 3 , " Notification of state change to be queued on device/channel %s \n " , buf ) ;
device = buf ;
ast_debug ( 3 , " Notification of state change to be queued on device/channel %s \n " , device ) ;
if ( state ! = AST_DEVICE_UNKNOWN ) {
devstate_event ( device , state , CACHE_ON ) ;
@ -482,37 +478,12 @@ static int __ast_devstate_changed_literal(enum ast_device_state state, char *buf
AST_LIST_UNLOCK ( & state_changes ) ;
}
/* The problem with this API is that a device may be called with the unique
* identifier appended or not , but it ' s separated from the channel name
* with a ' - ' , which is also a legitimate character in a channel name . So ,
* we have to force both names to get their names checked for state changes
* to ensure that the right one gets notified . Not a huge performance hit ,
* but it might could be fixed by an enterprising programmer in trunk .
*/
if ( ! norecurse & & ( tmp = strrchr ( device , ' - ' ) ) ) {
* tmp = ' \0 ' ;
__ast_devstate_changed_literal ( state , device , 1 ) ;
}
return 1 ;
}
int ast_devstate_changed_literal ( enum ast_device_state state , const char * dev )
{
char * buf ;
buf = ast_strdupa ( dev ) ;
return __ast_devstate_changed_literal ( state , buf , 0 ) ;
}
int ast_device_state_changed_literal ( const char * dev )
{
char * buf ;
buf = ast_strdupa ( dev ) ;
return __ast_devstate_changed_literal ( AST_DEVICE_UNKNOWN , buf , 0 ) ;
return ast_devstate_changed_literal ( AST_DEVICE_UNKNOWN , dev ) ;
}
int ast_devstate_changed ( enum ast_device_state state , const char * fmt , . . . )
@ -524,7 +495,7 @@ int ast_devstate_changed(enum ast_device_state state, const char *fmt, ...)
vsnprintf ( buf , sizeof ( buf ) , fmt , ap ) ;
va_end ( ap ) ;
return __ ast_devstate_changed_literal( state , buf , 0 ) ;
return ast_devstate_changed_literal( state , buf ) ;
}
/*! \brief Accept change notification, add it to change queue */
@ -537,7 +508,7 @@ int ast_device_state_changed(const char *fmt, ...)
vsnprintf ( buf , sizeof ( buf ) , fmt , ap ) ;
va_end ( ap ) ;
return __ ast_devstate_changed_literal( AST_DEVICE_UNKNOWN , buf , 0 ) ;
return ast_devstate_changed_literal( AST_DEVICE_UNKNOWN , buf ) ;
}
/*! \brief Go through the dev state change queue and update changes in the dev state thread */