summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/dbm/dbm.c5
-rw-r--r--ext/etc/etc.c2
-rw-r--r--ext/md5/md5init.c3
-rw-r--r--ext/socket/socket.c37
-rw-r--r--ext/tcltklib/tcltklib.c20
5 files changed, 65 insertions, 2 deletions
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c
index 2ecc725ecb..9bd981862e 100644
--- a/ext/dbm/dbm.c
+++ b/ext/dbm/dbm.c
@@ -15,6 +15,9 @@
#include <ndbm.h>
#include <fcntl.h>
#include <errno.h>
+#ifdef USE_CWGUSI
+# include <sys/errno.h>
+#endif
VALUE cDBM;
@@ -331,7 +334,7 @@ fdbm_store(obj, keystr, valstr)
#ifdef HAVE_DBM_CLAERERR
dbm_clearerr(dbm);
#endif
- if (errno == EPERM) rb_sys_fail(Qnil);
+ if (errno == EPERM) rb_sys_fail(0);
Fail("dbm_store failed");
}
diff --git a/ext/etc/etc.c b/ext/etc/etc.c
index 203df635c1..7bb7796663 100644
--- a/ext/etc/etc.c
+++ b/ext/etc/etc.c
@@ -52,7 +52,9 @@ setup_passwd(pwd)
str_new2(pwd->pw_passwd),
INT2FIX(pwd->pw_uid),
INT2FIX(pwd->pw_gid),
+#ifdef PW_GECOS
str_new2(pwd->pw_gecos),
+#endif
str_new2(pwd->pw_dir),
str_new2(pwd->pw_shell),
#ifdef PW_CHANGE
diff --git a/ext/md5/md5init.c b/ext/md5/md5init.c
index 894f52a849..65fd996ca9 100644
--- a/ext/md5/md5init.c
+++ b/ext/md5/md5init.c
@@ -61,6 +61,9 @@ md5_clone(obj)
static VALUE
md5_new(argc, argv, class)
+ int argc;
+ VALUE* argv;
+ VALUE class;
{
int i;
VALUE arg, obj;
diff --git a/ext/socket/socket.c b/ext/socket/socket.c
index 4d7cb0f35c..07de964188 100644
--- a/ext/socket/socket.c
+++ b/ext/socket/socket.c
@@ -22,6 +22,13 @@
#include <sys/un.h>
#endif
+#ifdef USE_CWGUSI
+extern int fileno(FILE *stream); /* <unix.mac.h> */
+extern int thread_select(int, fd_set*, fd_set*, fd_set*, struct timeval*); /* thread.c */
+# include <sys/errno.h>
+# include <GUSI.h>
+#endif
+
#if defined(THREAD) && defined(HAVE_FCNTL)
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
@@ -168,6 +175,7 @@ static VALUE
bsock_getsockopt(sock, lev, optname)
VALUE sock, lev, optname;
{
+#if !defined(__BEOS__)
int level, option, len;
char *buf;
OpenFile *fptr;
@@ -182,6 +190,9 @@ bsock_getsockopt(sock, lev, optname)
rb_sys_fail(fptr->path);
return str_new(buf, len);
+#else
+ rb_notimplement();
+#endif
}
static VALUE
@@ -401,7 +412,11 @@ thread_connect(fd, sockaddr, len, type)
#endif
FD_ZERO(&fds);
FD_SET(fd, &fds);
+#ifndef USE_CWGUSI
thread_select(fd+1, 0, &fds, 0, 0, 0);
+#else
+ thread_select(fd+1, 0, &fds, 0, 0);
+#endif
continue;
#endif
@@ -446,7 +461,11 @@ open_inet(class, h, serv, type)
host = RSTRING(h)->ptr;
hostent = gethostbyname(host);
if (hostent == NULL) {
+#ifndef USE_CWGUSI
hostaddr = inet_addr(host);
+#else
+ hostaddr = inet_addr(host).s_addr;
+#endif
if (hostaddr == -1) {
if (type == INET_SERVER && !strlen(host))
hostaddr = INADDR_ANY;
@@ -484,12 +503,16 @@ open_inet(class, h, serv, type)
_servent.s_proto = "tcp";
servent = &_servent;
}
+#ifdef __BEOS__
+ fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+#else
protoent = getprotobyname(servent->s_proto);
if (protoent == NULL) {
Raise(eSocket, "no such proto %s", servent->s_proto);
}
fd = socket(AF_INET, SOCK_STREAM, protoent->p_proto);
+#endif
memset(&sockaddr, 0, sizeof(sockaddr));
sockaddr.sin_family = AF_INET;
@@ -1060,8 +1083,10 @@ setup_domain_and_type(domain, dv, type, tv)
else if (strcmp(ptr, "AF_IMPLINK") == 0)
*dv = AF_IMPLINK;
#endif
+#ifdef PF_INET
else if (strcmp(ptr, "PF_INET") == 0)
*dv = PF_INET;
+#endif
#ifdef PF_UNIX
else if (strcmp(ptr, "PF_UNIX") == 0)
*dv = PF_UNIX;
@@ -1474,7 +1499,9 @@ Init_socket()
mConst = rb_define_module_under(cSocket, "Constants");
sock_define_const("SOCK_STREAM", SOCK_STREAM);
sock_define_const("SOCK_DGRAM", SOCK_DGRAM);
+#ifdef SOCK_RAW
sock_define_const("SOCK_RAW", SOCK_RAW);
+#endif
#ifdef SOCK_RDM
sock_define_const("SOCK_RDM", SOCK_RDM);
#endif
@@ -1486,7 +1513,9 @@ Init_socket()
#endif
sock_define_const("AF_INET", AF_INET);
+#ifdef PF_INET
sock_define_const("PF_INET", PF_INET);
+#endif
#ifdef AF_UNIX
sock_define_const("AF_UNIX", AF_UNIX);
sock_define_const("PF_UNIX", PF_UNIX);
@@ -1505,8 +1534,12 @@ Init_socket()
#endif
sock_define_const("MSG_OOB", MSG_OOB);
+#ifdef MSG_PEEK
sock_define_const("MSG_PEEK", MSG_PEEK);
+#endif
+#ifdef MSG_DONTROUTE
sock_define_const("MSG_DONTROUTE", MSG_DONTROUTE);
+#endif
sock_define_const("SOL_SOCKET", SOL_SOCKET);
#ifdef SOL_IP
@@ -1550,7 +1583,9 @@ Init_socket()
#ifdef SO_RCVBUF
sock_define_const("SO_RCVBUF", SO_RCVBUF);
#endif
+#ifdef SO_KEEPALIVE
sock_define_const("SO_KEEPALIVE", SO_KEEPALIVE);
+#endif
#ifdef SO_OOBINLINE
sock_define_const("SO_OOBINLINE", SO_OOBINLINE);
#endif
@@ -1560,7 +1595,9 @@ Init_socket()
#ifdef SO_PRIORITY
sock_define_const("SO_PRIORITY", SO_PRIORITY);
#endif
+#ifdef SO_LINGER
sock_define_const("SO_LINGER", SO_LINGER);
+#endif
#ifdef SOPRI_INTERACTIVE
sock_define_const("SOPRI_INTERACTIVE", SOPRI_INTERACTIVE);
diff --git a/ext/tcltklib/tcltklib.c b/ext/tcltklib/tcltklib.c
index 6cb017a398..952a9f73c2 100644
--- a/ext/tcltklib/tcltklib.c
+++ b/ext/tcltklib/tcltklib.c
@@ -11,6 +11,11 @@
#include <tcl.h>
#include <tk.h>
+#ifdef __MACOS__
+# include <tkMac.h>
+# include <Quickdraw.h>
+#endif
+
/* for debug */
#define DUMP1(ARG1) if (debug) { fprintf(stderr, "tcltklib: %s\n", ARG1);}
@@ -112,7 +117,7 @@ ip_ruby(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
DUMP2("rb_eval_string(%s)", argv[1]);
old_trapflg = trap_immediate;
trap_immediate = 0;
- res = rb_rescue(rb_eval_string, argv[1], ip_eval_rescue, &failed);
+ res = rb_rescue(rb_eval_string, (VALUE)argv[1], ip_eval_rescue, (VALUE)&failed);
trap_immediate = old_trapflg;
if (failed) {
@@ -253,6 +258,15 @@ ip_retval(VALUE self)
return (INT2FIX(ptr->return_value));
}
+#ifdef __MACOS__
+static void
+_macinit()
+{
+ tcl_macQdPtr = &qd; /* setup QuickDraw globals */
+ Tcl_MacSetEventProc(TkMacConvertEvent); /* setup event handler */
+}
+#endif
+
/*---- initialization ----*/
void Init_tcltklib()
{
@@ -269,6 +283,10 @@ void Init_tcltklib()
rb_define_method(ip, "_return_value", ip_retval, 0);
rb_define_method(ip, "mainloop", lib_mainloop, 0);
+#ifdef __MACOS__
+ _macinit();
+#endif
+
/*---- initialize tcl/tk libraries ----*/
/* from Tk_Main() */
DUMP1("Tcl_FindExecutable");