Module Name: src Committed By: riastradh Date: Thu Aug 15 13:14:44 UTC 2024
Modified Files: src/distrib/sets/lists/comp: mi src/distrib/sets/lists/debug: mi src/distrib/sets/lists/tests: mi src/include: Makefile src/tests/lib/libc/locale: Makefile Added Files: src/include: uchar.h src/tests/lib/libc/locale: t_uchar.c Log Message: uchar.h: New header file for C11 (and C++11) compliance. Implementation of the new functions mbrtoc16, c16rtomb, mbrtoc32, and c32rtomb to come later. Updates for C23 to come later. PR lib/52374: <uchar.h> missing To generate a diff of this commit: cvs rdiff -u -r1.2467 -r1.2468 src/distrib/sets/lists/comp/mi cvs rdiff -u -r1.441 -r1.442 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.1329 -r1.1330 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.146 -r1.147 src/include/Makefile cvs rdiff -u -r0 -r1.1 src/include/uchar.h cvs rdiff -u -r1.15 -r1.16 src/tests/lib/libc/locale/Makefile cvs rdiff -u -r0 -r1.1 src/tests/lib/libc/locale/t_uchar.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/comp/mi diff -u src/distrib/sets/lists/comp/mi:1.2467 src/distrib/sets/lists/comp/mi:1.2468 --- src/distrib/sets/lists/comp/mi:1.2467 Mon Aug 5 13:06:38 2024 +++ src/distrib/sets/lists/comp/mi Thu Aug 15 13:14:43 2024 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.2467 2024/08/05 13:06:38 christos Exp $ +# $NetBSD: mi,v 1.2468 2024/08/15 13:14:43 riastradh Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. ./etc/mtree/set.comp comp-sys-root @@ -3679,6 +3679,7 @@ ./usr/include/tss/tss_typedef.h comp-c-include tpm ./usr/include/ttyent.h comp-c-include ./usr/include/tzfile.h comp-c-include +./usr/include/uchar.h comp-c-include ./usr/include/ucontext.h comp-c-include ./usr/include/ufs/ext2fs/ext2fs.h comp-c-include ./usr/include/ufs/ext2fs/ext2fs_dinode.h comp-c-include Index: src/distrib/sets/lists/debug/mi diff -u src/distrib/sets/lists/debug/mi:1.441 src/distrib/sets/lists/debug/mi:1.442 --- src/distrib/sets/lists/debug/mi:1.441 Fri Aug 9 23:24:15 2024 +++ src/distrib/sets/lists/debug/mi Thu Aug 15 13:14:44 2024 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.441 2024/08/09 23:24:15 bad Exp $ +# $NetBSD: mi,v 1.442 2024/08/15 13:14:44 riastradh Exp $ # ./etc/mtree/set.debug comp-sys-root ./usr/lib comp-sys-usr compatdir @@ -2070,6 +2070,7 @@ ./usr/libdata/debug/usr/tests/lib/libc/locale/t_sprintf.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libc/locale/t_strfmon.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libc/locale/t_toupper.debug tests-lib-debug debug,atf,compattestfile +./usr/libdata/debug/usr/tests/lib/libc/locale/t_uchar.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libc/locale/t_wcscoll.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libc/locale/t_wcscspn.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libc/locale/t_wcspbrk.debug tests-lib-debug debug,atf,compattestfile Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.1329 src/distrib/sets/lists/tests/mi:1.1330 --- src/distrib/sets/lists/tests/mi:1.1329 Fri Aug 9 23:24:15 2024 +++ src/distrib/sets/lists/tests/mi Thu Aug 15 13:14:44 2024 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1329 2024/08/09 23:24:15 bad Exp $ +# $NetBSD: mi,v 1.1330 2024/08/15 13:14:44 riastradh Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -3085,6 +3085,7 @@ ./usr/tests/lib/libc/locale/t_sprintf tests-lib-tests compattestfile,atf ./usr/tests/lib/libc/locale/t_strfmon tests-lib-tests compattestfile,atf ./usr/tests/lib/libc/locale/t_toupper tests-lib-tests compattestfile,atf +./usr/tests/lib/libc/locale/t_uchar tests-lib-tests compattestfile,atf ./usr/tests/lib/libc/locale/t_wcscoll tests-lib-tests compattestfile,atf ./usr/tests/lib/libc/locale/t_wcscspn tests-lib-tests compattestfile,atf ./usr/tests/lib/libc/locale/t_wcspbrk tests-lib-tests compattestfile,atf Index: src/include/Makefile diff -u src/include/Makefile:1.146 src/include/Makefile:1.147 --- src/include/Makefile:1.146 Tue Jun 4 15:07:55 2019 +++ src/include/Makefile Thu Aug 15 13:14:44 2024 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.146 2019/06/04 15:07:55 hannken Exp $ +# $NetBSD: Makefile,v 1.147 2024/08/15 13:14:44 riastradh Exp $ # @(#)Makefile 8.2 (Berkeley) 1/4/94 # Doing a make includes builds /usr/include @@ -21,6 +21,7 @@ INCS= a.out.h aio.h ar.h assert.h atomic string.h sgtty.h signal.h spawn.h stab.h stdalign.h stddef.h stdio.h \ stdlib.h stdnoreturn.h strings.h stringlist.h struct.h sysexits.h \ tar.h time.h ttyent.h tzfile.h \ + uchar.h \ ucontext.h ulimit.h unistd.h util.h utime.h utmp.h utmpx.h uuid.h \ vis.h wchar.h wctype.h wordexp.h INCS+= arpa/ftp.h arpa/inet.h arpa/nameser.h arpa/nameser_compat.h \ Index: src/tests/lib/libc/locale/Makefile diff -u src/tests/lib/libc/locale/Makefile:1.15 src/tests/lib/libc/locale/Makefile:1.16 --- src/tests/lib/libc/locale/Makefile:1.15 Wed Aug 14 23:32:31 2024 +++ src/tests/lib/libc/locale/Makefile Thu Aug 15 13:14:44 2024 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.15 2024/08/14 23:32:31 riastradh Exp $ +# $NetBSD: Makefile,v 1.16 2024/08/15 13:14:44 riastradh Exp $ .include <bsd.own.mk> @@ -15,6 +15,7 @@ TESTS_C+= t_mbtowc TESTS_C+= t_sprintf TESTS_C+= t_strfmon TESTS_C+= t_toupper +TESTS_C+= t_uchar TESTS_C+= t_wcscoll TESTS_C+= t_wcscspn TESTS_C+= t_wcspbrk Added files: Index: src/include/uchar.h diff -u /dev/null src/include/uchar.h:1.1 --- /dev/null Thu Aug 15 13:14:45 2024 +++ src/include/uchar.h Thu Aug 15 13:14:44 2024 @@ -0,0 +1,84 @@ +/* $NetBSD: uchar.h,v 1.1 2024/08/15 13:14:44 riastradh Exp $ */ + +/*- + * Copyright (c) 2024 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * C11, 7.28: Unicode utilities <uchar.h> + * + * `1. The header <uchar.h> declares types and functions for + * manipulating Unicode characters.' + */ + +#ifndef _UCHAR_H +#define _UCHAR_H + +#include <sys/ansi.h> + +/* + * `2. The types declared are mbstate_t (described in 7.30.1) and + * size_t (described in 7.19); + * + * char16_t + * + * which is an unsigned integer type used for 16-bit + * characters and is the same type as uint_least16_t + * (described in 7.20.1.2); and + * + * char32_t + * + * which is an unsigned integer type used for 32-bit + * characters and is the same type as uint_least32_t (also + * described in 7.20.1.2).' + */ + +#ifdef _BSD_MBSTATE_T_ +typedef _BSD_MBSTATE_T_ mbstate_t; +#undef _BSD_MBSTATE_T_ +#endif + +#ifdef _BSD_SIZE_T_ +typedef _BSD_SIZE_T_ size_t; +#undef _BSD_SIZE_T_ +#endif + +#if !defined(__cplusplus) || __cplusplus < 201103L +typedef __UINT_LEAST16_TYPE__ char16_t; +typedef __UINT_LEAST32_TYPE__ char32_t; +#endif + +__BEGIN_DECLS + +size_t mbrtoc16(char16_t *__restrict, const char *__restrict, size_t, + mbstate_t *__restrict); +size_t c16rtomb(char *__restrict, char16_t, mbstate_t *__restrict); +size_t mbrtoc32(char32_t *__restrict, const char *__restrict, size_t, + mbstate_t *__restrict); +size_t c32rtomb(char *__restrict, char32_t, mbstate_t *__restrict); + +__END_DECLS + +#endif /* _UCHAR_H */ Index: src/tests/lib/libc/locale/t_uchar.c diff -u /dev/null src/tests/lib/libc/locale/t_uchar.c:1.1 --- /dev/null Thu Aug 15 13:14:45 2024 +++ src/tests/lib/libc/locale/t_uchar.c Thu Aug 15 13:14:44 2024 @@ -0,0 +1,73 @@ +/* $NetBSD: t_uchar.c,v 1.1 2024/08/15 13:14:44 riastradh Exp $ */ + +/*- + * Copyright (c) 2024 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Include <uchar.h> first to verify it declares everything we need. + */ +#include <uchar.h> +typedef mbstate_t nbtest_mbstate_t; +typedef size_t nbtest_size_t; +typedef char16_t nbtest_char16_t; +typedef char32_t nbtest_char32_t; +static size_t (*nbtest_mbrtoc16)(char16_t *restrict, const char *restrict, + size_t, mbstate_t *restrict) __unused = &mbrtoc16; +static size_t (*nbtest_c16rtomb)(char *restrict, char16_t, + mbstate_t *restrict) __unused = &c16rtomb; +static size_t (*nbtest_mbrtoc32)(char32_t *restrict, const char *restrict, + size_t, mbstate_t *restrict) __unused = mbrtoc32; +static size_t (*nbtest_c32rtomb)(char *restrict, char32_t, + mbstate_t *restrict) __unused = &c32rtomb; + +#include <sys/cdefs.h> +__RCSID("$NetBSD: t_uchar.c,v 1.1 2024/08/15 13:14:44 riastradh Exp $"); + +#include <atf-c.h> +#include <stdint.h> + +ATF_TC(uchartypes); +ATF_TC_HEAD(uchartypes, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test <uchar.h> types are reasonable"); +} +ATF_TC_BODY(uchartypes, tc) +{ + + ATF_CHECK_EQ_MSG(sizeof(char16_t), sizeof(uint_least16_t), + "char16_t %zu, uint_least16_t %zu", + sizeof(char16_t), sizeof(uint_least16_t)); + ATF_CHECK_EQ_MSG(sizeof(char32_t), sizeof(uint_least32_t), + "char32_t %zu, uint_least32_t %zu", + sizeof(char32_t), sizeof(uint_least32_t)); +} + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, uchartypes); + return atf_no_error(); +}