newsyslog.conf(5): Accept human unit suffix in the size filed

MFC after:	1 week
Pull Request:	https://github.com/freebsd/freebsd-src/pull/1505
This commit is contained in:
K Rin authored and Li-Wen Hsu committed 2024-11-21 13:39:09 +08:00
1 parent ab540d44ba
commit 1f78bbb5c4
3 files changed
+23 -7

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ CONFS= newsyslog.conf
PROG= newsyslog
MAN= newsyslog.8 newsyslog.conf.5
SRCS= newsyslog.c ptimes.c
LIBADD= sbuf
LIBADD= sbuf util
HAS_TESTS=
SUBDIR.${MK_TESTS}+= tests
+16 -3
View File
@@ -77,6 +77,7 @@
#include <stdbool.h>
#include <stdio.h>
#include <libgen.h>
#include <libutil.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
@@ -1335,9 +1336,21 @@ parse_file(FILE *cf, struct cflist *work_p, struct cflist *glob_p,
badline("malformed line (missing fields):\n%s",
errline);
*parse = '\0';
if (isdigitch(*q))
working->trsize = atoi(q);
else if (strcmp(q, "*") == 0)
if (isdigitch(*q)) {
char last_digit = q[strlen(q) - 1];
if (isdigitch(last_digit))
working->trsize = atoi(q);
else {
uint64_t trsize = 0;
if (expand_number(q, &trsize) == 0)
working->trsize = trsize / 1024;
else {
working->trsize = -1;
warnx("Invalid value of '%s' for 'size' in line:\n%s",
q, errline);
}
}
} else if (strcmp(q, "*") == 0)
working->trsize = -1;
else {
warnx("Invalid value of '%s' for 'size' in line:\n%s",
+6 -3
View File
@@ -18,7 +18,7 @@
.\" the suitability of this software for any purpose. It is
.\" provided "as is" without express or implied warranty.
.\"
.Dd December 25, 2023
.Dd November 11, 2024
.Dt NEWSYSLOG.CONF 5
.Os
.Sh NAME
@@ -116,8 +116,10 @@ Specify the maximum number of archive files which may exist.
This does not consider the current log file.
.It Ar size
When the size of the log file reaches
.Ar size
in kilobytes, the log file will be trimmed as described above.
.Ar size ,
in kilobytes by default, or with suffix suffixes like k, M, G, ... as supported by
.Xr expand_number 3 ,
the log file will be trimmed as described above.
If this field contains an asterisk
.Pq Ql * ,
the log file will not be trimmed based on size.
@@ -438,6 +440,7 @@ entry:
.Xr gzip 1 ,
.Xr xz 1 ,
.Xr zstd 1 ,
.Xr expand_number 3 ,
.Xr syslog 3 ,
.Xr chown 8 ,
.Xr newsyslog 8 ,