git: bd490be57438 - main - w(1): fix libxo output being locale dependant
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 14 Oct 2024 08:44:43 UTC
The branch main has been updated by bapt:
URL: https://cgit.FreeBSD.org/src/commit/?id=bd490be57438a82c22d1274bc58d51142b63f4a0
commit bd490be57438a82c22d1274bc58d51142b63f4a0
Author: Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2024-10-14 07:37:46 +0000
Commit: Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2024-10-14 08:43:38 +0000
w(1): fix libxo output being locale dependant
by being locale dependant the json export is invalid in locales where
the separator for float is a comma.
The Json and the XML are invalid for login-time when days contains
contains characters which are not unicode.
Forcing locale to be C, makes this json and xml output valid and also
identical accross locales, so reliable for parsers
PR: 276304
Reported by: Vedran Miletic <vedran@miletic.net>
---
usr.bin/w/w.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c
index 47899d0b38e0..ac1df96077d3 100644
--- a/usr.bin/w/w.c
+++ b/usr.bin/w/w.c
@@ -135,14 +135,16 @@ main(int argc, char *argv[])
char buf[MAXHOSTNAMELEN], fn[MAXHOSTNAMELEN];
char *dot;
- (void)setlocale(LC_ALL, "");
- use_ampm = (*nl_langinfo(T_FMT_AMPM) != '\0');
- use_comma = (*nl_langinfo(RADIXCHAR) != ',');
argc = xo_parse_args(argc, argv);
if (argc < 0)
exit(1);
+ if (xo_get_style(NULL) == XO_STYLE_TEXT) {
+ setlocale(LC_ALL, "");
+ }
+ use_ampm = (*nl_langinfo(T_FMT_AMPM) != '\0');
+ use_comma = (*nl_langinfo(RADIXCHAR) != ',');
/* Are we w(1) or uptime(1)? */
if (strcmp(basename(argv[0]), "uptime") == 0) {
wcmd = 0;