aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx.manpages@gmail.com>2022-08-26 22:48:26 +0200
committerAlejandro Colomar <alx@kernel.org>2022-11-10 00:44:59 +0100
commit1eed67e75deff662dffce3195e55e608809eaafd (patch)
treec17d52fa109792e24b551c519856d68a0fe67b28
parent6bb53a30af9960b30ca58bb62002da926f853c81 (diff)
downloadman-pages-1eed67e75deff662dffce3195e55e608809eaafd.tar.gz
Various pages: SYNOPSIS: Use VLA syntax in function parameters
The WG14 charter for C23 added one principle to the ones in previous standards: [ 15. Application Programming Interfaces (APIs) should be self-documenting when possible. In particular, the order of parameters in function declarations should be arranged such that the size of an array appears before the array. The purpose is to allow Variable-Length Array (VLA) notation to be used. This not only makes the code's purpose clearer to human readers, but also makes static analysis easier. Any new APIs added to the Standard should take this into consideration. ] ISO C doesn't allow using VLA syntax when the parameter used for the size of the array is declared _after_ the parameter that is a VLa. That's a minor issue that could be easily changed in the language without backwards-compatibility issues, and in fact it seems to have been proposed, and not yet discarded, even if it's not going to change in C23. Since the manual pages SYNOPSIS are not bounded by strict C legal syntax, but we already use some "tricks" to try to convey the most information to the reader even if it might not be the most legal syntax, we can also make a small compromise in this case, using illegal syntax (at least not yet legalized) to add important information to the function prototypes. If we're lucky, compiler authors, and maybe even WG14 members, may be satisfied by the syntax used in these manual pages, and may decide to implement this feature to the language. It seems to me a sound syntax that isn't ambiguous, even if it deviates from the common pattern in C that declarations _always_ come before use. But it's a reasonable tradeoff. This change will make the contract between the programmer and the implementation clearer just by reading a prototype. For example, size_t strlcpy(char *restrict dst, const char *restrict src, size_t size); vs size_t strlcpy(char dst[restrict .size], const char *restrict src, size_t size); the second prototype above makes it clear that the 'dst' buffer will be safe from overflow, but the 'src' one clearly needs to be NUL-terminated, or it might cause UB, since nothing tells the function how long it is. Link: <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2611.htm> Cc: Ingo Schwarze <schwarze@openbsd.org> Cc: JeanHeyd Meneide <wg14@soasis.org> Cc: Martin Uecker <uecker@tugraz.at> Cc: <gcc@gcc.gnu.org> Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
-rw-r--r--man3/confstr.32
-rw-r--r--man3/des_crypt.36
-rw-r--r--man3/fgetc.33
-rw-r--r--man3/fgetws.32
-rw-r--r--man3/getcwd.32
-rw-r--r--man3/getdirentries.33
-rw-r--r--man3/getgrent_r.34
-rw-r--r--man3/getgrnam.34
-rw-r--r--man3/gethostbyname.38
-rw-r--r--man3/getlogin.32
-rw-r--r--man3/getmntent.32
-rw-r--r--man3/getnameinfo.36
-rw-r--r--man3/getnetent_r.36
-rw-r--r--man3/getprotoent_r.36
-rw-r--r--man3/getpwent_r.34
-rw-r--r--man3/getpwnam.38
-rw-r--r--man3/getrpcent_r.36
-rw-r--r--man3/getservent_r.36
-rw-r--r--man3/getspnam.312
-rw-r--r--man3/inet_net_pton.32
-rw-r--r--man3/inet_ntop.32
-rw-r--r--man3/mblen.32
-rw-r--r--man3/mbrlen.32
-rw-r--r--man3/mbrtowc.35
-rw-r--r--man3/mbsnrtowcs.32
-rw-r--r--man3/mbsrtowcs.32
-rw-r--r--man3/mbstowcs.33
-rw-r--r--man3/mbtowc.34
-rw-r--r--man3/mempcpy.36
-rw-r--r--man3/mq_receive.35
-rw-r--r--man3/mq_send.34
-rw-r--r--man3/printf.34
-rw-r--r--man3/pthread_setname_np.33
-rw-r--r--man3/ptsname.34
-rw-r--r--man3/random.32
-rw-r--r--man3/random_r.33
-rw-r--r--man3/regex.37
-rw-r--r--man3/resolver.334
-rw-r--r--man3/rpc.32
-rw-r--r--man3/setaliasent.36
-rw-r--r--man3/setbuf.34
-rw-r--r--man3/setnetgrent.32
-rw-r--r--man3/stpncpy.35
-rw-r--r--man3/strcasecmp.33
-rw-r--r--man3/strcat.35
-rw-r--r--man3/strcmp.32
-rw-r--r--man3/strcpy.35
-rw-r--r--man3/strdup.34
-rw-r--r--man3/strerror.34
-rw-r--r--man3/strfmon.35
-rw-r--r--man3/strfromd.36
-rw-r--r--man3/strftime.34
-rw-r--r--man3/string.326
-rw-r--r--man3/strnlen.32
-rw-r--r--man3/strxfrm.33
-rw-r--r--man3/ttyname.32
-rw-r--r--man3/unlocked_stdio.34
-rw-r--r--man3/wcpncpy.34
-rw-r--r--man3/wcsncasecmp.33
-rw-r--r--man3/wcsncat.34
-rw-r--r--man3/wcsncmp.33
-rw-r--r--man3/wcsncpy.34
-rw-r--r--man3/wcsnlen.32
-rw-r--r--man3/wcsnrtombs.37
-rw-r--r--man3/wcsrtombs.33
-rw-r--r--man3/wcstombs.33
-rw-r--r--man3/wmemchr.32
-rw-r--r--man3/wmemcmp.33
-rw-r--r--man3/wmemcpy.34
-rw-r--r--man3/wmemmove.33
-rw-r--r--man3/wmemset.32
-rw-r--r--man3/wprintf.34
72 files changed, 186 insertions, 147 deletions
diff --git a/man3/confstr.3 b/man3/confstr.3
index 4cc06918eb..9d3b5d72d3 100644
--- a/man3/confstr.3
+++ b/man3/confstr.3
@@ -20,7 +20,7 @@ Standard C library
.nf
.B #include <unistd.h>
.PP
-.BI "size_t confstr(int " "name" ", char *" buf ", size_t " size );
+.BI "size_t confstr(int " "name" ", char " buf [. size "], size_t " size );
.fi
.PP
.RS -4
diff --git a/man3/des_crypt.3 b/man3/des_crypt.3
index a59519589c..8806cc9fd5 100644
--- a/man3/des_crypt.3
+++ b/man3/des_crypt.3
@@ -22,9 +22,11 @@ Standard C library
.\" .B #include <des_crypt.h>
.B #include <rpc/des_crypt.h>
.PP
-.BI "int ecb_crypt(char *" key ", char *" data ", unsigned int " datalen ,
+.BI "int ecb_crypt(char *" key ", char " data [. datalen "], \
+unsigned int " datalen ,
.BI " unsigned int " mode );
-.BI "int cbc_crypt(char *" key ", char *" data ", unsigned int " datalen ,
+.BI "int cbc_crypt(char *" key ", char " data [. datalen "], \
+unsigned int " datalen ,
.BI " unsigned int " mode ", char *" ivec );
.PP
.BI "void des_setparity(char *" key );
diff --git a/man3/fgetc.3 b/man3/fgetc.3
index 010fc01703..4cddbe5968 100644
--- a/man3/fgetc.3
+++ b/man3/fgetc.3
@@ -18,7 +18,8 @@ Standard C library
.BI "int getc(FILE *" stream );
.B "int getchar(void);"
.PP
-.BI "char *fgets(char *restrict " s ", int " size ", FILE *restrict " stream );
+.BI "char *fgets(char " s "[restrict ." size "], int " size ", \
+FILE *restrict " stream );
.PP
.BI "int ungetc(int " c ", FILE *" stream );
.fi
diff --git a/man3/fgetws.3 b/man3/fgetws.3
index 24669f9482..2069d20134 100644
--- a/man3/fgetws.3
+++ b/man3/fgetws.3
@@ -20,7 +20,7 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *fgetws(wchar_t *restrict " ws ", int " n \
+.BI "wchar_t *fgetws(wchar_t " ws "[restrict ." n "], int " n \
", FILE *restrict " stream );
.fi
.SH DESCRIPTION
diff --git a/man3/getcwd.3 b/man3/getcwd.3
index 213ba18222..23b622ead0 100644
--- a/man3/getcwd.3
+++ b/man3/getcwd.3
@@ -19,7 +19,7 @@ Standard C library
.nf
.B #include <unistd.h>
.PP
-.BI "char *getcwd(char *" buf ", size_t " size );
+.BI "char *getcwd(char " buf [. size "], size_t " size );
.B "char *get_current_dir_name(void);"
.PP
.BI "[[deprecated]] char *getwd(char " buf [PATH_MAX]);
diff --git a/man3/getdirentries.3 b/man3/getdirentries.3
index 495774d67c..90072c78b8 100644
--- a/man3/getdirentries.3
+++ b/man3/getdirentries.3
@@ -14,7 +14,8 @@ Standard C library
.nf
.B #include <dirent.h>
.PP
-.BI "ssize_t getdirentries(int " fd ", char *restrict " buf ", size_t " nbytes ,
+.BI "ssize_t getdirentries(int " fd ", char " buf "[restrict ." nbytes "], \
+size_t " nbytes ,
.BI " off_t *restrict " basep );
.fi
.PP
diff --git a/man3/getgrent_r.3 b/man3/getgrent_r.3
index 3298865ccf..9cb23548b7 100644
--- a/man3/getgrent_r.3
+++ b/man3/getgrent_r.3
@@ -13,10 +13,10 @@ Standard C library
.B #include <grp.h>
.PP
.BI "int getgrent_r(struct group *restrict " gbuf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct group **restrict " gbufp );
.BI "int fgetgrent_r(FILE *restrict " stream ", struct group *restrict " gbuf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct group **restrict " gbufp );
.fi
.PP
diff --git a/man3/getgrnam.3 b/man3/getgrnam.3
index 73e5a34df5..0f27c63100 100644
--- a/man3/getgrnam.3
+++ b/man3/getgrnam.3
@@ -26,10 +26,10 @@ Standard C library
.PP
.BI "int getgrnam_r(const char *restrict " name \
", struct group *restrict " grp ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct group **restrict " result );
.BI "int getgrgid_r(gid_t " gid ", struct group *restrict " grp ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct group **restrict " result );
.fi
.PP
diff --git a/man3/gethostbyname.3 b/man3/gethostbyname.3
index 39e8c2a1fd..d9a5d46095 100644
--- a/man3/gethostbyname.3
+++ b/man3/gethostbyname.3
@@ -50,7 +50,7 @@ Standard C library
.BI "struct hostent *gethostbyname2(const char *" name ", int " af );
.PP
.BI "int gethostent_r(struct hostent *restrict " ret ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct hostent **restrict " result ,
.BI " int *restrict " h_errnop );
.PP
@@ -58,19 +58,19 @@ Standard C library
.BI "int gethostbyaddr_r(const void *restrict " addr ", socklen_t " len \
", int " type ,
.BI " struct hostent *restrict " ret ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct hostent **restrict " result ,
.BI " int *restrict " h_errnop );
.B [[deprecated]]
.BI "int gethostbyname_r(const char *restrict " name ,
.BI " struct hostent *restrict " ret ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct hostent **restrict " result ,
.BI " int *restrict " h_errnop );
.B [[deprecated]]
.BI "int gethostbyname2_r(const char *restrict " name ", int " af,
.BI " struct hostent *restrict " ret ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct hostent **restrict " result ,
.BI " int *restrict " h_errnop );
.fi
diff --git a/man3/getlogin.3 b/man3/getlogin.3
index 7658c615f1..59253d7fa1 100644
--- a/man3/getlogin.3
+++ b/man3/getlogin.3
@@ -16,7 +16,7 @@ Standard C library
.B #include <unistd.h>
.PP
.B "char *getlogin(void);"
-.BI "int getlogin_r(char *" buf ", size_t " bufsize );
+.BI "int getlogin_r(char " buf [. bufsize "], size_t " bufsize );
.PP
.B #include <stdio.h>
.PP
diff --git a/man3/getmntent.3 b/man3/getmntent.3
index 7900f1ae96..8792fbef60 100644
--- a/man3/getmntent.3
+++ b/man3/getmntent.3
@@ -37,7 +37,7 @@ Standard C library
.PP
.BI "struct mntent *getmntent_r(FILE *restrict " streamp ,
.BI " struct mntent *restrict " mntbuf ,
-.BI " char *restrict " buf ", int " buflen );
+.BI " char " buf "[restrict ." buflen "], int " buflen );
.fi
.PP
.RS -4
diff --git a/man3/getnameinfo.3 b/man3/getnameinfo.3
index 02b0a16392..cc3a89a383 100644
--- a/man3/getnameinfo.3
+++ b/man3/getnameinfo.3
@@ -20,9 +20,9 @@ Standard C library
.PP
.BI "int getnameinfo(const struct sockaddr *restrict " addr \
", socklen_t " addrlen ,
-.BI " char *restrict " host ", socklen_t " hostlen ,
-.BI " char *restrict " serv ", socklen_t " servlen \
-", int " flags );
+.BI " char " host "[restrict ." hostlen "], socklen_t " hostlen ,
+.BI " char " serv "[restrict ." servlen "], socklen_t " servlen ,
+.BI " int " flags );
.fi
.PP
.RS -4
diff --git a/man3/getnetent_r.3 b/man3/getnetent_r.3
index 28a7d7d24f..a05edf6761 100644
--- a/man3/getnetent_r.3
+++ b/man3/getnetent_r.3
@@ -15,17 +15,17 @@ Standard C library
.B #include <netdb.h>
.PP
.BI "int getnetent_r(struct netent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct netent **restrict " result ,
.BI " int *restrict " h_errnop );
.BI "int getnetbyname_r(const char *restrict " name ,
.BI " struct netent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct netent **restrict " result ,
.BI " int *restrict " h_errnop );
.BI "int getnetbyaddr_r(uint32_t " net ", int " type ,
.BI " struct netent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct netent **restrict " result ,
.BI " int *restrict " h_errnop );
.PP
diff --git a/man3/getprotoent_r.3 b/man3/getprotoent_r.3
index bef4484675..75469d31ec 100644
--- a/man3/getprotoent_r.3
+++ b/man3/getprotoent_r.3
@@ -15,15 +15,15 @@ Standard C library
.B #include <netdb.h>
.PP
.BI "int getprotoent_r(struct protoent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct protoent **restrict " result );
.BI "int getprotobyname_r(const char *restrict " name ,
.BI " struct protoent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct protoent **restrict " result );
.BI "int getprotobynumber_r(int " proto ,
.BI " struct protoent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct protoent **restrict " result );
.PP
.fi
diff --git a/man3/getpwent_r.3 b/man3/getpwent_r.3
index 516517ace8..c2e7629c53 100644
--- a/man3/getpwent_r.3
+++ b/man3/getpwent_r.3
@@ -13,11 +13,11 @@ Standard C library
.B #include <pwd.h>
.PP
.BI "int getpwent_r(struct passwd *restrict " pwbuf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct passwd **restrict " pwbufp );
.BI "int fgetpwent_r(FILE *restrict " stream \
", struct passwd *restrict " pwbuf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct passwd **restrict " pwbufp );
.fi
.PP
diff --git a/man3/getpwnam.3 b/man3/getpwnam.3
index 7a6474e019..c168eb11b0 100644
--- a/man3/getpwnam.3
+++ b/man3/getpwnam.3
@@ -28,12 +28,12 @@ Standard C library
.BI "struct passwd *getpwnam(const char *" name );
.BI "struct passwd *getpwuid(uid_t " uid );
.PP
-.BI "int getpwnam_r(const char *restrict " name \
-", struct passwd *restrict " pwd ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI "int getpwnam_r(const char *restrict " name ", \
+struct passwd *restrict " pwd ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct passwd **restrict " result );
.BI "int getpwuid_r(uid_t " uid ", struct passwd *restrict " pwd ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct passwd **restrict " result );
.fi
.PP
diff --git a/man3/getrpcent_r.3 b/man3/getrpcent_r.3
index 081e1147a3..91396dd229 100644
--- a/man3/getrpcent_r.3
+++ b/man3/getrpcent_r.3
@@ -14,13 +14,13 @@ Standard C library
.nf
.B #include <netdb.h>
.PP
-.BI "int getrpcent_r(struct rpcent *" result_buf ", char *" buf ,
+.BI "int getrpcent_r(struct rpcent *" result_buf ", char " buf [. buflen ],
.BI " size_t " buflen ", struct rpcent **" result );
.BI "int getrpcbyname_r(const char *" name ,
-.BI " struct rpcent *" result_buf ", char *" buf ,
+.BI " struct rpcent *" result_buf ", char " buf [. buflen ],
.BI " size_t " buflen ", struct rpcent **" result );
.BI "int getrpcbynumber_r(int " number ,
-.BI " struct rpcent *" result_buf ", char *" buf ,
+.BI " struct rpcent *" result_buf ", char " buf [. buflen ],
.BI " size_t " buflen ", struct rpcent **" result );
.PP
.fi
diff --git a/man3/getservent_r.3 b/man3/getservent_r.3
index c403311e3e..7e346d2e00 100644
--- a/man3/getservent_r.3
+++ b/man3/getservent_r.3
@@ -15,17 +15,17 @@ Standard C library
.B #include <netdb.h>
.PP
.BI "int getservent_r(struct servent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct servent **restrict " result );
.BI "int getservbyname_r(const char *restrict " name ,
.BI " const char *restrict " proto ,
.BI " struct servent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct servent **restrict " result );
.BI "int getservbyport_r(int " port ,
.BI " const char *restrict " proto ,
.BI " struct servent *restrict " result_buf ,
-.BI " char *restrict " buf ", size_t " buflen ,
+.BI " char " buf "[restrict ." buflen "], size_t " buflen ,
.BI " struct servent **restrict " result );
.PP
.fi
diff --git a/man3/getspnam.3 b/man3/getspnam.3
index 06d703c36c..592d195830 100644
--- a/man3/getspnam.3
+++ b/man3/getspnam.3
@@ -34,14 +34,18 @@ Standard C library
.B #include <shadow.h>
.PP
.BI "int getspent_r(struct spwd *" spbuf ,
-.BI " char *" buf ", size_t " buflen ", struct spwd **" spbufp );
+.BI " char " buf [. buflen "], size_t " buflen ", \
+struct spwd **" spbufp );
.BI "int getspnam_r(const char *" name ", struct spwd *" spbuf ,
-.BI " char *" buf ", size_t " buflen ", struct spwd **" spbufp );
+.BI " char " buf [. buflen "], size_t " buflen ", \
+struct spwd **" spbufp );
.PP
.BI "int fgetspent_r(FILE *" stream ", struct spwd *" spbuf ,
-.BI " char *" buf ", size_t " buflen ", struct spwd **" spbufp );
+.BI " char " buf [. buflen "], size_t " buflen ", \
+struct spwd **" spbufp );
.BI "int sgetspent_r(const char *" s ", struct spwd *" spbuf ,
-.BI " char *" buf ", size_t " buflen ", struct spwd **" spbufp );
+.BI " char " buf [. buflen "], size_t " buflen ", \
+struct spwd **" spbufp );
.fi
.PP
.RS -4
diff --git a/man3/inet_net_pton.3 b/man3/inet_net_pton.3
index 1db845582a..0af4478b04 100644
--- a/man3/inet_net_pton.3
+++ b/man3/inet_net_pton.3
@@ -15,7 +15,7 @@ Resolver library
.BI "int inet_net_pton(int " af ", const char *" pres ,
.BI " void *" netp ", size_t " nsize );
.BI "char *inet_net_ntop(int " af ", const void *" netp ", int " bits ,
-.BI " char *" pres ", size_t " psize );
+.BI " char " pres [. psize "], size_t " psize );
.fi
.PP
.RS -4
diff --git a/man3/inet_ntop.3 b/man3/inet_ntop.3
index b344a0c899..64a26eccef 100644
--- a/man3/inet_ntop.3
+++ b/man3/inet_ntop.3
@@ -14,7 +14,7 @@ Standard C library
.B #include <arpa/inet.h>
.PP
.BI "const char *inet_ntop(int " af ", const void *restrict " src ,
-.BI " char *restrict " dst ", socklen_t " size );
+.BI " char " dst "[restrict ." size "], socklen_t " size );
.fi
.SH DESCRIPTION
This function converts the network address structure
diff --git a/man3/mblen.3 b/man3/mblen.3
index f0c2fd7363..861f41687f 100644
--- a/man3/mblen.3
+++ b/man3/mblen.3
@@ -18,7 +18,7 @@ Standard C library
.nf
.B #include <stdlib.h>
.PP
-.BI "int mblen(const char *" s ", size_t " n );
+.BI "int mblen(const char " s [. n "], size_t " n );
.fi
.SH DESCRIPTION
If
diff --git a/man3/mbrlen.3 b/man3/mbrlen.3
index d7aac5e677..71258fa591 100644
--- a/man3/mbrlen.3
+++ b/man3/mbrlen.3
@@ -18,7 +18,7 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "size_t mbrlen(const char *restrict " s ", size_t " n ,
+.BI "size_t mbrlen(const char " s "[restrict ." n "], size_t " n ,
.BI " mbstate_t *restrict " ps );
.fi
.SH DESCRIPTION
diff --git a/man3/mbrtowc.3 b/man3/mbrtowc.3
index 804f87032a..8acb592306 100644
--- a/man3/mbrtowc.3
+++ b/man3/mbrtowc.3
@@ -19,9 +19,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "size_t mbrtowc(wchar_t *restrict " pwc ", const char *restrict " s \
-", size_t " n ,
-.BI " mbstate_t *restrict " ps );
+.BI "size_t mbrtowc(wchar_t *restrict " pwc ", const char " s "[restrict ." n ],
+.BI " size_t " n ", mbstate_t *restrict " ps );
.fi
.SH DESCRIPTION
The main case for this function is when
diff --git a/man3/mbsnrtowcs.3 b/man3/mbsnrtowcs.3
index c53e4ecb14..b14d3b51a0 100644
--- a/man3/mbsnrtowcs.3
+++ b/man3/mbsnrtowcs.3
@@ -17,7 +17,7 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "size_t mbsnrtowcs(wchar_t *restrict " dest ", const char **restrict " src ,
+.BI "size_t mbsnrtowcs(wchar_t " dest "[restrict ." len "], const char **restrict " src ,
.BI " size_t " nms ", size_t " len \
", mbstate_t *restrict " ps );
.fi
diff --git a/man3/mbsrtowcs.3 b/man3/mbsrtowcs.3
index 57f7bbf61d..69dc758b63 100644
--- a/man3/mbsrtowcs.3
+++ b/man3/mbsrtowcs.3
@@ -18,7 +18,7 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "size_t mbsrtowcs(wchar_t *restrict " dest ", const char **restrict " src ,
+.BI "size_t mbsrtowcs(wchar_t " dest "[restrict ." len "], const char **restrict " src ,
.BI " size_t " len ", mbstate_t *restrict " ps );
.fi
.SH DESCRIPTION
diff --git a/man3/mbstowcs.3 b/man3/mbstowcs.3
index c7d348f155..69d3c3c3ed 100644
--- a/man3/mbstowcs.3
+++ b/man3/mbstowcs.3
@@ -19,7 +19,8 @@ Standard C library
.nf
.B #include <stdlib.h>
.PP
-.BI "size_t mbstowcs(wchar_t *restrict " dest ", const char *restrict " src ,
+.BI "size_t mbstowcs(wchar_t " dest "[restrict ." n "], \
+const char *restrict " src ,
.BI " size_t " n );
.fi
.SH DESCRIPTION
diff --git a/man3/mbtowc.3 b/man3/mbtowc.3
index 858b2f3e35..cb91e2e154 100644
--- a/man3/mbtowc.3
+++ b/man3/mbtowc.3
@@ -18,8 +18,8 @@ Standard C library
.nf
.B #include <stdlib.h>
.PP
-.BI "int mbtowc(wchar_t *restrict " pwc ", const char *restrict " s \
-", size_t " n );
+.BI "int mbtowc(wchar_t *restrict " pwc ", const char " s "[restrict ." n "], \
+size_t " n );
.fi
.SH DESCRIPTION
The main case for this function is when
diff --git a/man3/mempcpy.3 b/man3/mempcpy.3
index 84eb39d707..9ba5889d68 100644
--- a/man3/mempcpy.3
+++ b/man3/mempcpy.3
@@ -22,9 +22,9 @@ Standard C library
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <wchar.h>
.PP
-.BI "wchar_t *wmempcpy(wchar_t *restrict " dest \
-", const wchar_t *restrict " src ,
-.BI " size_t " n );
+.BI "wchar_t *wmempcpy(wchar_t " dest "[restrict ." n ],
+.BI " const wchar_t " src "[restrict ." n ],
+.BI " size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/mq_receive.3 b/man3/mq_receive.3
index 739b1f73cc..81579817b9 100644
--- a/man3/mq_receive.3
+++ b/man3/mq_receive.3
@@ -12,13 +12,14 @@ Real-time library
.nf
.B #include <mqueue.h>
.PP
-.BI "ssize_t mq_receive(mqd_t " mqdes ", char *" msg_ptr ,
+.BI "ssize_t mq_receive(mqd_t " mqdes ", char " msg_ptr [. msg_len ],
.BI " size_t " msg_len ", unsigned int *" msg_prio );
.PP
.B #include <time.h>
.B #include <mqueue.h>
.PP
-.BI "ssize_t mq_timedreceive(mqd_t " mqdes ", char *restrict " msg_ptr ,
+.BI "ssize_t mq_timedreceive(mqd_t " mqdes ", \
+char *restrict " msg_ptr [. msg_len ],
.BI " size_t " msg_len ", unsigned int *restrict " msg_prio ,
.BI " const struct timespec *restrict " abs_timeout );
.fi
diff --git a/man3/mq_send.3 b/man3/mq_send.3
index c20b9251e7..8dc862697b 100644
--- a/man3/mq_send.3
+++ b/man3/mq_send.3
@@ -12,13 +12,13 @@ Real-time library
.nf
.B #include <mqueue.h>
.PP
-.BI "int mq_send(mqd_t " mqdes ", const char *" msg_ptr ,
+.BI "int mq_send(mqd_t " mqdes ", const char " msg_ptr [. msg_len ],
.BI " size_t " msg_len ", unsigned int " msg_prio );
.PP
.B #include <time.h>
.B #include <mqueue.h>
.PP
-.BI "int mq_timedsend(mqd_t " mqdes ", const char *" msg_ptr ,
+.BI "int mq_timedsend(mqd_t " mqdes ", const char " msg_ptr [. msg_len ],
.BI " size_t " msg_len ", unsigned int " msg_prio ,
.BI " const struct timespec *" abs_timeout );
.fi
diff --git a/man3/printf.3 b/man3/printf.3
index 0f5d117579..85a5db632f 100644
--- a/man3/printf.3
+++ b/man3/printf.3
@@ -30,7 +30,7 @@ Standard C library
.BI " const char *restrict " format ", ...);"
.BI "int sprintf(char *restrict " str ,
.BI " const char *restrict " format ", ...);"
-.BI "int snprintf(char *restrict " str ", size_t " size ,
+.BI "int snprintf(char " str "[restrict ." size "], size_t " size ,
.BI " const char *restrict " format ", ...);"
.PP
.BI "int vprintf(const char *restrict " format ", va_list " ap );
@@ -40,7 +40,7 @@ Standard C library
.BI " const char *restrict " format ", va_list " ap );
.BI "int vsprintf(char *restrict " str ,
.BI " const char *restrict " format ", va_list " ap );
-.BI "int vsnprintf(char *restrict " str ", size_t " size ,
+.BI "int vsnprintf(char " str "[restrict ." size "], size_t " size ,
.BI " const char *restrict " format ", va_list " ap );
.fi
.PP
diff --git a/man3/pthread_setname_np.3 b/man3/pthread_setname_np.3
index c08cc95968..df51c8e4f2 100644
--- a/man3/pthread_setname_np.3
+++ b/man3/pthread_setname_np.3
@@ -15,7 +15,8 @@ POSIX threads library
.B #include <pthread.h>
.PP
.BI "int pthread_setname_np(pthread_t " thread ", const char *" name );
-.BI "int pthread_getname_np(pthread_t " thread ", char *" name ", size_t " size );
+.BI "int pthread_getname_np(pthread_t " thread ", char " name [. size "], \
+size_t " size );
.fi
.SH DESCRIPTION
By default, all the threads created using
diff --git a/man3/ptsname.3 b/man3/ptsname.3
index 6b37cfc36a..38fead7625 100644
--- a/man3/ptsname.3
+++ b/man3/ptsname.3
@@ -14,8 +14,8 @@ Standard C library
.nf
.B #include <stdlib.h>
.PP
-.BI "char *ptsname(int " fd ");"
-.BI "int ptsname_r(int " fd ", char *" buf ", size_t " buflen ");"
+.BI "char *ptsname(int " fd );
+.BI "int ptsname_r(int " fd ", char " buf [. buflen "], size_t " buflen );
.fi
.PP
.RS -4
diff --git a/man3/random.3 b/man3/random.3
index 752e7f9eef..6b4f90e6da 100644
--- a/man3/random.3
+++ b/man3/random.3
@@ -23,7 +23,7 @@ Standard C library
.B long random(void);
.BI "void srandom(unsigned int " seed );
.PP
-.BI "char *initstate(unsigned int " seed ", char *" state ", size_t " n );
+.BI "char *initstate(unsigned int " seed ", char " state [. n "], size_t " n );
.BI "char *setstate(char *" state );
.fi
.PP
diff --git a/man3/random_r.3 b/man3/random_r.3
index 66d5c3de9f..914e6ea254 100644
--- a/man3/random_r.3
+++ b/man3/random_r.3
@@ -18,7 +18,8 @@ Standard C library
.BI " int32_t *restrict " result );
.BI "int srandom_r(unsigned int " seed ", struct random_data *" buf );
.PP
-.BI "int initstate_r(unsigned int " seed ", char *restrict " statebuf ,
+.BI "int initstate_r(unsigned int " seed ", \
+char " statebuf "[restrict ." statelen ],
.BI " size_t " statelen ", struct random_data *restrict " buf );
.BI "int setstate_r(char *restrict " statebuf ,
.BI " struct random_data *restrict " buf );
diff --git a/man3/regex.3 b/man3/regex.3
index 4118656c51..c49f0303b2 100644
--- a/man3/regex.3
+++ b/man3/regex.3
@@ -21,11 +21,12 @@ Standard C library
.BI " int " cflags );
.BI "int regexec(const regex_t *restrict " preg \
", const char *restrict " string ,
-.BI " size_t " nmatch ", regmatch_t " pmatch "[restrict]\
-, int " eflags );
+.BI " size_t " nmatch ", regmatch_t " pmatch "[restrict ." nmatch ],
+.BI " int " eflags );
.PP
.BI "size_t regerror(int " errcode ", const regex_t *restrict " preg ,
-.BI " char *restrict " errbuf ", size_t " errbuf_size );
+.BI " char " errbuf "[restrict ." errbuf_size "], \
+size_t " errbuf_size );
.BI "void regfree(regex_t *" preg );
.fi
.SH DESCRIPTION
diff --git a/man3/resolver.3 b/man3/resolver.3
index 5a5ea470d2..070a87f1bc 100644
--- a/man3/resolver.3
+++ b/man3/resolver.3
@@ -35,34 +35,35 @@ Resolver library
.PP
.BI "int res_nquery(res_state " statep ,
.BI " const char *" dname ", int " class ", int " type ,
-.BI " unsigned char *" answer ", int " anslen );
+.BI " unsigned char " answer [. anslen "], int " anslen );
.PP
.BI "int res_nsearch(res_state " statep ,
.BI " const char *" dname ", int " class ", int " type ,
-.BI " unsigned char *" answer ", int " anslen );
+.BI " unsigned char " answer [. anslen "], int " anslen );
.PP
.BI "int res_nquerydomain(res_state " statep ,
.BI " const char *" name ", const char *" domain ,
-.BI " int " class ", int " type ", unsigned char *" answer ,
+.BI " int " class ", int " type ", unsigned char " answer [. anslen ],
.BI " int " anslen );
.PP
.BI "int res_nmkquery(res_state " statep ,
.BI " int " op ", const char *" dname ", int " class ,
-.BI " int " type ", const unsigned char *" data ", int " datalen ,
+.BI " int " type ", const unsigned char " data [. datalen "], \
+int " datalen ,
.BI " const unsigned char *" newrr ,
-.BI " unsigned char *" buf ", int " buflen );
+.BI " unsigned char " buf [. buflen "], int " buflen );
.PP
.BI "int res_nsend(res_state " statep ,
-.BI " const unsigned char *" msg ", int " msglen ,
-.BI " unsigned char *" answer ", int " anslen );
+.BI " const unsigned char " msg [. msglen "], int " msglen ,
+.BI " unsigned char " answer [. anslen "], int " anslen );
.PP
-.BI "int dn_comp(const char *" exp_dn ", unsigned char *" comp_dn ,
+.BI "int dn_comp(const char *" exp_dn ", unsigned char " comp_dn [. length ],
.BI " int " length ", unsigned char **" dnptrs ,
.BI " unsigned char **" lastdnptr );
.PP
.BI "int dn_expand(const unsigned char *" msg ,
.BI " const unsigned char *" eomorig ,
-.BI " const unsigned char *" comp_dn ", char *" exp_dn ,
+.BI " const unsigned char *" comp_dn ", char " exp_dn [. length ],
.BI " int " length );
.PP
.B [[deprecated]] extern struct __res_state _res;
@@ -71,26 +72,27 @@ Resolver library
.PP
.B [[deprecated]]
.BI "int res_query(const char *" dname ", int " class ", int " type ,
-.BI " unsigned char *" answer ", int " anslen );
+.BI " unsigned char " answer [. anslen "], int " anslen );
.PP
.B [[deprecated]]
.BI "int res_search(const char *" dname ", int " class ", int " type ,
-.BI " unsigned char *" answer ", int " anslen );
+.BI " unsigned char " answer [. anslen "], int " anslen );
.PP
.B [[deprecated]]
.BI "int res_querydomain(const char *" name ", const char *" domain ,
-.BI " int " class ", int " type ", unsigned char *" answer ,
+.BI " int " class ", int " type ", unsigned char " answer [. anslen ],
.BI " int " anslen );
.PP
.B [[deprecated]]
.BI "int res_mkquery(int " op ", const char *" dname ", int " class ,
-.BI " int " type ", const unsigned char *" data ", int " datalen ,
+.BI " int " type ", const unsigned char " data [. datalen "], \
+int " datalen ,
.BI " const unsigned char *" newrr ,
-.BI " unsigned char *" buf ", int " buflen );
+.BI " unsigned char " buf [. buflen "], int " buflen );
.PP
.B [[deprecated]]
-.BI "int res_send(const unsigned char *" msg ", int " msglen ,
-.BI " unsigned char *" answer ", int " anslen );
+.BI "int res_send(const unsigned char " msg [. msglen "], int " msglen ,
+.BI " unsigned char " answer [. anslen "], int " anslen );
.fi
.SH DESCRIPTION
.B Note:
diff --git a/man3/rpc.3 b/man3/rpc.3
index 44a0bb9898..95cfcbe2f3 100644
--- a/man3/rpc.3
+++ b/man3/rpc.3
@@ -74,7 +74,7 @@ This is the default authentication used by RPC.
.PP
.nf
.BI "AUTH *authunix_create(char *" host ", uid_t " uid ", gid_t " gid ,
-.BI " int " len ", gid_t *" aup_gids );
+.BI " int " len ", gid_t " aup_gids [. len ]);
.fi
.IP
Create and return an RPC authentication handle that contains
diff --git a/man3/setaliasent.3 b/man3/setaliasent.3
index 08d47f7a33..1b5a5630f1 100644
--- a/man3/setaliasent.3
+++ b/man3/setaliasent.3
@@ -20,13 +20,15 @@ Standard C library
.PP
.B "struct aliasent *getaliasent(void);"
.BI "int getaliasent_r(struct aliasent *restrict " result ,
-.BI " char *restrict " buffer ", size_t " buflen ,
+.BI " char " buffer "[restrict ." buflen "], \
+size_t " buflen ,
.BI " struct aliasent **restrict " res );
.PP
.BI "struct aliasent *getaliasbyname(const char *" name );
.BI "int getaliasbyname_r(const char *restrict " name ,
.BI " struct aliasent *restrict " result ,
-.BI " char *restrict " buffer ", size_t " buflen ,
+.BI " char " buffer "[restrict ." buflen "], \
+size_t " buflen ,
.BI " struct aliasent **restrict " res );
.fi
.SH DESCRIPTION
diff --git a/man3/setbuf.3 b/man3/setbuf.3
index a09adba36c..78b399a827 100644
--- a/man3/setbuf.3
+++ b/man3/setbuf.3
@@ -27,11 +27,11 @@ Standard C library
.nf
.B #include <stdio.h>
.PP
-.BI "int setvbuf(FILE *restrict " stream ", char *restrict " buf ,
+.BI "int setvbuf(FILE *restrict " stream ", char " buf "[restrict ." size ],
.BI " int " mode ", size_t " size );
.PP
.BI "void setbuf(FILE *restrict " stream ", char *restrict " buf );
-.BI "void setbuffer(FILE *restrict " stream ", char *restrict " buf ,
+.BI "void setbuffer(FILE *restrict " stream ", char " buf "[restrict ." size ],
.BI " size_t " size );
.BI "void setlinebuf(FILE *" stream );
.fi
diff --git a/man3/setnetgrent.3 b/man3/setnetgrent.3
index 5d43114e31..59d572dabe 100644
--- a/man3/setnetgrent.3
+++ b/man3/setnetgrent.3
@@ -23,7 +23,7 @@ Standard C library
.BI " char **restrict " user ", char **restrict " domain );
.BI "int getnetgrent_r(char **restrict " host ,
.BI " char **restrict " user ", char **restrict " domain ,
-.BI " char *restrict " buf ", size_t " buflen );
+.BI " char " buf "[restrict ." buflen "], size_t " buflen );
.PP
.BI "int innetgr(const char *" netgroup ", const char *" host ,
.BI " const char *" user ", const char *" domain );
diff --git a/man3/stpncpy.3 b/man3/stpncpy.3
index 492f344ebb..94f4ebb044 100644
--- a/man3/stpncpy.3
+++ b/man3/stpncpy.3
@@ -16,8 +16,9 @@ Standard C library
.nf
.B #include <string.h>
.PP
-.BI "char *stpncpy(char *restrict " dest ", const char *restrict " src \
-", size_t " n );
+.BI "char *stpncpy(char " dest "[restrict ." n "], \
+const char " src "[restrict ." n ],
+.BI " size_t " n );
.fi
.PP
.RS -4
diff --git a/man3/strcasecmp.3 b/man3/strcasecmp.3
index 9feb7e26fb..0e3da7bbc1 100644
--- a/man3/strcasecmp.3
+++ b/man3/strcasecmp.3
@@ -18,7 +18,8 @@ Standard C library
.B #include <strings.h>
.PP
.BI "int strcasecmp(const char *" s1 ", const char *" s2 );
-.BI "int strncasecmp(const char *" s1 ", const char *" s2 ", size_t " n );
+.BI "int strncasecmp(const char " s1 [. n "], const char " s2 [. n "], \
+size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/strcat.3 b/man3/strcat.3
index a4655eacea..a4a376ba9e 100644
--- a/man3/strcat.3
+++ b/man3/strcat.3
@@ -20,8 +20,9 @@ Standard C library
.B #include <string.h>
.PP
.BI "char *strcat(char *restrict " dest ", const char *restrict " src );
-.BI "char *strncat(char *restrict " dest ", const char *restrict " src \
-", size_t " n );
+.BI "char *strncat(char " dest "[restrict ." n "], \
+const char " src "[restrict ." n ],
+.BI " size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/strcmp.3 b/man3/strcmp.3
index 824ab69e80..711351e416 100644
--- a/man3/strcmp.3
+++ b/man3/strcmp.3
@@ -21,7 +21,7 @@ Standard C library
.B #include <string.h>
.PP
.BI "int strcmp(const char *" s1 ", const char *" s2 );
-.BI "int strncmp(const char *" s1 ", const char *" s2 ", size_t " n );
+.BI "int strncmp(const char " s1 [. n "], const char " s2 [. n "], size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/strcpy.3 b/man3/strcpy.3
index 4d8a430617..1b41e08a2f 100644
--- a/man3/strcpy.3
+++ b/man3/strcpy.3
@@ -23,8 +23,9 @@ Standard C library
.B #include <string.h>
.PP
.BI "char *strcpy(char *restrict " dest ", const char *restrict " src );
-.BI "char *strncpy(char *restrict " dest ", const char *restrict " src \
-", size_t " n );
+.BI "char *strncpy(char " dest "[restrict ." n "], \
+const char " src "[restrict ." n ],
+.BI " size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/strdup.3 b/man3/strdup.3
index 85174f0855..876848b3b3 100644
--- a/man3/strdup.3
+++ b/man3/strdup.3
@@ -20,9 +20,9 @@ Standard C library
.PP
.BI "char *strdup(const char *" s );
.PP
-.BI "char *strndup(const char *" s ", size_t " n );
+.BI "char *strndup(const char " s [. n "], size_t " n );
.BI "char *strdupa(const char *" s );
-.BI "char *strndupa(const char *" s ", size_t " n );
+.BI "char *strndupa(const char " s [. n "], size_t " n );
.fi
.PP
.RS -4
diff --git a/man3/strerror.3 b/man3/strerror.3
index ad8973413d..862e153ee0 100644
--- a/man3/strerror.3
+++ b/man3/strerror.3
@@ -31,10 +31,10 @@ Standard C library
.BI "const char *strerrorname_np(int " errnum );
.BI "const char *strerrordesc_np(int " errnum );
.PP
-.BI "int strerror_r(int " errnum ", char *" buf ", size_t " buflen );
+.BI "int strerror_r(int " errnum ", char " buf [. buflen "], size_t " buflen );
/* XSI-compliant */
.PP
-.BI "char *strerror_r(int " errnum ", char *" buf ", size_t " buflen );
+.BI "char *strerror_r(int " errnum ", char " buf [. buflen "], size_t " buflen );
/* GNU-specific */
.PP
.BI "char *strerror_l(int " errnum ", locale_t " locale );
diff --git a/man3/strfmon.3 b/man3/strfmon.3
index efc713a150..ef575e6233 100644
--- a/man3/strfmon.3
+++ b/man3/strfmon.3
@@ -12,9 +12,10 @@ Standard C library
.nf
.B #include <monetary.h>
.PP
-.BI "ssize_t strfmon(char *restrict " s ", size_t " max ,
+.BI "ssize_t strfmon(char " s "[restrict ." max "], size_t " max ,
.BI " const char *restrict " format ", ...);"
-.BI "ssize_t strfmon_l(char *restrict " s ", size_t " max ", locale_t " locale ,
+.BI "ssize_t strfmon_l(char " s "[restrict ." max "], size_t " max ", \
+locale_t " locale ,
.BI " const char *restrict " format ", ...);"
.fi
.SH DESCRIPTION
diff --git a/man3/strfromd.3 b/man3/strfromd.3
index 3e0b19df43..4b13a27f1c 100644
--- a/man3/strfromd.3
+++ b/man3/strfromd.3
@@ -20,11 +20,11 @@ Standard C library
.nf
.B #include <stdlib.h>
.PP
-.BI "int strfromd(char *restrict " str ", size_t " n ,
+.BI "int strfromd(char " str "[restrict ." n "], size_t " n ,
.BI " const char *restrict " format ", double " fp ");"
-.BI "int strfromf(char *restrict " str ", size_t " n ,
+.BI "int strfromf(char " str "[restrict ." n "], size_t " n ,
.BI " const char *restrict " format ", float "fp ");"
-.BI "int strfroml(char *restrict " str ", size_t " n ,
+.BI "int strfroml(char " str "[restrict ." n "], size_t " n ,
.BI " const char *restrict " format ", long double " fp ");"
.fi
.PP
diff --git a/man3/strftime.3 b/man3/strftime.3
index 027aa4a2e0..b10debf817 100644
--- a/man3/strftime.3
+++ b/man3/strftime.3
@@ -24,11 +24,11 @@ Standard C library
.nf
.B #include <time.h>
.PP
-.BI "size_t strftime(char *restrict " s ", size_t " max ,
+.BI "size_t strftime(char " s "[restrict ." max "], size_t " max ,
.BI " const char *restrict " format ,
.BI " const struct tm *restrict " tm );
.PP
-.BI "size_t strftime_l(char *restrict " s ", size_t " max ,
+.BI "size_t strftime_l(char " s "[restrict ." max "], size_t " max ,
.BI " const char *restrict " format ,
.BI " const struct tm *restrict " tm ,
.BI " locale_t " locale );
diff --git a/man3/string.3 b/man3/string.3
index 8cd7940372..32e9d8f5a0 100644
--- a/man3/string.3
+++ b/man3/string.3
@@ -26,7 +26,8 @@ and
.I s2
ignoring case.
.TP
-.BI "int strncasecmp(const char *" s1 ", const char *" s2 ", size_t " n );
+.BI "int strncasecmp(const char " s1 [. n "], const char " s2 [. n "], \
+size_t " n );
Compare the first
.I n
bytes of the strings
@@ -112,8 +113,11 @@ Randomly swap the characters in
Return the length of the string
.IR s .
.TP
-.BI "char *strncat(char *restrict " dest ", const char *restrict " src \
-", size_t " n );
+.nf
+.BI "char *strncat(char " dest "[restrict ." n "], \
+const char " src "[restrict ." n ],
+.BI " size_t " n );
+.fi
Append at most
.I n
bytes from the string
@@ -123,7 +127,7 @@ to the string
returning a pointer to
.IR dest .
.TP
-.BI "int strncmp(const char *" s1 ", const char *" s2 ", size_t " n );
+.BI "int strncmp(const char " s1 [. n "], const char " s2 [. n "], size_t " n );
Compare at most
.I n
bytes of the strings
@@ -131,8 +135,11 @@ bytes of the strings
and
.IR s2 .
.TP
-.BI "char *strncpy(char *restrict " dest ", const char *restrict " src \
-", size_t " n );
+.nf
+.BI "char *strncpy(char " dest "[restrict ." n "], \
+const char " src "[restrict ." n ],
+.BI " size_t " n );
+.fi
Copy at most
.I n
bytes from string
@@ -179,8 +186,11 @@ Extract tokens from the string
that are delimited by one of the bytes in
.IR delim .
.TP
-.BI "size_t strxfrm(char *restrict " dst ", const char *restrict " src \
-", size_t " n );
+.nf
+.BI "size_t strxfrm(char " dst "[restrict ." n "], \
+const char " src "[restrict ." n ],
+.BI " size_t " n );
+.fi
Transforms
.I src
to the current locale and copies the first
diff --git a/man3/strnlen.3 b/man3/strnlen.3
index c400bc9ff8..8d26be7677 100644
--- a/man3/strnlen.3
+++ b/man3/strnlen.3
@@ -15,7 +15,7 @@ Standard C library
.nf
.B #include <string.h>
.PP
-.BI "size_t strnlen(const char *" s ", size_t " maxlen );
+.BI "size_t strnlen(const char " s [. maxlen "], size_t " maxlen );
.fi
.PP
.RS -4
diff --git a/man3/strxfrm.3 b/man3/strxfrm.3
index a2bb9be8ae..d1ec4542c4 100644
--- a/man3/strxfrm.3
+++ b/man3/strxfrm.3
@@ -17,7 +17,8 @@ Standard C library
.nf
.B #include <string.h>
.PP
-.BI "size_t strxfrm(char *restrict " dest ", const char *restrict " src ,
+.BI "size_t strxfrm(char " dest "[restrict ." n "], \
+const char " src "[restrict ." n ],
.BI " size_t " n );
.fi
.SH DESCRIPTION
diff --git a/man3/ttyname.3 b/man3/ttyname.3
index a01fe48411..3a200bfc42 100644
--- a/man3/ttyname.3
+++ b/man3/ttyname.3
@@ -16,7 +16,7 @@ Standard C library
.B #include <unistd.h>
.PP
.BI "char *ttyname(int " fd );
-.BI "int ttyname_r(int " fd ", char *" buf ", size_t " buflen );
+.BI "int ttyname_r(int " fd ", char " buf [. buflen "], size_t " buflen );
.fi
.SH DESCRIPTION
The function
diff --git a/man3/unlocked_stdio.3 b/man3/unlocked_stdio.3
index 74cc9ca07b..ad15a632aa 100644
--- a/man3/unlocked_stdio.3
+++ b/man3/unlocked_stdio.3
@@ -33,7 +33,7 @@ Standard C library
", size_t " n ,
.BI " FILE *restrict " stream );
.PP
-.BI "char *fgets_unlocked(char *restrict " s ", int " n \
+.BI "char *fgets_unlocked(char " s "[restrict ." n "], int " n \
", FILE *restrict " stream );
.BI "int fputs_unlocked(const char *restrict " s ", FILE *restrict " stream );
.PP
@@ -47,7 +47,7 @@ Standard C library
.BI "wint_t putwc_unlocked(wchar_t " wc ", FILE *" stream );
.BI "wint_t putwchar_unlocked(wchar_t " wc );
.PP
-.BI "wchar_t *fgetws_unlocked(wchar_t *restrict " ws ", int " n ,
+.BI "wchar_t *fgetws_unlocked(wchar_t " ws "[restrict ." n "], int " n ,
.BI " FILE *restrict " stream );
.BI "int fputws_unlocked(const wchar_t *restrict " ws ,
.BI " FILE *restrict " stream );
diff --git a/man3/wcpncpy.3 b/man3/wcpncpy.3
index 54745c543b..77ad70eab7 100644
--- a/man3/wcpncpy.3
+++ b/man3/wcpncpy.3
@@ -18,8 +18,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *wcpncpy(wchar_t *restrict " dest \
-", const wchar_t *restrict " src ,
+.BI "wchar_t *wcpncpy(wchar_t " dest "[restrict ." n ],
+.BI " const wchar_t " src "[restrict ." n ],
.BI " size_t " n );
.fi
.PP
diff --git a/man3/wcsncasecmp.3 b/man3/wcsncasecmp.3
index ebb9c2c993..0b072369a5 100644
--- a/man3/wcsncasecmp.3
+++ b/man3/wcsncasecmp.3
@@ -17,7 +17,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "int wcsncasecmp(const wchar_t *" s1 ", const wchar_t *" s2 ", size_t " n );
+.BI "int wcsncasecmp(const wchar_t " s1 [. n "], const wchar_t " s2 [. n "], s\
+ize_t " n );
.fi
.PP
.RS -4
diff --git a/man3/wcsncat.3 b/man3/wcsncat.3
index 0b278c05d0..a7c146a5cf 100644
--- a/man3/wcsncat.3
+++ b/man3/wcsncat.3
@@ -18,8 +18,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *wcsncat(wchar_t *restrict " dest \
-", const wchar_t *restrict " src ,
+.BI "wchar_t *wcsncat(wchar_t " dest "[restrict ." n ],
+.BI " const wchar_t " src "[restrict ." n ],
.BI " size_t " n );
.fi
.SH DESCRIPTION
diff --git a/man3/wcsncmp.3 b/man3/wcsncmp.3
index 0fedd95299..7067ccf2ff 100644
--- a/man3/wcsncmp.3
+++ b/man3/wcsncmp.3
@@ -18,7 +18,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "int wcsncmp(const wchar_t *" s1 ", const wchar_t *" s2 ", size_t " n );
+.BI "int wcsncmp(const wchar_t " s1 [. n "], const wchar_t " s2 [. n "], \
+size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/wcsncpy.3 b/man3/wcsncpy.3
index eac21d5c80..c792ce823f 100644
--- a/man3/wcsncpy.3
+++ b/man3/wcsncpy.3
@@ -18,8 +18,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *wcsncpy(wchar_t *restrict " dest \
-", const wchar_t *restrict " src ,
+.BI "wchar_t *wcsncpy(wchar_t " dest "[restrict ." n ],
+.BI " const wchar_t " src "[restrict ." n ],
.BI " size_t " n );
.fi
.SH DESCRIPTION
diff --git a/man3/wcsnlen.3 b/man3/wcsnlen.3
index a81f1cd9e3..c6e5d7cdcf 100644
--- a/man3/wcsnlen.3
+++ b/man3/wcsnlen.3
@@ -17,7 +17,7 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "size_t wcsnlen(const wchar_t *" s ", size_t " maxlen );
+.BI "size_t wcsnlen(const wchar_t " s [. maxlen "], size_t " maxlen );
.fi
.PP
.RS -4
diff --git a/man3/wcsnrtombs.3 b/man3/wcsnrtombs.3
index e5728a9aaf..61f77a431c 100644
--- a/man3/wcsnrtombs.3
+++ b/man3/wcsnrtombs.3
@@ -17,9 +17,10 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "size_t wcsnrtombs(char *restrict " dest ", const wchar_t **restrict " src ,
-.BI " size_t " nwc ", size_t " len \
-", mbstate_t *restrict " ps );
+.BI "size_t wcsnrtombs(char " dest "[restrict ." len "], \
+const wchar_t **restrict " src ,
+.BI " size_t " nwc ", size_t " len ", \
+mbstate_t *restrict " ps );
.fi
.PP
.RS -4
diff --git a/man3/wcsrtombs.3 b/man3/wcsrtombs.3
index 057feb7171..bcf57dc870 100644
--- a/man3/wcsrtombs.3
+++ b/man3/wcsrtombs.3
@@ -18,7 +18,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "size_t wcsrtombs(char *restrict " dest ", const wchar_t **restrict " src ,
+.BI "size_t wcsrtombs(char " dest "[restrict ." len "], \
+const wchar_t **restrict " src ,
.BI " size_t " len ", mbstate_t *restrict " ps );
.fi
.SH DESCRIPTION
diff --git a/man3/wcstombs.3 b/man3/wcstombs.3
index b20073df75..1e8fca593f 100644
--- a/man3/wcstombs.3
+++ b/man3/wcstombs.3
@@ -18,7 +18,8 @@ Standard C library
.nf
.B #include <stdlib.h>
.PP
-.BI "size_t wcstombs(char *restrict " dest ", const wchar_t *restrict " src ,
+.BI "size_t wcstombs(char " dest "[restrict ." n "], \
+const wchar_t *restrict " src ,
.BI " size_t " n );
.fi
.SH DESCRIPTION
diff --git a/man3/wmemchr.3 b/man3/wmemchr.3
index 4ae1c26155..72dbd706b0 100644
--- a/man3/wmemchr.3
+++ b/man3/wmemchr.3
@@ -18,7 +18,7 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *wmemchr(const wchar_t *" s ", wchar_t " c ", size_t " n );
+.BI "wchar_t *wmemchr(const wchar_t " s [. n "], wchar_t " c ", size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/wmemcmp.3 b/man3/wmemcmp.3
index 7ba38f0134..dcf5d2c748 100644
--- a/man3/wmemcmp.3
+++ b/man3/wmemcmp.3
@@ -17,7 +17,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "int wmemcmp(const wchar_t *" s1 ", const wchar_t *" s2 ", size_t " n );
+.BI "int wmemcmp(const wchar_t " s1 [. n "], const wchar_t " s2 [. n "], \
+size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/wmemcpy.3 b/man3/wmemcpy.3
index 79170e60af..4659514f99 100644
--- a/man3/wmemcpy.3
+++ b/man3/wmemcpy.3
@@ -18,8 +18,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *wmemcpy(wchar_t *restrict " dest \
-", const wchar_t *restrict " src ,
+.BI "wchar_t *wmemcpy(wchar_t " dest "[restrict ." n ],
+.BI " const wchar_t " src "[restrict ." n ],
.BI " size_t " n );
.fi
.SH DESCRIPTION
diff --git a/man3/wmemmove.3 b/man3/wmemmove.3
index fddcd534ed..fd023a24a7 100644
--- a/man3/wmemmove.3
+++ b/man3/wmemmove.3
@@ -18,7 +18,8 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *wmemmove(wchar_t *" dest ", const wchar_t *" src ", size_t " n );
+.BI "wchar_t *wmemmove(wchar_t " dest [. n "], const wchar_t " src [. n "], \
+size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/wmemset.3 b/man3/wmemset.3
index 46c3b8f7d9..706aa969c0 100644
--- a/man3/wmemset.3
+++ b/man3/wmemset.3
@@ -18,7 +18,7 @@ Standard C library
.nf
.B #include <wchar.h>
.PP
-.BI "wchar_t *wmemset(wchar_t *" wcs ", wchar_t " wc ", size_t " n );
+.BI "wchar_t *wmemset(wchar_t " wcs [. n "], wchar_t " wc ", size_t " n );
.fi
.SH DESCRIPTION
The
diff --git a/man3/wprintf.3 b/man3/wprintf.3
index afd9e64444..f3cdfa2c99 100644
--- a/man3/wprintf.3
+++ b/man3/wprintf.3
@@ -23,13 +23,13 @@ Standard C library
.BI "int wprintf(const wchar_t *restrict " format ", ...);"
.BI "int fwprintf(FILE *restrict " stream ,
.BI " const wchar_t *restrict " format ", ...);"
-.BI "int swprintf(wchar_t *restrict " wcs ", size_t " maxlen ,
+.BI "int swprintf(wchar_t " wcs "[restrict ." maxlen "], size_t " maxlen ,
.BI " const wchar_t *restrict " format ", ...);"
.PP
.BI "int vwprintf(const wchar_t *restrict " format ", va_list " args );
.BI "int vfwprintf(FILE *restrict " stream ,
.BI " const wchar_t *restrict " format ", va_list " args );
-.BI "int vswprintf(wchar_t *restrict " wcs ", size_t " maxlen ,
+.BI "int vswprintf(wchar_t " wcs "[restrict ." maxlen "], size_t " maxlen ,
.BI " const wchar_t *restrict " format ", va_list " args );
.fi
.PP