The test for really long filename extensions was broken.

This commit is contained in:
Andy McFadden 2003-03-12 02:39:43 +00:00
parent 486cae404e
commit 80c9b78516
1 changed files with 16 additions and 11 deletions

View File

@ -182,22 +182,27 @@ AddPreservationString(NulibState* pState,
pExt = nil;
else
pExt = FindExtension(pState, pathBuf);
if (pExt != nil && strlen(pExt+1) < kMaxExtLen) {
if (pExt != nil) {
pExt++; /* skip past the '.' */
/* if it's strictly decimal-numeric, don't use it (.1, .2, etc) */
(void) strtoul(pExt, &end, 10);
if (*end == '\0') {
if (strlen(pExt) >= kMaxExtLen) {
/* too long, forget it */
pExt = nil;
} else {
/* if '#' appears in it, don't use it -- it'll confuse us */
const char* ccp = pExt;
while (*ccp != '\0') {
if (*ccp == '#') {
pExt = nil;
break;
/* if strictly decimal-numeric, don't use it (.1, .2, etc) */
(void) strtoul(pExt, &end, 10);
if (*end == '\0') {
pExt = nil;
} else {
/* if '#' appears in it, don't use it -- it'll confuse us */
const char* ccp = pExt;
while (*ccp != '\0') {
if (*ccp == '#') {
pExt = nil;
break;
}
ccp++;
}
ccp++;
}
}