diff options
author | glebius <glebius@FreeBSD.org> | 2012-03-21 06:51:45 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2012-03-21 06:51:45 +0000 |
commit | 14f4e1dc58ba19c127f80a6cbbac9e1e23e552e2 (patch) | |
tree | 2516c5579e3dbd599a4bb6019d1e19f1b20ba7f3 /usr.sbin/newsyslog | |
parent | 3c3b82e6815574831ec521d10dee713926e00764 (diff) | |
download | FreeBSD-src-14f4e1dc58ba19c127f80a6cbbac9e1e23e552e2.zip FreeBSD-src-14f4e1dc58ba19c127f80a6cbbac9e1e23e552e2.tar.gz |
Don't run through time checks when entry is definitely oversized. This
leads to newsyslog rotating on (size OR time) if both are specified.
PR: 100018, 160432
Diffstat (limited to 'usr.sbin/newsyslog')
-rw-r--r-- | usr.sbin/newsyslog/newsyslog.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/usr.sbin/newsyslog/newsyslog.c b/usr.sbin/newsyslog/newsyslog.c index 8cbfde7..7ebdddc 100644 --- a/usr.sbin/newsyslog/newsyslog.c +++ b/usr.sbin/newsyslog/newsyslog.c @@ -484,12 +484,14 @@ do_entry(struct conf_entry * ent) fk_entry free_or_keep; double diffsecs; char temp_reason[REASON_MAX]; + int oversized; free_or_keep = FREE_ENT; if (verbose) printf("%s <%d%s>: ", ent->log, ent->numlogs, compress_type[ent->compress].flag); ent->fsize = sizefile(ent->log); + oversized = ((ent->trsize > 0) && (ent->fsize >= ent->trsize)); modtime = age_old_log(ent->log); ent->rotate = 0; ent->firstcreate = 0; @@ -518,7 +520,8 @@ do_entry(struct conf_entry * ent) printf("does not exist, skipped%s.\n", temp_reason); } } else { - if (ent->flags & CE_TRIMAT && !force && !rotatereq) { + if (ent->flags & CE_TRIMAT && !force && !rotatereq && + !oversized) { diffsecs = ptimeget_diff(timenow, ent->trim_at); if (diffsecs < 0.0) { /* trim_at is some time in the future. */ @@ -574,7 +577,7 @@ do_entry(struct conf_entry * ent) } else if (force) { ent->rotate = 1; snprintf(temp_reason, REASON_MAX, " due to -F request"); - } else if ((ent->trsize > 0) && (ent->fsize >= ent->trsize)) { + } else if (oversized) { ent->rotate = 1; snprintf(temp_reason, REASON_MAX, " due to size>%dK", ent->trsize); |