[Python-checkins] r54050 - python/branches/p3yk_no_args_on_exc/Modules/socketmodule.c
brett.cannon
python-checkins at python.org
Thu Mar 1 04:33:20 CET 2007
Author: brett.cannon
Date: Thu Mar 1 04:33:15 2007
New Revision: 54050
Modified:
python/branches/p3yk_no_args_on_exc/Modules/socketmodule.c
Log:
Re-implement socket.error to add support for taking two arguments. Fixes
(again) all of the failing networking tests.
Modified: python/branches/p3yk_no_args_on_exc/Modules/socketmodule.c
==============================================================================
--- python/branches/p3yk_no_args_on_exc/Modules/socketmodule.c (original)
+++ python/branches/p3yk_no_args_on_exc/Modules/socketmodule.c Thu Mar 1 04:33:15 2007
@@ -4240,6 +4240,7 @@
init_socket(void)
{
PyObject *m, *has_ipv6;
+ PyObject *module_dict;
if (!os_init())
return;
@@ -4251,30 +4252,23 @@
if (m == NULL)
return;
- socket_error = PyErr_NewException("socket.error", NULL, NULL);
- if (socket_error == NULL)
- return;
- PySocketModuleAPI.error = socket_error;
- Py_INCREF(socket_error);
- PyModule_AddObject(m, "error", socket_error);
- socket_herror = PyErr_NewException("socket.herror",
- socket_error, NULL);
- if (socket_herror == NULL)
- return;
- Py_INCREF(socket_herror);
- PyModule_AddObject(m, "herror", socket_herror);
- socket_gaierror = PyErr_NewException("socket.gaierror", socket_error,
- NULL);
- if (socket_gaierror == NULL)
- return;
- Py_INCREF(socket_gaierror);
- PyModule_AddObject(m, "gaierror", socket_gaierror);
- socket_timeout = PyErr_NewException("socket.timeout",
- socket_error, NULL);
- if (socket_timeout == NULL)
- return;
- Py_INCREF(socket_timeout);
- PyModule_AddObject(m, "timeout", socket_timeout);
+ module_dict = PyModule_GetDict(m);
+ PyDict_SetItemString(module_dict, "Exception", PyExc_Exception);
+
+ PyRun_String("class error(Exception):\n"
+ " def __init__(self, message='', errno=None):\n"
+ " Exception.__init__(self, message)\n"
+ " if errno:\n"
+ " self.errno = errno\n"
+ "class herror(error): pass\n"
+ "class gaierror(error): pass\n"
+ "class timeout(error): pass\n",
+ Py_file_input, module_dict, module_dict);
+ socket_error = PyDict_GetItemString(module_dict, "error");
+ socket_herror = PyDict_GetItemString(module_dict, "herror");
+ socket_gaierror = PyDict_GetItemString(module_dict, "gaierror");
+ socket_timeout = PyDict_GetItemString(module_dict, "timeout");
+
Py_INCREF((PyObject *)&sock_type);
if (PyModule_AddObject(m, "SocketType",
(PyObject *)&sock_type) != 0)
More information about the Python-checkins
mailing list