Project import generated by Copybara. GitOrigin-RevId: 638de8b11800d448fb0f537658680279d6f90a0a Change-Id: I451bcf71922a5c326d2030115542deda2664b528
diff --git a/src/watchdog.c b/src/watchdog.c index 8acb1c1..f554565 100644 --- a/src/watchdog.c +++ b/src/watchdog.c
@@ -83,6 +83,7 @@ #define HEARTBEAT "heartbeat-file" #define HBSTAMPS "heartbeat-stamps" #define LOGDIR "log-dir" +#define FALLBACKLOGDIR "fallback-log-dir" #define TESTDIR "test-directory" #ifndef TESTBIN_PATH @@ -101,6 +102,7 @@ time_t timeout = 0, rtimeout = 0; FILE *hb; char* logdir = "/var/log/watchdog"; +char* fallback_logdir = NULL; char *filename_buf; #if defined(_POSIX_MEMLOCK) @@ -505,6 +507,11 @@ fprintf(stderr, "Ignoring invalid line in config file:\n%s\n", line); else logdir = strdup(line + i); + } else if (strncmp(line + i, FALLBACKLOGDIR, strlen(FALLBACKLOGDIR)) == 0) { + if (spool(line, &i, strlen(FALLBACKLOGDIR))) + fprintf(stderr, "Ignoring invalid line in config file:\n%s\n", line); + else + fallback_logdir = strdup(line + i); } else if (strncmp(line + i, TESTDIR, strlen(TESTDIR)) == 0) { if (spool(line, &i, strlen(TESTDIR))) fprintf(stderr, "Ignoring invalid line in config file: %s ", line); @@ -699,9 +706,20 @@ /* make sure we get our own log directory */ if (mkdir (logdir, 0750) && errno != EEXIST) { - fprintf(stderr, "%s error:\n", progname); - fprintf(stderr, "Cannot create directory %s\n", logdir); - exit (1); + fprintf(stderr, "%s error:\n", progname); + fprintf(stderr, "Cannot create log directory %s\n", logdir); + if (fallback_logdir != NULL) { + fprintf(stderr, "Fall back to create log directory %s\n", fallback_logdir); + if (mkdir (fallback_logdir, 0750) && errno != EEXIST) { + fprintf(stderr, "Cannot create fallback log directory %s\n", fallback_logdir); + exit (1); + } else { + logdir = fallback_logdir; + } + } + else { + exit (1); + } } /* set up pinging if in ping mode */