Module Name: src Committed By: uwe Date: Fri Aug 16 18:35:19 UTC 2024
Modified Files: src/lib/libc/locale: c8rtomb.3 mbrtoc8.3 Log Message: c8rtomb(3), mbrtoc8(3): brush up markup To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/lib/libc/locale/c8rtomb.3 \ src/lib/libc/locale/mbrtoc8.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/locale/c8rtomb.3 diff -u src/lib/libc/locale/c8rtomb.3:1.1 src/lib/libc/locale/c8rtomb.3:1.2 --- src/lib/libc/locale/c8rtomb.3:1.1 Thu Aug 15 21:19:45 2024 +++ src/lib/libc/locale/c8rtomb.3 Fri Aug 16 18:35:19 2024 @@ -1,4 +1,4 @@ -.\" $NetBSD: c8rtomb.3,v 1.1 2024/08/15 21:19:45 riastradh Exp $ +.\" $NetBSD: c8rtomb.3,v 1.2 2024/08/16 18:35:19 uwe Exp $ .\" .\" Copyright (c) 2024 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -36,11 +36,15 @@ .Lb libc .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh SYNOPSIS +. .In uchar.h +. .Ft size_t -.Fn c8rtomb "char * restrict s" \ -"char8_t c8" \ -"mbstate_t * restrict ps" +.Fo c8rtomb +.Fa "char * restrict s" +.Fa "char8_t c8" +.Fa "mbstate_t * restrict ps" +.Fc .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh DESCRIPTION The @@ -93,23 +97,23 @@ NUL-terminate it, and print it: char8_t c8[] = { 0xf0, 0x9f, 0x92, 0xa9 }; char buf[__arraycount(c8)*MB_CUR_MAX + 1], *s = buf; size_t i; -mbstate_t mbs = {0}; /* initial conversion state */ +mbstate_t mbs = {0}; /* initial conversion state */ for (i = 0; i < __arraycount(c8); i++) { - size_t len; + size_t len; - len = c8rtomb(s, c8[i], &mbs); - if (len == (size_t)-1) - err(1, "c8rtomb"); - assert(len < sizeof(buf) - (s - buf)); - s += len; + len = c8rtomb(s, c8[i], &mbs); + if (len == (size_t)-1) + err(1, "c8rtomb"); + assert(len < sizeof(buf) - (s - buf)); + s += len; } -*s = '\e0'; /* NUL-terminate */ +*s = '\e0'; /* NUL-terminate */ printf("%s\en", buf); .Ed .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh ERRORS -.Bl -tag -width ".Bq Er EILSEQ" +.Bl -tag -width Bq .It Bq Er EILSEQ A surrogate code point was passed as .Fa c8 @@ -177,7 +181,7 @@ in the standard which suggests that pass should unconditionally store a null byte and reset .Fa ps to the initial conversion state: -.Bd -offset indent +.Bd -filled -offset indent If .Fa c8 is a null character, a null byte is stored, preceded by any shift Index: src/lib/libc/locale/mbrtoc8.3 diff -u src/lib/libc/locale/mbrtoc8.3:1.1 src/lib/libc/locale/mbrtoc8.3:1.2 --- src/lib/libc/locale/mbrtoc8.3:1.1 Thu Aug 15 21:19:45 2024 +++ src/lib/libc/locale/mbrtoc8.3 Fri Aug 16 18:35:19 2024 @@ -1,4 +1,4 @@ -.\" $NetBSD: mbrtoc8.3,v 1.1 2024/08/15 21:19:45 riastradh Exp $ +.\" $NetBSD: mbrtoc8.3,v 1.2 2024/08/16 18:35:19 uwe Exp $ .\" .\" Copyright (c) 2024 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -36,12 +36,16 @@ .Lb libc .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh SYNOPSIS +. .In uchar.h +. .Ft size_t -.Fn mbrtoc8 "char8_t * restrict pc8" \ -"const char * restrict s" \ -"size_t n" \ -"mbstate_t * restrict ps" +.Fo mbrtoc8 +.Fa "char8_t * restrict pc8" +.Fa "const char * restrict s" +.Fa "size_t n" +.Fa "mbstate_t * restrict ps" +.Fc .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh DESCRIPTION The @@ -157,13 +161,16 @@ uses an internal .Vt mbstate_t object with static storage duration, distinct from all other .Vt mbstate_t -objects (including those used by +objects +.Po +including those used by .Xr mbrtoc16 3 , .Xr mbrtoc32 3 , .Xr c8rtomb 3 , .Xr c16rtomb 3 , and -.Xr c32rtomb 3 ) , +.Xr c32rtomb 3 +.Pc , which is initialized at program startup to the initial conversion state. .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -171,20 +178,20 @@ state. The .Nm function returns: -.Bl -tag -width ".Li (size_t)-3" -offset indent +.Bl -tag -width Li .It Li 0 -[null] +.Bq null if within the next .Fa n bytes at .Fa s the first multibyte character is null. -.It Fa i -[code unit] +.It Ar i +.Bq code unit where .Li 0 \*(Le -.Fa i +.Ar i \*(Le .Fa n , if either @@ -194,12 +201,12 @@ is in the initial conversion state or th with .Fa ps had not yielded an incomplete UTF-8 code unit, and within the first -.Fa i +.Ar i bytes at .Fa s a Unicode scalar value was decoded. .It Li (size_t)-3 -[continuation] +.Bq continuation if the previous call to .Nm with @@ -208,7 +215,7 @@ had yielded an incomplete UTF-8 code uni outside the US-ASCII range; no additional input is consumed in this case. .It Li (size_t)-2 -[incomplete] +.Bq incomplete if either .Fa ps is in the initial conversion state or the previous call to @@ -222,7 +229,7 @@ bytes at including any previously buffered input, no complete Unicode scalar value could be decoded. .It Li (size_t)-1 -[error] +.Bq error if any encoding error was detected; .Xr errno 2 is set to reflect the error. @@ -233,37 +240,37 @@ Print the UTF-8 code units of a multibyt .Bd -literal -offset indent char *s = ...; size_t n = ...; -mbstate_t mbs = {0}; /* initial conversion state */ +mbstate_t mbs = {0}; /* initial conversion state */ while (n) { - char8_t c8; - size_t len; + char8_t c8; + size_t len; - len = mbrtoc8(&c8, s, n, &mbs); - switch (len) { - case 0: /* null terminator */ - assert(c8 == '\e0'); - goto out; - default: /* consumed input and yielded a byte c8 */ - printf("0x%02hhx\en", c8); - break; - case (size_t)-3: /* yielded a pending byte c8 */ - printf("continue 0x%02hhx\en", c8); - break; - case (size_t)-2: /* incomplete */ - printf("incomplete\en"); - goto readmore; - case (size_t)-1: /* error */ - printf("error: %d\en", errno); - goto out; - } - s += len; - n -= len; + len = mbrtoc8(&c8, s, n, &mbs); + switch (len) { + case 0: /* null terminator */ + assert(c8 == '\e0'); + goto out; + default: /* consumed input and yielded a byte c8 */ + printf("0x%02hhx\en", c8); + break; + case (size_t)-3: /* yielded a pending byte c8 */ + printf("continue 0x%02hhx\en", c8); + break; + case (size_t)-2: /* incomplete */ + printf("incomplete\en"); + goto readmore; + case (size_t)-1: /* error */ + printf("error: %d\en", errno); + goto out; + } + s += len; + n -= len; } .Ed .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh ERRORS -.Bl -tag -width ".Bq Er EILSEQ" +.Bl -tag -width Bq .It Bq Er EILSEQ The multibyte sequence cannot be decoded as a Unicode scalar value. .It Bq Er EIO