Commit 6b14491b authored by Guido van Rossum's avatar Guido van Rossum

mode and optional bufsize for makefile()

parent b045afc7
...@@ -59,7 +59,7 @@ Socket methods: ...@@ -59,7 +59,7 @@ Socket methods:
- s.getsockname() --> sockaddr - s.getsockname() --> sockaddr
- s.getpeername() --> sockaddr - s.getpeername() --> sockaddr
- s.listen(n) --> Py_None - s.listen(n) --> Py_None
- s.makefile(mode) --> file object - s.makefile([mode[, bufsize]]) --> file object
- s.recv(nbytes [,flags]) --> string - s.recv(nbytes [,flags]) --> string
- s.recvfrom(nbytes [,flags]) --> string, sockaddr - s.recvfrom(nbytes [,flags]) --> string, sockaddr
- s.send(string [,flags]) --> nbytes - s.send(string [,flags]) --> nbytes
...@@ -733,15 +733,24 @@ static PyObject * ...@@ -733,15 +733,24 @@ static PyObject *
BUILD_FUNC_DEF_2(PySocketSock_makefile,PySocketSockObject *,s, PyObject *,args) BUILD_FUNC_DEF_2(PySocketSock_makefile,PySocketSockObject *,s, PyObject *,args)
{ {
extern int fclose Py_PROTO((FILE *)); extern int fclose Py_PROTO((FILE *));
char *mode; char *mode = "r";
int bufsize = -1;
int fd; int fd;
FILE *fp; FILE *fp;
if (!PyArg_Parse(args, "s", &mode)) PyObject *f;
if (!PyArg_ParseTuple(args, "|si", &mode, &bufsize))
return NULL; return NULL;
if ((fd = dup(s->sock_fd)) < 0 || if ((fd = dup(s->sock_fd)) < 0 ||
(fp = fdopen(fd, mode)) == NULL) (fp = fdopen(fd, mode)) == NULL) {
if (fd >= 0)
close(fd);
return PySocket_Err(); return PySocket_Err();
return PyFile_FromFile(fp, "<socket>", mode, fclose); }
f = PyFile_FromFile(fp, "<socket>", mode, fclose);
if (f != NULL)
PyFile_SetBufSize(f, bufsize);
return f;
} }
#endif /* NO_DUP */ #endif /* NO_DUP */
...@@ -900,7 +909,7 @@ static PyMethodDef PySocketSock_methods[] = { ...@@ -900,7 +909,7 @@ static PyMethodDef PySocketSock_methods[] = {
#endif #endif
{"listen", (PyCFunction)PySocketSock_listen}, {"listen", (PyCFunction)PySocketSock_listen},
#ifndef NO_DUP #ifndef NO_DUP
{"makefile", (PyCFunction)PySocketSock_makefile}, {"makefile", (PyCFunction)PySocketSock_makefile, 1},
#endif #endif
{"recv", (PyCFunction)PySocketSock_recv}, {"recv", (PyCFunction)PySocketSock_recv},
{"recvfrom", (PyCFunction)PySocketSock_recvfrom}, {"recvfrom", (PyCFunction)PySocketSock_recvfrom},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment