Mercurial > cpython-lru_cache-weakref
comparison Python/sysmodule.c @ 69481:febb6cf195e7 3.1
Up-port changeset 5cf8f6da8743 (closes #11890)
| author | Jesus Cea <jcea@jcea.es> |
|---|---|
| date | Wed, 20 Apr 2011 20:24:57 +0200 |
| parents | f57c94073b35 |
| children | f4b7ecf8a5f8 063b4ab49fcc |
comparison
equal
deleted
inserted
replaced
| 69472:77c657e47b5c | 69481:febb6cf195e7 |
|---|---|
| 1063 " | 1063 " |
| 1064 ) | 1064 ) |
| 1065 /* end of sys_doc */ ; | 1065 /* end of sys_doc */ ; |
| 1066 | 1066 |
| 1067 /* Subversion branch and revision management */ | 1067 /* Subversion branch and revision management */ |
| 1068 static const char _patchlevel_revision[] = PY_PATCHLEVEL_REVISION; | |
| 1069 static const char headurl[] = "$HeadURL$"; | |
| 1070 static int svn_initialized; | 1068 static int svn_initialized; |
| 1071 static char patchlevel_revision[50]; /* Just the number */ | 1069 static char patchlevel_revision[50]; /* Just the number */ |
| 1072 static char branch[50]; | 1070 static char branch[50]; |
| 1073 static char shortbranch[50]; | 1071 static char shortbranch[50]; |
| 1074 static const char *svn_revision; | 1072 static const char *svn_revision; |
| 1075 | 1073 |
| 1076 static void | 1074 static void |
| 1077 svnversion_init(void) | 1075 svnversion_init(void) |
| 1078 { | 1076 { |
| 1079 const char *python, *br_start, *br_end, *br_end2, *svnversion; | |
| 1080 Py_ssize_t len; | |
| 1081 int istag = 0; | |
| 1082 | |
| 1083 if (svn_initialized) | 1077 if (svn_initialized) |
| 1084 return; | 1078 return; |
| 1085 | 1079 |
| 1086 python = strstr(headurl, "/python/"); | |
| 1087 if (!python) { | |
| 1088 strcpy(branch, "unknown branch"); | |
| 1089 strcpy(shortbranch, "unknown"); | |
| 1090 } | |
| 1091 else { | |
| 1092 br_start = python + 8; | |
| 1093 br_end = strchr(br_start, '/'); | |
| 1094 assert(br_end); | |
| 1095 | |
| 1096 /* Works even for trunk, | |
| 1097 as we are in trunk/Python/sysmodule.c */ | |
| 1098 br_end2 = strchr(br_end+1, '/'); | |
| 1099 | |
| 1100 istag = strncmp(br_start, "tags", 4) == 0; | |
| 1101 if (strncmp(br_start, "trunk", 5) == 0) { | |
| 1102 strcpy(branch, "trunk"); | |
| 1103 strcpy(shortbranch, "trunk"); | |
| 1104 } | |
| 1105 else if (istag || strncmp(br_start, "branches", 8) == 0) { | |
| 1106 len = br_end2 - br_start; | |
| 1107 strncpy(branch, br_start, len); | |
| 1108 branch[len] = '\0'; | |
| 1109 | |
| 1110 len = br_end2 - (br_end + 1); | |
| 1111 strncpy(shortbranch, br_end + 1, len); | |
| 1112 shortbranch[len] = '\0'; | |
| 1113 } | |
| 1114 else { | |
| 1115 Py_FatalError("bad HeadURL"); | |
| 1116 return; | |
| 1117 } | |
| 1118 } | |
| 1119 | |
| 1120 | |
| 1121 svnversion = _Py_svnversion(); | |
| 1122 if (strcmp(svnversion, "Unversioned directory") != 0 && strcmp(svnversion, "exported") != 0) | |
| 1123 svn_revision = svnversion; | |
| 1124 else if (istag) { | |
| 1125 len = strlen(_patchlevel_revision); | |
| 1126 assert(len >= 13); | |
| 1127 assert(len < (sizeof(patchlevel_revision) + 13)); | |
| 1128 strncpy(patchlevel_revision, _patchlevel_revision + 11, | |
| 1129 len - 13); | |
| 1130 patchlevel_revision[len - 13] = '\0'; | |
| 1131 svn_revision = patchlevel_revision; | |
| 1132 } | |
| 1133 else | |
| 1134 svn_revision = ""; | |
| 1135 | |
| 1136 svn_initialized = 1; | 1080 svn_initialized = 1; |
| 1081 *patchlevel_revision = '\0'; | |
| 1082 strcpy(branch, ""); | |
| 1083 strcpy(shortbranch, "unknown"); | |
| 1084 svn_revision = ""; | |
| 1137 } | 1085 } |
| 1138 | 1086 |
| 1139 /* Return svnversion output if available. | 1087 /* Return svnversion output if available. |
| 1140 Else return Revision of patchlevel.h if on branch. | 1088 Else return Revision of patchlevel.h if on branch. |
| 1141 Else return empty string */ | 1089 Else return empty string */ |
