cinera.c: Call MakeDir() in GenerateTopicColours()

This commit is contained in:
Matt Mascarenhas 2017-12-24 01:57:11 +00:00
parent 120290b398
commit e4c1446256
1 changed files with 27 additions and 3 deletions

View File

@ -14,9 +14,10 @@ typedef struct
version CINERA_APP_VERSION = {
.Major = 0,
.Minor = 5,
.Patch = 13
.Patch = 14
};
// TODO(matt): Copy in the DB 3 stuff from cinera_working.c
#define CINERA_DB_VERSION 2
#define DEBUG 0
@ -1600,6 +1601,25 @@ GenerateTopicColours(char *Topic)
CopyString(Topics.Path, "%s/cinera_topics.css", Config.RootDir);
}
char *Ptr = Topics.Path + StringLength(Topics.Path) - 1;
while(*Ptr != '/')
{
--Ptr;
}
*Ptr = '\0';
DIR *CSSDirHandle; // TODO(matt): open()
if(!(CSSDirHandle = opendir(Topics.Path)))
{
if(MakeDir(Topics.Path) == RC_ERROR_DIRECTORY)
{
LogError(LOG_ERROR, "Unable to create directory %s: %s", Topics.Path, strerror(errno));
fprintf(stderr, "Unable to create directory %s: %s\n", Topics.Path, strerror(errno));
return RC_ERROR_DIRECTORY;
};
}
closedir(CSSDirHandle);
*Ptr = '/';
if((Topics.Handle = fopen(Topics.Path, "a+")))
{
fseek(Topics.Handle, 0, SEEK_END);
@ -1649,6 +1669,8 @@ GenerateTopicColours(char *Topic)
}
else
{
// NOTE(matt): Maybe it shouldn't be possible to hit this case now that we MakeDir the actually dir...
perror(Topics.Path);
return RC_ERROR_FILE;
}
}
@ -1664,6 +1686,7 @@ PrintUsage(char *BinaryLocation, config *DefaultConfig)
" Override default root directory (\"%s\")\n"
" -R <root URL>\n"
" Override default root URL (\"%s\")\n"
" \e[1;31mIMPORTANT\e[0m: -r and -R must correspond to the same location\n"
" -c <CSS directory path>\n"
" Override default CSS directory (\"%s\"), relative to root\n"
" -i <images directory path>\n"
@ -4165,9 +4188,9 @@ MonitorDirectory(buffers *CollationBuffers, template *IndexTemplate, template *P
fclose(MemLog);
#endif
// TODO(matt): Maybe straight up store the IndexPath in the Config to save us having to derive it near / at the usage site
buffer Events;
if(ClaimBuffer(&Events, "inotify Events", Kilobytes(32)) == RC_ARENA_FULL) { return RC_ARENA_FULL; };
// TODO(matt): Figure out the max size necessary for the Events buffer
if(ClaimBuffer(&Events, "inotify Events", Kilobytes(1024)) == RC_ARENA_FULL) { return RC_ARENA_FULL; };
struct inotify_event *Event;
int BytesRead;
@ -4860,6 +4883,7 @@ main(int ArgC, char **Args)
}
NextFile:
// TODO(matt): Just change the default output location so all these guys won't overwrite each other
for(int FileIndex = optind; FileIndex < ArgC; ++FileIndex)
{
switch(HMMLToBuffers(&CollationBuffers, Args[FileIndex]))