diff Modules/socketmodule.c @ 1094:d2af6bdcb6d0 legacy-trunk

* config.c: Added audioop to lists. * Makefile: change default source directory * socketmodule.c: added getsockname and getpeername * bltinmodule.c: corrected typo in type() error message * Added new built-in functions str() and repr(): repr(x) == `x`; str(x) == x if x is a string, otherwise str(x) == repr(x). * Added joinfields to stropmodule.c (string.join calls joinfields now)
author Guido van Rossum <guido@python.org>
date Thu, 26 Nov 1992 08:54:07 +0000
parents 6aa0ee14ac2e
children 3dd7b8255619
line wrap: on
line diff
--- a/Modules/socketmodule.c	Mon Nov 16 16:56:04 1992 +0000
+++ b/Modules/socketmodule.c	Thu Nov 26 08:54:07 1992 +0000
@@ -57,6 +57,8 @@
 - s.getsockopt(level, optname) --> flag
 - s.bind(sockaddr) --> None
 - s.connect(sockaddr) --> None
+- s.getsockname() --> sockaddr
+- s.getpeername() --> sockaddr
 - s.listen(n) --> None
 - s.makefile(mode) --> file object
 - s.recv(nbytes) --> string
@@ -564,6 +566,50 @@
 }
 
 
+/* s.getsockname() method */
+
+static object *
+sock_getsockname(s, args)
+	sockobject *s;
+	object *args;
+{
+	char addrbuf[256];
+	int addrlen, res;
+	if (!getnoarg(args))
+		return NULL;
+	if (!getsockaddrlen(s, &addrlen))
+		return NULL;
+	BGN_SAVE
+	res = getsockname(s->sock_fd, (struct sockaddr *) addrbuf, &addrlen);
+	END_SAVE
+	if (res < 0)
+		return socket_error();
+	return makesockaddr((struct sockaddr *) addrbuf, addrlen);
+}
+
+
+/* s.getpeername() method */
+
+static object *
+sock_getpeername(s, args)
+	sockobject *s;
+	object *args;
+{
+	char addrbuf[256];
+	int addrlen, res;
+	if (!getnoarg(args))
+		return NULL;
+	if (!getsockaddrlen(s, &addrlen))
+		return NULL;
+	BGN_SAVE
+	res = getpeername(s->sock_fd, (struct sockaddr *) addrbuf, &addrlen);
+	END_SAVE
+	if (res < 0)
+		return socket_error();
+	return makesockaddr((struct sockaddr *) addrbuf, addrlen);
+}
+
+
 /* s.listen(n) method */
 
 static object *
@@ -753,6 +799,8 @@
 	{"close",	sock_close},
 	{"connect",	sock_connect},
 	{"fileno",	sock_fileno},
+	{"getsockname",	sock_getsockname},
+	{"getpeername",	sock_getpeername},
 	{"listen",	sock_listen},
 	{"makefile",	sock_makefile},
 	{"recv",	sock_recv},