From befac7cf83e27eacc0c09898d63b32e409250933 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 21 Jan 2007 17:34:22 +0000 Subject: [PATCH] Fix server not to create a journal on SIGHUP when !keep_journal: (journal_reopen): New. (main): Use it. Fixes failure to obey !keep_journal. (journal_open): Internal linkage, changed semantics and return value. Callers changed. (journal_close): One caller left, inline and remove. --- include/journal.h | 7 ++----- src/lib/common/journal.c | 41 ++++++++++++++++++++++++++-------------- src/server/main.c | 3 +-- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/include/journal.h b/include/journal.h index d29944cf..e0e2b746 100644 --- a/include/journal.h +++ b/include/journal.h @@ -34,15 +34,12 @@ #ifndef JOURNAL_H #define JOURNAL_H -int journal_open(void); -int journal_close(void); -void journal_entry(char *fmt, ...); - int journal_startup(void); void journal_shutdown(void); +int journal_reopen(void); void journal_login(void); void journal_logout(void); -void journal_input(char *input); +void journal_input(char *); void journal_update(int); #endif diff --git a/src/lib/common/journal.c b/src/lib/common/journal.c index 60a3297c..1a9841ba 100644 --- a/src/lib/common/journal.c +++ b/src/lib/common/journal.c @@ -63,22 +63,13 @@ static char journal_fname[] = "journal.log"; static FILE *journal; -int +static FILE * journal_open(void) { - journal = fopen(journal_fname, "a+"); - return journal ? 0 : -1; + return fopen(journal_fname, "a+"); } -int -journal_close(void) -{ - FILE *j = journal; - journal = NULL; - return j ? fclose(j) : 0; -} - -void +static void journal_entry(char *fmt, ...) { static char buf[1024]; @@ -109,7 +100,8 @@ journal_startup(void) { if (!keep_journal) return 0; - if (journal_open() < 0) { + journal = journal_open(); + if (!journal) { logerror("Can't open %s (%s)", journal_fname, strerror(errno)); return -1; } @@ -121,7 +113,28 @@ void journal_shutdown(void) { journal_entry("shutdown"); - journal_close(); + if (journal) { + fclose(journal); + journal = NULL; + } +} + +int +journal_reopen(void) +{ + FILE *j; + + if (!keep_journal) + return 0; + j = journal_open(); + if (!j) { + logerror("Can't open %s (%s)", journal_fname, strerror(errno)); + return -1; + } + if (journal) + fclose(journal); + journal = j; + return 0; } void diff --git a/src/server/main.c b/src/server/main.c index ad527c4f..0fa742c1 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -267,8 +267,7 @@ main(int argc, char **argv) sig = empth_wait_for_signal(); #ifdef SIGHUP if (sig == SIGHUP) { - journal_close(); - journal_open(); + journal_reopen(); continue; } #endif