#include #include #include #include long long diff_time(struct timespec *start, struct timespec *end) { long long diff; diff = (end->tv_sec - start->tv_sec) * 1000 * 1000; diff += (end->tv_nsec - start->tv_nsec) / 1000; return diff; } int Sleep(int ms) { struct timespec ts; struct timespec rem; ts.tv_sec = ms / 1000; ts.tv_nsec = (ms % 1000) * 1000 * 1000; for (;;) { if (nanosleep(&ts, &rem) == 0) { break; } else { if (errno == EINTR) { ts = rem; continue; } return -1; } } return 0; } void print_buffer(const unsigned char *buf, unsigned int len) { for (unsigned int i = 0; i < len; ++i) { fprintf(stdout, "0x%02X ", buf[i]); if (i % 8 == 7) fprintf(stdout, "\n"); } fprintf(stdout, "\n"); } const char * StripPath(const char * path, ssize_t size) { int i; const char * str; for (i = size - 1, str = &path[size - 1]; i > 0; --i, --str) if (path[i - 1] == '/') break; return str; } unsigned long extract_long(const unsigned char *data) { return (unsigned long)data [0] + (unsigned long)data [1] * 0x100 + (unsigned long)data [2] * 0x10000 + (unsigned long)data [3] * 0x1000000; } unsigned short extract_short(const unsigned char *data) { return (unsigned long)data [0] + (unsigned long)data [1] * 0x100; }