mirror of
https://github.com/yquake2/rogue.git
synced 2025-02-17 01:21:06 +00:00
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:
parent
403909be89
commit
8dd8520ddc
2 changed files with 6 additions and 20 deletions
|
@ -51,7 +51,7 @@ extern short BigShort ( short l ) ;
|
||||||
extern void COM_DefaultExtension ( char * path , const char * extension ) ;
|
extern void COM_DefaultExtension ( char * path , const char * extension ) ;
|
||||||
extern void COM_FilePath ( const char * in , char * out ) ;
|
extern void COM_FilePath ( const char * in , char * out ) ;
|
||||||
extern void COM_FileBase ( char * in , char * out ) ;
|
extern void COM_FileBase ( char * in , char * out ) ;
|
||||||
extern char * COM_FileExtension ( char * in ) ;
|
extern const char * COM_FileExtension ( const char * in ) ;
|
||||||
extern void COM_StripExtension ( char * in , char * out ) ;
|
extern void COM_StripExtension ( char * in , char * out ) ;
|
||||||
extern char * COM_SkipPath ( char * pathname ) ;
|
extern char * COM_SkipPath ( char * pathname ) ;
|
||||||
extern int Q_log2 ( int val ) ;
|
extern int Q_log2 ( int val ) ;
|
||||||
|
|
|
@ -650,31 +650,17 @@ COM_StripExtension(char *in, char *out)
|
||||||
*out = 0;
|
*out = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
const char *
|
||||||
COM_FileExtension(char *in)
|
COM_FileExtension(const char *in)
|
||||||
{
|
{
|
||||||
static char exten[8];
|
const char *ext = strrchr(in, '.');
|
||||||
int i;
|
|
||||||
|
|
||||||
while (*in && *in != '.')
|
if (!ext || ext == in)
|
||||||
{
|
|
||||||
in++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!*in)
|
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
in++;
|
return ext + 1;
|
||||||
|
|
||||||
for (i = 0; i < 7 && *in; i++, in++)
|
|
||||||
{
|
|
||||||
exten[i] = *in;
|
|
||||||
}
|
|
||||||
|
|
||||||
exten[i] = 0;
|
|
||||||
return exten;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue