From 7f9206336a0766e655dab76f0073a10de2dcda5f Mon Sep 17 00:00:00 2001 From: Ryan Flynn Date: Tue, 13 Mar 2012 17:47:35 -0400 Subject: [PATCH 1/2] if logfile open fails fallback to /dev/null or stderr rather than crash --- c_src/sqlite3_drv.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/c_src/sqlite3_drv.c b/c_src/sqlite3_drv.c index c462c2d..6ce5531 100644 --- a/c_src/sqlite3_drv.c +++ b/c_src/sqlite3_drv.c @@ -63,7 +63,12 @@ static ErlDrvData start(ErlDrvPort port, char* cmd) { retval->log = fopen(LOG_PATH, "a+"); if (!retval->log) { - fprintf(stderr, "Can't create log file\n"); + fprintf(stderr, "Error creating log file: %s\n", LOG_PATH); + // because logging isn't abstracted away we need a valid FILE* + // fall back to anything rather than segfault later + retval->log = fopen("/dev/null", "a+"); + if (!retval->log) + retval->log = stderr; // noisy } fprintf(retval->log, From 824adcea32a4b756fac567733b7dfb646d21626b Mon Sep 17 00:00:00 2001 From: Ryan Flynn Date: Wed, 14 Mar 2012 11:09:23 -0400 Subject: [PATCH 2/2] don't hide the problem, use stderr instead --- c_src/sqlite3_drv.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/c_src/sqlite3_drv.c b/c_src/sqlite3_drv.c index 6ce5531..30b4774 100644 --- a/c_src/sqlite3_drv.c +++ b/c_src/sqlite3_drv.c @@ -64,11 +64,8 @@ static ErlDrvData start(ErlDrvPort port, char* cmd) { retval->log = fopen(LOG_PATH, "a+"); if (!retval->log) { fprintf(stderr, "Error creating log file: %s\n", LOG_PATH); - // because logging isn't abstracted away we need a valid FILE* - // fall back to anything rather than segfault later - retval->log = fopen("/dev/null", "a+"); - if (!retval->log) - retval->log = stderr; // noisy + // if we can't open the log file we shouldn't hide the data or the problem + retval->log = stderr; // noisy } fprintf(retval->log,