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

View File

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