From 94681fc4a35be6a87ceae0daeb687a711699806b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 27 Nov 2003 19:40:22 +0000 Subject: Patch #849595: Add socket.shutdown() constants. --- Doc/lib/libsocket.tex | 4 ++-- Misc/NEWS | 2 ++ Modules/socketmodule.c | 27 +++++++++++++++++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex index de2f51d..09c4c8d 100644 --- a/Doc/lib/libsocket.tex +++ b/Doc/lib/libsocket.tex @@ -638,8 +638,8 @@ structures as strings). \begin{methoddesc}[socket]{shutdown}{how} Shut down one or both halves of the connection. If \var{how} is -\code{0}, further receives are disallowed. If \var{how} is \code{1}, -further sends are disallowed. If \var{how} is \code{2}, further sends +\constant{SHUT_RD}, further receives are disallowed. If \var{how} is \constant{SHUT_WR}, +further sends are disallowed. If \var{how} is \constant{SHUT_RDWR}, further sends and receives are disallowed. \end{methoddesc} diff --git a/Misc/NEWS b/Misc/NEWS index c9b7baa..c523e65 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -95,6 +95,8 @@ Core and builtins Extension modules ----------------- +- socket.SHUT_{RD,WR,RDWR} was added. + - os.getsid was added. - The pwd module incorrectly advertised its struct type as diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index f93da4e..6ca855f 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -2097,8 +2097,8 @@ sock_shutdown(PySocketSockObject *s, PyObject *arg) PyDoc_STRVAR(shutdown_doc, "shutdown(flag)\n\ \n\ -Shut down the reading side of the socket (flag == 0), the writing side\n\ -of the socket (flag == 1), or both ends (flag == 2)."); +Shut down the reading side of the socket (flag == SHUT_RD), the writing side\n\ +of the socket (flag == SHUT_WR), or both ends (flag == SHUT_RDWR)."); /* List of methods for socket objects */ @@ -4101,6 +4101,29 @@ init_socket(void) PyModule_AddIntConstant(m, "NI_DGRAM", NI_DGRAM); #endif + /* shutdown() parameters */ +#ifdef SHUT_RD + PyModule_AddIntConstant(m, "SHUT_RD", SHUT_RD); +#elif defined(SD_RECEIVE) + PyModule_AddIntConstant(m, "SHUT_RD", SD_RECEIVE); +#else + PyModule_AddIntConstant(m, "SHUT_RD", 0); +#endif +#ifdef SHUT_WR + PyModule_AddIntConstant(m, "SHUT_WR", SHUT_WR); +#elif defined(SD_SEND) + PyModule_AddIntConstant(m, "SHUT_WR", SD_SEND); +#else + PyModule_AddIntConstant(m, "SHUT_WR", 1); +#endif +#ifdef SHUT_RDWR + PyModule_AddIntConstant(m, "SHUT_RDWR", SHUT_RDWR); +#elif defined(SD_BOTH) + PyModule_AddIntConstant(m, "SHUT_RDWR", SD_BOTH); +#else + PyModule_AddIntConstant(m, "SHUT_RDWR", 2); +#endif + /* Initialize gethostbyname lock */ #if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK) netdb_lock = PyThread_allocate_lock(); -- cgit v0.12