remove/adjust obsolete C preprocessor cases

Mac OS Classic and Palm ae long since unsupported.

TCP support implies sockets (since old Mac TCP is gone).

For what it's worth, make the build work without TCP support, although
no one ever builds that way.
This commit is contained in:
Matthew Flatt 2014-05-11 20:42:41 -06:00
parent 58e8ed7d7d
commit 97da48ab67
8 changed files with 73 additions and 235 deletions

View File

@ -850,76 +850,6 @@
# define FLAGS_ALREADY_SET # define FLAGS_ALREADY_SET
# endif
/************ Macintosh with CodeWarrior (not OS X) *************/
#if ((defined(__MWERKS__) && !defined(__BEOS__) && !defined(__palmos__) && !defined(OS_X)) \
|| defined(MPW_C) || defined(MPW_CPLUS))
# if defined(__POWERPC__)
# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc-mac"
# else
# define SCHEME_PLATFORM_LIBRARY_SUBPATH "68k-mac"
# endif
# define SYSTEM_TYPE_NAME "macos"
# define MAC_FILE_SYSTEM
# define NO_READDIR
# define NO_READLINK
# define USE_MAC_FILE_TOOLBOX
# define MACINTOSH_EVENTS
# define MAC_MZ_GUI_ENABLED
# define MAC_CLASSIC_PROCESS_CONTROL
//# define NEVER_EVER_SLEEP
# define MACINTOSH_GIVE_TIME
# define MACINTOSH_SIOUX
# if !defined(__POWERPC__)
# define MACINTOSH_SET_STACK
# define COMPUTE_NEG_INEXACT_TO_EXACT_AS_POS
# define NAN_LT_COMPARISON_WRONG
# define SQRT_NAN_IS_WRONG
# define ATAN2_DOESNT_WORK_WITH_INFINITIES
# else
# define CODEFRAGMENT_DYNAMIC_LOAD
# endif
# ifndef MZSCHEME_IS_CODEFRAGMENT
# define LINK_EXTENSIONS_BY_TABLE
# endif
# define DO_STACK_CHECK
# define MACOS_FIND_STACK_BOUNDS
# define STACK_SAFETY_MARGIN 10000
# define TIME_SYNTAX
# define USE_MACTIME
# define DIR_FUNCTION
# define TIME_TYPE_IS_UNSIGNED
# define NO_SYS_INCLUDE_SUBDIR
# define NO_SLEEP
# define NO_USLEEP
# define NO_STAT_PROC
# define DONT_IGNORE_PIPE_SIGNAL
# define TRIG_ZERO_NEEDS_SIGN_CHECK
# define MACOS_UNICODE_SUPPORT
# define USE_MAC_TCP
# define SIGSET_IS_SIGNAL
# ifdef MPW_C
# define NO_INLINE_KEYWORD
# endif
# define FLAGS_ALREADY_SET
# endif # endif
/************** DOS with Borland C++ ****************/ /************** DOS with Borland C++ ****************/
@ -960,41 +890,6 @@
# define FLAGS_ALREADY_SET # define FLAGS_ALREADY_SET
#endif
/************ PalmOS *************/
#if defined(__palmos__)
# define SCHEME_PLATFORM_LIBRARY_SUBPATH "68k-palm"
# define SYSTEM_TYPE_NAME "palm"
# define NO_FILE_SYSTEM_UTILS
# define NO_TCP_SUPPORT
# define MZSCHEME_SOMETHING_OMITTED
# define PALMOS_STUFF
# define NO_STAT_PROC
# define NO_USER_BREAK_HANDLER
# define NO_USLEEP
# define DO_STACK_CHECK
# define PALM_FIND_STACK_BOUNDS
# define STACK_SAFETY_MARGIN 1000
# define TIME_SYNTAX
# define USE_PALMTIME
# define USER_TIME_IS_CLOCK
# define TIME_TYPE_IS_UNSIGNED
# define DONT_IGNORE_PIPE_SIGNAL
# define DONT_IGNORE_FPE_SIGNAL
# define USE_PALM_INF_TESTS
# define FLAGS_ALREADY_SET
#endif #endif
/************ QNX *************/ /************ QNX *************/

View File

@ -791,7 +791,7 @@ static void make_kernel_env(void)
DONE_TIME(env); DONE_TIME(env);
register_network_evts(); scheme_register_network_evts();
REGISTER_SO(kernel_symbol); REGISTER_SO(kernel_symbol);
kernel_symbol = scheme_intern_symbol("#%kernel"); kernel_symbol = scheme_intern_symbol("#%kernel");

View File

@ -1,5 +1,6 @@
/* >>>> Generated by mkmark.rkt from mzmarksrc.c <<<< */ /* >>>> Generated by mkmark.rkt from mzmarksrc.c <<<< */
#ifdef USE_TCP
static int mark_listener_SIZE(void *p, struct NewGC *gc) { static int mark_listener_SIZE(void *p, struct NewGC *gc) {
listener_t *l = (listener_t *)p; listener_t *l = (listener_t *)p;
@ -37,7 +38,6 @@ static int mark_listener_FIXUP(void *p, struct NewGC *gc) {
#define mark_listener_IS_CONST_SIZE 0 #define mark_listener_IS_CONST_SIZE 0
#ifdef USE_TCP
static int mark_tcp_SIZE(void *p, struct NewGC *gc) { static int mark_tcp_SIZE(void *p, struct NewGC *gc) {
return return
gcBYTES_TO_WORDS(sizeof(Scheme_Tcp)); gcBYTES_TO_WORDS(sizeof(Scheme_Tcp));

View File

@ -1835,6 +1835,7 @@ END print;
START network; START network;
#ifdef USE_TCP
mark_listener { mark_listener {
listener_t *l = (listener_t *)p; listener_t *l = (listener_t *)p;
@ -1849,7 +1850,6 @@ mark_listener {
gcBYTES_TO_WORDS(sizeof(listener_t) + ((l->count - mzFLEX_DELTA) * sizeof(tcp_t))); gcBYTES_TO_WORDS(sizeof(listener_t) + ((l->count - mzFLEX_DELTA) * sizeof(tcp_t)));
} }
#ifdef USE_TCP
mark_tcp { mark_tcp {
mark: mark:
Scheme_Tcp *tcp = (Scheme_Tcp *)p; Scheme_Tcp *tcp = (Scheme_Tcp *)p;

View File

@ -126,7 +126,6 @@ static void closesocket(intptr_t s) {
typedef SOCKET tcp_t; typedef SOCKET tcp_t;
#endif #endif
#ifdef USE_SOCKETS_TCP
typedef struct { typedef struct {
Scheme_Object so; Scheme_Object so;
Scheme_Custodian_Reference *mref; Scheme_Custodian_Reference *mref;
@ -136,7 +135,6 @@ typedef struct {
# endif # endif
tcp_t s[mzFLEX_ARRAY_DECL]; tcp_t s[mzFLEX_ARRAY_DECL];
} listener_t; } listener_t;
#endif
typedef struct Scheme_Tcp_Buf { typedef struct Scheme_Tcp_Buf {
MZTAG_IF_REQUIRED MZTAG_IF_REQUIRED
@ -316,6 +314,7 @@ void scheme_init_network(Scheme_Env *env)
#endif #endif
} }
#ifdef USE_TCP
static int check_fd_sema(tcp_t s, int mode, Scheme_Schedule_Info *sinfo, Scheme_Object *orig) static int check_fd_sema(tcp_t s, int mode, Scheme_Schedule_Info *sinfo, Scheme_Object *orig)
{ {
Scheme_Object *sema; Scheme_Object *sema;
@ -332,6 +331,7 @@ static int check_fd_sema(tcp_t s, int mode, Scheme_Schedule_Info *sinfo, Scheme_
return 1; return 1;
} }
#endif
/*========================================================================*/ /*========================================================================*/
/* TCP glue */ /* TCP glue */
@ -346,12 +346,6 @@ static int check_fd_sema(tcp_t s, int mode, Scheme_Schedule_Info *sinfo, Scheme_
#ifdef USE_TCP #ifdef USE_TCP
#ifdef USE_SOCKETS_TCP
#define MAKE_TCP_ARG tcp_t tcp,
#else
#define MAKE_TCP_ARG
#endif
#define REGISTER_SOCKET(s) /**/ #define REGISTER_SOCKET(s) /**/
#define UNREGISTER_SOCKET(s) /**/ #define UNREGISTER_SOCKET(s) /**/
@ -773,8 +767,6 @@ void scheme_free_ghbn_data() {
void scheme_free_ghbn_data() { } void scheme_free_ghbn_data() { }
#endif #endif
#ifdef USE_SOCKETS_TCP
struct mz_addrinfo *scheme_get_host_address(const char *address, int id, int *err, struct mz_addrinfo *scheme_get_host_address(const char *address, int id, int *err,
int family, int passive, int tcp) int family, int passive, int tcp)
{ {
@ -829,7 +821,6 @@ const char *scheme_host_address_strerror(int errnum)
{ {
return mz_gai_strerror(errnum); return mz_gai_strerror(errnum);
} }
#endif
/******************************* WinSock ***********************************/ /******************************* WinSock ***********************************/
@ -952,12 +943,7 @@ static void TCP_INIT(char *name)
/* TCP ports and listeners */ /* TCP ports and listeners */
/*========================================================================*/ /*========================================================================*/
#ifdef USE_SOCKETS_TCP
#define LISTENER_WAS_CLOSED(x) (((listener_t *)(x))->s[0] == INVALID_SOCKET) #define LISTENER_WAS_CLOSED(x) (((listener_t *)(x))->s[0] == INVALID_SOCKET)
#endif
#ifndef LISTENER_WAS_CLOSED
#define LISTENER_WAS_CLOSED(x) 0
#endif
/* Forward declaration */ /* Forward declaration */
static int stop_listener(Scheme_Object *o); static int stop_listener(Scheme_Object *o);
@ -980,7 +966,6 @@ static Scheme_Object *listener_to_evt(listener_t *listener)
static int tcp_check_accept(Scheme_Object *_listener, Scheme_Schedule_Info *sinfo) static int tcp_check_accept(Scheme_Object *_listener, Scheme_Schedule_Info *sinfo)
{ {
#ifdef USE_SOCKETS_TCP
listener_t *listener = (listener_t *)_listener; listener_t *listener = (listener_t *)_listener;
int sr, i; int sr, i;
# ifndef HAVE_POLL_SYSCALL # ifndef HAVE_POLL_SYSCALL
@ -1063,14 +1048,11 @@ static int tcp_check_accept(Scheme_Object *_listener, Scheme_Schedule_Info *sinf
} }
} }
#endif
return 0; return 0;
} }
static void tcp_accept_needs_wakeup(Scheme_Object *_listener, void *fds) static void tcp_accept_needs_wakeup(Scheme_Object *_listener, void *fds)
{ {
#ifdef USE_SOCKETS_TCP
if (!LISTENER_WAS_CLOSED(_listener)) { if (!LISTENER_WAS_CLOSED(_listener)) {
listener_t *listener = (listener_t *)_listener; listener_t *listener = (listener_t *)_listener;
int i; int i;
@ -1085,12 +1067,10 @@ static void tcp_accept_needs_wakeup(Scheme_Object *_listener, void *fds)
MZ_FD_SET(s, (fd_set *)fds2); MZ_FD_SET(s, (fd_set *)fds2);
} }
} }
#endif
} }
static int tcp_check_connect(Scheme_Object *connector_p, Scheme_Schedule_Info *sinfo) static int tcp_check_connect(Scheme_Object *connector_p, Scheme_Schedule_Info *sinfo)
{ {
#ifdef USE_SOCKETS_TCP
tcp_t s; tcp_t s;
int sr; int sr;
@ -1147,13 +1127,11 @@ static int tcp_check_connect(Scheme_Object *connector_p, Scheme_Schedule_Info *s
check_fd_sema(s, MZFD_CREATE_WRITE, sinfo, NULL); check_fd_sema(s, MZFD_CREATE_WRITE, sinfo, NULL);
#endif
return 0; return 0;
} }
static void tcp_connect_needs_wakeup(Scheme_Object *connector_p, void *fds) static void tcp_connect_needs_wakeup(Scheme_Object *connector_p, void *fds)
{ {
#ifdef USE_SOCKETS_TCP
void *fds1, *fds2; void *fds1, *fds2;
tcp_t s = *(tcp_t *)connector_p; tcp_t s = *(tcp_t *)connector_p;
@ -1162,7 +1140,6 @@ static void tcp_connect_needs_wakeup(Scheme_Object *connector_p, void *fds)
MZ_FD_SET(s, (fd_set *)fds1); MZ_FD_SET(s, (fd_set *)fds1);
MZ_FD_SET(s, (fd_set *)fds2); MZ_FD_SET(s, (fd_set *)fds2);
#endif
} }
static int tcp_check_write(Scheme_Object *port, Scheme_Schedule_Info *sinfo) static int tcp_check_write(Scheme_Object *port, Scheme_Schedule_Info *sinfo)
@ -1177,7 +1154,6 @@ static int tcp_check_write(Scheme_Object *port, Scheme_Schedule_Info *sinfo)
return 0; return 0;
} }
#ifdef USE_SOCKETS_TCP
# ifdef HAVE_POLL_SYSCALL # ifdef HAVE_POLL_SYSCALL
{ {
GC_CAN_IGNORE struct pollfd pfd[1]; GC_CAN_IGNORE struct pollfd pfd[1];
@ -1222,27 +1198,6 @@ static int tcp_check_write(Scheme_Object *port, Scheme_Schedule_Info *sinfo)
return sr; return sr;
} }
# endif # endif
#else
{
TCPiopbX *xpb;
TCPiopb *pb;
int bytes;
xpb = mac_make_xpb(data);
pb = (TCPiopb *)xpb;
pb->csCode = TCPStatus;
if (mzPBControlSync((ParamBlockRec*)pb))
bytes = -1;
else {
bytes = pb->csParam.status.sendWindow - pb->csParam.status.amtUnackedData;
if (bytes < 0)
bytes = 0;
}
return !!bytes;
}
#endif
check_fd_sema(data->tcp, MZFD_CREATE_WRITE, sinfo, port); check_fd_sema(data->tcp, MZFD_CREATE_WRITE, sinfo, port);
@ -1251,7 +1206,6 @@ static int tcp_check_write(Scheme_Object *port, Scheme_Schedule_Info *sinfo)
static void tcp_write_needs_wakeup(Scheme_Object *port, void *fds) static void tcp_write_needs_wakeup(Scheme_Object *port, void *fds)
{ {
#ifdef USE_SOCKETS_TCP
Scheme_Object *conn = ((Scheme_Output_Port *)port)->port_data; Scheme_Object *conn = ((Scheme_Output_Port *)port)->port_data;
void *fds1, *fds2; void *fds1, *fds2;
tcp_t s = ((Scheme_Tcp *)conn)->tcp; tcp_t s = ((Scheme_Tcp *)conn)->tcp;
@ -1261,11 +1215,10 @@ static void tcp_write_needs_wakeup(Scheme_Object *port, void *fds)
MZ_FD_SET(s, (fd_set *)fds1); MZ_FD_SET(s, (fd_set *)fds1);
MZ_FD_SET(s, (fd_set *)fds2); MZ_FD_SET(s, (fd_set *)fds2);
#endif
} }
static Scheme_Tcp *make_tcp_port_data(MAKE_TCP_ARG int refcount) static Scheme_Tcp *make_tcp_port_data(tcp_t tcp, int refcount)
{ {
Scheme_Tcp *data; Scheme_Tcp *data;
char *bfr; char *bfr;
@ -1274,9 +1227,7 @@ static Scheme_Tcp *make_tcp_port_data(MAKE_TCP_ARG int refcount)
#ifdef MZTAG_REQUIRED #ifdef MZTAG_REQUIRED
data->b.type = scheme_rt_tcp; data->b.type = scheme_rt_tcp;
#endif #endif
#ifdef USE_SOCKETS_TCP
data->tcp = tcp; data->tcp = tcp;
#endif
bfr = (char *)scheme_malloc_atomic(TCP_BUFFER_SIZE); bfr = (char *)scheme_malloc_atomic(TCP_BUFFER_SIZE);
data->b.buffer = bfr; data->b.buffer = bfr;
@ -1303,7 +1254,6 @@ static Scheme_Tcp *make_tcp_port_data(MAKE_TCP_ARG int refcount)
static int tcp_byte_ready (Scheme_Input_Port *port, Scheme_Schedule_Info *sinfo) static int tcp_byte_ready (Scheme_Input_Port *port, Scheme_Schedule_Info *sinfo)
{ {
Scheme_Tcp *data; Scheme_Tcp *data;
#ifdef USE_SOCKETS_TCP
int sr; int sr;
# ifndef HAVE_POLL_SYSCALL # ifndef HAVE_POLL_SYSCALL
DECL_OS_FDSET(readfds); DECL_OS_FDSET(readfds);
@ -1312,7 +1262,6 @@ static int tcp_byte_ready (Scheme_Input_Port *port, Scheme_Schedule_Info *sinfo)
INIT_DECL_OS_RD_FDSET(readfds); INIT_DECL_OS_RD_FDSET(readfds);
INIT_DECL_OS_ER_FDSET(exfds); INIT_DECL_OS_ER_FDSET(exfds);
# endif
# endif # endif
if (port->closed) if (port->closed)
@ -1330,7 +1279,6 @@ static int tcp_byte_ready (Scheme_Input_Port *port, Scheme_Schedule_Info *sinfo)
return 0; return 0;
} }
#ifdef USE_SOCKETS_TCP
# ifdef HAVE_POLL_SYSCALL # ifdef HAVE_POLL_SYSCALL
{ {
GC_CAN_IGNORE struct pollfd pfd[1]; GC_CAN_IGNORE struct pollfd pfd[1];
@ -1358,7 +1306,6 @@ static int tcp_byte_ready (Scheme_Input_Port *port, Scheme_Schedule_Info *sinfo)
if (sr) if (sr)
return sr; return sr;
} }
# endif
# endif # endif
check_fd_sema(data->tcp, MZFD_CREATE_READ, sinfo, (Scheme_Object *)port); check_fd_sema(data->tcp, MZFD_CREATE_READ, sinfo, (Scheme_Object *)port);
@ -1402,7 +1349,6 @@ static intptr_t tcp_get_string(Scheme_Input_Port *port,
if (nonblock > 0) if (nonblock > 0)
return 0; return 0;
#ifdef USE_SOCKETS_TCP
{ {
Scheme_Object *sema; Scheme_Object *sema;
sema = scheme_fd_to_semaphore(data->tcp, MZFD_CREATE_READ, 1); sema = scheme_fd_to_semaphore(data->tcp, MZFD_CREATE_READ, 1);
@ -1415,14 +1361,6 @@ static intptr_t tcp_get_string(Scheme_Input_Port *port,
0.0, unless, 0.0, unless,
nonblock); nonblock);
} }
#else
do {
scheme_thread_block_enable_break((float)0.0, nonblock);
if (scheme_unless_ready(unless))
break;
} while (!tcp_byte_ready(port));
scheme_current_thread->ran_some = 1;
#endif
scheme_wait_input_allowed(port, nonblock); scheme_wait_input_allowed(port, nonblock);
@ -1444,7 +1382,6 @@ static intptr_t tcp_get_string(Scheme_Input_Port *port,
else else
read_amt = size; read_amt = size;
#ifdef USE_SOCKETS_TCP
{ {
int rn; int rn;
do { do {
@ -1461,8 +1398,6 @@ static intptr_t tcp_get_string(Scheme_Input_Port *port,
if ((data->b.bufmax == -1) && WAS_EAGAIN(errid)) if ((data->b.bufmax == -1) && WAS_EAGAIN(errid))
goto top; goto top;
#endif
if (data->b.bufmax == -1) { if (data->b.bufmax == -1) {
scheme_raise_exn(MZEXN_FAIL_NETWORK, scheme_raise_exn(MZEXN_FAIL_NETWORK,
"tcp-read: error reading\n" "tcp-read: error reading\n"
@ -1492,7 +1427,6 @@ static void tcp_need_wakeup(Scheme_Input_Port *port, void *fds)
data = (Scheme_Tcp *)port->port_data; data = (Scheme_Tcp *)port->port_data;
#ifdef USE_SOCKETS_TCP
{ {
void *fds2; void *fds2;
@ -1501,7 +1435,6 @@ static void tcp_need_wakeup(Scheme_Input_Port *port, void *fds)
MZ_FD_SET(data->tcp, (fd_set *)fds); MZ_FD_SET(data->tcp, (fd_set *)fds);
MZ_FD_SET(data->tcp, (fd_set *)fds2); MZ_FD_SET(data->tcp, (fd_set *)fds2);
} }
#endif
} }
static void tcp_close_input(Scheme_Input_Port *port) static void tcp_close_input(Scheme_Input_Port *port)
@ -1510,22 +1443,18 @@ static void tcp_close_input(Scheme_Input_Port *port)
data = (Scheme_Tcp *)port->port_data; data = (Scheme_Tcp *)port->port_data;
#ifdef USE_SOCKETS_TCP
if (!(data->flags & MZ_TCP_ABANDON_INPUT)) { if (!(data->flags & MZ_TCP_ABANDON_INPUT)) {
int cr; int cr;
do { do {
cr = shutdown(data->tcp, 0); cr = shutdown(data->tcp, 0);
} while ((cr == -1) && (errno == EINTR)); } while ((cr == -1) && (errno == EINTR));
} }
#endif
if (--data->b.refcount) if (--data->b.refcount)
return; return;
#ifdef USE_SOCKETS_TCP
UNREGISTER_SOCKET(data->tcp); UNREGISTER_SOCKET(data->tcp);
closesocket(data->tcp); closesocket(data->tcp);
#endif
(void)scheme_fd_to_semaphore(data->tcp, MZFD_REMOVE, 1); (void)scheme_fd_to_semaphore(data->tcp, MZFD_REMOVE, 1);
} }
@ -1563,7 +1492,6 @@ static intptr_t tcp_do_write_string(Scheme_Output_Port *port,
top: top:
#ifdef USE_SOCKETS_TCP
do { do {
sent = send(data->tcp, s XFORM_OK_PLUS offset, len, 0); sent = send(data->tcp, s XFORM_OK_PLUS offset, len, 0);
} while ((sent == -1) && (NOT_WINSOCK(errno) == EINTR)); } while ((sent == -1) && (NOT_WINSOCK(errno) == EINTR));
@ -1600,7 +1528,6 @@ static intptr_t tcp_do_write_string(Scheme_Output_Port *port,
} }
} else } else
errid = 0; errid = 0;
#endif
if (would_block) { if (would_block) {
if (rarely_block == 2) if (rarely_block == 2)
@ -1719,22 +1646,18 @@ static void tcp_close_output(Scheme_Output_Port *port)
if (data->b.out_bufmax && !scheme_force_port_closed) if (data->b.out_bufmax && !scheme_force_port_closed)
tcp_flush(port, 0, 0); tcp_flush(port, 0, 0);
#ifdef USE_SOCKETS_TCP
if (!(data->flags & MZ_TCP_ABANDON_OUTPUT)) { if (!(data->flags & MZ_TCP_ABANDON_OUTPUT)) {
int cr; int cr;
do { do {
cr = shutdown(data->tcp, 1); cr = shutdown(data->tcp, 1);
} while ((cr == -1) && (errno == EINTR)); } while ((cr == -1) && (errno == EINTR));
} }
#endif
if (--data->b.refcount) if (--data->b.refcount)
return; return;
#ifdef USE_SOCKETS_TCP
UNREGISTER_SOCKET(data->tcp); UNREGISTER_SOCKET(data->tcp);
closesocket(data->tcp); closesocket(data->tcp);
#endif
(void)scheme_fd_to_semaphore(data->tcp, MZFD_REMOVE, 1); (void)scheme_fd_to_semaphore(data->tcp, MZFD_REMOVE, 1);
} }
@ -1819,13 +1742,17 @@ make_tcp_output_port(void *data, const char *name, Scheme_Object *cust)
return make_tcp_output_port_symbol_name(data, scheme_intern_symbol(name), cust); return make_tcp_output_port_symbol_name(data, scheme_intern_symbol(name), cust);
} }
#else
void scheme_free_ghbn_data() { }
#endif /* USE_TCP */ #endif /* USE_TCP */
/*========================================================================*/ /*========================================================================*/
/* TCP Racket interface */ /* TCP Racket interface */
/*========================================================================*/ /*========================================================================*/
#ifdef USE_SOCKETS_TCP #ifdef USE_TCP
typedef struct Close_Socket_Data { typedef struct Close_Socket_Data {
tcp_t s; tcp_t s;
struct mz_addrinfo *src_addr, *dest_addr; struct mz_addrinfo *src_addr, *dest_addr;
@ -1843,7 +1770,7 @@ static void closesocket_w_decrement(Close_Socket_Data *csd)
const char *scheme_hostname_error(int err) const char *scheme_hostname_error(int err)
{ {
#ifdef USE_SOCKETS_TCP #ifdef USE_TCP
return mz_gai_strerror(err); return mz_gai_strerror(err);
#else #else
return "?"; return "?";
@ -1857,7 +1784,7 @@ static Scheme_Object *tcp_connect(int argc, Scheme_Object *argv[])
int errpart = 0, errid = 0; int errpart = 0, errid = 0;
volatile int nameerr = 0, no_local_spec; volatile int nameerr = 0, no_local_spec;
Scheme_Object *bs, *src_bs; Scheme_Object *bs, *src_bs;
#ifdef USE_SOCKETS_TCP #ifdef USE_TCP
GC_CAN_IGNORE struct mz_addrinfo *tcp_connect_dest; GC_CAN_IGNORE struct mz_addrinfo *tcp_connect_dest;
GC_CAN_IGNORE struct mz_addrinfo * volatile tcp_connect_src; GC_CAN_IGNORE struct mz_addrinfo * volatile tcp_connect_src;
#endif #endif
@ -1910,9 +1837,7 @@ static Scheme_Object *tcp_connect(int argc, Scheme_Object *argv[])
#ifdef USE_TCP #ifdef USE_TCP
id = origid; id = origid;
src_id = src_origid; src_id = src_origid;
#endif
#ifdef USE_SOCKETS_TCP
tcp_connect_dest = scheme_get_host_address(address, id, &errid, -1, 0, 1); tcp_connect_dest = scheme_get_host_address(address, id, &errid, -1, 0, 1);
if (tcp_connect_dest) { if (tcp_connect_dest) {
if (no_local_spec) if (no_local_spec)
@ -2049,9 +1974,7 @@ static Scheme_Object *tcp_connect(int argc, Scheme_Object *argv[])
nameerr = 1; nameerr = 1;
errmsg = "host not found"; errmsg = "host not found";
} }
#endif
#ifdef USE_TCP
scheme_raise_exn(MZEXN_FAIL_NETWORK, scheme_raise_exn(MZEXN_FAIL_NETWORK,
"tcp-connect: connection failed\n" "tcp-connect: connection failed\n"
"%s%s%s" "%s%s%s"
@ -2078,7 +2001,7 @@ tcp_connect_break(int argc, Scheme_Object *argv[])
return scheme_call_enable_break(tcp_connect, argc, argv); return scheme_call_enable_break(tcp_connect, argc, argv);
} }
#ifdef USE_TCP
static unsigned short get_no_portno(tcp_t socket, int *_errid) static unsigned short get_no_portno(tcp_t socket, int *_errid)
{ {
char here[MZ_SOCK_NAME_MAX_LEN]; char here[MZ_SOCK_NAME_MAX_LEN];
@ -2101,6 +2024,7 @@ static unsigned short get_no_portno(tcp_t socket, int *_errid)
*_errid = 0; *_errid = 0;
return no_port; return no_port;
} }
#endif
static Scheme_Object * static Scheme_Object *
tcp_listen(int argc, Scheme_Object *argv[]) tcp_listen(int argc, Scheme_Object *argv[])
@ -2157,6 +2081,7 @@ tcp_listen(int argc, Scheme_Object *argv[])
retry: retry:
#endif #endif
#ifdef USE_TCP
{ {
GC_CAN_IGNORE struct mz_addrinfo *tcp_listen_addr, *addr; GC_CAN_IGNORE struct mz_addrinfo *tcp_listen_addr, *addr;
int err, count = 0, pos = 0, i; int err, count = 0, pos = 0, i;
@ -2356,7 +2281,6 @@ tcp_listen(int argc, Scheme_Object *argv[])
} }
} }
#ifdef USE_TCP
scheme_raise_exn(MZEXN_FAIL_NETWORK, scheme_raise_exn(MZEXN_FAIL_NETWORK,
"tcp-listen: listen failed\n" "tcp-listen: listen failed\n"
" port number: %d\n" " port number: %d\n"
@ -2375,7 +2299,6 @@ static int stop_listener(Scheme_Object *o)
{ {
int was_closed = 0; int was_closed = 0;
#ifdef USE_SOCKETS_TCP
{ {
listener_t *listener = (listener_t *)o; listener_t *listener = (listener_t *)o;
int i; int i;
@ -2394,7 +2317,6 @@ static int stop_listener(Scheme_Object *o)
scheme_remove_managed(((listener_t *)o)->mref, o); scheme_remove_managed(((listener_t *)o)->mref, o);
} }
} }
#endif
return was_closed; return was_closed;
} }
@ -2459,11 +2381,9 @@ do_tcp_accept(int argc, Scheme_Object *argv[], Scheme_Object *cust, char **_fail
#ifdef USE_TCP #ifdef USE_TCP
int was_closed = 0, errid, ready_pos; int was_closed = 0, errid, ready_pos;
Scheme_Object *listener; Scheme_Object *listener;
# ifdef USE_SOCKETS_TCP
tcp_t s, ls; tcp_t s, ls;
unsigned int l; unsigned int l;
GC_CAN_IGNORE char tcp_accept_addr[MZ_SOCK_NAME_MAX_LEN]; GC_CAN_IGNORE char tcp_accept_addr[MZ_SOCK_NAME_MAX_LEN];
# endif
if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_listener_type)) if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_listener_type))
scheme_wrong_contract("tcp-accept", "tcp-listener?", 0, argc, argv); scheme_wrong_contract("tcp-accept", "tcp-listener?", 0, argc, argv);
@ -2510,7 +2430,6 @@ do_tcp_accept(int argc, Scheme_Object *argv[], Scheme_Object *cust, char **_fail
} }
} }
# ifdef USE_SOCKETS_TCP
ls = ((listener_t *)listener)->s[ready_pos-1]; ls = ((listener_t *)listener)->s[ready_pos-1];
l = sizeof(tcp_accept_addr); l = sizeof(tcp_accept_addr);
@ -2540,7 +2459,6 @@ do_tcp_accept(int argc, Scheme_Object *argv[], Scheme_Object *cust, char **_fail
return scheme_values(2, v); return scheme_values(2, v);
} }
errid = SOCK_ERRNO(); errid = SOCK_ERRNO();
# endif
if (_fail_reason) if (_fail_reason)
*_fail_reason = "tcp-accept-evt: accept from listener failed"; *_fail_reason = "tcp-accept-evt: accept from listener failed";
@ -2568,7 +2486,7 @@ tcp_accept_break(int argc, Scheme_Object *argv[])
return scheme_call_enable_break(tcp_accept, argc, argv); return scheme_call_enable_break(tcp_accept, argc, argv);
} }
void register_network_evts() void scheme_register_network_evts()
{ {
#ifdef USE_TCP #ifdef USE_TCP
scheme_add_evt(scheme_listener_type, (Scheme_Ready_Fun)tcp_check_accept, tcp_accept_needs_wakeup, NULL, 0); scheme_add_evt(scheme_listener_type, (Scheme_Ready_Fun)tcp_check_accept, tcp_accept_needs_wakeup, NULL, 0);
@ -2590,6 +2508,7 @@ void scheme_getnameinfo(void *sa, int salen,
char *host, int hostlen, char *host, int hostlen,
char *serv, int servlen) char *serv, int servlen)
{ {
#ifdef USE_TCP
# ifdef HAVE_GETADDRINFO # ifdef HAVE_GETADDRINFO
getnameinfo(sa, salen, host, hostlen, serv, servlen, getnameinfo(sa, salen, host, hostlen, serv, servlen,
NI_NUMERICHOST | NI_NUMERICSERV); NI_NUMERICHOST | NI_NUMERICSERV);
@ -2605,6 +2524,9 @@ void scheme_getnameinfo(void *sa, int salen,
sprintf(serv, "%d", id); sprintf(serv, "%d", id);
} }
# endif # endif
#else
scheme_signal_error("getnameinfo unsupported");
#endif
} }
static int extract_svc_value(char *svc_buf) static int extract_svc_value(char *svc_buf)
@ -2666,7 +2588,6 @@ static Scheme_Object *tcp_addresses(int argc, Scheme_Object *argv[])
scheme_raise_exn(MZEXN_FAIL_NETWORK, scheme_raise_exn(MZEXN_FAIL_NETWORK,
"tcp-addresses: port is closed"); "tcp-addresses: port is closed");
# ifdef USE_SOCKETS_TCP
{ {
unsigned int l; unsigned int l;
char here[MZ_SOCK_NAME_MAX_LEN], there[MZ_SOCK_NAME_MAX_LEN]; char here[MZ_SOCK_NAME_MAX_LEN], there[MZ_SOCK_NAME_MAX_LEN];
@ -2723,16 +2644,6 @@ static Scheme_Object *tcp_addresses(int argc, Scheme_Object *argv[])
} }
} }
} }
# else
result[0] = scheme_make_utf8_string("0.0.0.0");
if (with_ports) {
result[1] = scheme_make_integer(1);
result[2] = result[0];
result[3] = result[1];
} else {
result[1] = result[0];
}
# endif
return scheme_values(with_ports ? 4 : 2, result); return scheme_values(with_ports ? 4 : 2, result);
#else #else
@ -2889,6 +2800,7 @@ int scheme_get_port_socket(Scheme_Object *p, intptr_t *_s)
void scheme_socket_to_ports(intptr_t s, const char *name, int takeover, void scheme_socket_to_ports(intptr_t s, const char *name, int takeover,
Scheme_Object **_inp, Scheme_Object **_outp) Scheme_Object **_inp, Scheme_Object **_outp)
{ {
#ifdef USE_TCP
Scheme_Tcp *tcp; Scheme_Tcp *tcp;
Scheme_Object *v; Scheme_Object *v;
@ -2902,11 +2814,16 @@ void scheme_socket_to_ports(intptr_t s, const char *name, int takeover,
if (takeover) { if (takeover) {
REGISTER_SOCKET(s); REGISTER_SOCKET(s);
} }
#else
*_inp = NULL;
*_outp = NULL;
#endif
} }
void scheme_socket_to_input_port(intptr_t s, Scheme_Object *name, int takeover, void scheme_socket_to_input_port(intptr_t s, Scheme_Object *name, int takeover,
Scheme_Object **_inp) Scheme_Object **_inp)
{ {
#ifdef USE_TCP
Scheme_Tcp *tcp; Scheme_Tcp *tcp;
Scheme_Object *v; Scheme_Object *v;
@ -2918,11 +2835,15 @@ void scheme_socket_to_input_port(intptr_t s, Scheme_Object *name, int takeover,
if (takeover) { if (takeover) {
REGISTER_SOCKET(s); REGISTER_SOCKET(s);
} }
#else
*_inp = NULL;
#endif
} }
void scheme_socket_to_output_port(intptr_t s, Scheme_Object *name, int takeover, void scheme_socket_to_output_port(intptr_t s, Scheme_Object *name, int takeover,
Scheme_Object **_outp) Scheme_Object **_outp)
{ {
#ifdef USE_TCP
Scheme_Tcp *tcp; Scheme_Tcp *tcp;
Scheme_Object *v; Scheme_Object *v;
@ -2934,10 +2855,13 @@ void scheme_socket_to_output_port(intptr_t s, Scheme_Object *name, int takeover,
if (takeover) { if (takeover) {
REGISTER_SOCKET(s); REGISTER_SOCKET(s);
} }
#else
*_outp = NULL;
#endif
} }
intptr_t scheme_dup_socket(intptr_t fd) { intptr_t scheme_dup_socket(intptr_t fd) {
#ifdef USE_SOCKETS_TCP #ifdef USE_TCP
# ifdef USE_WINSOCK_TCP # ifdef USE_WINSOCK_TCP
intptr_t nsocket; intptr_t nsocket;
intptr_t rc; intptr_t rc;
@ -2962,7 +2886,7 @@ intptr_t scheme_dup_socket(intptr_t fd) {
void scheme_close_socket_fd(intptr_t fd) void scheme_close_socket_fd(intptr_t fd)
{ {
#ifdef USE_SOCKETS_TCP #ifdef USE_TCP
UNREGISTER_SOCKET(fd); UNREGISTER_SOCKET(fd);
closesocket(fd); closesocket(fd);
(void)scheme_fd_to_semaphore(fd, MZFD_REMOVE, 1); (void)scheme_fd_to_semaphore(fd, MZFD_REMOVE, 1);
@ -3004,6 +2928,11 @@ static int udp_close_it(Scheme_Object *_udp)
return 1; return 1;
} }
#else
typedef struct Scheme_UDP_Evt { } Scheme_UDP_Evt;
typedef Scheme_Object Scheme_UDP;
#endif #endif
static Scheme_Object *make_udp(int argc, Scheme_Object *argv[]) static Scheme_Object *make_udp(int argc, Scheme_Object *argv[])
@ -3425,6 +3354,7 @@ static void udp_send_needs_wakeup(Scheme_Object *_udp, void *fds)
#endif #endif
#ifdef UDP_IS_SUPPORTED
static Scheme_Object *do_udp_send_it(const char *name, Scheme_UDP *udp, static Scheme_Object *do_udp_send_it(const char *name, Scheme_UDP *udp,
char *bstr, intptr_t start, intptr_t end, char *bstr, intptr_t start, intptr_t end,
char *dest_addr, int dest_addr_len, int can_block) char *dest_addr, int dest_addr_len, int can_block)
@ -3501,6 +3431,7 @@ static Scheme_Object *do_udp_send_it(const char *name, Scheme_UDP *udp,
return NULL; return NULL;
} }
} }
#endif
static Scheme_Object *udp_send_it(const char *name, int argc, Scheme_Object *argv[], static Scheme_Object *udp_send_it(const char *name, int argc, Scheme_Object *argv[],
int with_addr, int can_block, Scheme_UDP_Evt *fill_evt) int with_addr, int can_block, Scheme_UDP_Evt *fill_evt)
@ -3821,6 +3752,7 @@ static Scheme_Object *udp_recv(const char *name, int argc, Scheme_Object *argv[]
if (!SCHEME_BYTE_STRINGP(argv[1]) || !SCHEME_MUTABLEP(argv[1])) if (!SCHEME_BYTE_STRINGP(argv[1]) || !SCHEME_MUTABLEP(argv[1]))
scheme_wrong_contract(name, "(or/c bytes? (not/c immutable?))", 1, argc, argv); scheme_wrong_contract(name, "(or/c bytes? (not/c immutable?))", 1, argc, argv);
#ifdef UDP_IS_SUPPORTED
scheme_get_substring_indices(name, argv[1], scheme_get_substring_indices(name, argv[1],
argc, argv, argc, argv,
2, 3, &start, &end); 2, 3, &start, &end);
@ -3834,6 +3766,9 @@ static Scheme_Object *udp_recv(const char *name, int argc, Scheme_Object *argv[]
return scheme_values(3,v); return scheme_values(3,v);
} }
#else
return NULL;
#endif
} }
static Scheme_Object *udp_receive(int argc, Scheme_Object *argv[]) static Scheme_Object *udp_receive(int argc, Scheme_Object *argv[])
@ -3903,7 +3838,9 @@ static Scheme_Object *udp_write_to_evt(int argc, Scheme_Object *argv[])
Scheme_Object *evt; Scheme_Object *evt;
evt = make_udp_evt("udp-send-to-evt", argc, argv, 0); evt = make_udp_evt("udp-send-to-evt", argc, argv, 0);
udp_send_it("udp-send-to-evt", argc, argv, 1, 0, (Scheme_UDP_Evt *)evt); udp_send_it("udp-send-to-evt", argc, argv, 1, 0, (Scheme_UDP_Evt *)evt);
#ifdef UDP_IS_SUPPORTED
((Scheme_UDP_Evt *)evt)->with_addr = 1; ((Scheme_UDP_Evt *)evt)->with_addr = 1;
#endif
return evt; return evt;
} }
@ -4282,11 +4219,17 @@ udp_multicast_join_or_leave_group(char const *name, int optname, int argc, Schem
#endif #endif
} }
#ifdef UDP_IS_SUPPORTED
# define WHEN_UDP_IS_SUPPORTED(x) x
#else
# define WHEN_UDP_IS_SUPPORTED(x) 0
#endif
static Scheme_Object * static Scheme_Object *
udp_multicast_join_group(int argc, Scheme_Object *argv[]) udp_multicast_join_group(int argc, Scheme_Object *argv[])
{ {
return udp_multicast_join_or_leave_group("udp-multicast-join-group!", return udp_multicast_join_or_leave_group("udp-multicast-join-group!",
IP_ADD_MEMBERSHIP, WHEN_UDP_IS_SUPPORTED(IP_ADD_MEMBERSHIP),
argc, argc,
argv); argv);
} }
@ -4295,7 +4238,7 @@ static Scheme_Object *
udp_multicast_leave_group(int argc, Scheme_Object *argv[]) udp_multicast_leave_group(int argc, Scheme_Object *argv[])
{ {
return udp_multicast_join_or_leave_group("udp-multicast-leave-group!", return udp_multicast_join_or_leave_group("udp-multicast-leave-group!",
IP_DROP_MEMBERSHIP, WHEN_UDP_IS_SUPPORTED(IP_DROP_MEMBERSHIP),
argc, argc,
argv); argv);
} }
@ -4313,13 +4256,13 @@ START_XFORM_SKIP;
static void register_traversers(void) static void register_traversers(void)
{ {
#ifdef USE_TCP #ifdef USE_TCP
GC_REG_TRAV(scheme_listener_type, mark_listener);
GC_REG_TRAV(scheme_rt_tcp, mark_tcp); GC_REG_TRAV(scheme_rt_tcp, mark_tcp);
# ifdef UDP_IS_SUPPORTED # ifdef UDP_IS_SUPPORTED
GC_REG_TRAV(scheme_udp_type, mark_udp); GC_REG_TRAV(scheme_udp_type, mark_udp);
GC_REG_TRAV(scheme_udp_evt_type, mark_udp_evt); GC_REG_TRAV(scheme_udp_evt_type, mark_udp_evt);
# endif # endif
#endif #endif
GC_REG_TRAV(scheme_listener_type, mark_listener);
} }
END_XFORM_SKIP; END_XFORM_SKIP;

View File

@ -1558,6 +1558,7 @@ static Scheme_Object *shallow_types_copy(Scheme_Object *so, Scheme_Hash_Table *h
{ {
intptr_t fd; intptr_t fd;
if (scheme_get_port_socket(so, &fd)) { if (scheme_get_port_socket(so, &fd)) {
#ifdef USE_TCP
if (mode == mzPDC_COPY) { if (mode == mzPDC_COPY) {
Scheme_Object *tmp; Scheme_Object *tmp;
Scheme_Object *portname; Scheme_Object *portname;
@ -1585,6 +1586,9 @@ static Scheme_Object *shallow_types_copy(Scheme_Object *so, Scheme_Hash_Table *h
ssfd->name = tmp; ssfd->name = tmp;
return (Scheme_Object *)ssfd; return (Scheme_Object *)ssfd;
} }
#else
scheme_signal_error("sockets aren't supported");
#endif
} }
else if (SCHEME_TRUEP(scheme_file_stream_port_p(1, &so))) { else if (SCHEME_TRUEP(scheme_file_stream_port_p(1, &so))) {
if (scheme_get_port_file_descriptor(so, &fd)) { if (scheme_get_port_file_descriptor(so, &fd)) {

View File

@ -1127,7 +1127,7 @@ void scheme_fdzero(void *fd)
void *scheme_alloc_fdset_array(int count, int permanent) void *scheme_alloc_fdset_array(int count, int permanent)
{ {
# if defined(FILES_HAVE_FDS) || defined(USE_SOCKETS_TCP) || defined(WIN32_FD_HANDLES) # if defined(FILES_HAVE_FDS) || defined(USE_TCP) || defined(WIN32_FD_HANDLES)
void *fdarray; void *fdarray;
# if defined(WIN32_FD_HANDLES) # if defined(WIN32_FD_HANDLES)
if (count) { if (count) {
@ -1188,7 +1188,7 @@ void *scheme_init_fdset_array(void *fdarray, int count)
void *scheme_get_fdset(void *fdarray, int pos) void *scheme_get_fdset(void *fdarray, int pos)
{ {
# if defined(FILES_HAVE_FDS) || defined(USE_SOCKETS_TCP) || defined(WIN32_FD_HANDLES) # if defined(FILES_HAVE_FDS) || defined(USE_TCP) || defined(WIN32_FD_HANDLES)
return ((fdset_type *)fdarray) + pos; return ((fdset_type *)fdarray) + pos;
# else # else
return NULL; return NULL;
@ -1200,7 +1200,7 @@ void scheme_fdzero(void *fd)
# if defined(WIN32_FD_HANDLES) # if defined(WIN32_FD_HANDLES)
scheme_init_fdset_array(fd, 1); scheme_init_fdset_array(fd, 1);
# else # else
# if defined(FILES_HAVE_FDS) || defined(USE_SOCKETS_TCP) # if defined(FILES_HAVE_FDS) || defined(USE_TCP)
FD_ZERO((fd_set *)fd); FD_ZERO((fd_set *)fd);
# endif # endif
# endif # endif
@ -1218,7 +1218,7 @@ void scheme_fdclr(void *fd, int n)
efd->sockets[i] = INVALID_SOCKET; efd->sockets[i] = INVALID_SOCKET;
} }
#else #else
# if defined(FILES_HAVE_FDS) || defined(USE_SOCKETS_TCP) # if defined(FILES_HAVE_FDS) || defined(USE_TCP)
FD_CLR((unsigned)n, ((fd_set *)fd)); FD_CLR((unsigned)n, ((fd_set *)fd));
# endif # endif
#endif #endif
@ -1241,7 +1241,7 @@ void scheme_fdset(void *fd, int n)
efd->sockets[SCHEME_INT_VAL(efd->added)] = n; efd->sockets[SCHEME_INT_VAL(efd->added)] = n;
efd->added = scheme_make_integer(1 + SCHEME_INT_VAL(efd->added)); efd->added = scheme_make_integer(1 + SCHEME_INT_VAL(efd->added));
#else #else
# if defined(FILES_HAVE_FDS) || defined(USE_SOCKETS_TCP) # if defined(FILES_HAVE_FDS) || defined(USE_TCP)
# ifdef STORED_ACTUAL_FDSET_LIMIT # ifdef STORED_ACTUAL_FDSET_LIMIT
int mx; int mx;
mx = FDSET_LIMIT(fd); mx = FDSET_LIMIT(fd);
@ -1264,7 +1264,7 @@ int scheme_fdisset(void *fd, int n)
} }
return 0; return 0;
#else #else
# if defined(FILES_HAVE_FDS) || defined(USE_SOCKETS_TCP) # if defined(FILES_HAVE_FDS) || defined(USE_TCP)
return FD_ISSET(n, ((fd_set *)fd)); return FD_ISSET(n, ((fd_set *)fd));
# else # else
return 0; return 0;

View File

@ -374,7 +374,7 @@ Scheme_Logger *scheme_get_future_logger(void);
Scheme_Logger *scheme_get_place_logger(void); Scheme_Logger *scheme_get_place_logger(void);
void scheme_init_logger_config(void); void scheme_init_logger_config(void);
void register_network_evts(); void scheme_register_network_evts();
void scheme_free_dynamic_extensions(void); void scheme_free_dynamic_extensions(void);
void scheme_free_all_code(void); void scheme_free_all_code(void);
@ -3791,14 +3791,10 @@ extern char *scheme_convert_from_wchar(const wchar_t *ws);
#ifdef NO_TCP_SUPPORT #ifdef NO_TCP_SUPPORT
# undef USE_UNIX_SOCKETS_TCP # undef USE_UNIX_SOCKETS_TCP
# undef USE_WINSOCK_TCP # undef USE_WINSOCK_TCP
# undef USE_MAC_TCP
#endif
#if defined(USE_UNIX_SOCKETS_TCP) || defined(USE_WINSOCK_TCP) || defined(USE_MAC_TCP)
# define USE_TCP
#endif #endif
#if defined(USE_UNIX_SOCKETS_TCP) || defined(USE_WINSOCK_TCP) #if defined(USE_UNIX_SOCKETS_TCP) || defined(USE_WINSOCK_TCP)
# define USE_SOCKETS_TCP # define USE_TCP
#endif #endif
THREAD_LOCAL_DECL(extern int scheme_active_but_sleeping); THREAD_LOCAL_DECL(extern int scheme_active_but_sleeping);