slweb

Једноставни генератор статичких веб страна
git clone https://git.sr.ht/~strahinja/slweb
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 696731a7e646deb87794475c12f1486ab381cd2f
родитељ 15960c581e1f94845ee6300570efcfcee78d01b2
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Sat,  4 May 2024 18:14:21 +0200

slweb.c: read_file_into_buffer: Print error if directory given as
argument; main: Exit if read_file_into_buffer failed

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mslweb.c | 33++++++++++++++++++++++-----------
измењених датотека: 1, додавања: 22(+), брисања: 11(-)

diff --git a/slweb.c b/slweb.c @@ -516,11 +516,19 @@ read_file_into_buffer(FILE** input, u8** buffer, size_t* buffer_size, *input = fopen(input_filename, "r"); if (!*input) + { + perror("fopen"); return error(ENOENT, - (u8*)"read_file_into_buffer: No such file: %s", + (u8*)"read_file_into_buffer: fopen failed: %s", input_filename); + } fstat(fileno(*input), &fs); + if (S_ISDIR(fs.st_mode)) + return error(EISDIR, + (u8*)"read_file_into_buffer: Is a directory: %s", + input_filename); + free(*buffer); *buffer_size = fs.st_size + 1; CALLOC(*buffer, u8, *buffer_size); @@ -5624,9 +5632,13 @@ int main(const int argc, const char** argv) { const char* arg; - Command cmd = CMD_NONE; - int body_only = 0; - int result = 0; + Command cmd = CMD_NONE; + int body_only = 0; + int result = 0; + FILE* input = NULL; + FILE* output = stdout; + u8* buffer = NULL; + size_t buffer_size = 0; basedir_size = 2; CALLOC(basedir, char, basedir_size); @@ -5742,14 +5754,13 @@ main(const int argc, const char** argv) else if (cmd == CMD_VERSION) return version(0); - FILE* input = NULL; - FILE* output = stdout; - u8* buffer = NULL; - size_t buffer_size = 0; - if (input_filename) - read_file_into_buffer(&input, &buffer, &buffer_size, - input_filename, &input_dirname); + { + int result = read_file_into_buffer(&input, &buffer, + &buffer_size, input_filename, &input_dirname); + if (result) + exit(result); + } else { u8* bufline = NULL;