JOB *job;
SCHED *sched;
struct tm tm;
- int hour, next_hour, minute, mday, wday, month, wpos;
+ int hour, next_hour, minute, mday, wday, month, wom, woy;
Dmsg0(200, "enter find_runs()\n");
num_runjobs = 0;
mday = tm.tm_mday - 1;
wday = tm.tm_wday;
month = tm.tm_mon;
- wpos = (tm.tm_mday - 1) / 7;
+ wom = mday / 7;
+ woy = tm_woy(now); /* get week of year */
/* Loop through all jobs */
LockRes();
*/
if ((bit_is_set(hour, run->hour) || bit_is_set(next_hour, run->hour)) &&
(bit_is_set(mday, run->mday) || bit_is_set(wday, run->wday)) &&
- bit_is_set(month, run->month) && bit_is_set(wpos, run->wpos)) {
+ bit_is_set(month, run->month) &&
+ bit_is_set(wom, run->wom) &&
+ bit_is_set(woy, run->woy)) {
/* find time (time_t) job is to be run */
localtime_r(&now, &tm);
if (bit_is_set(next_hour, run->hour)) {
tm.tm_hour++;
if (tm.tm_hour > 23) {
- tm.tm_hour = 0;
+ continue; /* next day */
}
runtime = mktime(&tm);
add_job(job, run, now, runtime);