diff options
| author | ksss <[email protected]> | 2018-01-31 11:22:37 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2018-01-31 11:34:29 +0900 |
| commit | e422ba0bffcf9231febeaf3d1c69e65cbd530986 (patch) | |
| tree | 37d98c4bb90e752efa6f2661bbd7eb3852114bc1 /mrbgems/mruby-socket/test | |
| parent | 55431b4cef95541dc07f30f52b7fad9e9638b0be (diff) | |
| download | mruby-e422ba0bffcf9231febeaf3d1c69e65cbd530986.tar.gz mruby-e422ba0bffcf9231febeaf3d1c69e65cbd530986.zip | |
Use mkstemp instead of tempnam
Diffstat (limited to 'mrbgems/mruby-socket/test')
| -rw-r--r-- | mrbgems/mruby-socket/test/sockettest.c | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/mrbgems/mruby-socket/test/sockettest.c b/mrbgems/mruby-socket/test/sockettest.c index ee5975f92..c6c2e494f 100644 --- a/mrbgems/mruby-socket/test/sockettest.c +++ b/mrbgems/mruby-socket/test/sockettest.c @@ -2,18 +2,49 @@ #include <stdlib.h> #include "mruby.h" +#include "mruby/error.h" + +#if defined(_WIN32) || defined(_WIN64) + +#define close _close +#define unlink _unlink + +#ifdef _MSC_VER +static int +mkstemp(char *p) +{ + int fd; + char* fname = _mktemp(p); + if (fname == NULL) + return -1; + fd = open(fname, O_RDWR | O_CREAT | O_EXCL, _S_IREAD | _S_IWRITE); + if (fd >= 0) + return fd; + return -1; +} +#endif + +#else + +#include <unistd.h> -#ifdef _WIN32 - #define tempnam _tempnam #endif mrb_value mrb_sockettest_tmppath(mrb_state *mrb, mrb_value klass) { - char *tmp = tempnam(NULL, "mruby-socket"); - mrb_value str = mrb_str_new_cstr(mrb, tmp); - free(tmp); - return str; + char name[] = "mruby-socket.XXXXXXXX"; + int fd = mkstemp(name); + if (fd == -1) { + mrb_sys_fail(mrb, 0); + } + if (close(fd) == -1) { + mrb_sys_fail(mrb, 0); + } + if (unlink(name) == -1) { + mrb_sys_fail(mrb, 0); + } + return mrb_str_new_cstr(mrb, name); } mrb_value |
