summaryrefslogtreecommitdiffstats
path: root/Modules/pyexpat.c
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-03-24 19:58:26 (GMT)
committerFred Drake <fdrake@acm.org>2001-03-24 19:58:26 (GMT)
commit4113b137cd9e02efe65d66ad2b671bbb9e5164dd (patch)
tree7c423a6ce97c3968e63e5dc4df7fbf66973080a5 /Modules/pyexpat.c
parentc8da0f966fd5362383e638c586c34e05e9652025 (diff)
downloadcpython-4113b137cd9e02efe65d66ad2b671bbb9e5164dd.zip
cpython-4113b137cd9e02efe65d66ad2b671bbb9e5164dd.tar.gz
cpython-4113b137cd9e02efe65d66ad2b671bbb9e5164dd.tar.bz2
get_version_string(): New function -- returns a Python string object that
gives the CVS revision of this file even if it does not include the extra RCS "$Revision: " cruft. initpyexpat(): Use get_version_string() instead of hard-coding magic indexes into the RCS string (which may be affected by export options).
Diffstat (limited to 'Modules/pyexpat.c')
-rw-r--r--Modules/pyexpat.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
index ab5ca18..0442aca 100644
--- a/Modules/pyexpat.c
+++ b/Modules/pyexpat.c
@@ -1,3 +1,5 @@
+#include <ctype.h>
+
#include "Python.h"
#include "compile.h"
#include "frameobject.h"
@@ -1463,11 +1465,31 @@ PyModule_AddStringConstant(PyObject *m, char *name, char *value)
#endif
+
+/* Return a Python string that represents the version number without the
+ * extra cruft added by revision control, even if the right options were
+ * given to the "cvs export" command to make it not include the extra
+ * cruft.
+ */
+static PyObject *
+get_version_string(void)
+{
+ static char *rcsid = "$Revision$";
+ char *rev = rcsid;
+ int i = 0;
+
+ while (!isdigit(*rev))
+ ++rev;
+ while (rev[i] != ' ' && rev[i] != '\0')
+ ++i;
+
+ return PyString_FromStringAndSize(rev, i);
+}
+
DL_EXPORT(void)
initpyexpat(void)
{
PyObject *m, *d;
- char *rev = "$Revision$";
PyObject *errmod_name = PyString_FromString("pyexpat.errors");
PyObject *errors_module;
PyObject *modelmod_name;
@@ -1500,8 +1522,7 @@ initpyexpat(void)
Py_INCREF(&Xmlparsetype);
PyModule_AddObject(m, "XMLParserType", (PyObject *) &Xmlparsetype);
- PyModule_AddObject(m, "__version__",
- PyString_FromStringAndSize(rev+11, strlen(rev+11)-2));
+ PyModule_AddObject(m, "__version__", get_version_string());
#if EXPAT_VERSION >= 0x015f02
PyModule_AddStringConstant(m, "EXPAT_VERSION",
(char *) XML_ExpatVersion());