diff Python/sysmodule.c @ 15595:0f42f6669e80 legacy-trunk

Add definitions for PySys_ResetWarnOptions() and PySys_AddWarnOption().
author Guido van Rossum <guido@python.org>
date Fri, 15 Dec 2000 22:02:05 +0000
parents f0ca4c67957b
children 1a00d21910c8
line wrap: on
line diff
--- a/Python/sysmodule.c	Fri Dec 15 22:01:39 2000 +0000
+++ b/Python/sysmodule.c	Fri Dec 15 22:02:05 2000 +0000
@@ -391,6 +391,34 @@
 	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 @@
 			     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;