Try to fix fteqccgui not parsing its ini file properly.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5771 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
f3049f1b85
commit
4cead675f6
1 changed files with 44 additions and 13 deletions
|
@ -234,12 +234,33 @@ pbool GenAutoCompleteList(char *prefix, char *buffer, int buffersize)
|
||||||
return usedbuffer>0;
|
return usedbuffer>0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static pbool GUI_NeedsQuotes(const char *str)
|
||||||
|
{
|
||||||
|
//true if an empty string.
|
||||||
|
if (!*str)
|
||||||
|
return true;
|
||||||
|
for(; *str; str++)
|
||||||
|
{ //true if any char is not alpha-numeric
|
||||||
|
if (*str >= 'a' && *str <= 'z')
|
||||||
|
;
|
||||||
|
else if (*str >= 'A' && *str <= 'Z')
|
||||||
|
;
|
||||||
|
else if (*str >= '0' && *str <= '9')
|
||||||
|
;
|
||||||
|
else if (*str == '_')
|
||||||
|
;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static void GUI_WriteConfigLine(FILE *file, char *part1, char *part2, char *part3, char *desc)
|
static void GUI_WriteConfigLine(FILE *file, char *part1, char *part2, char *part3, char *desc)
|
||||||
{
|
{
|
||||||
int align = 0;
|
int align = 0;
|
||||||
if (part1)
|
if (part1)
|
||||||
{
|
{
|
||||||
if (strchr(part1, ' '))
|
if (GUI_NeedsQuotes(part1))
|
||||||
align += fprintf(file, "\"%s\" ", part1);
|
align += fprintf(file, "\"%s\" ", part1);
|
||||||
else
|
else
|
||||||
align += fprintf(file, "%s ", part1);
|
align += fprintf(file, "%s ", part1);
|
||||||
|
@ -248,7 +269,7 @@ static void GUI_WriteConfigLine(FILE *file, char *part1, char *part2, char *part
|
||||||
}
|
}
|
||||||
if (part2)
|
if (part2)
|
||||||
{
|
{
|
||||||
if (strchr(part2, ' '))
|
if (GUI_NeedsQuotes(part2))
|
||||||
align += fprintf(file, "\"%s\" ", part2);
|
align += fprintf(file, "\"%s\" ", part2);
|
||||||
else
|
else
|
||||||
align += fprintf(file, "%s ", part2);
|
align += fprintf(file, "%s ", part2);
|
||||||
|
@ -257,7 +278,7 @@ static void GUI_WriteConfigLine(FILE *file, char *part1, char *part2, char *part
|
||||||
}
|
}
|
||||||
if (part3)
|
if (part3)
|
||||||
{
|
{
|
||||||
if (strchr(part3, ' '))
|
if (GUI_NeedsQuotes(part3))
|
||||||
align += fprintf(file, "\"%s\" ", part3);
|
align += fprintf(file, "\"%s\" ", part3);
|
||||||
else
|
else
|
||||||
align += fprintf(file, "%s ", part3);
|
align += fprintf(file, "%s ", part3);
|
||||||
|
@ -349,7 +370,7 @@ void GUI_SaveConfig(void)
|
||||||
static char *GUI_ParseInPlace(char **state)
|
static char *GUI_ParseInPlace(char **state)
|
||||||
{
|
{
|
||||||
char *str = *state, *end;
|
char *str = *state, *end;
|
||||||
while(*str == ' ' || *str == '\t')
|
while(*str == ' ' || *str == '\t' || *str == '\r' || *str == '\n')
|
||||||
str++;
|
str++;
|
||||||
if (*str == '\"')
|
if (*str == '\"')
|
||||||
{
|
{
|
||||||
|
@ -387,16 +408,21 @@ static char *GUI_ParseInPlace(char **state)
|
||||||
{
|
{
|
||||||
if (*end == '#')
|
if (*end == '#')
|
||||||
{
|
{
|
||||||
|
*end = 0;
|
||||||
while (*end && *end != '\n')
|
while (*end && *end != '\n')
|
||||||
end++;
|
end++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*end==' ' || *end =='\t' || *end == '\n')
|
if (*end==' ' || *end =='\t' || *end == '\n' || *end == '\r')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (end && *end)
|
||||||
|
{
|
||||||
*end = 0;
|
*end = 0;
|
||||||
*state = end;
|
*state = end+1;
|
||||||
|
}
|
||||||
|
else *state = end;
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
static int GUI_ParseIntInPlace(char **state, int defaultval)
|
static int GUI_ParseIntInPlace(char **state, int defaultval)
|
||||||
|
@ -439,6 +465,7 @@ void GUI_LoadConfig(void)
|
||||||
while (fgets(buf, sizeof(buf), file))
|
while (fgets(buf, sizeof(buf), file))
|
||||||
{
|
{
|
||||||
str = buf;
|
str = buf;
|
||||||
|
|
||||||
token = GUI_ParseInPlace(&str);
|
token = GUI_ParseInPlace(&str);
|
||||||
if (!stricmp(token, "optimisation") || !stricmp(token, "opt"))
|
if (!stricmp(token, "optimisation") || !stricmp(token, "opt"))
|
||||||
{
|
{
|
||||||
|
@ -457,7 +484,9 @@ void GUI_LoadConfig(void)
|
||||||
optimisations[p].flags &= ~FLAG_SETINGUI;
|
optimisations[p].flags &= ~FLAG_SETINGUI;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//don't worry if its not known
|
//don't worry too much if its not known
|
||||||
|
if (!optimisations[p].enabled)
|
||||||
|
printf("Unknown flag: \"%s\"\n", item);
|
||||||
}
|
}
|
||||||
else if (!stricmp(token, "flag") || !stricmp(token, "fl") || !stricmp(token, "keyword"))
|
else if (!stricmp(token, "flag") || !stricmp(token, "fl") || !stricmp(token, "keyword"))
|
||||||
{
|
{
|
||||||
|
@ -474,6 +503,8 @@ void GUI_LoadConfig(void)
|
||||||
compiler_flag[p].flags &= ~FLAG_SETINGUI;
|
compiler_flag[p].flags &= ~FLAG_SETINGUI;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (!compiler_flag[p].enabled)
|
||||||
|
printf("Unknown flag/keyword: \"%s\"\n", item);
|
||||||
//don't worry if its not known
|
//don't worry if its not known
|
||||||
}
|
}
|
||||||
else if (!stricmp(token, "enginebinary"))
|
else if (!stricmp(token, "enginebinary"))
|
||||||
|
@ -482,10 +513,10 @@ void GUI_LoadConfig(void)
|
||||||
QC_strlcpy(enginebasedir, GUI_ParseInPlace(&str), sizeof(enginebasedir));
|
QC_strlcpy(enginebasedir, GUI_ParseInPlace(&str), sizeof(enginebasedir));
|
||||||
else if (!stricmp(token, "engineargs"))
|
else if (!stricmp(token, "engineargs"))
|
||||||
QC_strlcpy(enginecommandline, GUI_ParseInPlace(&str), sizeof(enginecommandline));
|
QC_strlcpy(enginecommandline, GUI_ParseInPlace(&str), sizeof(enginecommandline));
|
||||||
// else if (!stricmp(token, "srcfile"))
|
else if (!stricmp(token, "srcfile"))
|
||||||
// QC_strlcpy(progssrcname, GUI_ParseInPlace(&str), sizeof(progssrcname));
|
QC_strlcpy(progssrcname, GUI_ParseInPlace(&str), sizeof(progssrcname));
|
||||||
// else if (!stricmp(token, "src"))
|
else if (!stricmp(token, "src"))
|
||||||
// QC_strlcpy(progssrcdir, GUI_ParseInPlace(&str), sizeof(progssrcdir));
|
QC_strlcpy(progssrcdir, GUI_ParseInPlace(&str), sizeof(progssrcdir));
|
||||||
else if (!stricmp(token, "parameters"))
|
else if (!stricmp(token, "parameters"))
|
||||||
QC_strlcpy(parameters, GUI_ParseInPlace(&str), sizeof(parameters));
|
QC_strlcpy(parameters, GUI_ParseInPlace(&str), sizeof(parameters));
|
||||||
|
|
||||||
|
@ -506,7 +537,7 @@ void GUI_LoadConfig(void)
|
||||||
fl_ftetarg = GUI_ParseBooleanInPlace(&str, false);
|
fl_ftetarg = GUI_ParseBooleanInPlace(&str, false);
|
||||||
else if (*token)
|
else if (*token)
|
||||||
{
|
{
|
||||||
puts("Unknown setting: \""); puts(token); puts("\"\n");
|
printf("Unknown setting: \"%s\"\n", token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(file);
|
fclose(file);
|
||||||
|
|
Loading…
Reference in a new issue