|  | #include "Python.h" | 
|  |  | 
|  | #ifndef DONT_HAVE_STDIO_H | 
|  | #include <stdio.h> | 
|  | #endif | 
|  |  | 
|  | #ifndef DATE | 
|  | #ifdef __DATE__ | 
|  | #define DATE __DATE__ | 
|  | #else | 
|  | #define DATE "xx/xx/xx" | 
|  | #endif | 
|  | #endif | 
|  |  | 
|  | #ifndef TIME | 
|  | #ifdef __TIME__ | 
|  | #define TIME __TIME__ | 
|  | #else | 
|  | #define TIME "xx:xx:xx" | 
|  | #endif | 
|  | #endif | 
|  |  | 
|  | /* XXX Only unix build process has been tested */ | 
|  | #ifndef GITVERSION | 
|  | #define GITVERSION "" | 
|  | #endif | 
|  | #ifndef GITTAG | 
|  | #define GITTAG "" | 
|  | #endif | 
|  | #ifndef GITBRANCH | 
|  | #define GITBRANCH "" | 
|  | #endif | 
|  |  | 
|  | const char * | 
|  | Py_GetBuildInfo(void) | 
|  | { | 
|  | static char buildinfo[50 + sizeof(GITVERSION) + | 
|  | ((sizeof(GITTAG) > sizeof(GITBRANCH)) ? | 
|  | sizeof(GITTAG) : sizeof(GITBRANCH))]; | 
|  | const char *revision = _Py_gitversion(); | 
|  | const char *sep = *revision ? ":" : ""; | 
|  | const char *gitid = _Py_gitidentifier(); | 
|  | if (!(*gitid)) | 
|  | gitid = "default"; | 
|  | PyOS_snprintf(buildinfo, sizeof(buildinfo), | 
|  | "%s%s%s, %.20s, %.9s", gitid, sep, revision, | 
|  | DATE, TIME); | 
|  | return buildinfo; | 
|  | } | 
|  |  | 
|  | const char * | 
|  | _Py_gitversion(void) | 
|  | { | 
|  | return GITVERSION; | 
|  | } | 
|  |  | 
|  | const char * | 
|  | _Py_gitidentifier(void) | 
|  | { | 
|  | const char *gittag, *gitid; | 
|  | gittag = GITTAG; | 
|  | if ((*gittag) && strcmp(gittag, "undefined") != 0) | 
|  | gitid = gittag; | 
|  | else | 
|  | gitid = GITBRANCH; | 
|  | return gitid; | 
|  | } |