2
0
mirror of https://github.com/rehlds/rehlds.git synced 2025-02-05 18:20:45 +03:00

Reworked COM_FileExtension (Fixed #716)

This commit is contained in:
s1lent 2019-08-29 01:29:18 +07:00
parent 5b6856876e
commit 6520ab54b0
No known key found for this signature in database
GPG Key ID: 0FE401DC73916B5C
3 changed files with 38 additions and 1 deletions

View File

@ -201,6 +201,23 @@ void COM_DefaultExtension(char *path, char *extension)
char *COM_FileExtension(char *in) char *COM_FileExtension(char *in)
{ {
#ifdef HLTV_FIXES
char *src = in + Q_strlen(in) - 1;
// back up until a . or the start
while (src != in && *(src - 1) != '.')
{
src--;
}
// check to see if the '.' is part of a input buffer
if (src == in || PATHSEPARATOR(*src))
{
return ""; // no extension
}
return src;
#else // #ifdef HLTV_FIXES
static char exten[MAX_PATH]; static char exten[MAX_PATH];
char *c, *d = nullptr; char *c, *d = nullptr;
int i; int i;
@ -235,6 +252,7 @@ char *COM_FileExtension(char *in)
exten[i] = '\0'; exten[i] = '\0';
return exten; return exten;
#endif // #ifdef HLTV_FIXES
} }
char com_token[COM_TOKEN_LEN]; char com_token[COM_TOKEN_LEN];

View File

@ -1354,6 +1354,23 @@ void COM_StripExtension(char *in, char *out)
char *COM_FileExtension(char *in) char *COM_FileExtension(char *in)
{ {
#ifdef REHLDS_FIXES
char *src = in + Q_strlen(in) - 1;
// back up until a . or the start
while (src != in && *(src - 1) != '.')
{
src--;
}
// check to see if the '.' is part of a input buffer
if (src == in || PATHSEPARATOR(*src))
{
return ""; // no extension
}
return src;
#else // #ifdef REHLDS_FIXES
static char exten[MAX_PATH]; static char exten[MAX_PATH];
char *c, *d = NULL; char *c, *d = NULL;
int i; int i;
@ -1385,8 +1402,8 @@ char *COM_FileExtension(char *in)
exten[i] = *d; exten[i] = *d;
} }
exten[i] = 0; exten[i] = 0;
return exten; return exten;
#endif // #ifdef REHLDS_FIXES
} }
// Fills "out" with the file name without path and extension. // Fills "out" with the file name without path and extension.

View File

@ -29,9 +29,11 @@
#pragma once #pragma once
#ifdef _WIN32 #ifdef _WIN32
#define PATHSEPARATOR(c) ((c) == '\\' || (c) == '/')
const char CORRECT_PATH_SEPARATOR = '\\'; const char CORRECT_PATH_SEPARATOR = '\\';
const char INCORRECT_PATH_SEPARATOR = '/'; const char INCORRECT_PATH_SEPARATOR = '/';
#else #else
#define PATHSEPARATOR(c) ((c) == '/')
const char CORRECT_PATH_SEPARATOR = '/'; const char CORRECT_PATH_SEPARATOR = '/';
const char INCORRECT_PATH_SEPARATOR = '\\'; const char INCORRECT_PATH_SEPARATOR = '\\';
#endif #endif