"BITAND", "BITOR"
};
-void util_debug(const char *area, const char *ms, ...) {
- va_list va;
- if (!OPTS_OPTION_BOOL(OPTION_DEBUG))
- return;
-
- if (!strcmp(area, "MEM") && !OPTS_OPTION_BOOL(OPTION_MEMCHK))
- return;
-
- va_start(va, ms);
- con_out ("[%s] ", area);
- con_vout(ms, va);
- va_end (va);
-}
-
/*
* only required if big endian .. otherwise no need to swap
* data.
return read;
}
-/*
- * These are various re-implementations (wrapping the real ones) of
- * string functions that MSVC considers unsafe. We wrap these up and
- * use the safe variations on MSVC.
- */
-#ifdef _MSC_VER
- static char **util_strerror_allocated() {
- static char **data = NULL;
- return data;
- }
-
- static void util_strerror_cleanup(void) {
- size_t i;
- char **data = util_strerror_allocated();
- for (i = 0; i < vec_size(data); i++)
- mem_d(data[i]);
- vec_free(data);
- }
-
- const char *util_strerror(int num) {
- char *allocated = NULL;
- static bool install = false;
- static size_t tries = 0;
- char **vector = util_strerror_allocated();
-
- /* try installing cleanup handler */
- while (!install) {
- if (tries == 32)
- return "(unknown)";
-
- install = !atexit(&util_strerror_cleanup);
- tries ++;
- }
-
- allocated = (char*)mem_a(4096); /* A page must be enough */
- strerror_s(allocated, 4096, num);
-
- vec_push(vector, allocated);
- return (const char *)allocated;
- }
-
- int util_snprintf(char *src, size_t bytes, const char *format, ...) {
- int rt;
- va_list va;
- va_start(va, format);
-
- rt = vsprintf_s(src, bytes, format, va);
- va_end (va);
-
- return rt;
- }
-
- char *util_strcat(char *dest, const char *src) {
- strcat_s(dest, strlen(src), src);
- return dest;
- }
-
- char *util_strncpy(char *dest, const char *src, size_t num) {
- strncpy_s(dest, num, src, num);
- return dest;
- }
-#else
- const char *util_strerror(int num) {
- return strerror(num);
- }
-
- int util_snprintf(char *src, size_t bytes, const char *format, ...) {
- int rt;
- va_list va;
- va_start(va, format);
- rt = vsnprintf(src, bytes, format, va);
- va_end (va);
-
- return rt;
- }
-
- char *util_strcat(char *dest, const char *src) {
- return strcat(dest, src);
- }
-
- char *util_strncpy(char *dest, const char *src, size_t num) {
- return strncpy(dest, src, num);
- }
-
-#endif /*! _MSC_VER */
-
-
void util_seed(uint32_t value) {
srand((int)value);
}