cinera.c: Fail earlier on unknown project

HTML-santitise episode title and project name from templates. This won't
always be correct, but I reckon the common case will require it.
This commit is contained in:
Matt Mascarenhas 2018-05-25 20:05:06 +01:00
parent c788fd464e
commit 8ec5475456
1 changed files with 11 additions and 13 deletions

View File

@ -16,7 +16,7 @@ typedef struct
version CINERA_APP_VERSION = { version CINERA_APP_VERSION = {
.Major = 0, .Major = 0,
.Minor = 5, .Minor = 5,
.Patch = 52 .Patch = 53
}; };
// TODO(matt): Copy in the DB 3 stuff from cinera_working.c // TODO(matt): Copy in the DB 3 stuff from cinera_working.c
@ -4343,7 +4343,7 @@ AppendedIdentifier:
} }
CollationBuffers->IncludesPlayer.Ptr -= 2; CollationBuffers->IncludesPlayer.Ptr -= 2;
CopyStringToBuffer(&CollationBuffers->IncludesPlayer, "\">\n\n"); CopyStringToBuffer(&CollationBuffers->IncludesPlayer, "\">\n");
} }
ConstructURLPrefix(&URLPrefix, INCLUDE_CSS, PAGE_PLAYER); ConstructURLPrefix(&URLPrefix, INCLUDE_CSS, PAGE_PLAYER);
@ -4451,11 +4451,11 @@ BuffersToHTML(buffers *CollationBuffers, template *Template, char *OutputPath, i
} }
else else
{ {
CopyStringToBufferNoFormat(&Output, CollationBuffers->ProjectName); CopyStringToBufferHTMLSafe(&Output, CollationBuffers->ProjectName);
} }
break; break;
case TAG_TITLE: case TAG_TITLE:
CopyStringToBufferNoFormat(&Output, CollationBuffers->Title); CopyStringToBufferHTMLSafe(&Output, CollationBuffers->Title);
break; break;
case TAG_URL: case TAG_URL:
if(PageType == PAGE_PLAYER) if(PageType == PAGE_PLAYER)
@ -5454,23 +5454,15 @@ IndexToBuffer(index *Index, buffers *CollationBuffers) // NOTE(matt): This guy m
{ {
Index->Header = *(index_header*)Index->Metadata.Buffer.Location; Index->Header = *(index_header*)Index->Metadata.Buffer.Location;
bool ProjectFound = FALSE;
int ProjectIndex; int ProjectIndex;
for(ProjectIndex = 0; ProjectIndex < ArrayCount(ProjectInfo); ++ProjectIndex) for(ProjectIndex = 0; ProjectIndex < ArrayCount(ProjectInfo); ++ProjectIndex)
{ {
if(!StringsDiffer(ProjectInfo[ProjectIndex].ProjectID, Config.ProjectID)) if(!StringsDiffer(ProjectInfo[ProjectIndex].ProjectID, Config.ProjectID))
{ {
ProjectFound = TRUE;
break; break;
} }
} }
if(!ProjectFound)
{
fprintf(stderr, "Missing Project Info for %s\n", Config.ProjectID);
return RC_ERROR_PROJECT;
}
char *Theme = StringsDiffer(Config.Theme, "") ? Config.Theme : Config.ProjectID; char *Theme = StringsDiffer(Config.Theme, "") ? Config.Theme : Config.ProjectID;
int Allowance = StringLength(Theme) * 2 + StringLength(Config.ProjectID) + StringLength(Config.BaseURL) + StringLength(Config.PlayerLocation); int Allowance = StringLength(Theme) * 2 + StringLength(Config.ProjectID) + StringLength(Config.BaseURL) + StringLength(Config.PlayerLocation);
char queryContainer[656 + Allowance]; // NOTE(matt): Update the size if changing the string char queryContainer[656 + Allowance]; // NOTE(matt): Update the size if changing the string
@ -6421,11 +6413,12 @@ main(int ArgC, char **Args)
} }
Config.Edition = EDITION_PROJECT; Config.Edition = EDITION_PROJECT;
bool KnownProject = FALSE;
for(int ProjectInfoIndex = 0; ProjectInfoIndex < ArrayCount(ProjectInfo); ++ProjectInfoIndex) for(int ProjectInfoIndex = 0; ProjectInfoIndex < ArrayCount(ProjectInfo); ++ProjectInfoIndex)
{ {
if(!StringsDiffer(Config.ProjectID, ProjectInfo[ProjectInfoIndex].ProjectID)) if(!StringsDiffer(Config.ProjectID, ProjectInfo[ProjectInfoIndex].ProjectID))
{ {
KnownProject = TRUE;
if(StringsDiffer(ProjectInfo[ProjectInfoIndex].Medium, "")) if(StringsDiffer(ProjectInfo[ProjectInfoIndex].Medium, ""))
{ {
Config.DefaultMedium = ProjectInfo[ProjectInfoIndex].Medium; Config.DefaultMedium = ProjectInfo[ProjectInfoIndex].Medium;
@ -6453,6 +6446,11 @@ main(int ArgC, char **Args)
break; break;
} }
} }
if(!KnownProject)
{
fprintf(stderr, "\e[1;31mMissing Project Info for %s\e[0m \e[1;30m(-p)\e[0m\n", Config.ProjectID);
HaveConfigErrors = TRUE;
}
} }
if(StringsDiffer(Config.BaseURL, "") && StringLength(Config.BaseURL) > MAX_BASE_URL_LENGTH) if(StringsDiffer(Config.BaseURL, "") && StringLength(Config.BaseURL) > MAX_BASE_URL_LENGTH)