Rewrite COM_FileExtention()

COM_FileExtension() was parsing strings from beginning to end, bailing
out as soon as '.' was found and treating everything thereafter as the
file extension. That behavior caused problem with relatives pathes like
models/monsters/tank/../ctank/skin.pcx. The new implementation uses
strrchr() to determine the last '.'.
This commit is contained in:
Yamagi Burmeister 2014-07-30 21:39:58 +02:00
parent 5caf9c980f
commit 017bc7276f

View file

@ -666,31 +666,17 @@ COM_StripExtension(char *in, char *out)
*out = 0;
}
char *
COM_FileExtension(char *in)
const char *
COM_FileExtension(const char *in)
{
static char exten[8];
int i;
const char *ext = strrchr(in, '.');
while (*in && *in != '.')
{
in++;
}
if (!*in)
if (!ext || ext == in)
{
return "";
}
in++;
for (i = 0; i < 7 && *in; i++, in++)
{
exten[i] = *in;
}
exten[i] = 0;
return exten;
return ext + 1;
}
void