On 2026-05-21 22:56, Bruno Haible wrote:
../../gltests/test-regex-en.c:125:1: warning: unused function 'bug_regex11'
Thanks for reporting that. Yes, it's an unnecessary duplicate of tests
already done elsewhere. Fixed with the attached.From 5ab7a04761dac69403f677de4ee44c1940777b46 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Fri, 22 May 2026 08:44:12 -0700
Subject: [PATCH] regex-tests: omit unused parts
Problem reported by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2026-05/msg00137.html
* tests/test-regex-en.c (tests, bug_regex11): Remove; unused.
* tests/test-regex-en.c, tests/test-regex-tr.c, tests/test-regex.c:
(main): Omit unused args.
---
ChangeLog | 9 ++++
tests/test-regex-en.c | 109 +-----------------------------------------
tests/test-regex-tr.c | 2 +-
tests/test-regex.c | 2 +-
4 files changed, 12 insertions(+), 110 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f3cd5f3b0e..8892a3d09b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-22 Paul Eggert <[email protected]>
+
+ regex-tests: omit unused parts
+ Problem reported by Bruno Haible in:
+ https://lists.gnu.org/r/bug-gnulib/2026-05/msg00137.html
+ * tests/test-regex-en.c (tests, bug_regex11): Remove; unused.
+ * tests/test-regex-en.c, tests/test-regex-tr.c, tests/test-regex.c:
+ (main): Omit unused args.
+
2026-05-22 Bruno Haible <[email protected]>
doc: Update for OpenBSD 7.9.
diff --git a/tests/test-regex-en.c b/tests/test-regex-en.c
index 7317961bc5..c8d2304642 100644
--- a/tests/test-regex-en.c
+++ b/tests/test-regex-en.c
@@ -54,115 +54,8 @@ really_utf8 (void)
return streq (locale_charset (), "UTF-8");
}
-/* Tests supposed to match; copied from glibc posix/bug-regex11.c. */
-static struct
-{
- const char *pattern;
- const char *string;
- int flags, nmatch;
- regmatch_t rm[5];
-} const tests[] = {
- /* Test for newline handling in regex. */
- { "[^~]*~", "\nx~y", 0, 2, { { 0, 3 }, { -1, -1 } } },
- /* Other tests. */
- { "a(.*)b", "a b", REG_EXTENDED, 2, { { 0, 3 }, { 1, 2 } } },
- { ".*|\\([KIO]\\)\\([^|]*\\).*|?[KIO]", "10~.~|P|K0|I10|O16|?KSb", 0, 3,
- { { 0, 21 }, { 15, 16 }, { 16, 18 } } },
- { ".*|\\([KIO]\\)\\([^|]*\\).*|?\\1", "10~.~|P|K0|I10|O16|?KSb", 0, 3,
- { { 0, 21 }, { 8, 9 }, { 9, 10 } } },
- { "^\\(a*\\)\\1\\{9\\}\\(a\\{0,9\\}\\)\\([0-9]*;.*[^a]\\2\\([0-9]\\)\\)",
- "a1;;0a1aa2aaa3aaaa4aaaaa5aaaaaa6aaaaaaa7aaaaaaaa8aaaaaaaaa9aa2aa1a0", 0,
- 5, { { 0, 67 }, { 0, 0 }, { 0, 1 }, { 1, 67 }, { 66, 67 } } },
- /* Test for BRE expression anchoring. POSIX says just that this may match;
- in glibc regex it always matched, so avoid changing it. */
- { "\\(^\\|foo\\)bar", "bar", 0, 2, { { 0, 3 }, { -1, -1 } } },
- { "\\(foo\\|^\\)bar", "bar", 0, 2, { { 0, 3 }, { -1, -1 } } },
- /* In ERE this must be treated as an anchor. */
- { "(^|foo)bar", "bar", REG_EXTENDED, 2, { { 0, 3 }, { -1, -1 } } },
- { "(foo|^)bar", "bar", REG_EXTENDED, 2, { { 0, 3 }, { -1, -1 } } },
- /* Here ^ cannot be treated as an anchor according to POSIX. */
- { "(^|foo)bar", "(^|foo)bar", 0, 2, { { 0, 10 }, { -1, -1 } } },
- { "(foo|^)bar", "(foo|^)bar", 0, 2, { { 0, 10 }, { -1, -1 } } },
- /* More tests on backreferences. */
- { "()\\1", "x", REG_EXTENDED, 2, { { 0, 0 }, { 0, 0 } } },
- { "()x\\1", "x", REG_EXTENDED, 2, { { 0, 1 }, { 0, 0 } } },
- { "()\\1*\\1*", "", REG_EXTENDED, 2, { { 0, 0 }, { 0, 0 } } },
- { "([0-9]).*\\1(a*)", "7;7a6", REG_EXTENDED, 3, { { 0, 4 }, { 0, 1 }, { 3, 4 } } },
- { "([0-9]).*\\1(a*)", "7;7a", REG_EXTENDED, 3, { { 0, 4 }, { 0, 1 }, { 3, 4 } } },
- { "(b)()c\\1", "bcb", REG_EXTENDED, 3, { { 0, 3 }, { 0, 1 }, { 1, 1 } } },
- { "()(b)c\\2", "bcb", REG_EXTENDED, 3, { { 0, 3 }, { 0, 0 }, { 0, 1 } } },
- { "a(b)()c\\1", "abcb", REG_EXTENDED, 3, { { 0, 4 }, { 1, 2 }, { 2, 2 } } },
- { "a()(b)c\\2", "abcb", REG_EXTENDED, 3, { { 0, 4 }, { 1, 1 }, { 1, 2 } } },
- { "()(b)\\1c\\2", "bcb", REG_EXTENDED, 3, { { 0, 3 }, { 0, 0 }, { 0, 1 } } },
- { "(b())\\2\\1", "bbbb", REG_EXTENDED, 3, { { 0, 2 }, { 0, 1 }, { 1, 1 } } },
- { "a()(b)\\1c\\2", "abcb", REG_EXTENDED, 3, { { 0, 4 }, { 1, 1 }, { 1, 2 } } },
- { "a()d(b)\\1c\\2", "adbcb", REG_EXTENDED, 3, { { 0, 5 }, { 1, 1 }, { 2, 3 } } },
- { "a(b())\\2\\1", "abbbb", REG_EXTENDED, 3, { { 0, 3 }, { 1, 2 }, { 2, 2 } } },
- { "(bb())\\2\\1", "bbbb", REG_EXTENDED, 3, { { 0, 4 }, { 0, 2 }, { 2, 2 } } },
- { "^([^,]*),\\1,\\1$", "a,a,a", REG_EXTENDED, 2, { { 0, 5 }, { 0, 1 } } },
- { "^([^,]*),\\1,\\1$", "ab,ab,ab", REG_EXTENDED, 2, { { 0, 8 }, { 0, 2 } } },
- { "^([^,]*),\\1,\\1,\\1$", "abc,abc,abc,abc", REG_EXTENDED, 2,
- { { 0, 15 }, { 0, 3 } } },
- { "^(.?)(.?)(.?)(.?)(.?).?\\5\\4\\3\\2\\1$",
- "level", REG_NOSUB | REG_EXTENDED, 0, { { -1, -1 } } },
- { "^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\\9\\8\\7\\6\\5\\4\\3\\2\\1$|^.?$",
- "level", REG_NOSUB | REG_EXTENDED, 0, { { -1, -1 } } },
- { "^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\\9\\8\\7\\6\\5\\4\\3\\2\\1$|^.?$",
- "abcdedcba", REG_EXTENDED, 1, { { 0, 9 } } },
- { "^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\\9\\8\\7\\6\\5\\4\\3\\2\\1$|^.?$",
- "ababababa", REG_EXTENDED, 1, { { 0, 9 } } },
- { "^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\\9\\8\\7\\6\\5\\4\\3\\2\\1$",
- "level", REG_NOSUB | REG_EXTENDED, 0, { { -1, -1 } } },
- { "^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\\9\\8\\7\\6\\5\\4\\3\\2\\1$",
- "ababababa", REG_EXTENDED, 1, { { 0, 9 } } },
- /* Test for *+ match. */
- { "^a*+(.)", "ab", REG_EXTENDED, 2, { { 0, 2 }, { 1, 2 } } },
- /* Test for ** match. */
- { "^(a*)*(.)", "ab", REG_EXTENDED, 3, { { 0, 2 }, { 0, 1 }, { 1, 2 } } },
-};
-
-static void
-bug_regex11 (void)
-{
- regex_t re;
- regmatch_t rm[5];
-
- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
- {
- int err = regcomp (&re, tests[i].pattern, tests[i].flags);
- if (err != 0)
- {
- char buf[500];
- regerror (err, &re, buf, sizeof (buf));
- report_error ("%s: regcomp %zd failed: %s", tests[i].pattern, i, buf);
- continue;
- }
-
- if (regexec (&re, tests[i].string, tests[i].nmatch, rm, 0))
- {
- report_error ("%s: regexec %zd failed", tests[i].pattern, i);
- regfree (&re);
- continue;
- }
-
- for (int n = 0; n < tests[i].nmatch; ++n)
- if (rm[n].rm_so != tests[i].rm[n].rm_so
- || rm[n].rm_eo != tests[i].rm[n].rm_eo)
- {
- if (tests[i].rm[n].rm_so == -1 && tests[i].rm[n].rm_eo == -1)
- break;
- report_error ("%s: regexec %zd match failure rm[%d] %d..%d",
- tests[i].pattern, i, n,
- (int) rm[n].rm_so, (int) rm[n].rm_eo);
- break;
- }
-
- regfree (&re);
- }
-}
-
int
-main (int argc, char *argv[])
+main ()
{
struct re_pattern_buffer regex;
const char *s;
diff --git a/tests/test-regex-tr.c b/tests/test-regex-tr.c
index 3c234c26dc..88263f3d1c 100644
--- a/tests/test-regex-tr.c
+++ b/tests/test-regex-tr.c
@@ -55,7 +55,7 @@ really_utf8 (void)
}
int
-main (int argc, char **argv)
+main ()
{
struct re_pattern_buffer regex;
const char *s;
diff --git a/tests/test-regex.c b/tests/test-regex.c
index d5d33606eb..b0a22b54f4 100644
--- a/tests/test-regex.c
+++ b/tests/test-regex.c
@@ -151,7 +151,7 @@ bug_regex11 (void)
}
int
-main (void)
+main ()
{
struct re_pattern_buffer regex;
unsigned char folded_chars[UCHAR_MAX + 1];
--
2.53.0