Fix inverted sense of -use_players_dir
Fixes: 4d483ca88f
("Simplify use of SysUsePlayersDir")
This commit is contained in:
parent
d67ada45ef
commit
b0821cff55
|
@ -74,7 +74,7 @@ struct CArg : prohibit_void_ptr<CArg>
|
|||
#endif
|
||||
bool SysShowCmdHelp;
|
||||
bool SysLowMem;
|
||||
uint8_t SysUsePlayersDir;
|
||||
int8_t SysUsePlayersDir;
|
||||
bool SysAutoRecordDemo;
|
||||
bool SysWindow;
|
||||
bool SysAutoDemo;
|
||||
|
@ -162,7 +162,7 @@ __attribute_format_arg(1)
|
|||
static inline const char *PLAYER_DIRECTORY_STRING(const char *s);
|
||||
static inline const char *PLAYER_DIRECTORY_STRING(const char *s)
|
||||
{
|
||||
return &s[CGameArg.SysUsePlayersDir];
|
||||
return &s[CGameArg.SysUsePlayersDir + sizeof(PLAYER_DIRECTORY_TEXT) - 1];
|
||||
}
|
||||
#define PLAYER_DIRECTORY_STRING(S) ((PLAYER_DIRECTORY_STRING)(PLAYER_DIRECTORY_TEXT S))
|
||||
}
|
||||
|
|
|
@ -536,17 +536,22 @@ static int main(int argc, char *argv[])
|
|||
{
|
||||
char filename[sizeof(PLAYER_DIRECTORY_TEXT) + CALLSIGN_LEN + 4];
|
||||
|
||||
/* Step over the literal PLAYER_DIRECTORY_TEXT when it is
|
||||
* present. Point at &filename[0] when
|
||||
* PLAYER_DIRECTORY_TEXT is absent.
|
||||
*/
|
||||
const auto b = &filename[-CGameArg.SysUsePlayersDir];
|
||||
snprintf(filename, sizeof(filename), PLAYER_DIRECTORY_STRING("%.12s"), CGameArg.SysPilot.c_str());
|
||||
/* The pilot name is never used after this. Clear it to
|
||||
* free the allocated memory, if any.
|
||||
*/
|
||||
CGameArg.SysPilot.clear();
|
||||
const uintptr_t SysUsePlayersDir = CGameArg.SysUsePlayersDir;
|
||||
auto j = SysUsePlayersDir;
|
||||
for (const auto &facet = std::use_facet<std::ctype<char>>(std::locale::classic()); char &c = filename[j]; ++j)
|
||||
auto p = b;
|
||||
for (const auto &facet = std::use_facet<std::ctype<char>>(std::locale::classic()); char &c = *p; ++p)
|
||||
{
|
||||
c = facet.tolower(static_cast<uint8_t>(c));
|
||||
}
|
||||
auto j = p - filename;
|
||||
if (j < sizeof(filename) - 4 && (j <= 4 || strcmp(&filename[j - 4], ".plr"))) // if player hasn't specified .plr extension in argument, add it
|
||||
{
|
||||
strcpy(&filename[j], ".plr");
|
||||
|
@ -554,9 +559,7 @@ static int main(int argc, char *argv[])
|
|||
}
|
||||
if(PHYSFSX_exists(filename,0))
|
||||
{
|
||||
filename[j - 4] = 0;
|
||||
const auto b = &filename[SysUsePlayersDir];
|
||||
get_local_player().callsign.copy(b, std::distance(b, end(filename)));
|
||||
get_local_player().callsign.copy(b, std::distance(b, &filename[j - 4]));
|
||||
read_player_file();
|
||||
WriteConfigFile();
|
||||
}
|
||||
|
|
|
@ -218,7 +218,7 @@ static void ReadCmdArgs(Inilist &ini, Arglist &Args)
|
|||
#endif
|
||||
}
|
||||
else if (!d_stricmp(p, "-use_players_dir"))
|
||||
CGameArg.SysUsePlayersDir = sizeof(PLAYER_DIRECTORY_TEXT) - 1;
|
||||
CGameArg.SysUsePlayersDir = static_cast<int8_t>(- (sizeof(PLAYER_DIRECTORY_TEXT) - 1));
|
||||
else if (!d_stricmp(p, "-lowmem"))
|
||||
CGameArg.SysLowMem = true;
|
||||
else if (!d_stricmp(p, "-pilot"))
|
||||
|
|
Loading…
Reference in a new issue