summaryrefslogtreecommitdiff
path: root/src/test/test-string-util.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-05-19 09:05:48 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-05-19 11:07:28 +0200
commit8d9156660d6958c8d63b1d44692968f1b5d33920 (patch)
tree51135ba8e9b942e4089a39238738d66be63c870e /src/test/test-string-util.c
parent4e8295f42dc7b7e001f620db64abfcd407b4e36c (diff)
downloadsystemd-8d9156660d6958c8d63b1d44692968f1b5d33920.tar.gz
version comparisons: stop using locale-dependent isdigit()
The docs are not entirely clear what glyphs qualify as digits. The function is supposed to be locale-dependent, but I couldn't get it to return true on any non-ascii digits I tried. But it's better to be safe than sorry, let's use our trivial replacement instead.
Diffstat (limited to 'src/test/test-string-util.c')
-rw-r--r--src/test/test-string-util.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/test/test-string-util.c b/src/test/test-string-util.c
index d0a4eca390..1054f9ea31 100644
--- a/src/test/test-string-util.c
+++ b/src/test/test-string-util.c
@@ -1,5 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <ctype.h>
+
#include "alloc-util.h"
#include "locale-util.h"
#include "macro.h"
@@ -914,6 +916,13 @@ TEST(strverscmp_improved) {
/* invalid characters */
assert_se(strverscmp_improved("123_aa2-67.89", "123aa+2-67.89") == 0);
+
+ /* non-ASCII digits */
+ (void) setlocale(LC_NUMERIC, "ar_YE.utf8");
+ assert_se(strverscmp_improved("1٠١٢٣٤٥٦٧٨٩", "1") == 0);
+
+ (void) setlocale(LC_NUMERIC, "th_TH.utf8");
+ assert_se(strverscmp_improved("1๐๑๒๓๔๕๖๗๘๙", "1") == 0);
}
#define RPMVERCMP(a, b, c) \