Module Name: src
Committed By: martin
Date: Fri Oct 11 17:35:47 UTC 2024
Modified Files:
src/distrib/sets/lists/comp [netbsd-9]: mi
src/lib/libc/locale [netbsd-9]: Makefile.inc mbsrtowcs.3 wcsrtombs.3
Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1897):
lib/libc/locale/mbsrtowcs.3: revision 1.14
lib/libc/locale/mbsrtowcs.3: revision 1.15
lib/libc/locale/wcsrtombs.3: revision 1.14
lib/libc/locale/wcsrtombs.3: revision 1.15
lib/libc/locale/wcsrtombs.3: revision 1.16
distrib/sets/lists/comp/mi: revision 1.2473
lib/libc/locale/Makefile.inc: revision 1.68
lib/libc/locale/mbsrtowcs.3: revision 1.13
mbsnrtowcs(3), wcsnrtombs(3): Add man pages for these mouthfuls.
Based on patch drafted by abhinav@, with a little additional tidying
by me.
PR standards/52343: wcsnrtombs missing man-page
mbsnrtowcs(3), wcsnrtombs(3): brush ip markup
SYNOPSIS fixes, uppercase NUL and NULL
To generate a diff of this commit:
cvs rdiff -u -r1.2278.2.8 -r1.2278.2.9 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.64 -r1.64.28.1 src/lib/libc/locale/Makefile.inc
cvs rdiff -u -r1.12 -r1.12.48.1 src/lib/libc/locale/mbsrtowcs.3
cvs rdiff -u -r1.13 -r1.13.48.1 src/lib/libc/locale/wcsrtombs.3
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.2278.2.8 src/distrib/sets/lists/comp/mi:1.2278.2.9
--- src/distrib/sets/lists/comp/mi:1.2278.2.8 Sat Jul 20 16:57:51 2024
+++ src/distrib/sets/lists/comp/mi Fri Oct 11 17:35:46 2024
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.2278.2.8 2024/07/20 16:57:51 martin Exp $
+# $NetBSD: mi,v 1.2278.2.9 2024/10/11 17:35:46 martin Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
./etc/mtree/set.comp comp-sys-root
@@ -8390,6 +8390,7 @@
./usr/share/man/cat3/mbrlen.0 comp-c-catman .cat
./usr/share/man/cat3/mbrtowc.0 comp-c-catman .cat
./usr/share/man/cat3/mbsinit.0 comp-c-catman .cat
+./usr/share/man/cat3/mbsnrtowcs.0 comp-c-catman .cat
./usr/share/man/cat3/mbsrtowcs.0 comp-c-catman .cat
./usr/share/man/cat3/mbstowcs.0 comp-c-catman .cat
./usr/share/man/cat3/mbtowc.0 comp-c-catman .cat
@@ -10314,6 +10315,7 @@
./usr/share/man/cat3/wcsncmp.0 comp-c-catman .cat
./usr/share/man/cat3/wcsncpy.0 comp-c-catman .cat
./usr/share/man/cat3/wcsnlen.0 comp-c-catman .cat
+./usr/share/man/cat3/wcsnrtombs.0 comp-c-catman .cat
./usr/share/man/cat3/wcspbrk.0 comp-c-catman .cat
./usr/share/man/cat3/wcsrchr.0 comp-c-catman .cat
./usr/share/man/cat3/wcsrtombs.0 comp-c-catman .cat
@@ -16382,6 +16384,7 @@
./usr/share/man/html3/mbrlen.html comp-c-htmlman html
./usr/share/man/html3/mbrtowc.html comp-c-htmlman html
./usr/share/man/html3/mbsinit.html comp-c-htmlman html
+./usr/share/man/html3/mbsnrtowcs.html comp-c-htmlman html
./usr/share/man/html3/mbsrtowcs.html comp-c-htmlman html
./usr/share/man/html3/mbstowcs.html comp-c-htmlman html
./usr/share/man/html3/mbtowc.html comp-c-htmlman html
@@ -18283,6 +18286,7 @@
./usr/share/man/html3/wcsncmp.html comp-c-htmlman html
./usr/share/man/html3/wcsncpy.html comp-c-htmlman html
./usr/share/man/html3/wcsnlen.html comp-c-htmlman html
+./usr/share/man/html3/wcsnrtombs.html comp-c-htmlman html
./usr/share/man/html3/wcspbrk.html comp-c-htmlman html
./usr/share/man/html3/wcsrchr.html comp-c-htmlman html
./usr/share/man/html3/wcsrtombs.html comp-c-htmlman html
@@ -24379,6 +24383,7 @@
./usr/share/man/man3/mbrlen.3 comp-c-man .man
./usr/share/man/man3/mbrtowc.3 comp-c-man .man
./usr/share/man/man3/mbsinit.3 comp-c-man .man
+./usr/share/man/man3/mbsnrtowcs.3 comp-c-man .man
./usr/share/man/man3/mbsrtowcs.3 comp-c-man .man
./usr/share/man/man3/mbstowcs.3 comp-c-man .man
./usr/share/man/man3/mbtowc.3 comp-c-man .man
@@ -26322,6 +26327,7 @@
./usr/share/man/man3/wcsncmp.3 comp-c-man .man
./usr/share/man/man3/wcsncpy.3 comp-c-man .man
./usr/share/man/man3/wcsnlen.3 comp-c-man .man
+./usr/share/man/man3/wcsnrtombs.3 comp-c-man .man
./usr/share/man/man3/wcspbrk.3 comp-c-man .man
./usr/share/man/man3/wcsrchr.3 comp-c-man .man
./usr/share/man/man3/wcsrtombs.3 comp-c-man .man
Index: src/lib/libc/locale/Makefile.inc
diff -u src/lib/libc/locale/Makefile.inc:1.64 src/lib/libc/locale/Makefile.inc:1.64.28.1
--- src/lib/libc/locale/Makefile.inc:1.64 Sun Aug 18 20:03:48 2013
+++ src/lib/libc/locale/Makefile.inc Fri Oct 11 17:35:46 2024
@@ -1,5 +1,5 @@
# from: @(#)Makefile.inc 5.1 (Berkeley) 2/18/91
-# $NetBSD: Makefile.inc,v 1.64 2013/08/18 20:03:48 joerg Exp $
+# $NetBSD: Makefile.inc,v 1.64.28.1 2024/10/11 17:35:46 martin Exp $
# locale sources
.PATH: ${ARCHDIR}/locale ${.CURDIR}/locale
@@ -52,4 +52,7 @@ MLINKS+=wcstod.3 wcstof.3 wcstod.3 wcsto
MLINKS+=wcstol.3 wcstoll.3 wcstol.3 wcstoimax.3 \
wcstol.3 wcstoul.3 wcstol.3 wcstoull.3 wcstol.3 wcstoumax.3
+MLINKS+=mbsrtowcs.3 mbsnrtowcs.3
+MLINKS+=wcsrtombs.3 wcsnrtombs.3
+
COPTS.wcsftime.c = -Wno-format-nonliteral
Index: src/lib/libc/locale/mbsrtowcs.3
diff -u src/lib/libc/locale/mbsrtowcs.3:1.12 src/lib/libc/locale/mbsrtowcs.3:1.12.48.1
--- src/lib/libc/locale/mbsrtowcs.3:1.12 Thu Dec 16 17:42:27 2010
+++ src/lib/libc/locale/mbsrtowcs.3 Fri Oct 11 17:35:46 2024
@@ -1,4 +1,4 @@
-.\" $NetBSD: mbsrtowcs.3,v 1.12 2010/12/16 17:42:27 wiz Exp $
+.\" $NetBSD: mbsrtowcs.3,v 1.12.48.1 2024/10/11 17:35:46 martin Exp $
.\"
.\" Copyright (c)2002 Citrus Project,
.\" All rights reserved.
@@ -24,12 +24,13 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd February 4, 2002
+.Dd September 9, 2024
.Dt MBSRTOWCS 3
.Os
.\" ----------------------------------------------------------------------
.Sh NAME
-.Nm mbsrtowcs
+.Nm mbsrtowcs ,
+.Nm mbsrntowcs
.Nd converts a multibyte character string to a wide-character string \
(restartable)
.\" ----------------------------------------------------------------------
@@ -37,15 +38,32 @@
.Lb libc
.\" ----------------------------------------------------------------------
.Sh SYNOPSIS
+.
.In wchar.h
+.
.Ft size_t
-.Fn mbsrtowcs "wchar_t * restrict pwcs" "const char ** restrict s" "size_t n" \
-"mbstate_t * restrict ps"
+.Fo mbsrtowcs
+.Fa "wchar_t * restrict pwcs"
+.Fa "const char ** restrict s"
+.Fa "size_t n"
+.Fa "mbstate_t * restrict ps"
+.Fc
+.
+.Ft size_t
+.Fo mbsnrtowcs
+.Fa "wchar_t * restrict pwcs"
+.Fa "const char ** restrict s"
+.Fa "size_t nmc"
+.Fa "size_t n"
+.Fa "mbstate_t * restrict ps"
+.Fc
+.
.\" ----------------------------------------------------------------------
.Sh DESCRIPTION
The
.Fn mbsrtowcs
-converts the multibyte character string indirectly pointed to by
+function converts the multibyte character string indirectly pointed to
+by
.Fa s
to the corresponding wide-character string, and stores it in the
array pointed to by
@@ -53,8 +71,8 @@ array pointed to by
The conversion stops due to the following reasons:
.Bl -bullet
.It
-The conversion reaches a nul byte.
-In this case, the nul byte is also converted.
+The conversion reaches a NUL byte.
+In this case, the NUL byte is also converted.
.It
The
.Fn mbsrtowcs
@@ -72,17 +90,18 @@ is continuously called.
After conversion,
if
.Fa pwcs
-is not a null pointer,
+is not a NULL pointer,
the pointer object pointed to by
.Fa s
-is a null pointer (if the conversion is stopped due to reaching a
-nul byte) or the first byte of the character just after the last
-character converted.
+is a NULL pointer
+.Pq if the conversion is stopped due to reaching a NUL byte
+or the first byte of the character just after the last character
+converted.
.Pp
If
.Fa pwcs
-is not a null pointer and the conversion is stopped due to reaching
-a nul byte, the
+is not a NULL pointer and the conversion is stopped due to reaching
+a NUL byte, the
.Fn mbsrtowcs
places the state object pointed to by
.Fa ps
@@ -95,10 +114,12 @@ is affected by the
category of the current locale.
.Pp
These are the special cases:
-.Bl -tag -width 012345678901
-.It "s == NULL || *s == NULL"
+.Bl -tag -width Li
+.
+.It Li "s == NULL || *s == NULL"
Undefined (may cause the program to crash).
-.It "pwcs == NULL"
+.
+.It Li "pwcs == NULL"
The conversion has taken place, but the resulting wide-character string
was discarded.
In this case, the pointer object pointed to by
@@ -106,7 +127,8 @@ In this case, the pointer object pointed
is not modified and
.Fa n
is ignored.
-.It "ps == NULL"
+.
+.It Li "ps == NULL"
The
.Fn mbsrtowcs
uses its own internal state object to keep the conversion state,
@@ -120,16 +142,28 @@ never changes the internal state of
.Fn mbsrtowcs ,
which is initialized at startup time of the program.
.El
+.Pp
+The
+.Fn mbsnrtowcs
+function behaves identically to
+.Fn mbsrtowcs ,
+except that the conversion stops after reading at most
+.Fa nmc
+characters from the buffer pointed to by
+.Fa s .
.\" ----------------------------------------------------------------------
.Sh RETURN VALUES
+The
.Fn mbsrtowcs
-returns:
-.Bl -tag -width 012345678901
-.It 0 or positive
+and
+.Fn mbsnrtowcs
+functions return:
+.Bl -tag -width Li
+.It Li 0 , No or positive
The value returned is the number of elements stored in the array
pointed to by
.Fa pwcs ,
-except for a terminating nul wide character (if any).
+except for a terminating NUL wide character (if any).
If
.Fa pwcs
is not
@@ -138,12 +172,12 @@ and the value returned is equal to
.Fa n ,
the wide-character string pointed to by
.Fa pwcs
-is not nul-terminated.
+is not NUL-terminated.
If
.Fa pwcs
-is a null pointer, the value returned is the number of elements to contain
-the whole string converted, except for a terminating nul wide character.
-.It (size_t)-1
+is a NULL pointer, the value returned is the number of elements to contain
+the whole string converted, except for a terminating NUL wide character.
+.It Li "(size_t)-1"
The array indirectly pointed to by
.Fa s
contains a byte sequence forming invalid character.
@@ -155,13 +189,16 @@ to indicate the error.
.El
.\" ----------------------------------------------------------------------
.Sh ERRORS
+The
.Fn mbsrtowcs
-may cause an error in the following case:
+and
+.Fn mbsnrtowcs
+functions may fail with the following errors:
.Bl -tag -width Er
.It Bq Er EILSEQ
-The pointer pointed to by
.Fa s
-points to an invalid or incomplete multibyte character.
+points to a string containing an invalid or incomplete multibyte
+character.
.It Bq Er EINVAL
.Fa ps
points to an invalid or uninitialized mbstate_t object.
@@ -177,5 +214,12 @@ The
.Fn mbsrtowcs
function conforms to
.St -isoC-amd1 .
-The restrict qualifier is added at
+The
+.Li restrict
+qualifier was added by
.St -isoC-99 .
+.Pp
+The
+.Fn mbsnrtowcs
+function conforms to
+.St -p1003.1-2008 .
Index: src/lib/libc/locale/wcsrtombs.3
diff -u src/lib/libc/locale/wcsrtombs.3:1.13 src/lib/libc/locale/wcsrtombs.3:1.13.48.1
--- src/lib/libc/locale/wcsrtombs.3:1.13 Thu Dec 16 17:42:27 2010
+++ src/lib/libc/locale/wcsrtombs.3 Fri Oct 11 17:35:46 2024
@@ -1,4 +1,4 @@
-.\" $NetBSD: wcsrtombs.3,v 1.13 2010/12/16 17:42:27 wiz Exp $
+.\" $NetBSD: wcsrtombs.3,v 1.13.48.1 2024/10/11 17:35:46 martin Exp $
.\"
.\" Copyright (c)2002 Citrus Project,
.\" All rights reserved.
@@ -24,12 +24,13 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd August 8, 2006
+.Dd August 27, 2017
.Dt WCSRTOMBS 3
.Os
.\" ----------------------------------------------------------------------
.Sh NAME
-.Nm wcsrtombs
+.Nm wcsrtombs ,
+.Nm wcsnrtombs
.Nd converts a wide-character string to a multibyte character string \
(restartable)
.\" ----------------------------------------------------------------------
@@ -37,16 +38,31 @@
.Lb libc
.\" ----------------------------------------------------------------------
.Sh SYNOPSIS
+.
.In wchar.h
+.
.Ft size_t
-.Fn wcsrtombs "char * restrict s" "const wchar_t ** restrict pwcs" \
-"size_t n" "mbstate_t * restrict ps"
+.Fo wcsrtombs
+.Fa "char * restrict s"
+.Fa "const wchar_t ** restrict pwcs"
+.Fa "size_t n" "mbstate_t * restrict ps"
+.Fc
+.
+.Ft size_t
+.Fo wcsnrtombs
+.Fa "char * restrict s"
+.Fa "const wchar_t ** restrict pwcs"
+.Fa "size_t nwc"
+.Fa "size_t n"
+.Fa "mbstat_t * restrict ps"
+.Fc
+.
.\" ----------------------------------------------------------------------
.Sh DESCRIPTION
The
.Fn wcsrtombs
-converts the nul-terminated wide-character string indirectly pointed
-to by
+function converts the NUL-terminated wide-character string indirectly
+pointed to by
.Fa pwcs
to the corresponding multibyte character string,
and stores it in the array pointed to by
@@ -54,8 +70,8 @@ and stores it in the array pointed to by
The conversion stops due to the following reasons:
.Bl -bullet
.It
-The conversion reaches a nul wide character.
-In this case, the nul wide character is also converted.
+The conversion reaches a NUL wide character.
+In this case, the NUL wide character is also converted.
.It
The
.Fn wcsrtombs
@@ -76,41 +92,42 @@ will not be affected.
After conversion,
if
.Fa s
-is not a null pointer, the pointer object pointed to by
+is not a NULL pointer, the pointer object pointed to by
.Fa pwcs
-is a null pointer (if the conversion is stopped due to reaching a
-nul wide character) or the first byte of the character just after
-the last character converted.
+is a NULL pointer
+.Pq if the conversion is stopped due to reaching a NUL wide character
+or points to the first byte of the character just after the last
+character converted.
.Pp
If
.Fa s
-is not a null pointer and the conversion is stopped due to reaching
-a nul wide character,
+is not a NULL pointer and the conversion is stopped due to reaching
+a NUL wide character,
.Fn wcsrtombs
places the state object pointed to by
.Fa ps
to an initial state after the conversion is taken place.
.Pp
-The behaviour of
+The behavior of
.Fn wcsrtombs
is affected by the
.Dv LC_CTYPE
category of the current locale.
.Pp
These are the special cases:
-.Bl -tag -width 012345678901
-.It "s == NULL"
+.Bl -tag -width Li
+.It Li "s == NULL"
.Fn wcsrtombs
returns the number of bytes to store the whole multibyte character string
corresponding to the wide-character string pointed to by
.Fa pwcs ,
-not including the terminating nul byte.
+not including the terminating NUL byte.
In this case,
.Fa n
is ignored.
-.It "pwcs == NULL || *pwcs == NULL"
+.It Li "pwcs == NULL || *pwcs == NULL"
Undefined (may cause the program to crash).
-.It "ps == NULL"
+.It Li "ps == NULL"
.Fn wcsrtombs
uses its own internal state object to keep the conversion state,
instead of
@@ -124,26 +141,40 @@ state of
.Fn wcsrtombs ,
which is initialized at startup time of the program.
.El
+.Pp
+The
+.Fn wcsnrtombs
+function behaves identically to
+.Fn wcsrtombs ,
+except that the conversion stops after reading at most
+.Fa nwc
+characters from the buffer pointed to by
+.Fa pwcs .
.\" ----------------------------------------------------------------------
.Sh RETURN VALUES
+The
.Fn wcsrtombs
-returns:
-.Bl -tag -width 012345678901
-.It 0 or positive
+and
+.Fn wcsnrtombs
+functions return:
+.Bl -tag -width Li
+.It Li 0 , No or positive
Number of bytes stored in the array pointed to by
.Fa s ,
-except for a nul byte.
+except for a NUL byte.
There are no cases that the value returned is greater than
.Fa n
-(unless
+.Po
+unless
.Fa s
-is a null pointer).
+is a NULL pointer
+.Pc .
If the return value is equal to
.Fa n ,
the string pointed to by
.Fa s
-will not be nul-terminated.
-.It (size_t)-1
+will not be NUL-terminated.
+.It Li "(size_t)-1"
.Fa pwcs
points to a string containing an invalid wide character.
The
@@ -154,12 +185,20 @@ to indicate the error.
.El
.\" ----------------------------------------------------------------------
.Sh ERRORS
+The
.Fn wcsrtombs
-may cause an error in the following case:
+and
+.Fn wcsnrtombs
+functions may fail with the following errors:
.Bl -tag -width Er
.It Bq Er EILSEQ
.Fa pwcs
points to a string containing an invalid wide character.
+.It Bq Er EINVAL
+.Fa ps
+points to an invalid or uninitialized
+.Vt mbstate_t
+object.
.El
.\" ----------------------------------------------------------------------
.Sh SEE ALSO
@@ -172,5 +211,12 @@ The
.Fn wcsrtombs
function conforms to
.St -ansiC .
-The restrict qualifier is added at
+The
+.Li restrict
+qualifier was added by
.St -isoC-99 .
+.Pp
+The
+.Fn wcsnrtombs
+function conforms to
+.St -p1003.1-2008 .