iReworked date function to take buffer as an argument - 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 10cb524891b73dd08638960b831991d74bbfb148 /ckeen/repos/fiche/commit/10cb524891b73dd08638960b831991d74bbfb148.gph vernunftzentrum.de 70 1parent 99b45b93f24f678986556f1e5cffa09563c564c3 /ckeen/repos/fiche/commit/99b45b93f24f678986556f1e5cffa09563c564c3.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Tue, 5 Sep 2017 22:04:21 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iReworked date function to take buffer as an argument Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i fiche.c | 44 +++++++++++++++++-------------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i1 file changed, 24 insertions(+), 20 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@@ -175,7 +175,7 @@ static void log_entry(const Fiche_Settings *s, const char *ip, Err vernunftzentrum.de 70 i * @brief Returns string containing current date Err vernunftzentrum.de 70 i * @warning Output has to be freed! Err vernunftzentrum.de 70 i */ Err vernunftzentrum.de 70 i-static char *get_date(); Err vernunftzentrum.de 70 i+static void get_date(char *buf); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i /** Err vernunftzentrum.de 70 i@@ -223,9 +223,9 @@ int fiche_run(Fiche_Settings settings) { Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Display welcome message Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- char *date = get_date(); Err vernunftzentrum.de 70 i+ char date[64]; Err vernunftzentrum.de 70 i+ get_date(date); Err vernunftzentrum.de 70 i print_status("Starting fiche on %s...", date); Err vernunftzentrum.de 70 i- free(date); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Try to set requested user Err vernunftzentrum.de 70 i@@ -329,34 +329,32 @@ static void log_entry(const Fiche_Settings *s, const char *ip, Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- char *date = get_date(); Err vernunftzentrum.de 70 i+ char date[64]; Err vernunftzentrum.de 70 i+ get_date(date); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Write entry to file Err vernunftzentrum.de 70 i fprintf(f, "%s -- %s -- %s (%s)\n", slug, date, ip, hostname); Err vernunftzentrum.de 70 i fclose(f); Err vernunftzentrum.de 70 i- Err vernunftzentrum.de 70 i- free(date); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-static char *get_date() { Err vernunftzentrum.de 70 i+static void get_date(char *buf) { Err vernunftzentrum.de 70 i struct tm curtime; Err vernunftzentrum.de 70 i time_t ltime; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i ltime=time(<ime); Err vernunftzentrum.de 70 i localtime_r(<ime, &curtime); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- // Much more than required, date string is usually about 25 chars Err vernunftzentrum.de 70 i- char buf[128]; Err vernunftzentrum.de 70 i- asctime_r(&curtime, buf); Err vernunftzentrum.de 70 i- Err vernunftzentrum.de 70 i- char *out = malloc(strlen(buf) + 1); Err vernunftzentrum.de 70 i- strcpy(out, buf); Err vernunftzentrum.de 70 i+ // Save data to provided buffer Err vernunftzentrum.de 70 i+ if (asctime_r(&curtime, buf) == 0) { Err vernunftzentrum.de 70 i+ // Couldn't get date, setting first byte of the Err vernunftzentrum.de 70 i+ // buffer to zero so it won't be displayed Err vernunftzentrum.de 70 i+ buf[0] = 0; Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Remove newline char Err vernunftzentrum.de 70 i- out[strlen(buf)-1] = 0; Err vernunftzentrum.de 70 i- Err vernunftzentrum.de 70 i- return out; Err vernunftzentrum.de 70 i+ buf[strlen(buf)-1] = 0; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -366,7 +364,7 @@ static int set_domain_name(Fiche_Settings *settings) { Err vernunftzentrum.de 70 i const int len = strlen(settings->domain) + strlen(prefix) + 1; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i char *b = malloc(len); Err vernunftzentrum.de 70 i- if (b == NULL) { Err vernunftzentrum.de 70 i+ if (!b) { Err vernunftzentrum.de 70 i return -1; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -501,7 +499,6 @@ static void dispatch_connection(int socket, Fiche_Settings *settings) { Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Create an argument for the thread function Err vernunftzentrum.de 70 i- //struct fiche_connection c = { s, address, settings }; Err vernunftzentrum.de 70 i struct fiche_connection *c = malloc(sizeof(*c)); Err vernunftzentrum.de 70 i if (!c) { Err vernunftzentrum.de 70 i print_error("Couldn't allocate memory!"); Err vernunftzentrum.de 70 i@@ -546,9 +543,9 @@ static void *handle_connection(void *args) { Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Print status on this connection Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- char *date = get_date(); Err vernunftzentrum.de 70 i+ char date[64]; Err vernunftzentrum.de 70 i+ get_date(date); Err vernunftzentrum.de 70 i print_status("%s", date); Err vernunftzentrum.de 70 i- free(date); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i print_status("Incoming connection from: %s (%s).", ip, hostname); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -715,6 +712,9 @@ static int create_directory(char *output_dir, char *slug) { 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+ if (!path) { Err vernunftzentrum.de 70 i+ return -1; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i snprintf(path, len, "%s%s%s", output_dir, "/", slug); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i // Create output directory, just in case Err vernunftzentrum.de 70 i@@ -740,6 +740,10 @@ static int save_to_file(uint8_t *data, char *output_dir, char *slug) { 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+ if (!path) { 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 Err vernunftzentrum.de 70 i // Attempt file saving Err vernunftzentrum.de 70 .