tag 519432 +patch thanks On Thu 12 Mar 2009, Paul Slootman wrote:
> It would be great if an environment variable was made available to the > postrotate script so that the script can do something relevant to it. > Something like LOGROTATED_LOG for example... This would then contain the > name of the rotated log (including the .gz if nodelaycompress is in > force). I've hacked up a patch to do this, see attachment. Paul
put name of rotated logfile into environment. closes: #519432 Index: logrotate-3.7.7/logrotate.c =================================================================== --- logrotate-3.7.7/logrotate.c.orig +++ logrotate-3.7.7/logrotate.c @@ -1275,6 +1275,14 @@ message(MESS_DEBUG, "not running postrotate script, " "since no logs were rotated\n"); } else { + static char *env_LOGROTATED_FILE = NULL; + char *p = rotNames[j]->finalName ? rotNames[j]->finalName : ""; + int len = strlen("LOGROTATED_FILE=x") + strlen(p); /* the x accounts for the null byte */ + if (env_LOGROTATED_FILE == NULL || strlen(env_LOGROTATED_FILE) + 1 != len) { + env_LOGROTATED_FILE = realloc(env_LOGROTATED_FILE, len); + } + sprintf(env_LOGROTATED_FILE, "LOGROTATED_FILE=%s", p); + putenv(env_LOGROTATED_FILE); message(MESS_DEBUG, "running postrotate script\n"); if (runScript(log->pattern, log->post)) { if (log->flags & LOG_FLAG_SHAREDSCRIPTS) @@ -1289,6 +1297,7 @@ logHasErrors[j] = 1; hasErrors = 1; } + putenv("LOGROTATED_FILE"); /* remove from environment */ } }