#define _CRT_SECURE_NO_DEPRECATE
#define _WINSOCK_DEPRECATED_NO_WARNINGS
+// Windows doesn't support getopt_long so we use ya_getopt instead.
+#include "ya_getopt.h"
+
/* Normal windows (platform-specific) includes */
#include <winsock2.h>
#pragma comment(lib, "Ws2_32.lib")
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
-typedef int ssize_t;
+typedef SSIZE_T ssize_t;
/* _popen, _pclose */
#define popen _popen
#define pclose _pclose
-
-/* getopt() wrapper */
-#define no_argument 0
-#define required_argument 1
-#define optional_argument 2
-struct option
-{
- char *name;
- int has_arg;
- int *flag;
- int val;
-};
-extern int optind;
-extern char optarg[514];
-int getopt_long(int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind);
-
-struct dirent
-{
- char d_name[MAX_PATH];
-};
-
-struct DIR
-{
- dirent dirent_pointer;
- HANDLE find_handle;
- WIN32_FIND_DATAA find_data;
- bool first;
-};
-
-CoreExport DIR * opendir(const char * path);
-CoreExport dirent * readdir(DIR * handle);
-CoreExport void closedir(DIR * handle);
+#define getpid _getpid
// warning: 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
// Normally, this is a huge problem, but due to our new/delete remap, we can ignore it.
return sent;
return -1;
}
+
+// This wrapper is just so we don't need to do #ifdef _WIN32 everywhere in the socket code. It is
+// not actually used and does not need to be the same size as sockaddr_un on UNIX systems.
+struct sockaddr_un
+{
+ ADDRESS_FAMILY sun_family;
+ char sun_path[6];
+};