Browse Source

recorreção funções string para checagem de nulo

master
Diego Nakaniwa 5 months ago
parent
commit
b1a980af6f
  1. 2
      src/ami.c
  2. 8
      src/asterisk.c
  3. 4
      src/parse_action.c
  4. 39
      src/parse_string.c
  5. 16
      src/parse_string.h

2
src/ami.c

@ -423,7 +423,7 @@ EVENT *ami_get_event_name( AMI *ami, EVENT *list_event, const char *event_name )
while( list_event ){
if( !strcasecmp(list_event->event, event_name) ){
if( !strcasecmp_n(list_event->event, event_name) ){
return list_event;
}

8
src/asterisk.c

@ -315,7 +315,7 @@ const char *ami_get_actionid(ARGS **args){
char *str_actionid = "Actionid";
while(*args){
if(!strcasecmp( (*args)->key, str_actionid )){
if(!strcasecmp_n( (*args)->key, str_actionid )){
return (*args)->value;
}
@ -339,7 +339,7 @@ const char *ami_get_key_value(ARGS **args, const char *key){
}
while(*args){
if(!strcasecmp((*args)->key, key)){
if(!strcasecmp_n((*args)->key, key)){
return (*args)->value;
}
@ -360,7 +360,7 @@ const char *ami_get_key_value(ARGS **args, const char *key){
int ami_exist_key(ARGS **args, const char *key){
while(*args){
if(!strcasecmp((*args)->key, key)){
if(!strcasecmp_n((*args)->key, key)){
return 0;
}
@ -560,7 +560,7 @@ int ami_action_event_add(ACTION **list_action, EVENT *event){
}
while((*list_action)){
if(!strcasecmp((*list_action)->actionid, actionid)){
if(!strcasecmp_n((*list_action)->actionid, actionid)){
ami_event_add(&(*list_action)->events, event);
return 0;
}

4
src/parse_action.c

@ -71,7 +71,7 @@ void parse_response(AMI *ami, const char *buffer, int *incomplete){
len_command = len_command_old_ami(buffer);
privilege = ami_get_key_value(&p_response->args, "Privilege");
// action comando legado
if( len_command && !strcmp(arg->key, "ActionID") && !ami_strcmp(privilege, "Command")){
if( len_command && !strcmp(arg->key, "ActionID") && !strcmp_n(privilege, "Command")){
arg = ami_arg_create();
arg->key = (char *) calloc(1, 7);
strcpy(arg->key, "Output"); // padronizar com a versão mais nova
@ -94,7 +94,7 @@ void parse_response(AMI *ami, const char *buffer, int *incomplete){
pthread_mutex_lock(&ami->thread.mutex_actions);
if( !strcmp( p_action->actionid, "_LOGIN_" ) ) {
if( !strcasecmp(p_action->response->response, "Success") ) {
if( !strcasecmp_n(p_action->response->response, "Success") ) {
ami_login_up(&ami->asterisk);
}
else{

39
src/parse_string.c

@ -209,26 +209,43 @@ size_t len_command_old_ami(const char *command){
/*!
* O mesmo que strcmp, porém testa NULL
* \param s1 primeiro valor
* \param s2 segundo valor
* \return 0 iguais, 1 s1 < s2, -1 s1 > s2
* \param str1 primeiro valor
* \param str2 segundo valor
* \return os mesmos valores de strcmp
*/
int ami_strcmp(const char *s1, const char *s2){
int strcmp_n(const char *str1, const char *str2){
if(!s1 && !s2){
if( str1 == NULL && str2 == NULL ){
return 0;
}
else if(!s1){
else if( str1 == NULL ){
return -1;
}
else if(!s1){
else if( str2 == NULL){
return 1;
}
return strcmp(str1, str2);
}
/*!
* strncasecmp_n é similar ao strncasecmp, porém verifica se str2 e str1 é nulo
* \param str1 string para comparar
* \param str2 string para comparar
* \param comprimento da string
* \return os mesmos valores de strncasecmp
*/
int strncasecmp_n( const char *str1, const char *str2, size_t len ){
else {
return strcmp(s1, s2);
if( str1 == NULL && str2 == NULL ){
return 0;
}
else if( str1 == NULL ){
return -1;
}
else if( str2 == NULL ){
return 1;
}
return strncasecmp( str1, str2, len);
}

16
src/parse_string.h

@ -91,12 +91,20 @@ void str_action_free(char *str_action);
/*!
* O mesmo que strcmp, porém testa NULL
* \param s1 primeiro valor
* \param s2 segundo valor
* \return 0 iguais, 1 s1 < s2, -1 s1 > s2
* \param str1 primeiro valor
* \param str2 segundo valor
* \return os mesmos valores de strcmp
*/
int ami_strcmp(const char *s1, const char *s2);
int strcmp_n(const char *s1, const char *s2);
/*!
* strncasecmp_n é similar ao strncasecmp, porém verifica se str2 e str1 é nulo
* \param str1 string para comparar
* \param str2 string para comparar
* \param comprimento da string
* \return os mesmos valores de strncasecmp
*/
int strncasecmp_n( const char *str1, const char *str2, size_t len );
#endif

Loading…
Cancel
Save