#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
+#include <string.h>
#ifdef _WIN32
#ifndef snprintf
#ifndef vsnprintf
#define vsnprintf _vsnprintf
#endif
-#define PATH_SEP '\\'
-#else /* !_WIN32 */
-#define PATH_SEP '/'
-#endif /* !_WIN32 */
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
+#ifndef strcasecmp
+#define strcasecmp stricmp
#endif
+#endif /* !_WIN32 */
namespace os {
-void AcquireMutex(void);
-
-void ReleaseMutex(void);
-
-bool GetProcessName(char *str, size_t size);
-bool GetCurrentDir(char *str, size_t size);
-
-void DebugMessage(const char *format, ...)
+void log(const char *format, ...)
#ifdef __GNUC__
__attribute__ ((format (printf, 1, 2)))
#endif
#endif
/**
- * Get the current time in microseconds from an unknown base.
+ * Exit immediately.
+ *
+ * This should be called only from the wrappers, when there is no safe way of
+ * failing gracefully.
*/
-long long GetTime(void);
+void abort(void);
-void Abort(void);
+void setExceptionCallback(void (*callback)(void));
+void resetExceptionCallback(void);
-void SetExceptionCallback(void (*callback)(void));
-void ResetExceptionCallback(void);
+/**
+ * Returns a pseudo-random integer in the range 0 to RAND_MAX.
+ */
+static inline int
+random(void) {
+#ifdef _WIN32
+ return ::rand();
+#else
+ return ::random();
+#endif
+}
} /* namespace os */