From dcfdae7d72177d2897e3bd0eb4d3ef19dc51df08 Mon Sep 17 00:00:00 2001
From: Georg Brandl <georg@python.org>
Date: Sat, 1 Apr 2006 07:33:08 +0000
Subject: Bug #1460564: document that socket.fromfd() duplicates the given file
 descriptor.

---
 Doc/lib/libsocket.tex  | 9 +++++----
 Modules/socketmodule.c | 5 +++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex
index 04d467a..c7b656d 100644
--- a/Doc/lib/libsocket.tex
+++ b/Doc/lib/libsocket.tex
@@ -317,10 +317,11 @@ Availability: \UNIX.  \versionadded{2.4}
 \end{funcdesc}
 
 \begin{funcdesc}{fromfd}{fd, family, type\optional{, proto}}
-Build a socket object from an existing file descriptor (an integer as
-returned by a file object's \method{fileno()} method).  Address family,
-socket type and protocol number are as for the \function{socket()} function
-above.  The file descriptor should refer to a socket, but this is not
+Duplicate the file descriptor \var{fd} (an integer as returned by a file
+object's \method{fileno()} method) and build a socket object from the
+result.  Address family, socket type and protocol number are as for the
+\function{socket()} function above.
+The file descriptor should refer to a socket, but this is not
 checked --- subsequent operations on the object may fail if the file
 descriptor is invalid.  This function is rarely needed, but can be
 used to get or set socket options on a socket passed to a program as
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 6ba076a..af46921 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -3168,7 +3168,8 @@ socket_fromfd(PyObject *self, PyObject *args)
 PyDoc_STRVAR(fromfd_doc,
 "fromfd(fd, family, type[, proto]) -> socket object\n\
 \n\
-Create a socket object from the given file descriptor.\n\
+Create a socket object from a duplicate of the given\n\
+file descriptor.\n\
 The remaining arguments are the same as for socket().");
 
 #endif /* NO_DUP */
@@ -4052,7 +4053,7 @@ init_socket(void)
 	PyModule_AddIntConstant(m, "NETLINK_IP6_FW", NETLINK_IP6_FW);
 	PyModule_AddIntConstant(m, "NETLINK_DNRTMSG", NETLINK_DNRTMSG);
 	PyModule_AddIntConstant(m, "NETLINK_TAPBASE", NETLINK_TAPBASE);
-#endif
+#endif /* AF_NETLINK */
 #ifdef AF_ROUTE
 	/* Alias to emulate 4.4BSD */
 	PyModule_AddIntConstant(m, "AF_ROUTE", AF_ROUTE);
-- 
cgit v0.12

