#include "err.h"
#endif /* USE_SSL */
-/* Here we have some hacks to choose between K&R or ANSI style function
- definitions. For NT to build this as an extension module (ie, DLL)
- it must be compiled by the C++ compiler, as it takes the address of
- a static data item exported from the main Python DLL.
-*/
#if defined(MS_WINDOWS) || defined(__BEOS__)
/* BeOS suffers from the same socket dichotomy as Win32... - [cjh] */
/* seem to be a few differences in the API */
#define SOCKETCLOSE closesocket
#define NO_DUP /* Actually it exists on NT 3.5, but what the heck... */
-#define FORCE_ANSI_FUNC_DEFS
#endif
/* abstract the socket file descriptor type */
#if defined(PYOS_OS2)
#define SOCKETCLOSE soclose
#define NO_DUP /* Sockets are Not Actual File Handles under OS/2 */
-#define FORCE_ANSI_FUNC_DEFS
#endif
#ifndef SOCKETCLOSE
#define SOCKETCLOSE close
#endif
-#ifdef FORCE_ANSI_FUNC_DEFS
-#define BUILD_FUNC_DEF_1( fnname, arg1type, arg1name ) \
-fnname( arg1type arg1name )
-
-#define BUILD_FUNC_DEF_2( fnname, arg1type, arg1name, arg2type, arg2name ) \
-fnname( arg1type arg1name, arg2type arg2name )
-
-#define BUILD_FUNC_DEF_3( fnname, arg1type, arg1name, arg2type, arg2name , arg3type, arg3name ) \
-fnname( arg1type arg1name, arg2type arg2name, arg3type arg3name )
-
-#define BUILD_FUNC_DEF_4( fnname, arg1type, arg1name, arg2type, arg2name , arg3type, arg3name, arg4type, arg4name ) \
-fnname( arg1type arg1name, arg2type arg2name, arg3type arg3name, arg4type arg4name )
-
-#else /* !FORCE_ANSI_FN_DEFS */
-#define BUILD_FUNC_DEF_1( fnname, arg1type, arg1name ) \
-fnname( arg1name ) \
- arg1type arg1name;
-
-#define BUILD_FUNC_DEF_2( fnname, arg1type, arg1name, arg2type, arg2name ) \
-fnname( arg1name, arg2name ) \
- arg1type arg1name; \
- arg2type arg2name;
-
-#define BUILD_FUNC_DEF_3( fnname, arg1type, arg1name, arg2type, arg2name, arg3type, arg3name ) \
-fnname( arg1name, arg2name, arg3name ) \
- arg1type arg1name; \
- arg2type arg2name; \
- arg3type arg3name;
-
-#define BUILD_FUNC_DEF_4( fnname, arg1type, arg1name, arg2type, arg2name, arg3type, arg3name, arg4type, arg4name ) \
-fnname( arg1name, arg2name, arg3name, arg4name ) \
- arg1type arg1name; \
- arg2type arg2name; \
- arg3type arg3name; \
- arg4type arg4name;
-
-#endif /* !FORCE_ANSI_FN_DEFS */
-
/* Global variable holding the exception type for errors detected
by this module (but not argument type or memory errors, etc.). */
in NEWOBJ()). */
static PySocketSockObject *
-BUILD_FUNC_DEF_4(PySocketSock_New,SOCKET_T,fd, int,family, int,type, int,proto)
+PySocketSock_New(SOCKET_T fd, int family, int type, int proto)
{
PySocketSockObject *s;
PySocketSock_Type.ob_type = &PyType_Type;
an error occurred; then an exception is raised. */
static int
-BUILD_FUNC_DEF_2(setipaddr, char*,name, struct sockaddr_in *,addr_ret)
+setipaddr(char* name, struct sockaddr_in * addr_ret)
{
struct hostent *hp;
int d1, d2, d3, d4;
size numbers). */
static PyObject *
-BUILD_FUNC_DEF_1(makeipaddr, struct sockaddr_in *,addr)
+makeipaddr(struct sockaddr_in *addr)
{
long x = ntohl(addr->sin_addr.s_addr);
char buf[100];
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(makesockaddr,struct sockaddr *,addr, int,addrlen)
+makesockaddr(struct sockaddr *addr, int addrlen)
{
if (addrlen == 0) {
/* No address -- may be recvfrom() from known socket */
through len_ret. */
static int
-BUILD_FUNC_DEF_4(
-getsockaddrarg,PySocketSockObject *,s, PyObject *,args, struct sockaddr **,addr_ret, int *,len_ret)
+getsockaddrarg(PySocketSockObject *s, PyObject *args, struct sockaddr **addr_ret, int *len_ret)
{
switch (s->sock_family) {
through len_ret. */
static int
-BUILD_FUNC_DEF_2(getsockaddrlen,PySocketSockObject *,s, int *,len_ret)
+getsockaddrlen(PySocketSockObject *s, int *len_ret)
{
switch (s->sock_family) {
/* s.accept() method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_accept,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_accept(PySocketSockObject *s, PyObject *args)
{
char addrbuf[256];
SOCKET_T newfd;
/* s.setblocking(1 | 0) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_setblocking,PySocketSockObject*,s,PyObject*,args)
+PySocketSock_setblocking(PySocketSockObject *s, PyObject *args)
{
int block;
#ifndef MS_WINDOWS
use optional built-in module 'struct' to encode the string. */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_setsockopt,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_setsockopt(PySocketSockObject *s, PyObject *args)
{
int level;
int optname;
use optional built-in module 'struct' to decode the string. */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_getsockopt,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_getsockopt(PySocketSockObject *s, PyObject *args)
{
int level;
int optname;
/* s.bind(sockaddr) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_bind,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_bind(PySocketSockObject *s, PyObject *args)
{
struct sockaddr *addr;
int addrlen;
will surely fail. */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_close,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_close(PySocketSockObject *s, PyObject *args)
{
if (!PyArg_ParseTuple(args, ":close"))
return NULL;
/* s.connect(sockaddr) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_connect,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_connect(PySocketSockObject *s, PyObject *args)
{
struct sockaddr *addr;
int addrlen;
/* s.connect_ex(sockaddr) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_connect_ex,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_connect_ex(PySocketSockObject *s, PyObject *args)
{
struct sockaddr *addr;
int addrlen;
/* s.fileno() method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_fileno,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_fileno(PySocketSockObject *s, PyObject *args)
{
if (!PyArg_ParseTuple(args, ":fileno"))
return NULL;
/* s.dup() method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_dup,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_dup(PySocketSockObject *s, PyObject *args)
{
SOCKET_T newfd;
PyObject *sock;
/* s.getsockname() method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_getsockname,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_getsockname(PySocketSockObject *s, PyObject *args)
{
char addrbuf[256];
int res;
/* s.getpeername() method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_getpeername,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_getpeername(PySocketSockObject *s, PyObject *args)
{
char addrbuf[256];
int res;
/* s.listen(n) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_listen,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_listen(PySocketSockObject *s, PyObject *args)
{
int backlog;
int res;
The mode argument specifies 'r' or 'w' passed to fdopen(). */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_makefile,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_makefile(PySocketSockObject *s, PyObject *args)
{
extern int fclose(FILE *);
char *mode = "r";
/* s.recv(nbytes [,flags]) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_recv,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_recv(PySocketSockObject *s, PyObject *args)
{
int len, n, flags = 0;
PyObject *buf;
/* s.recvfrom(nbytes [,flags]) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_recvfrom,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_recvfrom(PySocketSockObject *s, PyObject *args)
{
char addrbuf[256];
PyObject *buf = NULL;
/* s.send(data [,flags]) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_send,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_send(PySocketSockObject *s, PyObject *args)
{
char *buf;
int len, n, flags = 0;
/* s.sendto(data, [flags,] sockaddr) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_sendto,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_sendto(PySocketSockObject *s, PyObject *args)
{
PyObject *addro;
char *buf;
/* s.shutdown(how) method */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_shutdown,PySocketSockObject *,s, PyObject *,args)
+PySocketSock_shutdown(PySocketSockObject *s, PyObject *args)
{
int how;
int res;
First close the file description. */
static void
-BUILD_FUNC_DEF_1(PySocketSock_dealloc,PySocketSockObject *,s)
+PySocketSock_dealloc(PySocketSockObject *s)
{
if (s->sock_fd != -1)
(void) SOCKETCLOSE(s->sock_fd);
/* Return a socket object's named attribute. */
static PyObject *
-BUILD_FUNC_DEF_2(PySocketSock_getattr,PySocketSockObject *,s, char *,name)
+PySocketSock_getattr(PySocketSockObject *s, char *name)
{
return Py_FindMethod(PySocketSock_methods, (PyObject *) s, name);
}
static PyObject *
-BUILD_FUNC_DEF_1(PySocketSock_repr,PySocketSockObject *,s)
+PySocketSock_repr(PySocketSockObject *s)
{
char buf[512];
#if SIZEOF_SOCKET_T > SIZEOF_LONG
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_gethostname,PyObject *,self, PyObject *,args)
+PySocket_gethostname(PyObject *self, PyObject *args)
{
char buf[1024];
int res;
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_gethostbyname,PyObject *,self, PyObject *,args)
+PySocket_gethostbyname(PyObject *self, PyObject *args)
{
char *name;
struct sockaddr_in addrbuf;
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_gethostbyname_ex,PyObject *,self, PyObject *,args)
+PySocket_gethostbyname_ex(PyObject *self, PyObject *args)
{
char *name;
struct hostent *h;
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_gethostbyaddr,PyObject *,self, PyObject *, args)
+PySocket_gethostbyaddr(PyObject *self, PyObject *args)
{
struct sockaddr_in addr;
char *ip_num;
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_getservbyname,PyObject *,self, PyObject *,args)
+PySocket_getservbyname(PyObject *self, PyObject *args)
{
char *name, *proto;
struct servent *sp;
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_getprotobyname,PyObject *,self, PyObject *,args)
+PySocket_getprotobyname(PyObject *self, PyObject *args)
{
char *name;
struct protoent *sp;
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_socket,PyObject *,self, PyObject *,args)
+PySocket_socket(PyObject *self, PyObject *args)
{
PySocketSockObject *s;
SOCKET_T fd;
/*ARGSUSED*/
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_fromfd,PyObject *,self, PyObject *,args)
+PySocket_fromfd(PyObject *self, PyObject *args)
{
PySocketSockObject *s;
SOCKET_T fd;
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_ntohs, PyObject *, self, PyObject *, args)
+PySocket_ntohs(PyObject *self, PyObject *args)
{
int x1, x2;
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_ntohl, PyObject *, self, PyObject *, args)
+PySocket_ntohl(PyObject *self, PyObject *args)
{
int x1, x2;
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_htons, PyObject *, self, PyObject *, args)
+PySocket_htons(PyObject *self, PyObject *args)
{
int x1, x2;
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_htonl, PyObject *, self, PyObject *, args)
+PySocket_htonl(PyObject *self, PyObject *args)
{
int x1, x2;
binary format used in low-level network functions.";
static PyObject*
-BUILD_FUNC_DEF_2(PySocket_inet_aton, PyObject *, self, PyObject *, args)
+PySocket_inet_aton(PyObject *self, PyObject *args)
{
#ifndef INADDR_NONE
#define INADDR_NONE (-1)
Convert an IP address from 32-bit packed binary format to string format";
static PyObject*
-BUILD_FUNC_DEF_2(PySocket_inet_ntoa, PyObject *, self, PyObject *, args)
+PySocket_inet_ntoa(PyObject *self, PyObject *args)
{
char *packed_str;
int addr_len;
/* This is a C function to be called for new object initialization */
static SSLObject *
-BUILD_FUNC_DEF_3(newSSLObject,
- PySocketSockObject *,Sock, char*,key_file, char*,cert_file)
+newSSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file)
{
SSLObject *self;
char *str;
/* This is the Python function called for new object initialization */
static PyObject *
-BUILD_FUNC_DEF_2(PySocket_ssl, PyObject *, self, PyObject *, args)
+PySocket_ssl(PyObject *self, PyObject *args)
{
SSLObject *rv;
PySocketSockObject *Sock;
"ssl(socket, keyfile, certfile) -> sslobject";
static PyObject *
-BUILD_FUNC_DEF_2(SSL_server, SSLObject *, self, PyObject *, args)
+SSL_server(SSLObject *self, PyObject *args)
{
return PyString_FromString(self->server);
}
static PyObject *
-BUILD_FUNC_DEF_2(SSL_issuer, SSLObject *, self, PyObject *, args)
+SSL_issuer(SSLObject *self, PyObject *args)
{
return PyString_FromString(self->issuer);
}
* Errors are silently ignored, for better or for worse...
*/
static void
-BUILD_FUNC_DEF_3(insint,PyObject *,d, char *,name, int,value)
+insint(PyObject *d, char *name, int value)
{
PyObject *v = PyInt_FromLong((long) value);
if (!v || PyDict_SetItemString(d, name, v))