2018-08-21 16:11:50 +08:00
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <tfe_utils.h>
|
2018-10-18 12:13:41 +08:00
|
|
|
#include <time.h>
|
2018-08-21 16:11:50 +08:00
|
|
|
|
|
|
|
|
int addr_sock_to_layer(struct sockaddr * sock_addr, int sockaddrlen, struct layer_addr * layer_addr)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int addr_layer_to_sock(struct layer_addr * layer_addr, struct sockaddr * sock_addr)
|
|
|
|
|
{
|
|
|
|
|
int sockaddrlen=-1;
|
|
|
|
|
return sockaddrlen;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//functioned as strdup, for dictator compatible.
|
|
|
|
|
char* tfe_strdup(const char* s)
|
|
|
|
|
{
|
|
|
|
|
char*d=NULL;
|
|
|
|
|
if(s==NULL)
|
|
|
|
|
{
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
d=(char*)malloc(strlen(s)+1);
|
|
|
|
|
memcpy(d,s,strlen(s)+1);
|
|
|
|
|
return d;
|
|
|
|
|
}
|
2018-10-18 12:13:41 +08:00
|
|
|
char *tfe_thread_safe_ctime(const time_t *tp, char *buf, int len)
|
|
|
|
|
{
|
|
|
|
|
unsigned int year, month, day, weekday, hour, min, sec;
|
|
|
|
|
unsigned int year_days = 365;
|
|
|
|
|
unsigned int month_days[12] =
|
|
|
|
|
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
|
|
|
|
static unsigned char weekday_str[7][4] =
|
|
|
|
|
{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
|
|
|
|
|
static unsigned char month_str[12][4] = {"Jan", "Feb", "Mar", "Apr",
|
|
|
|
|
"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
|
|
|
|
|
};
|
|
|
|
|
sec = * tp;
|
|
|
|
|
min = sec / 60; sec = sec % 60;
|
|
|
|
|
hour = min / 60; min = min % 60; hour += 8;
|
|
|
|
|
day = hour / 24; hour = hour % 24;
|
|
|
|
|
weekday = day % 7; weekday = (weekday + 4) % 7;
|
|
|
|
|
|
|
|
|
|
for(year = 1970; day >= year_days;)
|
|
|
|
|
{
|
|
|
|
|
day -= year_days;
|
|
|
|
|
year ++;
|
|
|
|
|
|
|
|
|
|
if(0 == year % 4 && (0 != year % 100 || 0 == year % 400))
|
|
|
|
|
year_days = 366;
|
|
|
|
|
else year_days = 365;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(366 == year_days) month_days[1] = 29;
|
|
|
|
|
|
|
|
|
|
//bug fix by yw 20120808
|
|
|
|
|
for(month = 0; day >= month_days[month];)
|
|
|
|
|
{
|
|
|
|
|
day -= month_days[month];
|
|
|
|
|
month ++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
snprintf(buf, len, "%02d:%02d:%02d, %04d/%02d/%02d, %s",
|
|
|
|
|
hour, min, sec, year, month, day, weekday_str[week_day]);
|
|
|
|
|
*/
|
|
|
|
|
snprintf(buf, len, "%s %s %d %02d:%02d:%02d %d", weekday_str[weekday],
|
|
|
|
|
month_str[month], day + 1, hour, min, sec, year);
|
|
|
|
|
return buf;
|
|
|
|
|
}
|
2018-11-02 20:38:06 +08:00
|
|
|
//replacement of glibc scandir, to adapt dictator malloc wrap
|
|
|
|
|
int tfe_scandir(const char *dir, struct dirent ***namelist,
|
|
|
|
|
int(*filter)(const struct dirent *),
|
|
|
|
|
int(*compar)(const void *, const void *))
|
|
|
|
|
{
|
|
|
|
|
DIR * od;
|
|
|
|
|
int n = 0;
|
|
|
|
|
int ENLARGE_STEP=1024;
|
|
|
|
|
int DIR_ENT_SIZE=ENLARGE_STEP;
|
|
|
|
|
struct dirent ** list = NULL;
|
|
|
|
|
struct dirent * p;
|
|
|
|
|
struct dirent entry,*result;
|
|
|
|
|
|
|
|
|
|
if((dir == NULL) || (namelist == NULL))
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
od = opendir(dir);
|
|
|
|
|
if(od == NULL)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
list = (struct dirent **)malloc(DIR_ENT_SIZE*sizeof(struct dirent *));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while(0==readdir_r(od,&entry,&result))
|
|
|
|
|
{
|
|
|
|
|
if(result==NULL)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if( filter && !filter(&entry))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
p = (struct dirent *)malloc(sizeof(struct dirent));
|
|
|
|
|
memcpy((void *)p,(void *)(&entry),sizeof(struct dirent));
|
|
|
|
|
list[n] = p;
|
|
|
|
|
|
|
|
|
|
n++;
|
|
|
|
|
if(n >= DIR_ENT_SIZE)
|
|
|
|
|
{
|
|
|
|
|
DIR_ENT_SIZE+=ENLARGE_STEP;
|
|
|
|
|
list=(struct dirent **)realloc((void*)list,DIR_ENT_SIZE*sizeof(struct dirent *));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
closedir(od);
|
|
|
|
|
|
|
|
|
|
*namelist = list;
|
|
|
|
|
|
|
|
|
|
if(compar)
|
|
|
|
|
qsort((void *)*namelist,n,sizeof(struct dirent *),compar);
|
|
|
|
|
|
|
|
|
|
return n;
|
|
|
|
|
|
|
|
|
|
}
|
2018-09-30 11:01:18 +08:00
|
|
|
|