Add definitions for PySys_ResetWarnOptions() and

PySys_AddWarnOption().
This commit is contained in:
Guido van Rossum 2000-12-15 22:02:05 +00:00
parent 429b41e5ae
commit 23fff911a2
1 changed files with 39 additions and 0 deletions

View File

@ -391,6 +391,34 @@ list_builtin_module_names(void)
return list;
}
static PyObject *warnoptions = NULL;
void
PySys_ResetWarnOptions(void)
{
if (warnoptions == NULL || !PyList_Check(warnoptions))
return;
PyList_SetSlice(warnoptions, 0, PyList_GET_SIZE(warnoptions), NULL);
}
void
PySys_AddWarnOption(char *s)
{
PyObject *str;
if (warnoptions == NULL || !PyList_Check(warnoptions)) {
Py_XDECREF(warnoptions);
warnoptions = PyList_New(0);
if (warnoptions == NULL)
return;
}
str = PyString_FromString(s);
if (str != NULL) {
PyList_Append(warnoptions, str);
Py_DECREF(str);
}
}
/* XXX This doc string is too long to be a single string literal in VC++ 5.0.
Two literals concatenated works just fine. If you have a K&R compiler
or other abomination that however *does* understand longer strings,
@ -553,6 +581,17 @@ _PySys_Init(void)
v = PyString_FromString(PyWin_DLLVersionString));
Py_XDECREF(v);
#endif
if (warnoptions == NULL) {
warnoptions = PyList_New(0);
}
else {
Py_INCREF(warnoptions);
}
if (warnoptions != NULL) {
PyDict_SetItemString(sysdict, "warnoptions", v = warnoptions);
Py_DECREF(v);
}
if (PyErr_Occurred())
return NULL;
return m;