diff options
author | Fred Drake <fdrake@acm.org> | 2001-03-24 19:58:26 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2001-03-24 19:58:26 (GMT) |
commit | 4113b137cd9e02efe65d66ad2b671bbb9e5164dd (patch) | |
tree | 7c423a6ce97c3968e63e5dc4df7fbf66973080a5 /Modules/pyexpat.c | |
parent | c8da0f966fd5362383e638c586c34e05e9652025 (diff) | |
download | cpython-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.c | 27 |
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()); |