X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/edf751bb62607c66684fd0750888d1fd6efd30e7..c48c4d7856cc61694b9bb1a4d9a33f693cb4fbe2:/client/util.c diff --git a/client/util.c b/client/util.c index d07c915c..13067ec1 100644 --- a/client/util.c +++ b/client/util.c @@ -169,12 +169,12 @@ char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t brea size_t in_index = 0; // loop through the out_index to make sure we don't go too far - for (size_t out_index=0; out_index < max_len-1; out_index++) { + for (size_t out_index=0; out_index < max_len; out_index++) { // set character - (should be binary but verify it isn't more than 1 digit) if (data[in_index]<10) sprintf(tmp++, "%u", (unsigned int) data[in_index]); // check if a line break is needed and we have room to print it in our array - if ( (breaks > 0) && !((in_index+1) % breaks) && (out_index+1 != max_len) ) { + if ( (breaks > 0) && !((in_index+1) % breaks) && (out_index+1 < max_len) ) { // increment and print line break out_index++; sprintf(tmp++, "%s","\n"); @@ -634,16 +634,41 @@ void msleep(uint32_t n) { // a milliseconds timer for performance measurement uint64_t msclock() { #if defined(_WIN32) -#include - struct _timeb t; - if (_ftime_s(&t)) { - return 0; - } else { - return 1000 * t.time + t.millitm; - } + #include + + // WORKAROUND FOR MinGW (some versions - use if normal code does not compile) + // It has no _ftime_s and needs explicit inclusion of timeb.h + #include + struct _timeb t; + _ftime(&t); + return 1000 * t.time + t.millitm; + + // NORMAL CODE (use _ftime_s) + //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 } + +// determine number of logical CPU cores (use for multithreaded functions) +extern int num_CPUs(void) +{ +#if defined(_WIN32) + #include + SYSTEM_INFO sysinfo; + GetSystemInfo(&sysinfo); + return sysinfo.dwNumberOfProcessors; +#elif defined(__linux__) || defined(__APPLE__) + #include + return sysconf(_SC_NPROCESSORS_ONLN); +#else + return 1; +#endif +}