/**
* 是否为需要忽略的完整文件名
* @param file_name
* @return true
* @return false
*/
bool is_ignore_complete_file_name(const char *file_name) {
if(file_name == NULL || *file_name == 0){
return false;
}
hulk_trace("hulk: is_ignore_complete_file_name: Dest file_name: %s", file_name);
//需要忽略的文件名数组
char *ignore_file_names[] = {"vpncore.log", "trustcore.log", "timerslack_ns"};
//C/C++中计算字符串数组长度方法:int len = sizeof(array)/sizeof(array[0])
//注意:字符串数组作为擦参数传递给其他函数时,对方函数中sizeof(array)返回值始终未4,
//所以,如果一定要通过函数处理数组时,必须把数组长度一起传过去
int size = sizeof(ignore_file_names);
int firstSize = sizeof(ignore_file_names[0]);
int len = size/firstSize;
//hulk: is_ignore_complete_file_name: size: 12, firstSize: 4, length: 3
hulk_trace("hulk: is_ignore_complete_file_name: size: %d, firstSize: %d, length: %d", size, firstSize, len);
int i=0;
char *element;
do
{
if (i >= len){
//防止溢出
hulk_trace("hulk: is_ignore_complete_file_name: Invalid i: %d", i);
break;
}
element = ignore_file_names[i];
if (element != NULL && *element != 0){
//hulk_trace("hulk: is_ignore_complete_file_name: element: %s", element);
//strcmp返回值:
//如果返回值 < 0,则表示 str1 小于 str2
//如果返回值 > 0,则表示 str2 小于 str1
//如果返回值 = 0,则表示 str1 等于 str2
int res = strcmp(file_name, element);
bool equals = res == 0;
if (equals){
//hulk_trace("hulk: is_ignore_complete_file_name: found element: %s", element);
return true;
}
} else {
hulk_trace("hulk: is_ignore_complete_file_name: Invalid file array element: %s", element);
}
i++;
} while (i < len);
//未找到
return false;
}
/**
* 判断str1是否以str2开头
*
* @param str1
* @param str2
* @return bool 如果是返回true, 不是返回 false
*/
bool start_with(const char * str1,char *str2){
int flag = is_start_with(str1, str2);
return flag == 1;
}
/**
* 判断str1是否以str2开头
* 如果是返回1
* 不是返回0
* 出错返回-1
* */
int is_start_with(const char * str1,char *str2)
{
if(str1 == NULL || str2 == NULL) {
//hulk_trace("hulk: is_start_with: Invalid str1= %s or str2= %s", str1, str2);
return -1;
}
int len1 = strlen(str1);
int len2 = strlen(str2);
if((len1 < len2) || (len1 == 0 || len2 == 0)) {
//hulk_trace("hulk: is_start_with: Invalid len1= %d or len2= %d", len1, len2);
return -1;
}
char *p = str2;
int i = 0;
while(*p != '\0')
{
if(*p != str1[i]) {
//hulk_trace("hulk: is_start_with: %s is not start with %s", str1, str2);
return 0;
}
p++;
i++;
}
//hulk_trace("hulk: is_start_with: %s is start with %s", str1, str2);
return 1;
}
/**
* 判断str1是否以str2结尾
* @param str1
* @param str2
* @return bool 如果是返回true, 不是返回 false
*/
bool end_with(const char *str1, char *str2) {
int flag = is_end_with(str1, str2);
return flag == 1;
}
/**
* 判断str1是否以str2结尾
* 如果是返回1
* 不是返回0
* 出错返回-1
* */
int is_end_with(const char *str1, char *str2)
{
if(str1 == NULL || str2 == NULL) {
//hulk_trace("hulk: is_end_with: Invalid str1= %s or str2= %s", str1, str2);
return -1;
}
int len1 = strlen(str1);
int len2 = strlen(str2);
if((len1 < len2) || (len1 == 0 || len2 == 0)) {
//hulk_trace("hulk: is_end_with: Invalid len1= %d or len2= %d", len1, len2);
return -1;
}
while(len2 >= 1)
{
if(str2[len2 - 1] != str1[len1 - 1]) {
//hulk_trace("hulk: is_end_with: %s is not end with %s", str1, str2);
return 0;
}
len2--;
len1--;
}
//hulk_trace("hulk: is_end_with: %s is end with %s", str1, str2);
return 1;
}
/**
* 判断文件书否存在
* 如果存在返回 true, 不存在返回false
* */
bool is_file_exists(const char *path)
{
//判断方法: 文件的可访问性判断文件是否存在
if(access(path,F_OK) == 0){
//hulk_trace("hulk:is_file_exists: existed file: %s", path);
return true;
}
return 0;
}
void hulk_trace() {
//调用log打印函数
}
04-12
1295