Unverified Commit e422ba0b authored by ksss's avatar ksss

Use mkstemp instead of tempnam

parent 55431b4c
...@@ -2,18 +2,49 @@ ...@@ -2,18 +2,49 @@
#include <stdlib.h> #include <stdlib.h>
#include "mruby.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 #endif
mrb_value mrb_value
mrb_sockettest_tmppath(mrb_state *mrb, mrb_value klass) mrb_sockettest_tmppath(mrb_state *mrb, mrb_value klass)
{ {
char *tmp = tempnam(NULL, "mruby-socket"); char name[] = "mruby-socket.XXXXXXXX";
mrb_value str = mrb_str_new_cstr(mrb, tmp); int fd = mkstemp(name);
free(tmp); if (fd == -1) {
return str; 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 mrb_value
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment