Merge remote-tracking branch 'upstream/master'

This commit is contained in:
marshmellow42 2017-03-14 14:48:31 -04:00
commit c9ad641b61
60 changed files with 831 additions and 2829 deletions

View file

@ -8,15 +8,26 @@
// utilities
//-----------------------------------------------------------------------------
#include <ctype.h>
#if !defined(_WIN32)
#define _POSIX_C_SOURCE 199309L // need nanosleep()
#endif
#include "util.h"
#include <stdint.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "data.h"
#define MAX_BIN_BREAK_LENGTH (3072+384+1)
#ifndef _WIN32
#include <termios.h>
#include <sys/ioctl.h>
int ukbhit(void)
{
int cnt = 0;
@ -42,6 +53,7 @@ int ukbhit(void)
}
#else
#include <conio.h>
int ukbhit(void) {
return kbhit();
@ -600,3 +612,38 @@ void clean_ascii(unsigned char *buf, size_t len) {
buf[i] = '.';
}
}
// Timer functions
#if !defined (_WIN32)
#include <errno.h>
static void nsleep(uint64_t n) {
struct timespec timeout;
timeout.tv_sec = n/1000000000;
timeout.tv_nsec = n%1000000000;
while (nanosleep(&timeout, &timeout) && errno == EINTR);
}
void msleep(uint32_t n) {
nsleep(1000000 * n);
}
#endif // _WIN32
// a milliseconds timer for performance measurement
uint64_t msclock() {
#if defined(_WIN32)
#include <sys/types.h>
struct _timeb t;
if (_ftime_s(&t)) {
return 0;
} else {
return 1000 * t.time + t.millitm;
}
#else
struct timespec t;
clock_gettime(CLOCK_MONOTONIC, &t);
return (t.tv_sec * 1000 + t.tv_nsec / 1000000);
#endif
}