Improve skin name validation error message (Closed #8300)

This commit is contained in:
ChillerDragon 2024-05-04 17:31:08 +08:00
parent 43c03c4d54
commit 8b0b09fffd
3 changed files with 6 additions and 3 deletions

View file

@ -1,5 +1,6 @@
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
/* If you are missing that file, acquire a complete release at teeworlds.com. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */
#include <base/log.h>
#include <base/math.h> #include <base/math.h>
#include <base/system.h> #include <base/system.h>
@ -480,9 +481,8 @@ void CMenus::Con_AddFavoriteSkin(IConsole::IResult *pResult, void *pUserData)
const char *pStr = pResult->GetString(0); const char *pStr = pResult->GetString(0);
if(!CSkin::IsValidName(pStr)) if(!CSkin::IsValidName(pStr))
{ {
char aError[IConsole::CMDLINE_LENGTH + 64]; log_error("menus/settings", "Favorite skin name '%s' is not valid", pStr);
str_format(aError, sizeof(aError), "Favorite skin name '%s' is not valid", pStr); log_error("menus/settings", "%s", CSkin::m_aSkinNameRestrictions);
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "menus/settings", aError);
return; return;
} }
pSelf->m_SkinFavorites.emplace(pStr); pSelf->m_SkinFavorites.emplace(pStr);

View file

@ -83,6 +83,7 @@ int CSkins::SkinScan(const char *pName, int IsDir, int DirType, void *pUser)
if(!CSkin::IsValidName(aSkinName)) if(!CSkin::IsValidName(aSkinName))
{ {
log_error("skins", "Skin name is not valid: %s", aSkinName); log_error("skins", "Skin name is not valid: %s", aSkinName);
log_error("skins", "%s", CSkin::m_aSkinNameRestrictions);
return 0; return 0;
} }

View file

@ -155,6 +155,7 @@ public:
const char *GetName() const { return m_aName; } const char *GetName() const { return m_aName; }
// has to be kept in sync with m_aSkinNameRestrictions
static bool IsValidName(const char *pName) static bool IsValidName(const char *pName)
{ {
if(pName[0] == '\0' || str_length(pName) >= (int)sizeof(CSkin("").m_aName)) if(pName[0] == '\0' || str_length(pName) >= (int)sizeof(CSkin("").m_aName))
@ -171,6 +172,7 @@ public:
} }
return true; return true;
} }
static constexpr char m_aSkinNameRestrictions[] = "Skin names must be valid filenames shorter than 24 characters.";
}; };
#endif #endif