source: EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-socket/test/sockettest.c@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 1.7 KB
Line 
1#include <stdlib.h>
2
3#include "mruby.h"
4#include "mruby/error.h"
5
6#if defined(_WIN32) || defined(_WIN64)
7
8#include <io.h>
9
10#if defined(_MSC_VER) || \
11 (defined(MRB_MINGW32_VERSION) && MRB_MINGW32_VERSION < 3021) || \
12 (defined(MRB_MINGW64_VERSION) && MRB_MINGW64_VERSION < 4000)
13
14#include <fcntl.h>
15#include <sys/stat.h>
16#define open _open
17#define close _close
18#define unlink _unlink
19
20static int
21mkstemp(char *p)
22{
23 int fd;
24 char* fname = _mktemp(p);
25 if (fname == NULL)
26 return -1;
27 fd = open(fname, O_RDWR | O_CREAT | O_EXCL, _S_IREAD | _S_IWRITE);
28 if (fd >= 0)
29 return fd;
30 return -1;
31}
32#endif
33
34#else
35
36#include <unistd.h>
37
38#endif
39
40mrb_value
41mrb_sockettest_tmppath(mrb_state *mrb, mrb_value klass)
42{
43 char name[] = "mruby-socket.XXXXXXXX";
44 int fd = mkstemp(name);
45 if (fd == -1) {
46 mrb_sys_fail(mrb, 0);
47 }
48 if (close(fd) == -1) {
49 mrb_sys_fail(mrb, 0);
50 }
51 if (unlink(name) == -1) {
52 mrb_sys_fail(mrb, 0);
53 }
54 return mrb_str_new_cstr(mrb, name);
55}
56
57mrb_value
58mrb_sockettest_win_p(mrb_state *mrb, mrb_value klass)
59{
60#ifdef _WIN32
61 return mrb_true_value();
62#else
63 return mrb_false_value();
64#endif
65}
66
67mrb_value
68mrb_sockettest_cygwin_p(mrb_state *mrb, mrb_value klass)
69{
70#if defined(__CYGWIN__) || defined(__CYGWIN32__)
71 return mrb_true_value();
72#else
73 return mrb_false_value();
74#endif
75}
76
77void
78mrb_mruby_socket_gem_test(mrb_state* mrb)
79{
80 struct RClass *c = mrb_define_module(mrb, "SocketTest");
81 mrb_define_class_method(mrb, c, "tmppath", mrb_sockettest_tmppath, MRB_ARGS_NONE());
82 mrb_define_class_method(mrb, c, "win?", mrb_sockettest_win_p, MRB_ARGS_NONE());
83 mrb_define_class_method(mrb, c, "cygwin?", mrb_sockettest_cygwin_p, MRB_ARGS_NONE());
84}
Note: See TracBrowser for help on using the repository browser.