📄 utcp.c
字号:
/* Generated from tcp.scm by the CHICKEN compiler http://www.call-with-current-continuation.org 2008-09-23 22:56 Version 3.3.0 - linux-unix-gnu-x86 [ manyargs dload ptables applyhook ] SVN rev. 11106 compiled 2008-07-08 on galinha (Linux) command line: tcp.scm -quiet -no-trace -optimize-level 2 -include-path . -include-path ./ -explicit-use -unsafe -no-lambda-info -output-file utcp.c unit: tcp*/#include "chicken.h"#include <errno.h>#ifdef _WIN32# if _MSC_VER > 1300# include <winsock2.h># include <ws2tcpip.h># else# include <winsock.h># endif/* Beware: winsock2.h must come BEFORE windows.h */# define socklen_t intstatic WSADATA wsa;# define fcntl(a, b, c) 0# define EWOULDBLOCK 0# define EINPROGRESS 0# define typecorrect_getsockopt(socket, level, optname, optval, optlen) \ getsockopt(socket, level, optname, (char *)optval, optlen)#else# include <fcntl.h># include <sys/types.h># include <sys/socket.h># include <sys/time.h># include <netinet/in.h># include <unistd.h># include <netdb.h># include <signal.h># define closesocket close# define INVALID_SOCKET -1# define typecorrect_getsockopt getsockopt#endif#ifndef SD_RECEIVE# define SD_RECEIVE 0# define SD_SEND 1#endif#ifdef ECOS#include <sys/sockio.h>#endifstatic char addr_buffer[ 20 ];static C_PTABLE_ENTRY *create_ptable(void);C_noret_decl(C_data_structures_toplevel)C_externimport void C_ccall C_data_structures_toplevel(C_word c,C_word d,C_word k) C_noret;C_noret_decl(C_ports_toplevel)C_externimport void C_ccall C_ports_toplevel(C_word c,C_word d,C_word k) C_noret;C_noret_decl(C_extras_toplevel)C_externimport void C_ccall C_extras_toplevel(C_word c,C_word d,C_word k) C_noret;C_noret_decl(C_scheduler_toplevel)C_externimport void C_ccall C_scheduler_toplevel(C_word c,C_word d,C_word k) C_noret;static C_TLS C_word lf[95];static double C_possibly_force_alignment;/* from general-strerror */static C_word C_fcall stub346(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub346(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);C_r=C_mpointer(&C_a,(void*)strerror(t0));return C_r;}/* from get-socket-error */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub342(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub342(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int socket=(int )C_unfix(C_a0);int err, optlen;optlen = sizeof(err);if (typecorrect_getsockopt(socket, SOL_SOCKET, SO_ERROR, &err, (socklen_t *)&optlen) == -1)return(-1);return(err);C_ret:#undef returnreturn C_r;}/* from f_783 in k712 in k706 in a814 in body184 in tcp-listen in k560 in k476 in k473 in k470 in k467 in k464 */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub167(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub167(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int socket=(int )C_unfix(C_a0);int yes = 1; return(setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (const char *)&yes, sizeof(int)));C_ret:#undef returnreturn C_r;}/* from k697 */#define return(x) C_cblock C_r = (((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub153(C_word C_buf,C_word C_a0,C_word C_a1) C_regparm;C_regparm static C_word C_fcall stub153(C_word C_buf,C_word C_a0,C_word C_a1){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;void * saddr=(void * )C_data_pointer_or_null(C_a0);unsigned short port=(unsigned short )(unsigned short)C_unfix(C_a1);struct sockaddr_in *addr = (struct sockaddr_in *)saddr;memset(addr, 0, sizeof(struct sockaddr_in));addr->sin_family = AF_INET;addr->sin_port = htons(port);addr->sin_addr.s_addr = htonl(INADDR_ANY);C_ret:#undef returnreturn C_r;}/* from k594 in ##net#gethostaddr in k560 in k476 in k473 in k470 in k467 in k464 */#define return(x) C_cblock C_r = (C_mk_bool((x))); goto C_ret; C_cblockendstatic C_word C_fcall stub127(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2) C_regparm;C_regparm static C_word C_fcall stub127(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;void * saddr=(void * )C_data_pointer_or_null(C_a0);char * host=(char * )C_string_or_null(C_a1);unsigned short port=(unsigned short )(unsigned short)C_unfix(C_a2);struct hostent *he = gethostbyname(host);struct sockaddr_in *addr = (struct sockaddr_in *)saddr;if(he == NULL) return(0);memset(addr, 0, sizeof(struct sockaddr_in));addr->sin_family = AF_INET;addr->sin_port = htons((short)port);addr->sin_addr = *((struct in_addr *)he->h_addr);return(1);C_ret:#undef returnreturn C_r;}/* from ##net#select-write */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub121(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub121(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int fd=(int )C_unfix(C_a0);fd_set out; struct timeval tm; int rv; FD_ZERO(&out); FD_SET(fd, &out); tm.tv_sec = tm.tv_usec = 0; rv = select(fd + 1, NULL, &out, NULL, &tm); if(rv > 0) { rv = FD_ISSET(fd, &out) ? 1 : 0; } return(rv);C_ret:#undef returnreturn C_r;}/* from ##net#select in k560 in k476 in k473 in k470 in k467 in k464 */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub117(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub117(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int fd=(int )C_unfix(C_a0);fd_set in; struct timeval tm; int rv; FD_ZERO(&in); FD_SET(fd, &in); tm.tv_sec = tm.tv_usec = 0; rv = select(fd + 1, &in, NULL, NULL, &tm); if(rv > 0) { rv = FD_ISSET(fd, &in) ? 1 : 0; } return(rv);C_ret:#undef returnreturn C_r;}/* from k571 in k567 in k656 in k652 in loop in ##net#parse-host in k560 in k476 in k473 in k470 in k467 in k464 */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub108(C_word C_buf,C_word C_a0,C_word C_a1) C_regparm;C_regparm static C_word C_fcall stub108(C_word C_buf,C_word C_a0,C_word C_a1){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;char * serv=(char * )C_string_or_null(C_a0);char * proto=(char * )C_string_or_null(C_a1);struct servent *se; if((se = getservbyname(serv, proto)) == NULL) return(0); else return(ntohs(se->s_port));C_ret:#undef returnreturn C_r;}/* from ##net#startup */#define return(x) C_cblock C_r = (C_mk_bool((x))); goto C_ret; C_cblockendstatic C_word C_fcall stub104(C_word C_buf) C_regparm;C_regparm static C_word C_fcall stub104(C_word C_buf){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;#ifdef _WIN32 return(WSAStartup(MAKEWORD(1, 1), &wsa) == 0);#else signal(SIGPIPE, SIG_IGN); return(1);#endifC_ret:#undef returnreturn C_r;}/* from ##net#getpeername */#define return(x) C_cblock C_r = (C_mpointer(&C_a,(void*)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub100(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub100(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int s=(int )C_unfix(C_a0);struct sockaddr_in sa;unsigned char *ptr;unsigned int len = sizeof(struct sockaddr_in);if(getpeername(s, (struct sockaddr *)&sa, ((unsigned int *)&len)) != 0) return(NULL);ptr = (unsigned char *)&sa.sin_addr;sprintf(addr_buffer, "%d.%d.%d.%d", ptr[ 0 ], ptr[ 1 ], ptr[ 2 ], ptr[ 3 ]);return(addr_buffer);C_ret:#undef returnreturn C_r;}/* from ##net#getpeerport */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub96(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub96(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int s=(int )C_unfix(C_a0);struct sockaddr_in sa;int len = sizeof(struct sockaddr_in);if(getpeername(s, (struct sockaddr *)&sa, (socklen_t *)(&len)) != 0) return(-1);else return(ntohs(sa.sin_port));C_ret:#undef returnreturn C_r;}/* from ##net#getsockport in k476 in k473 in k470 in k467 in k464 */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub92(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub92(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int s=(int )C_unfix(C_a0);struct sockaddr_in sa;int len = sizeof(struct sockaddr_in);if(getsockname(s, (struct sockaddr *)&sa, (socklen_t *)(&len)) != 0) return(-1);else return(ntohs(sa.sin_port));C_ret:#undef returnreturn C_r;}/* from ##net#getsockname */#define return(x) C_cblock C_r = (C_mpointer(&C_a,(void*)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub87(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub87(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int s=(int )C_unfix(C_a0);struct sockaddr_in sa;unsigned char *ptr;int len = sizeof(struct sockaddr_in);if(getsockname(s, (struct sockaddr *)&sa, (socklen_t *)&len) != 0) return(NULL);ptr = (unsigned char *)&sa.sin_addr;sprintf(addr_buffer, "%d.%d.%d.%d", ptr[ 0 ], ptr[ 1 ], ptr[ 2 ], ptr[ 3 ]);return(addr_buffer);C_ret:#undef returnreturn C_r;}/* from ##net#make-nonblocking in k476 in k473 in k470 in k467 in k464 */#define return(x) C_cblock C_r = (C_mk_bool((x))); goto C_ret; C_cblockendstatic C_word C_fcall stub83(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub83(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int fd=(int )C_unfix(C_a0);int val = fcntl(fd, F_GETFL, 0);if(val == -1) return(0);return(fcntl(fd, F_SETFL, val | O_NONBLOCK) != -1);C_ret:#undef returnreturn C_r;}/* from k533 */#define return(x) C_cblock C_r = (C_fix((C_word)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub73(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2,C_word C_a3,C_word C_a4) C_regparm;C_regparm static C_word C_fcall stub73(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2,C_word C_a3,C_word C_a4){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int s=(int )C_unfix(C_a0);void * msg=(void * )C_data_pointer_or_null(C_a1);int offset=(int )C_unfix(C_a2);int len=(int )C_unfix(C_a3);int flags=(int )C_unfix(C_a4);return(send(s, (char *)msg+offset, len, flags));C_ret:#undef returnreturn C_r;}/* from k526 */static C_word C_fcall stub61(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2) C_regparm;C_regparm static C_word C_fcall stub61(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);void * t1=(void * )C_data_pointer_or_null(C_a1);int t2=(int )C_unfix(C_a2);C_r=C_fix((C_word)connect(t0,t1,t2));return C_r;}/* from ##net#shutdown in k476 in k473 in k470 in k467 in k464 */static C_word C_fcall stub54(C_word C_buf,C_word C_a0,C_word C_a1) C_regparm;C_regparm static C_word C_fcall stub54(C_word C_buf,C_word C_a0,C_word C_a1){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);int t1=(int )C_unfix(C_a1);C_r=C_fix((C_word)shutdown(t0,t1));return C_r;}/* from k516 */static C_word C_fcall stub44(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2,C_word C_a3) C_regparm;C_regparm static C_word C_fcall stub44(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2,C_word C_a3){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);void * t1=(void * )C_data_pointer_or_null(C_a1);int t2=(int )C_unfix(C_a2);int t3=(int )C_unfix(C_a3);C_r=C_fix((C_word)recv(t0,t1,t2,t3));return C_r;}/* from ##net#close in k476 in k473 in k470 in k467 in k464 */static C_word C_fcall stub37(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub37(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);C_r=C_fix((C_word)closesocket(t0));return C_r;}/* from k500 */static C_word C_fcall stub27(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2) C_regparm;C_regparm static C_word C_fcall stub27(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);void * t1=(void * )C_c_pointer_or_null(C_a1);void * t2=(void * )C_c_pointer_or_null(C_a2);C_r=C_fix((C_word)accept(t0,t1,t2));return C_r;}/* from ##net#listen */static C_word C_fcall stub20(C_word C_buf,C_word C_a0,C_word C_a1) C_regparm;C_regparm static C_word C_fcall stub20(C_word C_buf,C_word C_a0,C_word C_a1){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);int t1=(int )C_unfix(C_a1);C_r=C_fix((C_word)listen(t0,t1));return C_r;}/* from k486 */static C_word C_fcall stub11(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2) C_regparm;C_regparm static C_word C_fcall stub11(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);void * t1=(void * )C_data_pointer_or_null(C_a1);int t2=(int )C_unfix(C_a2);C_r=C_fix((C_word)bind(t0,t1,t2));return C_r;}/* from ##net#socket in k476 in k473 in k470 in k467 in k464 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -