Skip to content

Commit ae0013d

Browse files
committed
Convert socket methods to use METH_O and METH_NOARGS where possible.
1 parent cb43c08 commit ae0013d

1 file changed

Lines changed: 39 additions & 50 deletions

File tree

Modules/socketmodule.c

Lines changed: 39 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -925,7 +925,7 @@ getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret)
925925
/* s.accept() method */
926926

927927
static PyObject *
928-
PySocketSock_accept(PySocketSockObject *s, PyObject *args)
928+
PySocketSock_accept(PySocketSockObject *s)
929929
{
930930
char addrbuf[256];
931931
SOCKET_T newfd;
@@ -934,8 +934,6 @@ PySocketSock_accept(PySocketSockObject *s, PyObject *args)
934934
PyObject *addr = NULL;
935935
PyObject *res = NULL;
936936

937-
if (!PyArg_ParseTuple(args, ":accept"))
938-
return NULL;
939937
if (!getsockaddrlen(s, &addrlen))
940938
return NULL;
941939
memset(addrbuf, 0, addrlen);
@@ -983,15 +981,16 @@ info is a pair (hostaddr, port).";
983981
/* s.setblocking(1 | 0) method */
984982

985983
static PyObject *
986-
PySocketSock_setblocking(PySocketSockObject *s, PyObject *args)
984+
PySocketSock_setblocking(PySocketSockObject *s, PyObject *arg)
987985
{
988986
int block;
989987
#ifndef RISCOS
990988
#ifndef MS_WINDOWS
991989
int delay_flag;
992990
#endif
993991
#endif
994-
if (!PyArg_ParseTuple(args, "i:setblocking", &block))
992+
block = PyInt_AsLong(arg);
993+
if (block == -1 && PyErr_Occurred())
995994
return NULL;
996995
Py_BEGIN_ALLOW_THREADS
997996
#ifdef __BEOS__
@@ -1158,14 +1157,12 @@ string of that length; otherwise it is an integer.";
11581157
/* s.bind(sockaddr) method */
11591158

11601159
static PyObject *
1161-
PySocketSock_bind(PySocketSockObject *s, PyObject *args)
1160+
PySocketSock_bind(PySocketSockObject *s, PyObject *addro)
11621161
{
11631162
struct sockaddr *addr;
11641163
int addrlen;
11651164
int res;
1166-
PyObject *addro;
1167-
if (!PyArg_ParseTuple(args, "O:bind", &addro))
1168-
return NULL;
1165+
11691166
if (!getsockaddrarg(s, addro, &addr, &addrlen))
11701167
return NULL;
11711168
Py_BEGIN_ALLOW_THREADS
@@ -1190,11 +1187,10 @@ sockets the address is a tuple (ifname, proto [,pkttype [,hatype]])";
11901187
will surely fail. */
11911188

11921189
static PyObject *
1193-
PySocketSock_close(PySocketSockObject *s, PyObject *args)
1190+
PySocketSock_close(PySocketSockObject *s)
11941191
{
11951192
SOCKET_T fd;
1196-
if (!PyArg_ParseTuple(args, ":close"))
1197-
return NULL;
1193+
11981194
if ((fd = s->sock_fd) != -1) {
11991195
s->sock_fd = -1;
12001196
Py_BEGIN_ALLOW_THREADS
@@ -1214,14 +1210,12 @@ Close the socket. It cannot be used after this call.";
12141210
/* s.connect(sockaddr) method */
12151211

12161212
static PyObject *
1217-
PySocketSock_connect(PySocketSockObject *s, PyObject *args)
1213+
PySocketSock_connect(PySocketSockObject *s, PyObject *addro)
12181214
{
12191215
struct sockaddr *addr;
12201216
int addrlen;
12211217
int res;
1222-
PyObject *addro;
1223-
if (!PyArg_ParseTuple(args, "O:connect", &addro))
1224-
return NULL;
1218+
12251219
if (!getsockaddrarg(s, addro, &addr, &addrlen))
12261220
return NULL;
12271221
Py_BEGIN_ALLOW_THREADS
@@ -1243,14 +1237,12 @@ is a pair (host, port).";
12431237
/* s.connect_ex(sockaddr) method */
12441238

12451239
static PyObject *
1246-
PySocketSock_connect_ex(PySocketSockObject *s, PyObject *args)
1240+
PySocketSock_connect_ex(PySocketSockObject *s, PyObject *addro)
12471241
{
12481242
struct sockaddr *addr;
12491243
int addrlen;
12501244
int res;
1251-
PyObject *addro;
1252-
if (!PyArg_ParseTuple(args, "O:connect_ex", &addro))
1253-
return NULL;
1245+
12541246
if (!getsockaddrarg(s, addro, &addr, &addrlen))
12551247
return NULL;
12561248
Py_BEGIN_ALLOW_THREADS
@@ -1271,10 +1263,8 @@ instead of raising an exception when an error occurs.";
12711263
/* s.fileno() method */
12721264

12731265
static PyObject *
1274-
PySocketSock_fileno(PySocketSockObject *s, PyObject *args)
1266+
PySocketSock_fileno(PySocketSockObject *s)
12751267
{
1276-
if (!PyArg_ParseTuple(args, ":fileno"))
1277-
return NULL;
12781268
#if SIZEOF_SOCKET_T <= SIZEOF_LONG
12791269
return PyInt_FromLong((long) s->sock_fd);
12801270
#else
@@ -1292,12 +1282,11 @@ Return the integer file descriptor of the socket.";
12921282
/* s.dup() method */
12931283

12941284
static PyObject *
1295-
PySocketSock_dup(PySocketSockObject *s, PyObject *args)
1285+
PySocketSock_dup(PySocketSockObject *s)
12961286
{
12971287
SOCKET_T newfd;
12981288
PyObject *sock;
1299-
if (!PyArg_ParseTuple(args, ":dup"))
1300-
return NULL;
1289+
13011290
newfd = dup(s->sock_fd);
13021291
if (newfd < 0)
13031292
return PySocket_Err();
@@ -1321,14 +1310,12 @@ Return a new socket object connected to the same system resource.";
13211310
/* s.getsockname() method */
13221311

13231312
static PyObject *
1324-
PySocketSock_getsockname(PySocketSockObject *s, PyObject *args)
1313+
PySocketSock_getsockname(PySocketSockObject *s)
13251314
{
13261315
char addrbuf[256];
13271316
int res;
13281317
socklen_t addrlen;
13291318

1330-
if (!PyArg_ParseTuple(args, ":getsockname"))
1331-
return NULL;
13321319
if (!getsockaddrlen(s, &addrlen))
13331320
return NULL;
13341321
memset(addrbuf, 0, addrlen);
@@ -1351,14 +1338,12 @@ info is a pair (hostaddr, port).";
13511338
/* s.getpeername() method */
13521339

13531340
static PyObject *
1354-
PySocketSock_getpeername(PySocketSockObject *s, PyObject *args)
1341+
PySocketSock_getpeername(PySocketSockObject *s)
13551342
{
13561343
char addrbuf[256];
13571344
int res;
13581345
socklen_t addrlen;
13591346

1360-
if (!PyArg_ParseTuple(args, ":getpeername"))
1361-
return NULL;
13621347
if (!getsockaddrlen(s, &addrlen))
13631348
return NULL;
13641349
memset(addrbuf, 0, addrlen);
@@ -1382,11 +1367,13 @@ info is a pair (hostaddr, port).";
13821367
/* s.listen(n) method */
13831368

13841369
static PyObject *
1385-
PySocketSock_listen(PySocketSockObject *s, PyObject *args)
1370+
PySocketSock_listen(PySocketSockObject *s, PyObject *arg)
13861371
{
13871372
int backlog;
13881373
int res;
1389-
if (!PyArg_ParseTuple(args, "i:listen", &backlog))
1374+
1375+
backlog = PyInt_AsLong(arg);
1376+
if (backlog == -1 && PyErr_Occurred())
13901377
return NULL;
13911378
Py_BEGIN_ALLOW_THREADS
13921379
if (backlog < 1)
@@ -1606,11 +1593,13 @@ For IP sockets, the address is a pair (hostaddr, port).";
16061593
/* s.shutdown(how) method */
16071594

16081595
static PyObject *
1609-
PySocketSock_shutdown(PySocketSockObject *s, PyObject *args)
1596+
PySocketSock_shutdown(PySocketSockObject *s, PyObject *arg)
16101597
{
16111598
int how;
16121599
int res;
1613-
if (!PyArg_ParseTuple(args, "i:shutdown", &how))
1600+
1601+
how = PyInt_AsLong(arg);
1602+
if (how == -1 && PyErr_Occurred())
16141603
return NULL;
16151604
Py_BEGIN_ALLOW_THREADS
16161605
res = shutdown(s->sock_fd, how);
@@ -1631,31 +1620,31 @@ of the socket (flag == 1), or both ends (flag == 2).";
16311620
/* List of methods for socket objects */
16321621

16331622
static PyMethodDef PySocketSock_methods[] = {
1634-
{"accept", (PyCFunction)PySocketSock_accept, METH_VARARGS,
1623+
{"accept", (PyNoArgsFunction)PySocketSock_accept, METH_NOARGS,
16351624
accept_doc},
1636-
{"bind", (PyCFunction)PySocketSock_bind, METH_VARARGS,
1625+
{"bind", (PyCFunction)PySocketSock_bind, METH_O,
16371626
bind_doc},
1638-
{"close", (PyCFunction)PySocketSock_close, METH_VARARGS,
1627+
{"close", (PyNoArgsFunction)PySocketSock_close, METH_NOARGS,
16391628
close_doc},
1640-
{"connect", (PyCFunction)PySocketSock_connect, METH_VARARGS,
1629+
{"connect", (PyCFunction)PySocketSock_connect, METH_O,
16411630
connect_doc},
1642-
{"connect_ex", (PyCFunction)PySocketSock_connect_ex, METH_VARARGS,
1631+
{"connect_ex", (PyCFunction)PySocketSock_connect_ex, METH_O,
16431632
connect_ex_doc},
16441633
#ifndef NO_DUP
1645-
{"dup", (PyCFunction)PySocketSock_dup, METH_VARARGS,
1634+
{"dup", (PyNoArgsFunction)PySocketSock_dup, METH_NOARGS,
16461635
dup_doc},
16471636
#endif
1648-
{"fileno", (PyCFunction)PySocketSock_fileno, METH_VARARGS,
1637+
{"fileno", (PyNoArgsFunction)PySocketSock_fileno, METH_NOARGS,
16491638
fileno_doc},
16501639
#ifdef HAVE_GETPEERNAME
1651-
{"getpeername", (PyCFunction)PySocketSock_getpeername, METH_VARARGS,
1652-
getpeername_doc},
1640+
{"getpeername", (PyNoArgsFunction)PySocketSock_getpeername,
1641+
METH_NOARGS, getpeername_doc},
16531642
#endif
1654-
{"getsockname", (PyCFunction)PySocketSock_getsockname, METH_VARARGS,
1655-
getsockname_doc},
1643+
{"getsockname", (PyNoArgsFunction)PySocketSock_getsockname,
1644+
METH_NOARGS, getsockname_doc},
16561645
{"getsockopt", (PyCFunction)PySocketSock_getsockopt, METH_VARARGS,
16571646
getsockopt_doc},
1658-
{"listen", (PyCFunction)PySocketSock_listen, METH_VARARGS,
1647+
{"listen", (PyCFunction)PySocketSock_listen, METH_O,
16591648
listen_doc},
16601649
#ifndef NO_DUP
16611650
{"makefile", (PyCFunction)PySocketSock_makefile, METH_VARARGS,
@@ -1669,11 +1658,11 @@ static PyMethodDef PySocketSock_methods[] = {
16691658
send_doc},
16701659
{"sendto", (PyCFunction)PySocketSock_sendto, METH_VARARGS,
16711660
sendto_doc},
1672-
{"setblocking", (PyCFunction)PySocketSock_setblocking, METH_VARARGS,
1661+
{"setblocking", (PyCFunction)PySocketSock_setblocking, METH_O,
16731662
setblocking_doc},
16741663
{"setsockopt", (PyCFunction)PySocketSock_setsockopt, METH_VARARGS,
16751664
setsockopt_doc},
1676-
{"shutdown", (PyCFunction)PySocketSock_shutdown, METH_VARARGS,
1665+
{"shutdown", (PyCFunction)PySocketSock_shutdown, METH_O,
16771666
shutdown_doc},
16781667
#ifdef RISCOS
16791668
{"sleeptaskw", (PyCFunction)PySocketSock_sleeptaskw, METH_VARARGS,

0 commit comments

Comments
 (0)