summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-12-08 09:19:59 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-12-08 09:19:59 +0900
commit9df7bceb156d9eb5262fc742fa83f025f64b9d09 (patch)
tree9e82ba8ff6e9cd8543b1d9c0c4613759ea70dbc5
parentb724e06cf25eee4c05dcc0e3a1a65bb608091cc4 (diff)
downloadmruby-9df7bceb156d9eb5262fc742fa83f025f64b9d09.tar.gz
mruby-9df7bceb156d9eb5262fc742fa83f025f64b9d09.zip
AppVeyor compiler does not proved some POSIX functions.
- `mode_t` by `int` - `umask` by `_umask` - `rmdir` by `_rmdir` - `mkstemp` and `mkdtemp` by using `_mktemp`
-rw-r--r--mrbgems/mruby-io/test/mruby_io_test.c42
1 files changed, 40 insertions, 2 deletions
diff --git a/mrbgems/mruby-io/test/mruby_io_test.c b/mrbgems/mruby-io/test/mruby_io_test.c
index ffaa27ff4..35dce463e 100644
--- a/mrbgems/mruby-io/test/mruby_io_test.c
+++ b/mrbgems/mruby-io/test/mruby_io_test.c
@@ -2,8 +2,46 @@
#include <errno.h>
#if defined(_WIN32) || defined(_WIN64)
- #include <winsock.h>
- #include <io.h>
+
+#include <winsock.h>
+#include <io.h>
+#include <direct.h>
+#include <string.h>
+#include <stdlib.h>
+#include <malloc.h>
+
+typedef int mode_t;
+
+static int
+mkstemp(char *p)
+{
+ char *template, *path;
+ char *path;
+ int fd;
+
+ template = strdup(p);
+ if (template == NULL) return -1;
+ path = _mktemp(template);
+ if (path[0] == 0) {
+ free(path);
+ return -1;
+ }
+ fd = _open(path, _O_CREAT|_O_BINARY|_O_RDWR|_O_TEMPORARY);
+ free(path);
+ return fd;
+}
+
+static char*
+mkdtemp(char *template)
+{
+ char *path = _mktemp(template);
+ if (path[0] == 0) return NULL;
+ if (_mkdir(path) < 0) return NULL;
+ return path;
+}
+
+#define umask(mode) _umask(mode)
+#define rmdir(path) _rmdir(path)
#else
#include <sys/socket.h>
#include <unistd.h>