# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 06:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIST" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. LIST_FOREACH_FROM, #. LIST_FOREACH_SAFE, #. LIST_FOREACH_FROM_SAFE, #. LIST_PREV, #. LIST_SWAP #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "LIST_EMPTY, LIST_ENTRY, LIST_FIRST, LIST_FOREACH, LIST_HEAD, " "LIST_HEAD_INITIALIZER, LIST_INIT, LIST_INSERT_AFTER, LIST_INSERT_BEFORE, " "LIST_INSERT_HEAD, LIST_NEXT, LIST_REMOVE - implementation of a doubly linked " "list" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Esys/queue.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "B\n" "BIB<);>\n" "BIB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<,>\n" "B< struct TYPE *>IB<, LIST_ENTRY >IB<);>\n" "BIB<,>\n" "B< struct TYPE *>IB<, LIST_ENTRY >IB<);>\n" "BIB<,>\n" "B< struct TYPE *>IB<, LIST_ENTRY >IB<);>\n" msgstr "" #. .BI "struct TYPE *LIST_PREV(struct TYPE *" elm ", LIST_HEAD *" head , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<);>\n" "BIB<, LIST_ENTRY >IB<);>\n" msgstr "" #. #-#-#-#-# archlinux: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .P #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #. #-#-#-#-# debian-bookworm: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .PP #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #. #-#-#-#-# debian-unstable: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .P #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #. #-#-#-#-# fedora-40: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .P #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #. #-#-#-#-# fedora-rawhide: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .P #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #. #-#-#-#-# mageia-cauldron: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .P #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #. #-#-#-#-# opensuse-leap-15-6: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .PP #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #. #-#-#-#-# opensuse-tumbleweed: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .BI "LIST_FOREACH_FROM(struct TYPE *" var ", LIST_HEAD *" head ", LIST_ENTRY " NAME ); #. .P #. .BI "LIST_FOREACH_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. .BI "LIST_FOREACH_FROM_SAFE(struct TYPE *" var ", LIST_HEAD *" head , #. .BI " LIST_ENTRY " NAME ", struct TYPE *" temp_var ); #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<, LIST_HEAD *>IB<, LIST_ENTRY >IB<);>\n" msgstr "" #. #-#-#-#-# archlinux: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #. #-#-#-#-# debian-bookworm: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .PP #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #. #-#-#-#-# debian-unstable: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #. #-#-#-#-# fedora-40: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #. #-#-#-#-# fedora-rawhide: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #. #-#-#-#-# mageia-cauldron: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #. #-#-#-#-# opensuse-leap-15-6: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .PP #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #. #-#-#-#-# opensuse-tumbleweed: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BI "void LIST_SWAP(LIST_HEAD *" head1 ", LIST_HEAD *" head2 , #. .BI " struct TYPE, LIST_ENTRY " NAME ); #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<, LIST_ENTRY >IB<);>\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "These macros define and operate on doubly linked lists." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the macro definitions, I is the name of a user-defined structure, " "that must contain a field of type I, named I. The " "argument I is the name of a user-defined structure that must be " "declared using the macro B()." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Creation" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A list is headed by a structure defined by the B() macro. This " "structure contains a single pointer to the first element on the list. The " "elements are doubly linked so that an arbitrary element can be removed " "without traversing the list. New elements can be added to the list after an " "existing element, before an existing element, or at the head of the list. A " "I structure is declared as follows:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIST_HEAD(HEADNAME, TYPE) head;\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "where I is the structure to be defined, and I " "is the type of the elements to be linked into the list. A pointer to the " "head of the list can later be declared as:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "struct HEADNAME *headp;\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "(The names I and I are user selectable.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() declares a structure that connects the elements in the list." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() evaluates to an initializer for the list I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B() initializes the list referenced by I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() evaluates to true if there are no elements in the list." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Insertion" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() inserts the new element I at the head of the " "list." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() inserts the new element I before the element " "I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() inserts the new element I after the element " "I." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Traversal" msgstr "" #. #-#-#-#-# archlinux: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #. #-#-#-#-# debian-bookworm: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .PP #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #. #-#-#-#-# debian-unstable: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #. #-#-#-#-# fedora-40: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #. #-#-#-#-# fedora-rawhide: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #. #-#-#-#-# mageia-cauldron: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #. #-#-#-#-# opensuse-leap-15-6: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .PP #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #. #-#-#-#-# opensuse-tumbleweed: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_PREV () #. returns the previous element in the list, or NULL if this is the first. #. List #. .I head #. must contain element #. .IR elm . #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() returns the first element in the list, or NULL if the list " "is empty." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() returns the next element in the list, or NULL if this is the " "last." msgstr "" #. #-#-#-#-# archlinux: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .P #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .P #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #. #-#-#-#-# debian-bookworm: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .PP #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .PP #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .PP #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #. #-#-#-#-# debian-unstable: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .P #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .P #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #. #-#-#-#-# fedora-40: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .P #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .P #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #. #-#-#-#-# fedora-rawhide: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .P #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .P #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #. #-#-#-#-# mageia-cauldron: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .P #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .P #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #. #-#-#-#-# opensuse-leap-15-6: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .PP #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .PP #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .PP #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #. #-#-#-#-# opensuse-tumbleweed: list.3.pot (PACKAGE VERSION) #-#-#-#-# #. .P #. .BR LIST_FOREACH_FROM () #. behaves identically to #. .BR LIST_FOREACH () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. .P #. .BR LIST_FOREACH_SAFE () #. traverses the list referenced by #. .I head #. in the forward direction, assigning each element in turn to #. .IR var . #. However, unlike #. .BR LIST_FOREACH () #. here it is permitted to both remove #. .I var #. as well as free it from within the loop safely without interfering with the #. traversal. #. .P #. .BR LIST_FOREACH_FROM_SAFE () #. behaves identically to #. .BR LIST_FOREACH_SAFE () #. when #. .I var #. is NULL, else it treats #. .I var #. as a previously found LIST element and begins the loop at #. .I var #. instead of the first element in the LIST referenced by #. .IR head . #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() traverses the list referenced by I in the forward " "direction, assigning each element in turn to I." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Removal" msgstr "" #. .SS Other features #. .BR LIST_SWAP () #. swaps the contents of #. .I head1 #. and #. .IR head2 . #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B() removes the element I from the list." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() returns nonzero if the list is empty, and zero if the list " "contains at least one entry." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(), and B() return a pointer to the first or next " "I structure, respectively." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() returns an initializer that can be assigned to " "the list I." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "BSD." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "4.4BSD." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BUGS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() doesn't allow I to be removed or freed within the " "loop, as it would interfere with the traversal. B(), " "which is present on the BSDs but is not present in glibc, fixes this " "limitation by allowing I to safely be removed from the list and freed " "from within the loop without interfering with the traversal." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#include Estddef.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/queue.hE\n" "\\&\n" "struct entry {\n" " int data;\n" " LIST_ENTRY(entry) entries; /* List */\n" "};\n" "\\&\n" "LIST_HEAD(listhead, entry);\n" "\\&\n" "int\n" "main(void)\n" "{\n" " struct entry *n1, *n2, *n3, *np;\n" " struct listhead head; /* List head */\n" " int i;\n" "\\&\n" " LIST_INIT(&head); /* Initialize the list */\n" "\\&\n" " n1 = malloc(sizeof(struct entry)); /* Insert at the head */\n" " LIST_INSERT_HEAD(&head, n1, entries);\n" "\\&\n" " n2 = malloc(sizeof(struct entry)); /* Insert after */\n" " LIST_INSERT_AFTER(n1, n2, entries);\n" "\\&\n" " n3 = malloc(sizeof(struct entry)); /* Insert before */\n" " LIST_INSERT_BEFORE(n2, n3, entries);\n" "\\&\n" " i = 0; /* Forward traversal */\n" " LIST_FOREACH(np, &head, entries)\n" " np-Edata = i++;\n" "\\&\n" " LIST_REMOVE(n2, entries); /* Deletion */\n" " free(n2);\n" " /* Forward traversal */\n" " LIST_FOREACH(np, &head, entries)\n" " printf(\"%i\\en\", np-Edata);\n" " /* List deletion */\n" " n1 = LIST_FIRST(&head);\n" " while (n1 != NULL) {\n" " n2 = LIST_NEXT(n1, entries);\n" " free(n1);\n" " n1 = n2;\n" " }\n" " LIST_INIT(&head);\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B(3), B(7)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2022-10-30" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008. Present on the BSDs (LIST " "macros first appeared in 4.4BSD)." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#include Estddef.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/queue.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "struct entry {\n" " int data;\n" " LIST_ENTRY(entry) entries; /* List */\n" "};\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "LIST_HEAD(listhead, entry);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(void)\n" "{\n" " struct entry *n1, *n2, *n3, *np;\n" " struct listhead head; /* List head */\n" " int i;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " LIST_INIT(&head); /* Initialize the list */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " n1 = malloc(sizeof(struct entry)); /* Insert at the head */\n" " LIST_INSERT_HEAD(&head, n1, entries);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " n2 = malloc(sizeof(struct entry)); /* Insert after */\n" " LIST_INSERT_AFTER(n1, n2, entries);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " n3 = malloc(sizeof(struct entry)); /* Insert before */\n" " LIST_INSERT_BEFORE(n2, n3, entries);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " i = 0; /* Forward traversal */\n" " LIST_FOREACH(np, &head, entries)\n" " np-Edata = i++;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " LIST_REMOVE(n2, entries); /* Deletion */\n" " free(n2);\n" " /* Forward traversal */\n" " LIST_FOREACH(np, &head, entries)\n" " printf(\"%i\\en\", np-Edata);\n" " /* List deletion */\n" " n1 = LIST_FIRST(&head);\n" " while (n1 != NULL) {\n" " n2 = LIST_NEXT(n1, entries);\n" " free(n1);\n" " n1 = n2;\n" " }\n" " LIST_INIT(&head);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""