[PATCH v2 1/2] include: Move typedefs in nls.h to their own header

Nathan Chancellor posted 2 patches 8 months, 3 weeks ago
There is a newer version of this series
[PATCH v2 1/2] include: Move typedefs in nls.h to their own header
Posted by Nathan Chancellor 8 months, 3 weeks ago
In order to allow commonly included headers such as string.h to access
typedefs such as wchar_t without running into issues with the rest of
the NLS library, refactor the typedefs out into their own header that
can be included in a much safer manner.

Cc: stable@vger.kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
 include/linux/nls.h       | 19 +------------------
 include/linux/nls_types.h | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/include/linux/nls.h b/include/linux/nls.h
index e0bf8367b274..3d416d1f60b6 100644
--- a/include/linux/nls.h
+++ b/include/linux/nls.h
@@ -3,24 +3,7 @@
 #define _LINUX_NLS_H
 
 #include <linux/init.h>
-
-/* Unicode has changed over the years.  Unicode code points no longer
- * fit into 16 bits; as of Unicode 5 valid code points range from 0
- * to 0x10ffff (17 planes, where each plane holds 65536 code points).
- *
- * The original decision to represent Unicode characters as 16-bit
- * wchar_t values is now outdated.  But plane 0 still includes the
- * most commonly used characters, so we will retain it.  The newer
- * 32-bit unicode_t type can be used when it is necessary to
- * represent the full Unicode character set.
- */
-
-/* Plane-0 Unicode character */
-typedef u16 wchar_t;
-#define MAX_WCHAR_T	0xffff
-
-/* Arbitrary Unicode character */
-typedef u32 unicode_t;
+#include <linux/nls_types.h>
 
 struct nls_table {
 	const char *charset;
diff --git a/include/linux/nls_types.h b/include/linux/nls_types.h
new file mode 100644
index 000000000000..8caefdba19b1
--- /dev/null
+++ b/include/linux/nls_types.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_NLS_TYPES_H
+#define _LINUX_NLS_TYPES_H
+
+#include <linux/types.h>
+
+/* Unicode has changed over the years.  Unicode code points no longer
+ * fit into 16 bits; as of Unicode 5 valid code points range from 0
+ * to 0x10ffff (17 planes, where each plane holds 65536 code points).
+ *
+ * The original decision to represent Unicode characters as 16-bit
+ * wchar_t values is now outdated.  But plane 0 still includes the
+ * most commonly used characters, so we will retain it.  The newer
+ * 32-bit unicode_t type can be used when it is necessary to
+ * represent the full Unicode character set.
+ */
+
+/* Plane-0 Unicode character */
+typedef u16 wchar_t;
+#define MAX_WCHAR_T	0xffff
+
+/* Arbitrary Unicode character */
+typedef u32 unicode_t;
+
+#endif /* _LINUX_NLS_TYPES_H */

-- 
2.49.0
Re: [PATCH v2 1/2] include: Move typedefs in nls.h to their own header
Posted by Andy Shevchenko 8 months, 3 weeks ago
On Wed, Mar 26, 2025 at 7:19 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> In order to allow commonly included headers such as string.h to access
> typedefs such as wchar_t without running into issues with the rest of
> the NLS library, refactor the typedefs out into their own header that
> can be included in a much safer manner.

...

While the below is the original text, we can reduce churn for the
future by doing the following change while at it (no need to recend,
maybe Kees can amend this while applying):

> +/* Unicode has changed over the years.  Unicode code points no longer

/*
 * This is an incorrect comment style. Should be
 * like in this example.
 */

> + * fit into 16 bits; as of Unicode 5 valid code points range from 0
> + * to 0x10ffff (17 planes, where each plane holds 65536 code points).
> + *
> + * The original decision to represent Unicode characters as 16-bit
> + * wchar_t values is now outdated.  But plane 0 still includes the
> + * most commonly used characters, so we will retain it.  The newer
> + * 32-bit unicode_t type can be used when it is necessary to
> + * represent the full Unicode character set.
> + */

In either case it's fine and not a big deal,
Reviewed-by: Andy Shevchenko <andy@kernel.org>

-- 
With Best Regards,
Andy Shevchenko