---- logrotate-3.7.1-old/logrotate.c 2004-10-19 23:41:24.000000000 +0200
-+++ logrotate-3.7.1-new/logrotate.c 2005-10-02 17:29:22.380767321 +0200
-@@ -424,12 +424,15 @@ int findNeedRotating(logInfo * log, int
- switch (log->criterium) {
- case ROT_WEEKLY:
- /* 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) ||
-- ((mktime(&now) - mktime(&state->lastRotated)) >
-+ state->doRotate = ((now.tm_wday == state->lastRotated.tm_wday &&
-+ now.tm_yday != state->lastRotated.tm_yday) ||
-+ ((mktime(&now) - mktime(&state->lastRotated)) >
- (7 * 24 * 3600)));
- break;
- case ROT_MONTHLY:
+--- 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)) >