--- a/logrotate.c +++ b/logrotate.c @@ -567,9 +567,14 @@ int findNeedRotating(struct logInfo *log /* rotate if: 1) the current weekday is before the weekday of the last rotation + 1) the day of the week is the same as the day of the week of + the previous rotation but not the same day of the year + this will rotate it on the same day every week, but not + twice a day. 2) more then a week has passed since the last rotation */ - state->doRotate = ((now.tm_wday < state->lastRotated.tm_wday) + state->doRotate = ((now.tm_wday == state->lastRotated.tm_wday + && now.tm_yday != state->lastRotated.tm_yday) || ((mktime(&now) - mktime(&state->lastRotated)) >