mongoose/src/arch_win32.h

106 lines
2.1 KiB
C
Raw Normal View History

2020-12-05 19:26:32 +08:00
#pragma once
#if MG_ARCH == MG_ARCH_WIN32
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#ifndef _WINSOCK_DEPRECATED_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#endif
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
2020-12-05 19:26:32 +08:00
#if defined(_MSC_VER) && _MSC_VER < 1700
#define __func__ ""
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
typedef unsigned char uint8_t;
2021-01-25 18:08:15 +08:00
typedef char int8_t;
2020-12-05 19:26:32 +08:00
typedef unsigned short uint16_t;
2021-01-25 18:08:15 +08:00
typedef short int16_t;
2020-12-05 19:26:32 +08:00
typedef unsigned int uint32_t;
2021-01-25 18:08:15 +08:00
typedef int int32_t;
2021-01-26 20:16:58 +08:00
typedef enum { false = 0, true = 1 } bool;
2020-12-05 19:26:32 +08:00
#else
#include <stdbool.h>
#include <stdint.h>
2020-12-22 17:44:59 +08:00
#include <ws2tcpip.h>
2020-12-05 19:26:32 +08:00
#endif
#include <winsock2.h>
// Protect from calls like std::snprintf in app code
// See https://github.com/cesanta/mongoose/issues/1047
#ifndef __cplusplus
2020-12-05 19:26:32 +08:00
#define snprintf _snprintf
#define vsnprintf _vsnprintf
#ifndef strdup // For MSVC with _DEBUG, see #1359
2020-12-05 19:26:32 +08:00
#define strdup(x) _strdup(x)
#endif
#endif
typedef unsigned suseconds_t;
2020-12-05 19:26:32 +08:00
typedef int socklen_t;
#define MG_DIRSEP '\\'
#ifndef PATH_MAX
#define PATH_MAX MAX_PATH
#endif
2020-12-05 19:26:32 +08:00
#ifndef EINPROGRESS
#define EINPROGRESS WSAEINPROGRESS
#endif
#ifndef EWOULDBLOCK
#define EWOULDBLOCK WSAEWOULDBLOCK
#endif
2021-07-24 17:35:48 +08:00
2021-12-23 02:04:27 +08:00
#define realpath(a, b) _fullpath((b), (a), MG_PATH_MAX)
#define sleep(x) Sleep(x)
2020-12-05 19:26:32 +08:00
#ifndef va_copy
#ifdef __va_copy
#define va_copy __va_copy
#else
#define va_copy(x, y) (x) = (y)
#endif
#endif
#ifndef S_ISDIR
#define S_ISDIR(x) (((x) &_S_IFMT) == _S_IFDIR)
#endif
#define MG_INT64_FMT "%I64d"
2021-12-22 02:16:12 +08:00
#ifndef MG_ENABLE_DIRLIST
2021-07-29 21:21:20 +08:00
#define MG_ENABLE_DIRLIST 1
2021-12-22 02:16:12 +08:00
#endif
2021-07-24 17:35:48 +08:00
2021-04-29 16:50:33 +08:00
// https://lgtm.com/rules/2154840805/ -gmtime, localtime, ctime and asctime
static __inline struct tm *gmtime_r(time_t *t, struct tm *tm) {
2021-12-22 05:50:18 +08:00
struct tm *x = gmtime(t);
*tm = *x;
return tm;
2021-04-29 16:50:33 +08:00
}
static __inline struct tm *localtime_r(time_t *t, struct tm *tm) {
2021-12-22 05:50:18 +08:00
struct tm *x = localtime(t);
*tm = *x;
return tm;
2021-04-29 16:50:33 +08:00
}
2020-12-05 19:26:32 +08:00
#endif