slist.3: Copy and adapt code from queue.3

A few fixes to note:

- Sorted alphabetically some macros
- ffix: remove alignment spaces in example (as in list.3)

Signed-off-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Alejandro Colomar 2020-10-22 14:38:18 +02:00 committed by Michael Kerrisk
parent 21b0363fd0
commit 6a1c4d6fc4
1 changed files with 23 additions and 7 deletions

View File

@ -36,38 +36,52 @@
.Nm SLIST_FIRST ,
.Nm SLIST_FOREACH ,
.\" .Nm SLIST_FOREACH_FROM ,
.\" .Nm SLIST_FOREACH_SAFE ,
.\" .Nm SLIST_FOREACH_FROM_SAFE ,
.\" .Nm SLIST_FOREACH_SAFE ,
.Nm SLIST_HEAD ,
.Nm SLIST_HEAD_INITIALIZER ,
.Nm SLIST_INIT ,
.Nm SLIST_INSERT_AFTER ,
.Nm SLIST_INSERT_HEAD ,
.Nm SLIST_NEXT ,
.Nm SLIST_REMOVE ,
.\" .Nm SLIST_REMOVE_AFTER ,
.Nm SLIST_REMOVE_HEAD ,
.Nm SLIST_REMOVE ,
.\" .Nm SLIST_SWAP ,
.SH SYNOPSIS
.In sys/queue.h
.\"
.Fn SLIST_EMPTY "SLIST_HEAD *head"
.Fn SLIST_ENTRY "TYPE"
.Fn SLIST_FIRST "SLIST_HEAD *head"
.Fn SLIST_FOREACH "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME"
.\" .Fn SLIST_FOREACH_FROM "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME"
.\" .Fn SLIST_FOREACH_SAFE "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME" "TYPE *temp_var"
.\" .Fn SLIST_FOREACH_FROM_SAFE "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME" "TYPE *temp_var"
.\" .Fn SLIST_FOREACH_SAFE "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME" "TYPE *temp_var"
.Fn SLIST_HEAD "HEADNAME" "TYPE"
.Fn SLIST_HEAD_INITIALIZER "SLIST_HEAD head"
.Fn SLIST_INIT "SLIST_HEAD *head"
.Fn SLIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "SLIST_ENTRY NAME"
.Fn SLIST_INSERT_HEAD "SLIST_HEAD *head" "TYPE *elm" "SLIST_ENTRY NAME"
.Fn SLIST_NEXT "TYPE *elm" "SLIST_ENTRY NAME"
.Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
.\" .Fn SLIST_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
.Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
.Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
.\" .Fn SLIST_SWAP "SLIST_HEAD *head1" "SLIST_HEAD *head2" "SLIST_ENTRY NAME"
.\"
.SH DESCRIPTION
In the macro definitions,
.Fa TYPE
is the name of a user-defined structure,
that must contain a field of type
.Li SLIST_ENTRY ,
named
.Fa NAME .
The argument
.Fa HEADNAME
is the name of a user defined structure that must be declared
using the macro
.Li SLIST_HEAD .
.Ss Singly-linked lists
A singly-linked list is headed by a structure defined by the
.Nm SLIST_HEAD
@ -221,10 +235,12 @@ from the list.
.\" .Fa head1
.\" and
.\" .Fa head2 .
.Pp
See the EXAMPLES section below for an example program using a singly-linked list.
.SH RETURN VALUE
.SH CONFORMING TO
Not in POSIX.1, POSIX.1-2001 or POSIX.1-2008.
Present on the BSDs
(SLIST macros first appeared in
.Bx 4.4 ).
.SH BUGS
.SH EXAMPLES
.Ss Singly-linked list example
@ -245,7 +261,7 @@ SLIST_HEAD(slisthead, entry);
int
main(void)
{
struct entry *n1, *n2, *n3, *np;
struct entry *n1, *n2, *n3, *np;
struct slisthead head; /* Singly-linked List
head. */