Module Name:    src
Committed By:   rillig
Date:           Thu Feb  1 22:18:34 UTC 2024

Modified Files:
        src/lib/libutil: snprintb.3

Log Message:
snprintb.3: fix examples, clean up wording

In the examples using hex escape sequences, there must be a delimiter
between the escape sequence and the following description if the
description starts with [A-Fa-f], as hex escape sequences are not
limited in length.

Distinguish between a 'directive' (bit + length + description) and a
'description' (only the text).

The fmt parameter is not a string, as strings only reach to the first
'\0' byte, but the new-style format may include additional '\0' as bit
numbers.


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/lib/libutil/snprintb.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/libutil/snprintb.3
diff -u src/lib/libutil/snprintb.3:1.29 src/lib/libutil/snprintb.3:1.30
--- src/lib/libutil/snprintb.3:1.29	Mon Jan 22 00:11:21 2024
+++ src/lib/libutil/snprintb.3	Thu Feb  1 22:18:34 2024
@@ -1,4 +1,4 @@
-.\"     $NetBSD: snprintb.3,v 1.29 2024/01/22 00:11:21 uwe Exp $
+.\"     $NetBSD: snprintb.3,v 1.30 2024/02/01 22:18:34 rillig Exp $
 .\"
 .\" Copyright (c) 1998 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -27,7 +27,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd January 21, 2024
+.Dd February 1, 2024
 .Dt SNPRINTB 3
 .Os
 .Sh NAME
@@ -56,7 +56,7 @@ into the buffer
 of size
 .Fa buflen ,
 using a specified radix and an interpretation of
-the bits within that integer as though they were flags.
+the bits within that integer as though they were flags or groups of bits.
 The buffer is always
 .Tn NUL Ns -terminated.
 If the buffer
@@ -98,7 +98,7 @@ additional
 character
 .Pq or, if you prefer, a zero-length string .
 .Pp
-The decoding directive string
+The decoding directive in
 .Fa fmt
 describes how the bitfield is to be interpreted and displayed.
 It follows two possible syntaxes, referred to as
@@ -113,7 +113,9 @@ The first character of
 .Fa fmt
 may be
 .Ql \e177 ,
-indicating that the remainder of the format string follows the
+indicating that the remainder of the
+.Fa fmt
+argument follows the
 .Dq new
 syntax.
 The second character
@@ -131,18 +133,17 @@ and
 .Ql \e20
 .Pq hexadecimal .
 .Pp
-The remaining characters in
+The remaining characters in the
 .Fa fmt
-are interpreted as a list of bit-position\(endescription pairs.
-From here the syntaxes diverge.
+argument are interpreted as a list of formatting directives.
 .
 .Ss Old Syntax
 .Pp
 The
 .Dq old
-format syntax is series of bit-position\(endescription pairs.
+format syntax is a series of bit-position\(endescription pairs.
 .Pp
-Each description begins with a binary character value that represents
+Each directive begins with a binary character value that represents
 the position of the bit being described.
 .Pp
 .Sy NB :
@@ -164,17 +165,19 @@ The old syntax is limited to 32-bit valu
 The remaining characters are the description to print should the bit
 being described be set.
 .Pp
-Description strings are delimited by the next bit position value character
+Descriptions are delimited by the next bit position value character
 encountered
 .Pq distinguishable by its value being \*[Le] 32 ,
-or the end of the decoding directive string itself.
+or by the end of the format string itself.
 .
 .Ss New Syntax
 .Pp
 For the
 .Dq new
-format syntax, a field description begins with a field type followed
-by a binary field position and possibly a field length.
+format syntax,
+a formatting directive begins with a field type
+followed by a binary field position and possibly a field length,
+followed by a description.
 The bit positions are 0-based,
 the least significant bit is bit-position zero.
 Each description is terminated by a
@@ -188,7 +191,7 @@ Describes a single bit at bit-position
 .Ar B .
 The remaining characters are the description to print should the bit
 being described be set.
-This field description is similar in function to the old format.
+This field directive is similar in function to the old format.
 When converting old formats to the new syntax don't forget that the
 new syntax uses zero-based bit positions.
 .
@@ -202,8 +205,9 @@ followed by
 .Ql \&=
 and the value of the field.
 The value of the field is printed in the base specified as the second
-character of the decoding directive string
-.Ar fmt .
+character of the
+.Ar fmt
+argument.
 .
 .It Cm F\e Ns Ar B Ns Cm \e Ns Ar L
 Describes a multi-bit field like
@@ -224,7 +228,7 @@ directive is compared to the byte value
 .Pq for values 0 through 255 .
 If they are equal,
 .Ql \&=
-followed by the string following
+followed by the description string following
 .Ar V
 is printed.
 This and the
@@ -240,7 +244,7 @@ directive, but omits the leading
 .It Cm * Ns Ar FMT
 This provides a
 .Dq default
-case that prints the extracted field value using
+case that prints the extracted field value using the
 .Xr printf 3
 format
 .Ar FMT
@@ -256,7 +260,7 @@ format specification that prints the val
 did not match, since the field can be more than 32 bits wide.
 .El
 .Pp
-The new format string is terminated by an additional
+The new format is terminated by an additional
 .Tn NUL
 character at the end, following that delimiting the last
 bit-position\(endescription pair.
@@ -269,7 +273,7 @@ The
 .Fn snprintb
 and
 .Fn snprintb_m
-functions return the number of bytes that would have written to the buffer
+functions return the number of bytes that they would have written to the buffer
 if there was adequate space, excluding the final terminating NUL, or \-1 in
 case an error occurred.
 For
@@ -284,10 +288,10 @@ snprintb(buf, buflen, "\e10\e2BITTWO\e1B
 
 snprintb(buf, buflen,
     "\e20"
-    "\ex10NOTBOOT" "\ex0fFPP" "\ex0eSDVMA"
-    "\ex0cVIDEO" "\ex0bLORES" "\ex0aFPA" "\ex09DIAG"
-    "\ex07CACHE" "\ex06IOCACHE" "\ex05LOOPBACK"
-    "\ex04DBGCACHE",
+    "\ex10NOTBOOT" "\ex0f""FPP" "\ex0eSDVMA"
+    "\ex0cVIDEO" "\ex0bLORES" "\ex0a""FPA" "\ex09""DIAG"
+    "\ex07""CACHE" "\ex06IOCACHE" "\ex05LOOPBACK"
+    "\ex04""DBGCACHE",
     0xe860)
 \(rA "0xe860<NOTBOOT,FPP,SDVMA,VIDEO,CACHE,IOCACHE>"
 .Ed
@@ -298,7 +302,7 @@ snprintb(buf, buflen,
     "\e177\e020"
     "b\e0LSB\e0" "b\e1BITONE\e0"
     "f\e4\e4NIBBLE2\e0"
-    "f\ex10\e4BURST\e0" "=\e4FOUR\e0" "=\exfFIFTEEN\e0"
+    "f\ex10\e4BURST\e0" "=\e4FOUR\e0" "=\exf""FIFTEEN\e0"
     "b\ex1fMSB\e0",
     0x800f0701)
 \(rA "0x800f0701<LSB,NIBBLE2=0x0,BURST=0xf=FIFTEEN,MSB>"
@@ -309,7 +313,7 @@ The same example using snprintb_m:
 snprintb_m(buf, buflen,
     "\e177\e020"
     "b\e0LSB\e0" "b\e1BITONE\e0" "f\e4\e4NIBBLE2\e0"
-    "f\ex10\e4BURST\e0" "=\e4FOUR\e0" "=\exfFIFTEEN\e0"
+    "f\ex10\e4BURST\e0" "=\e4FOUR\e0" "=\exf""FIFTEEN\e0"
     "b\ex1fMSB\e0",
     0x800f0701, 34)
 \(rA "0x800f0701<LSB,NIBBLE2=0x0>\e0"
@@ -380,7 +384,17 @@ snprintb(buf, buflen, MAP_FMT, 0x2e00000
 will fail if:
 .Bl -tag -width Er
 .It Bq Er EINVAL
-The leading character does not describe a supported format,
+The leading character
+.Po for the
+.Dq old
+format
+.Pc
+or the second character
+.Po for the
+.Dq new
+format
+.Pc
+does not describe a supported numeral base,
 or
 .Fn snprintf
 failed.

Reply via email to