From: Guido van Rossum Date: Thu, 19 Dec 1996 16:35:04 +0000 (+0000) Subject: Added getprotobyname() interface. X-Git-Tag: v1.5a1~694 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3901d85277588bd368eb7a360f6bc3ede2c1227e;p=python Added getprotobyname() interface. --- diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 6c72539620..6d4da23a2b 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -1117,6 +1117,29 @@ BUILD_FUNC_DEF_2(PySocket_getservbyname,PyObject *,self, PyObject *,args) } +/* Python interface to getprotobyname(name). + This only returns the protocol number, since the other info is + already known or not useful (like the list of aliases). */ + +/*ARGSUSED*/ +static PyObject * +BUILD_FUNC_DEF_2(PySocket_getprotobyname,PyObject *,self, PyObject *,args) +{ + char *name; + struct protoent *sp; + if (!PyArg_Parse(args, "s", &name)) + return NULL; + Py_BEGIN_ALLOW_THREADS + sp = getprotobyname(name); + Py_END_ALLOW_THREADS + if (sp == NULL) { + PyErr_SetString(PySocket_Error, "protocol not found"); + return NULL; + } + return PyInt_FromLong((long) sp->p_proto); +} + + /* Python interface to socket(family, type, proto). The third (protocol) argument is optional. Return a new socket object. */ @@ -1238,6 +1261,7 @@ static PyMethodDef PySocket_methods[] = { {"gethostbyaddr", PySocket_gethostbyaddr}, {"gethostname", PySocket_gethostname}, {"getservbyname", PySocket_getservbyname}, + {"getprotobyname", PySocket_getprotobyname}, {"socket", PySocket_socket, 1}, #ifndef NO_DUP {"fromfd", PySocket_fromfd, 1},