summaryrefslogtreecommitdiff
blob: 3f30d592a22c405bb2bb08e17571e2ca01237b7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
diff -Naur ruby-tcpwrap.orig//tcpwrap.c ruby-tcpwrap//tcpwrap.c
--- ruby-tcpwrap.orig//tcpwrap.c	2003-08-20 12:30:10.000000000 +0900
+++ ruby-tcpwrap//tcpwrap.c	2010-05-28 08:08:49.000000000 +0900
@@ -25,7 +25,11 @@
  */
 
 #include "ruby.h"
+#ifdef HAVE_RUBY_IO_H
+#include "ruby/io.h"
+#else
 #include "rubyio.h"
+#endif
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -46,6 +50,10 @@
 
 #define DEFAULT_RFC1413_QUERY_TIMEOUT 30
 
+#ifndef RSTRING_PTR
+#define RSTRING_PTR(str) RSTRING(str)->ptr
+#endif
+
 int allow_severity = 0;
 int deny_severity = 0;
 
@@ -101,7 +109,7 @@
     tcp_wrapper_t *tcpd;
     VALUE sock;
     int sockfd;
-    OpenFile *fptr;
+    rb_io_t *fptr;
     struct sockaddr_storage addr;
     char client_name[NI_MAXHOST] = STRING_UNKNOWN;
     char client_addr[NI_MAXHOST] = STRING_UNKNOWN;
@@ -113,7 +121,11 @@
  again:
     sock = rb_funcall(tcpd->server, rb_intern("accept"), 0);
     GetOpenFile(sock, fptr);
+#ifdef HAVE_RUBY_IO_H
+    sockfd = fileno(fptr->fd);
+#else
     sockfd = fileno(fptr->f);
+#endif
     if (getpeername(sockfd, (struct sockaddr*) &addr, &len) < 0)
 	rb_sys_fail("getpeername(2)");
     error = getnameinfo((struct sockaddr*) &addr, len,
@@ -132,7 +144,7 @@
     if (tcpd->ident_lookup)
 	client_user = ident_id(sockfd, tcpd->ident_timeout);
 #endif
-    if (!hosts_ctl(RSTRING(tcpd->daemon)->ptr,
+    if (!hosts_ctl(RSTRING_PTR(tcpd->daemon),
 		   client_name,
 		   client_addr,
 		   (client_user == NULL) ? STRING_UNKNOWN : client_user)) {
@@ -157,7 +169,7 @@
     static char hosts_allow[MAXPATHLEN];
 
     Check_SafeStr(s);
-    snprintf(hosts_allow, sizeof(hosts_allow), "%s", RSTRING(s)->ptr);
+    snprintf(hosts_allow, sizeof(hosts_allow), "%s", RSTRING_PTR(s));
     if(access(hosts_allow, R_OK) < 0)
 	rb_warning("cannot read %s", hosts_allow);
     hosts_allow_table = hosts_allow;
@@ -177,7 +189,7 @@
     static char hosts_deny[MAXPATHLEN];
 
     Check_SafeStr(s);
-    snprintf(hosts_deny, sizeof(hosts_deny), "%s", RSTRING(s)->ptr);
+    snprintf(hosts_deny, sizeof(hosts_deny), "%s", RSTRING_PTR(s));
     if(access(hosts_deny, R_OK) < 0)
 	rb_warning("cannot read %s", hosts_deny);
     hosts_deny_table = hosts_deny;
@@ -196,7 +208,7 @@
 {
     if(NIL_P(s)) return STRING_UNKNOWN;
     Check_Type(s, T_STRING);
-    return RSTRING(s)->ptr;
+    return RSTRING_PTR(s);
 }
 
 static VALUE