iFixed #63 - fiche - A pastebin adjusted for gopher use Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/fiche.git URL:git://vernunftzentrum.de/fiche.git vernunftzentrum.de 70 1Log /ckeen/repos/fiche/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/fiche/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/fiche/refs.gph vernunftzentrum.de 70 1LICENSE /ckeen/repos/fiche/file/LICENSE.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit 6d292a30019703f6ef27bec73e98b3263e3a89a0 /ckeen/repos/fiche/commit/6d292a30019703f6ef27bec73e98b3263e3a89a0.gph vernunftzentrum.de 70 1parent 680bb77f2c2cd4e39344502268f4552932052881 /ckeen/repos/fiche/commit/680bb77f2c2cd4e39344502268f4552932052881.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Thu, 12 Oct 2017 01:28:35 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iFixed #63 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i fiche.c | 18 +++++++++++++----- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i1 file changed, 13 insertions(+), 5 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/fiche.c b/fiche.c /ckeen/repos/fiche/file/fiche.c.gph vernunftzentrum.de 70 i@@ -141,7 +141,7 @@ static int create_directory(char *output_dir, char *slug); Err vernunftzentrum.de 70 i * @arg data Buffer with data received from the user Err vernunftzentrum.de 70 i * @arg path Path at which file containing data from the buffer will be created Err vernunftzentrum.de 70 i */ Err vernunftzentrum.de 70 i-static int save_to_file(uint8_t *data, char *output_dir, char *slug); Err vernunftzentrum.de 70 i+static int save_to_file(const Fiche_Settings *s, uint8_t *data, char *slug); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Logging-related Err vernunftzentrum.de 70 i@@ -637,7 +637,7 @@ static void *handle_connection(void *args) { Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Save to file failed, we have to finish here Err vernunftzentrum.de 70 i- if ( save_to_file(buffer, c->settings->output_dir_path, slug) != 0 ) { Err vernunftzentrum.de 70 i+ if ( save_to_file(c->settings, buffer, slug) != 0 ) { Err vernunftzentrum.de 70 i print_error("Couldn't save a file!"); Err vernunftzentrum.de 70 i print_separator(); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -739,11 +739,11 @@ static int create_directory(char *output_dir, char *slug) { Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-static int save_to_file(uint8_t *data, char *output_dir, char *slug) { Err vernunftzentrum.de 70 i+static int save_to_file(const Fiche_Settings *s, uint8_t *data, char *slug) { Err vernunftzentrum.de 70 i char *file_name = "index.txt"; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Additional 2 bytes are for 2 slashes Err vernunftzentrum.de 70 i- size_t len = strlen(output_dir) + strlen(slug) + strlen(file_name) + 3; Err vernunftzentrum.de 70 i+ size_t len = strlen(s->output_dir_path) + strlen(slug) + strlen(file_name) + 3; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Generate a path Err vernunftzentrum.de 70 i char *path = malloc(len); Err vernunftzentrum.de 70 i@@ -751,7 +751,7 @@ static int save_to_file(uint8_t *data, char *output_dir, char *slug) { Err vernunftzentrum.de 70 i return -1; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- snprintf(path, len, "%s%s%s%s%s", output_dir, "/", slug, "/", file_name); Err vernunftzentrum.de 70 i+ snprintf(path, len, "%s%s%s%s%s", s->output_dir_path, "/", slug, "/", file_name); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Attempt file saving Err vernunftzentrum.de 70 i FILE *f = fopen(path, "w"); Err vernunftzentrum.de 70 i@@ -760,6 +760,14 @@ static int save_to_file(uint8_t *data, char *output_dir, char *slug) { Err vernunftzentrum.de 70 i return -1; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+ // Null-terminate buffer if not null terminated already Err vernunftzentrum.de 70 i+ for (int i = 0; i < s->buffer_len; i++) { Err vernunftzentrum.de 70 i+ if (data[i] == 0) { Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ data[s->buffer_len - 1] = 0; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i if ( fprintf(f, "%s", data) < 0 ) { Err vernunftzentrum.de 70 i fclose(f); Err vernunftzentrum.de 70 i free(path); Err vernunftzentrum.de 70 .