I noticed that vis(3) talks about "NUL terminated" strings, whereas almost other sources (including e.g. strlcat(3), strtok(3), strpbrk(3)) talk about "NUL-terminated" strings (i.e. with a hyphen.)
The following patch fixes this. Joachim Index: vis.3 =================================================================== RCS file: /usr/cvs/src/src/lib/libc/gen/vis.3,v retrieving revision 1.24 diff -u -p -r1.24 vis.3 --- vis.3 31 May 2007 19:19:29 -0000 1.24 +++ vis.3 22 Apr 2010 09:10:09 -0000 @@ -57,7 +57,7 @@ a string which represents the character If .Fa c needs no encoding, it is copied in unaltered. -The string is NUL terminated and a pointer to the end of the string is +The string is NUL-terminated and a pointer to the end of the string is returned. The maximum length of any encoding is four characters (not including the trailing NUL); @@ -107,7 +107,7 @@ characters from .Fa src (this is useful for encoding a block of data that may contain NULs). -All three forms NUL terminate +All three forms NUL-terminate .Fa dst , except for .Fn strnvis