Mercurial > cpython-lru_cache-weakref
comparison Python/sysmodule.c @ 69482:063b4ab49fcc 3.2
MERGE: Up-port changeset 5cf8f6da8743 (closes #11890)
| author | Jesus Cea <jcea@jcea.es> |
|---|---|
| date | Wed, 20 Apr 2011 20:32:52 +0200 |
| parents | a00b9a5688da febb6cf195e7 |
| children | fdcda5b74317 c65035463b0f |
comparison
equal
deleted
inserted
replaced
| 69473:e5f11efe89a6 | 69482:063b4ab49fcc |
|---|---|
| 1304 " | 1304 " |
| 1305 ) | 1305 ) |
| 1306 /* end of sys_doc */ ; | 1306 /* end of sys_doc */ ; |
| 1307 | 1307 |
| 1308 /* Subversion branch and revision management */ | 1308 /* Subversion branch and revision management */ |
| 1309 static const char _patchlevel_revision[] = PY_PATCHLEVEL_REVISION; | |
| 1310 static const char headurl[] = "$HeadURL$"; | |
| 1311 static int svn_initialized; | 1309 static int svn_initialized; |
| 1312 static char patchlevel_revision[50]; /* Just the number */ | 1310 static char patchlevel_revision[50]; /* Just the number */ |
| 1313 static char branch[50]; | 1311 static char branch[50]; |
| 1314 static char shortbranch[50]; | 1312 static char shortbranch[50]; |
| 1315 static const char *svn_revision; | 1313 static const char *svn_revision; |
| 1316 | 1314 |
| 1317 static void | 1315 static void |
| 1318 svnversion_init(void) | 1316 svnversion_init(void) |
| 1319 { | 1317 { |
| 1320 const char *python, *br_start, *br_end, *br_end2, *svnversion; | |
| 1321 Py_ssize_t len; | |
| 1322 int istag = 0; | |
| 1323 | |
| 1324 if (svn_initialized) | 1318 if (svn_initialized) |
| 1325 return; | 1319 return; |
| 1326 | 1320 |
| 1327 python = strstr(headurl, "/python/"); | |
| 1328 if (!python) { | |
| 1329 strcpy(branch, "unknown branch"); | |
| 1330 strcpy(shortbranch, "unknown"); | |
| 1331 } | |
| 1332 else { | |
| 1333 br_start = python + 8; | |
| 1334 br_end = strchr(br_start, '/'); | |
| 1335 assert(br_end); | |
| 1336 | |
| 1337 /* Works even for trunk, | |
| 1338 as we are in trunk/Python/sysmodule.c */ | |
| 1339 br_end2 = strchr(br_end+1, '/'); | |
| 1340 | |
| 1341 istag = strncmp(br_start, "tags", 4) == 0; | |
| 1342 if (strncmp(br_start, "trunk", 5) == 0) { | |
| 1343 strcpy(branch, "trunk"); | |
| 1344 strcpy(shortbranch, "trunk"); | |
| 1345 } | |
| 1346 else if (istag || strncmp(br_start, "branches", 8) == 0) { | |
| 1347 len = br_end2 - br_start; | |
| 1348 strncpy(branch, br_start, len); | |
| 1349 branch[len] = '\0'; | |
| 1350 | |
| 1351 len = br_end2 - (br_end + 1); | |
| 1352 strncpy(shortbranch, br_end + 1, len); | |
| 1353 shortbranch[len] = '\0'; | |
| 1354 } | |
| 1355 else { | |
| 1356 Py_FatalError("bad HeadURL"); | |
| 1357 return; | |
| 1358 } | |
| 1359 } | |
| 1360 | |
| 1361 | |
| 1362 svnversion = _Py_svnversion(); | |
| 1363 if (strcmp(svnversion, "Unversioned directory") != 0 && strcmp(svnversion, "exported") != 0) | |
| 1364 svn_revision = svnversion; | |
| 1365 else if (istag) { | |
| 1366 len = strlen(_patchlevel_revision); | |
| 1367 assert(len >= 13); | |
| 1368 assert(len < (sizeof(patchlevel_revision) + 13)); | |
| 1369 strncpy(patchlevel_revision, _patchlevel_revision + 11, | |
| 1370 len - 13); | |
| 1371 patchlevel_revision[len - 13] = '\0'; | |
| 1372 svn_revision = patchlevel_revision; | |
| 1373 } | |
| 1374 else | |
| 1375 svn_revision = ""; | |
| 1376 | |
| 1377 svn_initialized = 1; | 1321 svn_initialized = 1; |
| 1322 *patchlevel_revision = '\0'; | |
| 1323 strcpy(branch, ""); | |
| 1324 strcpy(shortbranch, "unknown"); | |
| 1325 svn_revision = ""; | |
| 1378 } | 1326 } |
| 1379 | 1327 |
| 1380 /* Return svnversion output if available. | 1328 /* Return svnversion output if available. |
| 1381 Else return Revision of patchlevel.h if on branch. | 1329 Else return Revision of patchlevel.h if on branch. |
| 1382 Else return empty string */ | 1330 Else return empty string */ |
