Re: [PATCH 2/2] quotearg: support USE_C_LOCALE variant

Bruno Haible via Gnulib discussion list <[email protected]>
Newsgroups gmane.comp.lib.gnulib.bugs
Organization GNU
Message-ID <24385321.6Emhk5qWAg@nimes>
Paul Eggert wrote:
> Thanks for mentioning that. I installed the attached to try to fix this.

Thanks. Two nits:
  * Before using the MUSL_LIBC symbol, one needs to AC_REQUIRE([gl_MUSL_LIBC]).
  * Haiku is also such a system.
    - musl libc                         is mentioned in tests/test-isalnum_l.c.
    - macOS, BeOS, Haiku                are mentioned in lib/localcharset.c.
    - Android                           is mentioned in tests/test-mbrtowc.c.


2026-05-26  Bruno Haible  <[email protected]>

	quotearg: Improve USE_C_LOCALE code on Haiku.
	* lib/quotearg.c (C_LOCALE_MIGHT_BE_MULTIBYTE): Define also on Haiku.
	Add comments.

2026-05-26  Bruno Haible  <[email protected]>

	quotearg: Improve USE_C_LOCALE code on musl libc.
	* m4/quotearg.m4 (gl_QUOTEARG): Require gl_MUSL_LIBC.
	* modules/quotearg (Files): Add m4/musl.m4.
0001-quotearg-Improve-USE_C_LOCALE-code-on-musl-libc.patch (text/x-patch, 1.6 KB)
From 5df012a1fba96e05f1697fc35e1a6c9706ae8f43 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Tue, 26 May 2026 19:40:43 +0200
Subject: [PATCH 1/2] quotearg: Improve USE_C_LOCALE code on musl libc.

* m4/quotearg.m4 (gl_QUOTEARG): Require gl_MUSL_LIBC.
* modules/quotearg (Files): Add m4/musl.m4.
---
 ChangeLog        | 6 ++++++
 m4/quotearg.m4   | 3 ++-
 modules/quotearg | 1 +
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 33a67ff322..c488cbddba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-26  Bruno Haible  <[email protected]>
+
+	quotearg: Improve USE_C_LOCALE code on musl libc.
+	* m4/quotearg.m4 (gl_QUOTEARG): Require gl_MUSL_LIBC.
+	* modules/quotearg (Files): Add m4/musl.m4.
+
 2026-05-25  Paul Eggert  <[email protected]>
 
 	xalloc-oversized: pacify gcc -Wuseless-cast
diff --git a/m4/quotearg.m4 b/m4/quotearg.m4
index 330743b3bf..ceca5925ad 100644
--- a/m4/quotearg.m4
+++ b/m4/quotearg.m4
@@ -1,5 +1,5 @@
 # quotearg.m4
-# serial 10
+# serial 11
 dnl Copyright (C) 2002, 2004-2026 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -9,5 +9,6 @@
 AC_DEFUN([gl_QUOTEARG],
 [
   AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_MUSL_LIBC])
   :
 ])
diff --git a/modules/quotearg b/modules/quotearg
index 17a7c1314c..7e61400ef1 100644
--- a/modules/quotearg
+++ b/modules/quotearg
@@ -6,6 +6,7 @@ lib/quotearg.h
 lib/quotearg.c
 lib/quote.h
 m4/quotearg.m4
+m4/musl.m4
 
 Depends-on:
 attribute
-- 
2.54.0
0002-quotearg-Improve-USE_C_LOCALE-code-on-Haiku.patch (text/x-patch, 2 KB)
From b08d71c27dc04eb6281dd6361b2d4c167c672c01 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Tue, 26 May 2026 19:49:09 +0200
Subject: [PATCH 2/2] quotearg: Improve USE_C_LOCALE code on Haiku.

* lib/quotearg.c (C_LOCALE_MIGHT_BE_MULTIBYTE): Define also on Haiku.
Add comments.
---
 ChangeLog      |  6 ++++++
 lib/quotearg.c | 14 ++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c488cbddba..6931087b53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-26  Bruno Haible  <[email protected]>
+
+	quotearg: Improve USE_C_LOCALE code on Haiku.
+	* lib/quotearg.c (C_LOCALE_MIGHT_BE_MULTIBYTE): Define also on Haiku.
+	Add comments.
+
 2026-05-26  Bruno Haible  <[email protected]>
 
 	quotearg: Improve USE_C_LOCALE code on musl libc.
diff --git a/lib/quotearg.c b/lib/quotearg.c
index 3c2bf946ed..1c31a1ec04 100644
--- a/lib/quotearg.c
+++ b/lib/quotearg.c
@@ -49,10 +49,16 @@
 # define USE_C_LOCALE 0
 #endif
 
-/* On recent-enough Android, Darwin/iOS/macOS and musl,
-   the "C" locale uses UTF-8, contrary to POSIX.  */
-#if (defined __ANDROID__ || (defined __APPLE__ && defined __MACH__) \
-     || defined MUSL_LIBC)
+/* On several platforms, the default locale uses UTF-8, contrary to POSIX:
+   - musl libc has no unibyte locales; the "C" locale uses UTF-8.
+   - On macOS, all modern locales use the UTF-8 encoding.
+   - BeOS and Haiku have a single locale, and it has UTF-8 encoding.
+   - On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the
+     "C" locale.  Furthermore, when you attempt to set the "C" or "POSIX"
+     locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
+     that is, effectively the "C.UTF-8" locale.  */
+#if (defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) \
+     || defined __BEOS__ || defined __HAIKU__ || defined __ANDROID__)
 # define C_LOCALE_MIGHT_BE_MULTIBYTE true
 #else
 # define C_LOCALE_MIGHT_BE_MULTIBYTE false
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.