---
cron.c | 31 +++++++++++--------------------
1 file changed, 11 insertions(+), 20 deletions(-)
diff --git a/cron.c b/cron.c
index 5d940cd..2f3cedc 100644
--- a/cron.c
+++ b/cron.c
_AT_@ -18,7 +18,7 @@
#include "util.h"
struct range {
- long low, high, repeat, random;
+ long low, high, repeat;
TAILQ_ENTRY(range) entry;
};
_AT_@ -204,11 +204,7 @@ matchentry(struct ctabentry *cte, struct tm *tm)
found = 0;
t = matchtbl[i].tm;
TAILQ_FOREACH(r, matchtbl[i].f, entry) {
- if (r->random)
- low = r->random;
- else
- low = r->low;
- if (low <= t && r->high >= t && t % r->repeat == 0) {
+ if (r->low <= t && r->high >= t && t % r->repeat == 0) {
found = 1;
break;
}
_AT_@ -219,13 +215,6 @@ matchentry(struct ctabentry *cte, struct tm *tm)
if (i != LEN(matchtbl))
return 0;
- for (i = 0; i < LEN(matchtbl); i++) { /* only if entry is matched */
- TAILQ_FOREACH(r, matchtbl[i].f, entry) {
- if (r->random)
- r->random = random_uniform(r->high - r->low) + r->low;
- }
- }
-
return 1;
}
_AT_@ -239,8 +228,9 @@ parserange(char *str, long low, long high, struct range *r)
*/
char *range, *repeat, *strlow, *strhigh;
char *e;
+ int random;
- r->random = 0;
+ random = 0;
range = strsep(&str, "/");
repeat = strsep(&str, "/");
_AT_@ -249,7 +239,7 @@ parserange(char *str, long low, long high, struct range *r)
switch (*range) {
case '~':
- r->random = 1;
+ random = 1;
case '*': /* fallthru */
if (range[1] != '\0')
return -1;
_AT_@ -281,7 +271,7 @@ parserange(char *str, long low, long high, struct range *r)
if (strhigh) {
if (!*strhigh || strlow != NULL) /* i.e. N~ or N~M~... */
return -1;
- r->random = 1;
+ random = 1;
errno = 0;
r->high = strtol(strhigh, &e, 10);
_AT_@ -293,7 +283,7 @@ parserange(char *str, long low, long high, struct range *r)
}
if (repeat) {
- if (!*repeat || range != NULL)
+ if (!*repeat || str != NULL)
return -1;
errno = 0;
r->repeat = strtol(repeat, &e, 10);
_AT_@ -303,9 +293,10 @@ parserange(char *str, long low, long high, struct range *r)
r->repeat = 1;
}
- if (r->random) {
- /* random replaces low in matchentry(), if it is >0 */
- r->random = random_uniform(r->high - r->low) + r->low;
+ if (random) {
+ /* random replaces low in matchentry() */
+ r->repeat = r->low; /* so that it doesn't repeat */
+ r->low = random_uniform(r->high - r->low+1) + r->low;
}
if (r->low < low || r->low > high || r->high < low || r->high > high || r->repeat < low || r->repeat > high) {
--
2.44.0
Received on Wed Feb 28 2024 - 09:10:38 CET
This archive was generated by hypermail 2.3.0 : Wed Feb 28 2024 - 09:12:34 CET