BOOL util_strcmp(char *str1, char *str2) { int l1 = util_strlen(str1), l2 = util_strlen(str2); if (l1 != l2) return FALSE; while (l1--) { if (*str1++ != *str2++) return FALSE; } return TRUE; }
BOOL util_strncmp(char *str1, char *str2, int len) { int l1 = util_strlen(str1), l2 = util_strlen(str2); if (l1 < len || l2 < len) return FALSE; while (len--) { if (*str1++ != *str2++) return FALSE; } return TRUE; }
int util_strcpy(char *dst, char *src) { int l = util_strlen(src); util_memcpy(dst, src, l + 1); return l; }
//author:wangxi // isreset: if evt process finished, if false, evt will bypass to other routinue, other event not pass to outside // retval: if do exchange successful, return true; static bool_t gmenu_input_data_exchange(u_int8 checktype, bool_t *isbypass) { bool_t isExchange = FALSE; bool_t isBypass = TRUE; UTIL_ASSERT_VALUE(input, 0, FALSE); if (input->cfg.inputdetector && (0 != (input->cfg.checktype & checktype))) { u_int32 val = 0; u_int16 len = util_strlen(input->charbuffer); u_int16 echostatus; switch (input->cfg.type) { case GMENU_INPUT_TYPE_VALUE: val = atoi(input->charbuffer); //util_bit32_dump("mask=\n",input->cfg.checktype); //util_bit32_dump("type=\n",checktype); //MY_DEBUG("DOEXCHANGE[%s]_BEGIN\n", input->charbuffer); //MY_DEBUG(">>>>>>(%d)\n", val); echostatus = (*input->cfg.inputdetector)(checktype, (p_void)val, len, input->cfg.param); //util_bit32_dump(">>>>ECHO:\n",echostatus); if (INPUT_EXCHANGE_STATUS(echostatus)) { gmenu_input_makestr(GMENU_INPUT_TYPE_VALUE, input->charbuffer, (p_void)val); isExchange = TRUE; //MY_DEBUG("<<<<<<[%s]\n", input->charbuffer); } if (INPUT_BYPASS_STATUS(echostatus) & checktype) { //MY_DEBUG("-------- BYPASS-----\n"); isBypass = FALSE; } //MY_DEBUG("DOEXCHANGE[%s]_END ret=%d\n", input->charbuffer, isExchange); break; case GMENU_INPUT_TYPE_CHAR: echostatus = (*input->cfg.inputdetector)(checktype, (p_void)input->charbuffer, len, input->cfg.param); isExchange = TRUE; isBypass = TRUE; break; default: break; } } if (isbypass)(*isbypass) = isBypass; return isExchange; }
int util_stristr(char *haystack, int haystack_len, char *str) { char *ptr = haystack; int str_len = util_strlen(str); int match_count = 0; while (haystack_len-- > 0) { char a = *ptr++; char b = str[match_count]; a = a >= 'A' && a <= 'Z' ? a | 0x60 : a; b = b >= 'A' && b <= 'Z' ? b | 0x60 : b; if (a == b) { if (++match_count == str_len) return (ptr - haystack); } else match_count = 0; } return -1; }