18#ifndef WIN32_LEAN_AND_MEAN
19#define WIN32_LEAN_AND_MEAN
24typedef CRITICAL_SECTION compat_mutex_t;
26static inline int compat_mutex_init(compat_mutex_t *m) {
27 InitializeCriticalSection(m);
30static inline void compat_mutex_lock(compat_mutex_t *m) {
31 EnterCriticalSection(m);
33static inline void compat_mutex_unlock(compat_mutex_t *m) {
34 LeaveCriticalSection(m);
36static inline void compat_mutex_destroy(compat_mutex_t *m) {
37 DeleteCriticalSection(m);
40#define compat_isatty(fd) _isatty(fd)
41#define compat_fileno(f) _fileno(f)
42#define compat_strdup(s) _strdup(s)
50typedef pthread_mutex_t compat_mutex_t;
52static inline int compat_mutex_init(compat_mutex_t *m) {
53 return pthread_mutex_init(m, NULL);
55static inline void compat_mutex_lock(compat_mutex_t *m) {
56 pthread_mutex_lock(m);
58static inline void compat_mutex_unlock(compat_mutex_t *m) {
59 pthread_mutex_unlock(m);
61static inline void compat_mutex_destroy(compat_mutex_t *m) {
62 pthread_mutex_destroy(m);
65#define compat_isatty(fd) isatty(fd)
66#define compat_fileno(f) fileno(f)
67#define compat_strdup(s) strdup(s)
72static inline int compat_is_path_sep(
char c) {
74 return c ==
'/' || c ==
'\\';
File operation helper functions.