summaryrefslogtreecommitdiffstats
path: root/po/fr/archive/man3
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /po/fr/archive/man3
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'po/fr/archive/man3')
-rw-r--r--po/fr/archive/man3/getumask.3.po193
-rw-r--r--po/fr/archive/man3/queue.3.po1739
-rw-r--r--po/fr/archive/man3/stpcpy.3.po327
-rw-r--r--po/fr/archive/man3/strcat.3.po456
4 files changed, 2715 insertions, 0 deletions
diff --git a/po/fr/archive/man3/getumask.3.po b/po/fr/archive/man3/getumask.3.po
new file mode 100644
index 00000000..b3e83974
--- /dev/null
+++ b/po/fr/archive/man3/getumask.3.po
@@ -0,0 +1,193 @@
+# French translation of manpages
+# This file is distributed under the same license as the manpages-l10n package.
+# Copyright © of this file:
+# Christophe Blaess <https://www.blaess.fr/christophe/>, 1996-2003.
+# Stéphan Rafin <stephan.rafin@laposte.net>, 2002.
+# Thierry Vignaud <tvignaud@mandriva.com>, 1999, 2002.
+# François Micaux, 2002.
+# Alain Portal <aportal@univ-montp2.fr>, 2003-2008.
+# Jean-Philippe Guérard <fevrier@tigreraye.org>, 2005-2006.
+# Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, 2006-2007.
+# Julien Cristau <jcristau@debian.org>, 2006-2007.
+# Thomas Huriaux <thomas.huriaux@gmail.com>, 2006-2008.
+# Nicolas François <nicolas.francois@centraliens.net>, 2006-2008.
+# Florentin Duneau <fduneau@gmail.com>, 2006-2010.
+# Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, 2006, 2013, 2014.
+# Denis Barbier <barbier@debian.org>, 2006, 2010, 2011.
+# David Prévot <david@tilapin.org>, 2010, 2012-2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: perkamon\n"
+"POT-Creation-Date: 2023-08-27 17:00+0200\n"
+"PO-Revision-Date: 2023-03-14 13:47+0100\n"
+"Last-Translator: David Prévot <david@tilapin.org>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Lokalize 22.12.1\n"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "GETUMASK"
+msgstr "GETUMASK"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "2017-09-15"
+msgstr "15 septembre 2017"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "GNU"
+msgstr "GNU"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Linux Programmer's Manual"
+msgstr "Manuel du programmeur Linux"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "getumask - get file creation mask"
+msgstr ""
+"getumask - Renvoyer le masque de permission pour la création de fichier"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
+msgstr "B<#define _GNU_SOURCE> /* Consultez feature_test_macros(7) */"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "B<#include E<lt>sys/types.hE<gt>>"
+msgstr "B<#include E<lt>sys/types.hE<gt>>"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "B<#include E<lt>sys/stat.hE<gt>>"
+msgstr "B<#include E<lt>sys/stat.hE<gt>>"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "B<mode_t getumask(void);>"
+msgstr "B<mode_t getumask(void);>"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"This function returns the current file creation mask. It is equivalent to"
+msgstr ""
+"Cette fonction renvoie le masque de permissions utilisé lors de la création "
+"d'un fichier. Elle est équivalente à"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"mode_t getumask(void)\n"
+"{\n"
+" mode_t mask = umask( 0 );\n"
+" umask(mask);\n"
+" return mask;\n"
+"}\n"
+msgstr ""
+"mode_t getumask(void)\n"
+"{\n"
+" mode_t mask = umask( 0 );\n"
+" umask(mask);\n"
+" return mask;\n"
+"}\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"except that it is documented to be thread-safe (that is, shares a lock with "
+"the B<umask>(2) library call)."
+msgstr ""
+"excepté qu'elle est explicitement prévue pour pouvoir être utilisée de "
+"manière saine dans le contexte d'une application multithread (elle partage "
+"un sémaphore avec la fonction B<umask>(2))."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr "CONFORMITÉ"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "This is a vaporware GNU extension."
+msgstr "Ceci est une extension GNU peu utilisée."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "NOTES"
+msgstr "NOTES"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"This function is documented in the glibc manual, but, as at glibc version "
+"2.24, it is not implemented on Linux. (See B<umask>(2) for a thread-safe "
+"method of discovering a process's umask.)"
+msgstr ""
+"Cette fonction est documentée dans le manuel de la glibc, mais, dans la "
+"version 2.24 de la glibc, elle n'est pas encore implémentée dans Linux. "
+"(Voir B<umask>(2) pour une méthode sûre du point de vue des threads pour "
+"trouver l'umask d'un processus.)"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "B<umask>(2)"
+msgstr "B<umask>(2)"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "COLOPHON"
+msgstr "COLOPHON"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"This page is part of release 4.16 of the Linux I<man-pages> project. A "
+"description of the project, information about reporting bugs, and the latest "
+"version of this page, can be found at \\%https://www.kernel.org/doc/man-"
+"pages/."
+msgstr ""
+"Cette page fait partie de la publication 4.16 du projet I<man-pages> Linux. "
+"Une description du projet et des instructions pour signaler des anomalies et "
+"la dernière version de cette page peuvent être trouvées à l'adresse \\"
+"%https://www.kernel.org/doc/man-pages/."
diff --git a/po/fr/archive/man3/queue.3.po b/po/fr/archive/man3/queue.3.po
new file mode 100644
index 00000000..9ec29020
--- /dev/null
+++ b/po/fr/archive/man3/queue.3.po
@@ -0,0 +1,1739 @@
+# French translation of manpages
+# This file is distributed under the same license as the manpages-l10n package.
+# Copyright © of this file:
+# Christophe Blaess <https://www.blaess.fr/christophe/>, 1996-2003.
+# Stéphan Rafin <stephan.rafin@laposte.net>, 2002.
+# Thierry Vignaud <tvignaud@mandriva.com>, 1999, 2002.
+# François Micaux, 2002.
+# Alain Portal <aportal@univ-montp2.fr>, 2003-2008.
+# Jean-Philippe Guérard <fevrier@tigreraye.org>, 2005-2006.
+# Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, 2006-2007.
+# Julien Cristau <jcristau@debian.org>, 2006-2007.
+# Thomas Huriaux <thomas.huriaux@gmail.com>, 2006-2008.
+# Nicolas François <nicolas.francois@centraliens.net>, 2006-2008.
+# Florentin Duneau <fduneau@gmail.com>, 2006-2010.
+# Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, 2006.
+# Denis Barbier <barbier@debian.org>, 2006, 2010.
+# David Prévot <david@tilapin.org>, 2010-2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: perkamon\n"
+"POT-Creation-Date: 2023-08-27 17:15+0200\n"
+"PO-Revision-Date: 2018-09-10 20:55+0000\n"
+"Last-Translator: Weblate Admin <jean-baptiste@holcroft.fr>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 3.1.1\n"
+
+#. type: Dd
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "February 7, 2015"
+msgstr ""
+
+#. type: Dt
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "QUEUE 3"
+msgstr "QUEUE"
+
+#. type: Sh
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#. .Nm SLIST_FOREACH_FROM ,
+#. .Nm SLIST_FOREACH_SAFE ,
+#. .Nm SLIST_FOREACH_FROM_SAFE ,
+#. .Nm SLIST_REMOVE_AFTER ,
+#. .Nm SLIST_SWAP ,
+#. .Nm STAILQ_FOREACH_FROM ,
+#. .Nm STAILQ_FOREACH_SAFE ,
+#. .Nm STAILQ_FOREACH_FROM_SAFE ,
+#. .Nm STAILQ_LAST ,
+#. .Nm STAILQ_REMOVE_AFTER ,
+#. .Nm STAILQ_SWAP ,
+#. .Nm LIST_FOREACH_FROM ,
+#. .Nm LIST_FOREACH_SAFE ,
+#. .Nm LIST_FOREACH_FROM_SAFE ,
+#. .Nm LIST_PREV ,
+#. .Nm LIST_SWAP ,
+#. .Nm TAILQ_FOREACH_FROM ,
+#. .Nm TAILQ_FOREACH_SAFE ,
+#. .Nm TAILQ_FOREACH_FROM_SAFE ,
+#. .Nm TAILQ_FOREACH_REVERSE_FROM ,
+#. .Nm TAILQ_FOREACH_REVERSE_SAFE ,
+#. .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE ,
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"E<.Nm SLIST_EMPTY>, E<.Nm SLIST_ENTRY>, E<.Nm SLIST_FIRST>, E<.Nm "
+"SLIST_FOREACH>, E<.Nm SLIST_HEAD>, E<.Nm SLIST_HEAD_INITIALIZER>, E<.Nm "
+"SLIST_INIT>, E<.Nm SLIST_INSERT_AFTER>, E<.Nm SLIST_INSERT_HEAD>, E<.Nm "
+"SLIST_NEXT>, E<.Nm SLIST_REMOVE_HEAD>, E<.Nm SLIST_REMOVE>, E<.Nm "
+"STAILQ_CONCAT>, E<.Nm STAILQ_EMPTY>, E<.Nm STAILQ_ENTRY>, E<.Nm "
+"STAILQ_FIRST>, E<.Nm STAILQ_FOREACH>, E<.Nm STAILQ_HEAD>, E<.Nm "
+"STAILQ_HEAD_INITIALIZER>, E<.Nm STAILQ_INIT>, E<.Nm STAILQ_INSERT_AFTER>, E<."
+"Nm STAILQ_INSERT_HEAD>, E<.Nm STAILQ_INSERT_TAIL>, E<.Nm STAILQ_NEXT>, E<.Nm "
+"STAILQ_REMOVE_HEAD>, E<.Nm STAILQ_REMOVE>, E<.Nm LIST_EMPTY>, E<.Nm "
+"LIST_ENTRY>, E<.Nm LIST_FIRST>, E<.Nm LIST_FOREACH>, E<.Nm LIST_HEAD>, E<.Nm "
+"LIST_HEAD_INITIALIZER>, E<.Nm LIST_INIT>, E<.Nm LIST_INSERT_AFTER>, E<.Nm "
+"LIST_INSERT_BEFORE>, E<.Nm LIST_INSERT_HEAD>, E<.Nm LIST_NEXT>, E<.Nm "
+"LIST_REMOVE>, E<.Nm TAILQ_CONCAT>, E<.Nm TAILQ_EMPTY>, E<.Nm TAILQ_ENTRY>, "
+"E<.Nm TAILQ_FIRST>, E<.Nm TAILQ_FOREACH>, E<.Nm TAILQ_FOREACH_REVERSE>, E<."
+"Nm TAILQ_HEAD>, E<.Nm TAILQ_HEAD_INITIALIZER>, E<.Nm TAILQ_INIT>, E<.Nm "
+"TAILQ_INSERT_AFTER>, E<.Nm TAILQ_INSERT_BEFORE>, E<.Nm TAILQ_INSERT_HEAD>, "
+"E<.Nm TAILQ_INSERT_TAIL>, E<.Nm TAILQ_LAST>, E<.Nm TAILQ_NEXT>, E<.Nm "
+"TAILQ_PREV>, E<.Nm TAILQ_REMOVE>, E<.Nm TAILQ_SWAP>"
+msgstr ""
+
+#. type: Nd
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "implementations of singly-linked lists, singly-linked tail queues,"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "lists and tail queues"
+msgstr "Listes doubles"
+
+#. type: Sh
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: In
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "sys/queue.h"
+msgstr ""
+
+#
+#
+#
+#
+#. .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_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
+#. .Fn SLIST_SWAP "SLIST_HEAD *head1" "SLIST_HEAD *head2" "SLIST_ENTRY NAME"
+#. .Fn STAILQ_FOREACH_FROM "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
+#. .Fn STAILQ_FOREACH_SAFE "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME" "TYPE *temp_var"
+#. .Fn STAILQ_FOREACH_FROM_SAFE "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME" "TYPE *temp_var"
+#. .Fn STAILQ_LAST "STAILQ_HEAD *head" "TYPE" "STAILQ_ENTRY NAME"
+#. .Fn STAILQ_REMOVE_AFTER "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
+#. .Fn STAILQ_SWAP "STAILQ_HEAD *head1" "STAILQ_HEAD *head2" "STAILQ_ENTRY NAME"
+#. .Fn LIST_FOREACH_FROM "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME"
+#. .Fn LIST_FOREACH_SAFE "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME" "TYPE *temp_var"
+#. .Fn LIST_FOREACH_FROM_SAFE "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME" "TYPE *temp_var"
+#. .Fn LIST_PREV "TYPE *elm" "LIST_HEAD *head" "TYPE" "LIST_ENTRY NAME"
+#. .Fn TAILQ_FOREACH_FROM "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME"
+#. .Fn TAILQ_FOREACH_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+#. .Fn TAILQ_FOREACH_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+#. .Fn TAILQ_FOREACH_REVERSE_FROM "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME"
+#. .Fn TAILQ_FOREACH_REVERSE_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+#. .Fn TAILQ_FOREACH_REVERSE_FROM_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"E<.Fn SLIST_EMPTY \"SLIST_HEAD *head\"> E<.Fn SLIST_ENTRY \"TYPE\"> E<.Fn "
+"SLIST_FIRST \"SLIST_HEAD *head\"> E<.Fn SLIST_FOREACH \"TYPE *var\" "
+"\"SLIST_HEAD *head\" \"SLIST_ENTRY NAME\"> E<.Fn SLIST_HEAD \"HEADNAME\" "
+"\"TYPE\"> E<.Fn SLIST_HEAD_INITIALIZER \"SLIST_HEAD head\"> E<.Fn SLIST_INIT "
+"\"SLIST_HEAD *head\"> E<.Fn SLIST_INSERT_AFTER \"TYPE *listelm\" \"TYPE "
+"*elm\" \"SLIST_ENTRY NAME\"> E<.Fn SLIST_INSERT_HEAD \"SLIST_HEAD *head\" "
+"\"TYPE *elm\" \"SLIST_ENTRY NAME\"> E<.Fn SLIST_NEXT \"TYPE *elm\" "
+"\"SLIST_ENTRY NAME\"> E<.Fn SLIST_REMOVE_HEAD \"SLIST_HEAD *head\" "
+"\"SLIST_ENTRY NAME\"> E<.Fn SLIST_REMOVE \"SLIST_HEAD *head\" \"TYPE *elm\" "
+"\"TYPE\" \"SLIST_ENTRY NAME\"> E<.Fn STAILQ_CONCAT \"STAILQ_HEAD *head1\" "
+"\"STAILQ_HEAD *head2\"> E<.Fn STAILQ_EMPTY \"STAILQ_HEAD *head\"> E<.Fn "
+"STAILQ_ENTRY \"TYPE\"> E<.Fn STAILQ_FIRST \"STAILQ_HEAD *head\"> E<.Fn "
+"STAILQ_FOREACH \"TYPE *var\" \"STAILQ_HEAD *head\" \"STAILQ_ENTRY NAME\"> E<."
+"Fn STAILQ_HEAD \"HEADNAME\" \"TYPE\"> E<.Fn STAILQ_HEAD_INITIALIZER "
+"\"STAILQ_HEAD head\"> E<.Fn STAILQ_INIT \"STAILQ_HEAD *head\"> E<.Fn "
+"STAILQ_INSERT_AFTER \"STAILQ_HEAD *head\" \"TYPE *listelm\" \"TYPE *elm\" "
+"\"STAILQ_ENTRY NAME\"> E<.Fn STAILQ_INSERT_HEAD \"STAILQ_HEAD *head\" \"TYPE "
+"*elm\" \"STAILQ_ENTRY NAME\"> E<.Fn STAILQ_INSERT_TAIL \"STAILQ_HEAD *head\" "
+"\"TYPE *elm\" \"STAILQ_ENTRY NAME\"> E<.Fn STAILQ_NEXT \"TYPE *elm\" "
+"\"STAILQ_ENTRY NAME\"> E<.Fn STAILQ_REMOVE_HEAD \"STAILQ_HEAD *head\" "
+"\"STAILQ_ENTRY NAME\"> E<.Fn STAILQ_REMOVE \"STAILQ_HEAD *head\" \"TYPE "
+"*elm\" \"TYPE\" \"STAILQ_ENTRY NAME\"> E<.Fn LIST_EMPTY \"LIST_HEAD *head\"> "
+"E<.Fn LIST_ENTRY \"TYPE\"> E<.Fn LIST_FIRST \"LIST_HEAD *head\"> E<.Fn "
+"LIST_FOREACH \"TYPE *var\" \"LIST_HEAD *head\" \"LIST_ENTRY NAME\"> E<.Fn "
+"LIST_HEAD \"HEADNAME\" \"TYPE\"> E<.Fn LIST_HEAD_INITIALIZER \"LIST_HEAD "
+"head\"> E<.Fn LIST_INIT \"LIST_HEAD *head\"> E<.Fn LIST_INSERT_AFTER \"TYPE "
+"*listelm\" \"TYPE *elm\" \"LIST_ENTRY NAME\"> E<.Fn LIST_INSERT_BEFORE "
+"\"TYPE *listelm\" \"TYPE *elm\" \"LIST_ENTRY NAME\"> E<.Fn LIST_INSERT_HEAD "
+"\"LIST_HEAD *head\" \"TYPE *elm\" \"LIST_ENTRY NAME\"> E<.Fn LIST_NEXT "
+"\"TYPE *elm\" \"LIST_ENTRY NAME\"> E<.Fn LIST_REMOVE \"TYPE *elm\" "
+"\"LIST_ENTRY NAME\"> E<.Fn LIST_SWAP \"LIST_HEAD *head1\" \"LIST_HEAD "
+"*head2\" \"TYPE\" \"LIST_ENTRY NAME\"> E<.Fn TAILQ_CONCAT \"TAILQ_HEAD "
+"*head1\" \"TAILQ_HEAD *head2\" \"TAILQ_ENTRY NAME\"> E<.Fn TAILQ_EMPTY "
+"\"TAILQ_HEAD *head\"> E<.Fn TAILQ_ENTRY \"TYPE\"> E<.Fn TAILQ_FIRST "
+"\"TAILQ_HEAD *head\"> E<.Fn TAILQ_FOREACH \"TYPE *var\" \"TAILQ_HEAD *head\" "
+"\"TAILQ_ENTRY NAME\"> E<.Fn TAILQ_FOREACH_REVERSE \"TYPE *var\" \"TAILQ_HEAD "
+"*head\" \"HEADNAME\" \"TAILQ_ENTRY NAME\"> E<.Fn TAILQ_HEAD \"HEADNAME\" "
+"\"TYPE\"> E<.Fn TAILQ_HEAD_INITIALIZER \"TAILQ_HEAD head\"> E<.Fn TAILQ_INIT "
+"\"TAILQ_HEAD *head\"> E<.Fn TAILQ_INSERT_AFTER \"TAILQ_HEAD *head\" \"TYPE "
+"*listelm\" \"TYPE *elm\" \"TAILQ_ENTRY NAME\"> E<.Fn TAILQ_INSERT_BEFORE "
+"\"TYPE *listelm\" \"TYPE *elm\" \"TAILQ_ENTRY NAME\"> E<.Fn "
+"TAILQ_INSERT_HEAD \"TAILQ_HEAD *head\" \"TYPE *elm\" \"TAILQ_ENTRY NAME\"> "
+"E<.Fn TAILQ_INSERT_TAIL \"TAILQ_HEAD *head\" \"TYPE *elm\" \"TAILQ_ENTRY "
+"NAME\"> E<.Fn TAILQ_LAST \"TAILQ_HEAD *head\" \"HEADNAME\"> E<.Fn TAILQ_NEXT "
+"\"TYPE *elm\" \"TAILQ_ENTRY NAME\"> E<.Fn TAILQ_PREV \"TYPE *elm\" "
+"\"HEADNAME\" \"TAILQ_ENTRY NAME\"> E<.Fn TAILQ_REMOVE \"TAILQ_HEAD *head\" "
+"\"TYPE *elm\" \"TAILQ_ENTRY NAME\"> E<.Fn TAILQ_SWAP \"TAILQ_HEAD *head1\" "
+"\"TAILQ_HEAD *head2\" \"TYPE\" \"TAILQ_ENTRY NAME\">"
+msgstr ""
+
+#. type: Sh
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"These macros define and operate on four types of data structures: singly-"
+"linked lists, singly-linked tail queues, lists, and tail queues. All four "
+"structures support the following functionality:"
+msgstr ""
+"Ces macros définissent et manipulent trois types de structures de "
+"données\\ : les listes simples, les listes doubles et les listes "
+"circulaires. Ces trois structures supportent les fonctionnalités "
+"suivantes\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "Insertion of a new entry at the head of the list."
+msgstr "Insertion d'un élément en tête de liste\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "Insertion of a new entry after any element in the list."
+msgstr "Insertion d'un élément après n'importe quel élément existant\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "O(1) removal of an entry from the head of the list."
+msgstr "Insertion d'un élément en tête de liste\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "Forward traversal through the list."
+msgstr "Traversée séquentielle de la liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "Swapping the contents of two lists."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"Singly-linked lists are the simplest of the four data structures and support "
+"only the above functionality. Singly-linked lists are ideal for "
+"applications with large datasets and few or no removals, or for implementing "
+"a LIFO queue. Singly-linked lists add the following functionality:"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "O(n) removal of any entry in the list."
+msgstr "Suppression de n'importe quel élément\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "Singly-linked tail queues add the following functionality:"
+msgstr "Les listes doubles ajoutent la fonctionnalité suivante\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "Entries can be added at the end of a list."
+msgstr "Un élément peut être ajouté en fin de liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "They may be concatenated."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "However:"
+msgstr "Cependant\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "All list insertions must specify the head of the list."
+msgstr ""
+"Toutes les insertions et suppressions doivent mentionner la tête de la "
+"liste\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "Each head entry requires two pointers rather than one."
+msgstr "L'élément de tête nécessite deux pointeurs au lieu d'un seul\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"Code size is about 15% greater and operations run about 20% slower than "
+"singly-linked lists."
+msgstr ""
+"La taille du code est environ 15% plus grande, et l'exécution environ 20% "
+"plus lente que les listes."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"Singly-linked tail queues are ideal for applications with large datasets and "
+"few or no removals, or for implementing a FIFO queue."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"All doubly linked types of data structures (lists and tail queues) "
+"additionally allow:"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "Insertion of a new entry before any element in the list."
+msgstr "Insertion d'un élément après n'importe quel élément existant\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "O(1) removal of any entry in the list."
+msgstr "Suppression de n'importe quel élément\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "Each element requires two pointers rather than one."
+msgstr "L'élément de tête nécessite deux pointeurs au lieu d'un seul\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"Code size and execution time of operations (except for removal) is about "
+"twice that of the singly-linked data-structures."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"Linked lists are the simplest of the doubly linked data structures. They "
+"add the following functionality over the above:"
+msgstr ""
+"Les listes sont les plus simples de ces trois structures de données et ne "
+"supportent que les fonctionnalités ci-dessus."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "They may be traversed backwards."
+msgstr "Elles peuvent être traversées à l'envers, de la queue à la tête\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"To traverse backwards, an entry to begin the traversal and the list in which "
+"it is contained must be specified."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "Tail queues add the following functionality:"
+msgstr "Les listes doubles ajoutent la fonctionnalité suivante\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "They may be traversed backwards, from tail to head."
+msgstr "Elles peuvent être traversées à l'envers, de la queue à la tête\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "All list insertions and removals must specify the head of the list."
+msgstr ""
+"Toutes les insertions et suppressions doivent mentionner la tête de la "
+"liste\\ ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"In the macro definitions, E<.Fa TYPE> is the name of a user defined "
+"structure, that must contain a field of type E<.Li SLIST_ENTRY>, E<.Li "
+"STAILQ_ENTRY>, E<.Li LIST_ENTRY>, or E<.Li TAILQ_ENTRY>, named E<.Fa NAME>. "
+"The argument E<.Fa HEADNAME> is the name of a user defined structure that "
+"must be declared using the macros E<.Li SLIST_HEAD>, E<.Li STAILQ_HEAD>, E<."
+"Li LIST_HEAD>, or E<.Li TAILQ_HEAD>. See the examples below for further "
+"explanation of how these macros are used."
+msgstr ""
+"Dans les définitions de macros, I<TYPE> est le nom d'une structure définie "
+"par l'utilisateur, qui doit contenir un champ de type B<LIST_ENTRY>, "
+"B<TAILQ_ENTRY> ou B<CIRCLEQ_ENTRY>, appelé I<NAME>. L'argument I<HEADNAME> "
+"est le nom d'une structure définie par l'utilisateur qui doit être déclarée "
+"en utilisant les macros B<LIST_HEAD>, B<TAILQ_HEAD> ou B<CIRCLEQ_HEAD>. "
+"Consultez les exemples plus bas pour une explication sur l'utilisation de "
+"ces macros."
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Singly-linked lists"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"A singly-linked list is headed by a structure defined by the E<.Nm "
+"SLIST_HEAD> macro. This structure contains a single pointer to the first "
+"element on the list. The elements are singly linked for minimum space and "
+"pointer manipulation overhead at the expense of O(n) removal for arbitrary "
+"elements. New elements can be added to the list after an existing element "
+"or at the head of the list. An E<.Fa SLIST_HEAD> structure is declared as "
+"follows:"
+msgstr ""
+"Une liste débute par une structure définie par la macro B<LIST_HEAD>. Cette "
+"structure contient un pointeur simple sur le premier élément de la liste. "
+"Les éléments sont doublement chaînés afin qu'un élément puisse être supprimé "
+"sans parcourir toute la liste. Des éléments peuvent être ajoutés après un "
+"élément existant ou en tête de liste. Une structure B<LIST_HEAD> est "
+"déclarée ainsi\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "SLIST_HEAD(HEADNAME, TYPE) head;\n"
+msgstr "LIST_HEAD(HEADNAME, TYPE) head;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"where E<.Fa HEADNAME> is the name of the structure to be defined, and E<.Fa "
+"TYPE> 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 ""
+"où I<HEADNAME> est le nom de la structure à définir, et I<TYPE> le type "
+"d'élément à lier dans la liste. Un pointeur sur la tête de la liste peut "
+"ensuite être déclaré ainsi\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "struct HEADNAME *headp;\n"
+msgstr "struct HEADNAME *headp;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "(The names E<.Li head> and E<.Li headp> are user selectable.)"
+msgstr "(les noms I<head> et I<headp> sont choisis par l'utilisateur)"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_HEAD_INITIALIZER> evaluates to an initializer for the "
+"list E<.Fa head>."
+msgstr "La macro B<LIST_INIT> initialise la liste référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_EMPTY> evaluates to true if there are no elements in "
+"the list."
+msgstr ""
+"La macro B<LIST_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_ENTRY> declares a structure that connects the elements "
+"in the list."
+msgstr ""
+"La macro B<LIST_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_FIRST> returns the first element in the list or NULL "
+"if the list is empty."
+msgstr ""
+"La macro B<LIST_INSERT_HEAD> insère le nouvel élément I<elm> à la tête de la "
+"liste."
+
+#. .Pp
+#. The macro
+#. .Nm SLIST_FOREACH_FROM
+#. behaves identically to
+#. .Nm SLIST_FOREACH
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found SLIST element and begins the loop at
+#. .Fa var
+#. instead of the first element in the SLIST referenced by
+#. .Fa head .
+#. .Pp
+#. The macro
+#. .Nm SLIST_FOREACH_SAFE
+#. traverses the list referenced by
+#. .Fa head
+#. in the forward direction, assigning each element in
+#. turn to
+#. .Fa var .
+#. However, unlike
+#. .Fn SLIST_FOREACH
+#. here it is permitted to both remove
+#. .Fa var
+#. as well as free it from within the loop safely without interfering with the
+#. traversal.
+#. .Pp
+#. The macro
+#. .Nm SLIST_FOREACH_FROM_SAFE
+#. behaves identically to
+#. .Nm SLIST_FOREACH_SAFE
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found SLIST element and begins the loop at
+#. .Fa var
+#. instead of the first element in the SLIST referenced by
+#. .Fa head .
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm SLIST_FOREACH> traverses the list referenced by E<.Fa head> "
+"in the forward direction, assigning each element in turn to E<.Fa var>."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_INIT> initializes the list referenced by E<.Fa head>."
+msgstr "La macro B<LIST_INIT> initialise la liste référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_INSERT_HEAD> inserts the new element E<.Fa elm> at the "
+"head of the list."
+msgstr ""
+"La macro B<LIST_INSERT_HEAD> insère le nouvel élément I<elm> à la tête de la "
+"liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_INSERT_AFTER> inserts the new element E<.Fa elm> after "
+"the element E<.Fa listelm>."
+msgstr ""
+"La macro B<LIST_INSERT_AFTER> insère le nouvel élément I<elm> après "
+"l'élément I<listelm>."
+
+#. .Pp
+#. The macro
+#. .Nm SLIST_REMOVE_AFTER
+#. removes the element after
+#. .Fa elm
+#. from the list.
+#. Unlike
+#. .Fa SLIST_REMOVE ,
+#. this macro does not traverse the entire list.
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid "The macro E<.Nm SLIST_NEXT> returns the next element in the list."
+msgstr ""
+"La macro B<LIST_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm SLIST_REMOVE_HEAD> removes the element E<.Fa elm> from the "
+"head of the list. For optimum efficiency, elements being removed from the "
+"head of the list should explicitly use this macro instead of the generic E<."
+"Fa SLIST_REMOVE> macro."
+msgstr ""
+
+#. .Pp
+#. The macro
+#. .Nm SLIST_SWAP
+#. swaps the contents of
+#. .Fa head1
+#. and
+#. .Fa head2 .
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm SLIST_REMOVE> removes the element E<.Fa elm> from the list."
+msgstr "La macro B<LIST_REMOVE> supprime l'élément I<elm> de la liste."
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Singly-linked list example"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"SLIST_HEAD(slisthead, entry) head =\n"
+" SLIST_HEAD_INITIALIZER(head);\n"
+"struct slisthead *headp;\t\t/* Singly-linked List\n"
+" head. */\n"
+"struct entry {\n"
+"\t...\n"
+"\tSLIST_ENTRY(entry) entries;\t/* Singly-linked List. */\n"
+"\t...\n"
+"} *n1, *n2, *n3, *np;\n"
+msgstr ""
+"LIST_HEAD(listhead, entry) head;\n"
+"struct listhead *headp; /* Tête de la liste */\n"
+"struct entry {\n"
+" ...\n"
+" LIST_ENTRY(entry) entries; /* Liste */\n"
+" ...\n"
+"} *n1, *n2, *np;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "SLIST_INIT(&head);\t\t\t/* Initialize the list. */\n"
+msgstr "LIST_INIT(&head); /* Initialisation de liste */\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n1 = malloc(sizeof(struct entry));\t/* Insert at the head. */\n"
+"SLIST_INSERT_HEAD(&head, n1, entries);\n"
+msgstr ""
+"n1 = malloc(sizeof(struct entry)); /* Insertion en tête */\n"
+"LIST_INSERT_HEAD(&head, n1, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n2 = malloc(sizeof(struct entry));\t/* Insert after. */\n"
+"SLIST_INSERT_AFTER(n1, n2, entries);\n"
+msgstr ""
+"n2 = malloc(sizeof(struct entry)); /* Insertion après */\n"
+"CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"SLIST_REMOVE(&head, n2, entry, entries);/* Deletion. */\n"
+"free(n2);\n"
+msgstr ""
+
+#. /* Safe forward traversal. */
+#. SLIST_FOREACH_SAFE(np, &head, entries, np_temp) {
+#. np\->do_stuff();
+#. ...
+#. SLIST_REMOVE(&head, np, entry, entries);
+#. free(np);
+#. }
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"n3 = SLIST_FIRST(&head);\n"
+"SLIST_REMOVE_HEAD(&head, entries);\t/* Deletion from the head. */\n"
+"free(n3);\n"
+"\t\t\t\t\t/* Forward traversal. */\n"
+"SLIST_FOREACH(np, &head, entries)\n"
+"\tnp\\-E<gt> ...\n"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"while (!SLIST_EMPTY(&head)) {\t\t/* List Deletion. */\n"
+"\tn1 = SLIST_FIRST(&head);\n"
+"\tSLIST_REMOVE_HEAD(&head, entries);\n"
+"\tfree(n1);\n"
+"}\n"
+msgstr ""
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Singly-linked tail queues"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"A singly-linked tail queue is headed by a structure defined by the E<.Nm "
+"STAILQ_HEAD> macro. This structure contains a pair of pointers, one to the "
+"first element in the tail queue and the other to the last element in the "
+"tail queue. The elements are singly linked for minimum space and pointer "
+"manipulation overhead at the expense of O(n) removal for arbitrary "
+"elements. New elements can be added to the tail queue after an existing "
+"element, at the head of the tail queue, or at the end of the tail queue. A "
+"E<.Fa STAILQ_HEAD> structure is declared as follows:"
+msgstr ""
+"La tête d'une liste double est désignée par une structure définie par la "
+"macro B<TAILQ_HEAD>. Cette structure contient deux pointeurs, l'un sur le "
+"premier élément et l'autre sur le dernier élément. Les éléments sont "
+"doublement chaînés, ainsi un élément quelconque peut être supprimé sans "
+"reparcourir toute la liste. Les nouveaux éléments peuvent être ajoutés après "
+"un élément existant, en tête ou en queue de liste. Une structure "
+"B<TAILQ_HEAD> est déclarée ainsi\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "STAILQ_HEAD(HEADNAME, TYPE) head;\n"
+msgstr "TAILQ_HEAD(HEADNAME, TYPE) head;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"where E<.Li HEADNAME> is the name of the structure to be defined, and E<.Li "
+"TYPE> is the type of the elements to be linked into the tail queue. A "
+"pointer to the head of the tail queue can later be declared as:"
+msgstr ""
+"où I<HEADNAME> est le nom de la structure à définir, et I<TYPE> représente "
+"le type des éléments à lier dans la liste. Un pointeur sur la tête de la "
+"liste peut être déclaré ainsi\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_HEAD_INITIALIZER> evaluates to an initializer for the "
+"tail queue E<.Fa head>."
+msgstr ""
+"La macro B<TAILQ_INIT> initialise la liste double référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm STAILQ_CONCAT> concatenates the tail queue headed by E<.Fa "
+"head2> onto the end of the one headed by E<.Fa head1> removing all entries "
+"from the former."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_EMPTY> evaluates to true if there are no items on the "
+"tail queue."
+msgstr ""
+"La macro B<TAILQ_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_ENTRY> declares a structure that connects the "
+"elements in the tail queue."
+msgstr ""
+"La macro B<TAILQ_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_FIRST> returns the first item on the tail queue or "
+"NULL if the tail queue is empty."
+msgstr ""
+"La macro B<TAILQ_INSERT_TAIL> insère le nouvel élément I<elm> à la fin de la "
+"liste double."
+
+#. .Pp
+#. The macro
+#. .Nm STAILQ_FOREACH_FROM
+#. behaves identically to
+#. .Nm STAILQ_FOREACH
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found STAILQ element and begins the loop at
+#. .Fa var
+#. instead of the first element in the STAILQ referenced by
+#. .Fa head .
+#. .Pp
+#. The macro
+#. .Nm STAILQ_FOREACH_SAFE
+#. traverses the tail queue referenced by
+#. .Fa head
+#. in the forward direction, assigning each element
+#. in turn to
+#. .Fa var .
+#. However, unlike
+#. .Fn STAILQ_FOREACH
+#. here it is permitted to both remove
+#. .Fa var
+#. as well as free it from within the loop safely without interfering with the
+#. traversal.
+#. .Pp
+#. The macro
+#. .Nm STAILQ_FOREACH_FROM_SAFE
+#. behaves identically to
+#. .Nm STAILQ_FOREACH_SAFE
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found STAILQ element and begins the loop at
+#. .Fa var
+#. instead of the first element in the STAILQ referenced by
+#. .Fa head .
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm STAILQ_FOREACH> traverses the tail queue referenced by E<.Fa "
+"head> in the forward direction, assigning each element in turn to E<.Fa var>."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_INIT> initializes the tail queue referenced by E<.Fa "
+"head>."
+msgstr ""
+"La macro B<TAILQ_INIT> initialise la liste double référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_INSERT_HEAD> inserts the new element E<.Fa elm> at "
+"the head of the tail queue."
+msgstr ""
+"La macro B<TAILQ_INSERT_HEAD> insère le nouvel élément I<elm> à la fin de la "
+"liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_INSERT_TAIL> inserts the new element E<.Fa elm> at "
+"the end of the tail queue."
+msgstr ""
+"La macro B<TAILQ_INSERT_TAIL> insère le nouvel élément I<elm> à la fin de la "
+"liste double."
+
+#. .Pp
+#. The macro
+#. .Nm STAILQ_LAST
+#. returns the last item on the tail queue.
+#. If the tail queue is empty the return value is
+#. .Dv NULL .
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_INSERT_AFTER> inserts the new element E<.Fa elm> "
+"after the element E<.Fa listelm>."
+msgstr ""
+"La macro B<TAILQ_INSERT_AFTER> insère le nouvel élément I<elm> après "
+"l'élément I<listelm>."
+
+#. .Pp
+#. The macro
+#. .Nm STAILQ_REMOVE_AFTER
+#. removes the element after
+#. .Fa elm
+#. from the tail queue.
+#. Unlike
+#. .Fa STAILQ_REMOVE ,
+#. this macro does not traverse the entire tail queue.
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm STAILQ_NEXT> returns the next item on the tail queue, or "
+"NULL this item is the last."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm STAILQ_REMOVE_HEAD> removes the element at the head of the "
+"tail queue. For optimum efficiency, elements being removed from the head of "
+"the tail queue should use this macro explicitly rather than the generic E<."
+"Fa STAILQ_REMOVE> macro."
+msgstr ""
+
+#. .Pp
+#. The macro
+#. .Nm STAILQ_SWAP
+#. swaps the contents of
+#. .Fa head1
+#. and
+#. .Fa head2 .
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm STAILQ_REMOVE> removes the element E<.Fa elm> from the tail "
+"queue."
+msgstr "La macro B<TAILQ_REMOVE> supprime l'élément I<elm> de la liste double."
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "Singly-linked tail queue example"
+msgstr "Exemple de liste double"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"STAILQ_HEAD(stailhead, entry) head =\n"
+" STAILQ_HEAD_INITIALIZER(head);\n"
+"struct stailhead *headp;\t\t/* Singly-linked tail queue head. */\n"
+"struct entry {\n"
+"\t...\n"
+"\tSTAILQ_ENTRY(entry) entries;\t/* Tail queue. */\n"
+"\t...\n"
+"} *n1, *n2, *n3, *np;\n"
+msgstr ""
+"TAILQ_HEAD(tailhead, entry) head;\n"
+"struct tailhead *headp; /* Tête de liste double */\n"
+"struct entry {\n"
+" ...\n"
+" TAILQ_ENTRY(entry) entries; /* Liste double */\n"
+" ...\n"
+"} *n1, *n2, *np;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "STAILQ_INIT(&head);\t\t\t/* Initialize the queue. */\n"
+msgstr "TAILQ_INIT(&head); /* Initialisation de liste */\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n1 = malloc(sizeof(struct entry));\t/* Insert at the head. */\n"
+"STAILQ_INSERT_HEAD(&head, n1, entries);\n"
+msgstr ""
+"n1 = malloc(sizeof(struct entry)); /* Insertion au début */\n"
+"TAILQ_INSERT_HEAD(&head, n1, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n1 = malloc(sizeof(struct entry));\t/* Insert at the tail. */\n"
+"STAILQ_INSERT_TAIL(&head, n1, entries);\n"
+msgstr ""
+"n1 = malloc(sizeof(struct entry)); /* Insertion à la fin */\n"
+"TAILQ_INSERT_TAIL(&head, n1, entries);\n"
+
+#. /* Safe forward traversal. */
+#. STAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
+#. np\->do_stuff();
+#. ...
+#. STAILQ_REMOVE(&head, np, entry, entries);
+#. free(np);
+#. }
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"n2 = malloc(sizeof(struct entry));\t/* Insert after. */\n"
+"STAILQ_INSERT_AFTER(&head, n1, n2, entries);\n"
+"\t\t\t\t\t/* Deletion. */\n"
+"STAILQ_REMOVE(&head, n2, entry, entries);\n"
+"free(n2);\n"
+"\t\t\t\t\t/* Deletion from the head. */\n"
+"n3 = STAILQ_FIRST(&head);\n"
+"STAILQ_REMOVE_HEAD(&head, entries);\n"
+"free(n3);\n"
+"\t\t\t\t\t/* Forward traversal. */\n"
+"STAILQ_FOREACH(np, &head, entries)\n"
+"\tnp\\-E<gt> ...\n"
+"\t\t\t\t\t/* TailQ Deletion. */\n"
+"while (!STAILQ_EMPTY(&head)) {\n"
+"\tn1 = STAILQ_FIRST(&head);\n"
+"\tSTAILQ_REMOVE_HEAD(&head, entries);\n"
+"\tfree(n1);\n"
+"}\n"
+"\t\t\t\t\t/* Faster TailQ Deletion. */\n"
+"n1 = STAILQ_FIRST(&head);\n"
+"while (n1 != NULL) {\n"
+"\tn2 = STAILQ_NEXT(n1, entries);\n"
+"\tfree(n1);\n"
+"\tn1 = n2;\n"
+"}\n"
+"STAILQ_INIT(&head);\n"
+msgstr ""
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Lists"
+msgstr "Listes"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"A list is headed by a structure defined by the E<.Nm LIST_HEAD> 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 "
+"E<.Fa LIST_HEAD> structure is declared as follows:"
+msgstr ""
+"Une liste débute par une structure définie par la macro B<LIST_HEAD>. Cette "
+"structure contient un pointeur simple sur le premier élément de la liste. "
+"Les éléments sont doublement chaînés afin qu'un élément puisse être supprimé "
+"sans parcourir toute la liste. Des éléments peuvent être ajoutés après un "
+"élément existant ou en tête de liste. Une structure B<LIST_HEAD> est "
+"déclarée ainsi\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "LIST_HEAD(HEADNAME, TYPE) head;\n"
+msgstr "LIST_HEAD(HEADNAME, TYPE) head;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_HEAD_INITIALIZER> evaluates to an initializer for the "
+"list E<.Fa head>."
+msgstr "La macro B<LIST_INIT> initialise la liste référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_EMPTY> evaluates to true if there are no elements in "
+"the list."
+msgstr ""
+"La macro B<LIST_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_ENTRY> declares a structure that connects the elements "
+"in the list."
+msgstr ""
+"La macro B<LIST_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_FIRST> returns the first element in the list or NULL if "
+"the list is empty."
+msgstr ""
+"La macro B<LIST_INSERT_HEAD> insère le nouvel élément I<elm> à la tête de la "
+"liste."
+
+#. .Pp
+#. The macro
+#. .Nm LIST_FOREACH_FROM
+#. behaves identically to
+#. .Nm LIST_FOREACH
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found LIST element and begins the loop at
+#. .Fa var
+#. instead of the first element in the LIST referenced by
+#. .Fa head .
+#. .Pp
+#. The macro
+#. .Nm LIST_FOREACH_SAFE
+#. traverses the list referenced by
+#. .Fa head
+#. in the forward direction, assigning each element in turn to
+#. .Fa var .
+#. However, unlike
+#. .Fn LIST_FOREACH
+#. here it is permitted to both remove
+#. .Fa var
+#. as well as free it from within the loop safely without interfering with the
+#. traversal.
+#. .Pp
+#. The macro
+#. .Nm LIST_FOREACH_FROM_SAFE
+#. behaves identically to
+#. .Nm LIST_FOREACH_SAFE
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found LIST element and begins the loop at
+#. .Fa var
+#. instead of the first element in the LIST referenced by
+#. .Fa head .
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm LIST_FOREACH> traverses the list referenced by E<.Fa head> "
+"in the forward direction, assigning each element in turn to E<.Fa var>."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_INIT> initializes the list referenced by E<.Fa head>."
+msgstr "La macro B<LIST_INIT> initialise la liste référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_INSERT_HEAD> inserts the new element E<.Fa elm> at the "
+"head of the list."
+msgstr ""
+"La macro B<LIST_INSERT_HEAD> insère le nouvel élément I<elm> à la tête de la "
+"liste."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_INSERT_AFTER> inserts the new element E<.Fa elm> after "
+"the element E<.Fa listelm>."
+msgstr ""
+"La macro B<LIST_INSERT_AFTER> insère le nouvel élément I<elm> après "
+"l'élément I<listelm>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_INSERT_BEFORE> inserts the new element E<.Fa elm> "
+"before the element E<.Fa listelm>."
+msgstr ""
+"La macro B<CIRCLEQ_INSERT_BEFORE> insère le nouvel élément I<elm> avant "
+"l'élément I<listelm>."
+
+#. .Pp
+#. The macro
+#. .Nm LIST_PREV
+#. returns the previous element in the list, or NULL if this is the first.
+#. List
+#. .Fa head
+#. must contain element
+#. .Fa elm .
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_NEXT> returns the next element in the list, or NULL if "
+"this is the last."
+msgstr ""
+"La macro B<LIST_INSERT_HEAD> insère le nouvel élément I<elm> à la tête de la "
+"liste."
+
+#. .Pp
+#. The macro
+#. .Nm LIST_SWAP
+#. swaps the contents of
+#. .Fa head1
+#. and
+#. .Fa head2 .
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm LIST_REMOVE> removes the element E<.Fa elm> from the list."
+msgstr "La macro B<LIST_REMOVE> supprime l'élément I<elm> de la liste."
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "List example"
+msgstr "Exemple de liste"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"LIST_HEAD(listhead, entry) head =\n"
+" LIST_HEAD_INITIALIZER(head);\n"
+"struct listhead *headp;\t\t\t/* List head. */\n"
+"struct entry {\n"
+"\t...\n"
+"\tLIST_ENTRY(entry) entries;\t/* List. */\n"
+"\t...\n"
+"} *n1, *n2, *n3, *np, *np_temp;\n"
+msgstr ""
+"LIST_HEAD(listhead, entry) head;\n"
+"struct listhead *headp; /* Tête de la liste */\n"
+"struct entry {\n"
+" ...\n"
+" LIST_ENTRY(entry) entries; /* Liste */\n"
+" ...\n"
+"} *n1, *n2, *np;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "LIST_INIT(&head);\t\t\t/* Initialize the list. */\n"
+msgstr "LIST_INIT(&head); /* Initialisation de liste */\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n1 = malloc(sizeof(struct entry));\t/* Insert at the head. */\n"
+"LIST_INSERT_HEAD(&head, n1, entries);\n"
+msgstr ""
+"n1 = malloc(sizeof(struct entry)); /* Insertion en tête */\n"
+"LIST_INSERT_HEAD(&head, n1, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n2 = malloc(sizeof(struct entry));\t/* Insert after. */\n"
+"LIST_INSERT_AFTER(n1, n2, entries);\n"
+msgstr ""
+"n2 = malloc(sizeof(struct entry)); /* Insertion après */\n"
+"CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n3 = malloc(sizeof(struct entry));\t/* Insert before. */\n"
+"LIST_INSERT_BEFORE(n2, n3, entries);\n"
+msgstr ""
+"n1 = malloc(sizeof(struct entry)); /* Insertion en tête */\n"
+"LIST_INSERT_HEAD(&head, n1, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"LIST_REMOVE(n2, entries);\t\t/* Deletion. */\n"
+"free(n2);\n"
+"\t\t\t\t\t/* Forward traversal. */\n"
+"LIST_FOREACH(np, &head, entries)\n"
+"\tnp\\-E<gt> ...\n"
+msgstr ""
+
+#. /* Safe forward traversal. */
+#. LIST_FOREACH_SAFE(np, &head, entries, np_temp) {
+#. np\->do_stuff();
+#. ...
+#. LIST_REMOVE(np, entries);
+#. free(np);
+#. }
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"while (!LIST_EMPTY(&head)) {\t\t/* List Deletion. */\n"
+"\tn1 = LIST_FIRST(&head);\n"
+"\tLIST_REMOVE(n1, entries);\n"
+"\tfree(n1);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"n1 = LIST_FIRST(&head);\t\t\t/* Faster List Deletion. */\n"
+"while (n1 != NULL) {\n"
+"\tn2 = LIST_NEXT(n1, entries);\n"
+"\tfree(n1);\n"
+"\tn1 = n2;\n"
+"}\n"
+"LIST_INIT(&head);\n"
+msgstr ""
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Tail queues"
+msgstr "Listes doubles"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"A tail queue is headed by a structure defined by the E<.Nm TAILQ_HEAD> "
+"macro. This structure contains a pair of pointers, one to the first element "
+"in the tail queue and the other to the last element in the tail queue. The "
+"elements are doubly linked so that an arbitrary element can be removed "
+"without traversing the tail queue. New elements can be added to the tail "
+"queue after an existing element, before an existing element, at the head of "
+"the tail queue, or at the end of the tail queue. A E<.Fa TAILQ_HEAD> "
+"structure is declared as follows:"
+msgstr ""
+"La tête d'une liste double est désignée par une structure définie par la "
+"macro B<TAILQ_HEAD>. Cette structure contient deux pointeurs, l'un sur le "
+"premier élément et l'autre sur le dernier élément. Les éléments sont "
+"doublement chaînés, ainsi un élément quelconque peut être supprimé sans "
+"reparcourir toute la liste. Les nouveaux éléments peuvent être ajoutés après "
+"un élément existant, en tête ou en queue de liste. Une structure "
+"B<TAILQ_HEAD> est déclarée ainsi\\ :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "TAILQ_HEAD(HEADNAME, TYPE) head;\n"
+msgstr "TAILQ_HEAD(HEADNAME, TYPE) head;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_HEAD_INITIALIZER> evaluates to an initializer for the "
+"tail queue E<.Fa head>."
+msgstr ""
+"La macro B<TAILQ_INIT> initialise la liste double référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm TAILQ_CONCAT> concatenates the tail queue headed by E<.Fa "
+"head2> onto the end of the one headed by E<.Fa head1> removing all entries "
+"from the former."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_EMPTY> evaluates to true if there are no items on the "
+"tail queue."
+msgstr ""
+"La macro B<TAILQ_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_ENTRY> declares a structure that connects the elements "
+"in the tail queue."
+msgstr ""
+"La macro B<TAILQ_ENTRY> déclare une structure qui connecte les éléments dans "
+"la liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_FIRST> returns the first item on the tail queue or "
+"NULL if the tail queue is empty."
+msgstr ""
+"La macro B<TAILQ_INSERT_TAIL> insère le nouvel élément I<elm> à la fin de la "
+"liste double."
+
+#. .Pp
+#. The macro
+#. .Nm TAILQ_FOREACH_FROM
+#. behaves identically to
+#. .Nm TAILQ_FOREACH
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found TAILQ element and begins the loop at
+#. .Fa var
+#. instead of the first element in the TAILQ referenced by
+#. .Fa head .
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm TAILQ_FOREACH> traverses the tail queue referenced by E<.Fa "
+"head> in the forward direction, assigning each element in turn to E<.Fa "
+"var>. E<.Fa var> is set to E<.Dv NULL> if the loop completes normally, or "
+"if there were no elements."
+msgstr ""
+
+#. .Pp
+#. The macro
+#. .Nm TAILQ_FOREACH_REVERSE_FROM
+#. behaves identically to
+#. .Nm TAILQ_FOREACH_REVERSE
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found TAILQ element and begins the reverse loop at
+#. .Fa var
+#. instead of the last element in the TAILQ referenced by
+#. .Fa head .
+#. .Pp
+#. The macros
+#. .Nm TAILQ_FOREACH_SAFE
+#. and
+#. .Nm TAILQ_FOREACH_REVERSE_SAFE
+#. traverse the list referenced by
+#. .Fa head
+#. in the forward or reverse direction respectively,
+#. assigning each element in turn to
+#. .Fa var .
+#. However, unlike their unsafe counterparts,
+#. .Nm TAILQ_FOREACH
+#. and
+#. .Nm TAILQ_FOREACH_REVERSE
+#. permit to both remove
+#. .Fa var
+#. as well as free it from within the loop safely without interfering with the
+#. traversal.
+#. .Pp
+#. The macro
+#. .Nm TAILQ_FOREACH_FROM_SAFE
+#. behaves identically to
+#. .Nm TAILQ_FOREACH_SAFE
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found TAILQ element and begins the loop at
+#. .Fa var
+#. instead of the first element in the TAILQ referenced by
+#. .Fa head .
+#. .Pp
+#. The macro
+#. .Nm TAILQ_FOREACH_REVERSE_FROM_SAFE
+#. behaves identically to
+#. .Nm TAILQ_FOREACH_REVERSE_SAFE
+#. when
+#. .Fa var
+#. is NULL, else it treats
+#. .Fa var
+#. as a previously found TAILQ element and begins the reverse loop at
+#. .Fa var
+#. instead of the last element in the TAILQ referenced by
+#. .Fa head .
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm TAILQ_FOREACH_REVERSE> traverses the tail queue referenced "
+"by E<.Fa head> in the reverse direction, assigning each element in turn to "
+"E<.Fa var>."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_INIT> initializes the tail queue referenced by E<.Fa "
+"head>."
+msgstr ""
+"La macro B<TAILQ_INIT> initialise la liste double référencée par I<head>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_INSERT_HEAD> inserts the new element E<.Fa elm> at the "
+"head of the tail queue."
+msgstr ""
+"La macro B<TAILQ_INSERT_HEAD> insère le nouvel élément I<elm> à la fin de la "
+"liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_INSERT_TAIL> inserts the new element E<.Fa elm> at the "
+"end of the tail queue."
+msgstr ""
+"La macro B<TAILQ_INSERT_TAIL> insère le nouvel élément I<elm> à la fin de la "
+"liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_INSERT_AFTER> inserts the new element E<.Fa elm> after "
+"the element E<.Fa listelm>."
+msgstr ""
+"La macro B<TAILQ_INSERT_AFTER> insère le nouvel élément I<elm> après "
+"l'élément I<listelm>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_INSERT_BEFORE> inserts the new element E<.Fa elm> "
+"before the element E<.Fa listelm>."
+msgstr ""
+"La macro B<CIRCLEQ_INSERT_BEFORE> insère le nouvel élément I<elm> avant "
+"l'élément I<listelm>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm TAILQ_LAST> returns the last item on the tail queue. If the "
+"tail queue is empty the return value is E<.Dv NULL>."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm TAILQ_NEXT> returns the next item on the tail queue, or NULL "
+"if this item is the last."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm TAILQ_PREV> returns the previous item on the tail queue, or "
+"NULL if this item is the first."
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"The macro E<.Nm TAILQ_REMOVE> removes the element E<.Fa elm> from the tail "
+"queue."
+msgstr "La macro B<TAILQ_REMOVE> supprime l'élément I<elm> de la liste double."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The macro E<.Nm TAILQ_SWAP> swaps the contents of E<.Fa head1> and E<.Fa "
+"head2>."
+msgstr ""
+
+#. type: Ss
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Tail queue example"
+msgstr "Exemple de liste double"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"TAILQ_HEAD(tailhead, entry) head =\n"
+" TAILQ_HEAD_INITIALIZER(head);\n"
+"struct tailhead *headp;\t\t\t/* Tail queue head. */\n"
+"struct entry {\n"
+"\t...\n"
+"\tTAILQ_ENTRY(entry) entries;\t/* Tail queue. */\n"
+"\t...\n"
+"} *n1, *n2, *n3, *np;\n"
+msgstr ""
+"TAILQ_HEAD(tailhead, entry) head;\n"
+"struct tailhead *headp; /* Tête de liste double */\n"
+"struct entry {\n"
+" ...\n"
+" TAILQ_ENTRY(entry) entries; /* Liste double */\n"
+" ...\n"
+"} *n1, *n2, *np;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid "TAILQ_INIT(&head);\t\t\t/* Initialize the queue. */\n"
+msgstr "TAILQ_INIT(&head); /* Initialisation de liste */\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n1 = malloc(sizeof(struct entry));\t/* Insert at the head. */\n"
+"TAILQ_INSERT_HEAD(&head, n1, entries);\n"
+msgstr ""
+"n1 = malloc(sizeof(struct entry)); /* Insertion au début */\n"
+"TAILQ_INSERT_HEAD(&head, n1, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n1 = malloc(sizeof(struct entry));\t/* Insert at the tail. */\n"
+"TAILQ_INSERT_TAIL(&head, n1, entries);\n"
+msgstr ""
+"n1 = malloc(sizeof(struct entry)); /* Insertion à la fin */\n"
+"TAILQ_INSERT_TAIL(&head, n1, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n2 = malloc(sizeof(struct entry));\t/* Insert after. */\n"
+"TAILQ_INSERT_AFTER(&head, n1, n2, entries);\n"
+msgstr ""
+"n2 = malloc(sizeof(struct entry)); /* Insertion après */\n"
+"CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"n3 = malloc(sizeof(struct entry));\t/* Insert before. */\n"
+"TAILQ_INSERT_BEFORE(n2, n3, entries);\n"
+msgstr ""
+"n2 = malloc(sizeof(struct entry)); /* Insertion après */\n"
+"CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
+
+#. /* Safe forward traversal. */
+#. TAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
+#. np\->do_stuff();
+#. ...
+#. TAILQ_REMOVE(&head, np, entries);
+#. free(np);
+#. }
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"TAILQ_REMOVE(&head, n2, entries);\t/* Deletion. */\n"
+"free(n2);\n"
+"\t\t\t\t\t/* Forward traversal. */\n"
+"TAILQ_FOREACH(np, &head, entries)\n"
+"\tnp\\-E<gt> ...\n"
+"\t\t\t\t\t/* Reverse traversal. */\n"
+"TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries)\n"
+"\tnp\\-E<gt> ...\n"
+"\t\t\t\t\t/* TailQ Deletion. */\n"
+"while (!TAILQ_EMPTY(&head)) {\n"
+"\tn1 = TAILQ_FIRST(&head);\n"
+"\tTAILQ_REMOVE(&head, n1, entries);\n"
+"\tfree(n1);\n"
+"}\n"
+"\t\t\t\t\t/* Faster TailQ Deletion. */\n"
+"n1 = TAILQ_FIRST(&head);\n"
+"while (n1 != NULL) {\n"
+"\tn2 = TAILQ_NEXT(n1, entries);\n"
+"\tfree(n1);\n"
+"\tn1 = n2;\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy, no-wrap
+msgid ""
+"TAILQ_INIT(&head);\n"
+"n2 = malloc(sizeof(struct entry)); /* Insert before. */\n"
+"CIRCLEQ_INSERT_BEFORE(&head, n1, n2, entries);\n"
+" /* Forward traversal. */\n"
+"for (np = head.cqh_first; np != (void *)&head;\n"
+" np = np\\-E<gt>entries.cqe_next)\n"
+" np\\-E<gt> ...\n"
+" /* Reverse traversal. */\n"
+"for (np = head.cqh_last; np != (void *)&head; np = np\\-E<gt>entries.cqe_prev)\n"
+" np\\-E<gt> ...\n"
+" /* Delete. */\n"
+"while (head.cqh_first != (void *)&head)\n"
+" CIRCLEQ_REMOVE(&head, head.cqh_first, entries);\n"
+msgstr ""
+"n2 = malloc(sizeof(struct entry)); /* Insertion avant */\n"
+"CIRCLEQ_INSERT_BEFORE(&head, n1, n2, entries);\n"
+" /* Parcours en avant */\n"
+"for (np = head.cqh_first; np != (void *)&head;\n"
+" np = np-E<gt>entries.cqe_next)\n"
+" np-E<gt> ...\n"
+" /* Parcours en arrière */\n"
+"for (np = head.cqh_last; np != (void *)&head; np = np-E<gt>entries.cqe_prev)\n"
+" np-E<gt> ...\n"
+" /* Suppression */\n"
+"while (head.cqh_first != (void *)&head)\n"
+" CIRCLEQ_REMOVE(&head, head.cqh_first, entries);\n"
+
+#. type: Sh
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr "CONFORMITÉ"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"Not in POSIX.1, POSIX.1-2001 or POSIX.1-2008. Present on the BSDs. E<.Nm "
+"queue> functions first appeared in E<.Bx 4.4>."
+msgstr ""
+"Pas dans POSIX.1-2001. Présentes sur les BSD. Les fonctions de liste queue "
+"sont apparues dans BSD 4.4."
+
+#. type: Sh
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#. .Xr tree 3
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "E<.Xr insque 3>"
+msgstr ""
+
+#. type: Sh
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "COLOPHON"
+msgstr "COLOPHON"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, fuzzy
+msgid ""
+"This page is part of release 4.16 of the Linux E<.Em man-pages> project. A "
+"description of the project, information about reporting bugs, and the latest "
+"version of this page, can be found at \\%https://www.kernel.org/doc/man\\-"
+"pages/."
+msgstr ""
+"Cette page fait partie de la publication 4.16 du projet I<man-pages> Linux. "
+"Une description du projet et des instructions pour signaler des anomalies "
+"peuvent être trouvées à l'adresse \\%https://www.kernel.org/doc/man-pages/."
diff --git a/po/fr/archive/man3/stpcpy.3.po b/po/fr/archive/man3/stpcpy.3.po
new file mode 100644
index 00000000..5c0aef86
--- /dev/null
+++ b/po/fr/archive/man3/stpcpy.3.po
@@ -0,0 +1,327 @@
+# French translation of manpages
+# This file is distributed under the same license as the manpages-l10n package.
+# Copyright © of this file:
+# Christophe Blaess <https://www.blaess.fr/christophe/>, 1996-2003.
+# Stéphan Rafin <stephan.rafin@laposte.net>, 2002.
+# Thierry Vignaud <tvignaud@mandriva.com>, 1999, 2002.
+# François Micaux, 2002.
+# Alain Portal <aportal@univ-montp2.fr>, 2003-2008.
+# Jean-Philippe Guérard <fevrier@tigreraye.org>, 2005-2006.
+# Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, 2006-2007.
+# Julien Cristau <jcristau@debian.org>, 2006-2007.
+# Thomas Huriaux <thomas.huriaux@gmail.com>, 2006-2008.
+# Nicolas François <nicolas.francois@centraliens.net>, 2006-2008.
+# Florentin Duneau <fduneau@gmail.com>, 2006-2010.
+# Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, 2006.
+# Denis Barbier <barbier@debian.org>, 2006, 2010.
+# David Prévot <david@tilapin.org>, 2010-2012, 2014.
+# Frédéric Hantrais <fhantrais@gmail.com>, 2013, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: perkamon\n"
+"POT-Creation-Date: 2023-08-27 17:24+0200\n"
+"PO-Revision-Date: 2021-01-12 09:09+0100\n"
+"Last-Translator: Grégoire Scano <gregoire.scano@malloc.fr>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 3.1.1\n"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "STPCPY"
+msgstr "STPCPY"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "2016-03-15"
+msgstr "15 mars 2016"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "GNU"
+msgstr "GNU"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Linux Programmer's Manual"
+msgstr "Manuel du programmeur Linux"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "stpcpy - copy a string returning a pointer to its end"
+msgstr "stpcpy - Copier une chaîne en renvoyant un pointeur sur sa fin"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "B<#include E<lt>string.hE<gt>>\n"
+msgstr "B<#include E<lt>string.hE<gt>>\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "B<char *stpcpy(char *>I<dest>B<, const char *>I<src>B<);>\n"
+msgstr "B<char *stpcpy(char *>I<dest>B<, const char *>I<src>B<);>\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
+msgstr ""
+"Exigences de macros de test de fonctionnalités pour la glibc (consulter "
+"B<feature_test_macros>(7)) :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "B<stpcpy>():"
+msgstr "B<stpcpy>() :"
+
+#. type: TP
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Since glibc 2.10:"
+msgstr "Depuis la glibc 2.10 :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "_POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
+msgstr "_POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
+
+#. type: TP
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Before glibc 2.10:"
+msgstr "Avant la glibc 2.10 :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "_GNU_SOURCE"
+msgstr "_GNU_SOURCE"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The B<stpcpy>() function copies the string pointed to by I<src> (including "
+"the terminating null byte (\\(aq\\e0\\(aq)) to the array pointed to by "
+"I<dest>. The strings may not overlap, and the destination string I<dest> "
+"must be large enough to receive the copy."
+msgstr ""
+"La fonction B<stpcpy>() copie la chaîne pointée par I<src> (y compris "
+"l'octet NULL final («\\ \\e0\\ »)) dans le tableau pointé par I<dest>. Les "
+"deux chaînes ne doivent pas se chevaucher. La chaîne I<dest> doit être assez "
+"grande pour accueillir la copie."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "RETURN VALUE"
+msgstr "VALEUR RENVOYÉE"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"B<stpcpy>() returns a pointer to the B<end> of the string I<dest> (that is, "
+"the address of the terminating null byte) rather than the beginning."
+msgstr ""
+"B<stpcpy>() renvoie un pointeur sur la B<fin> de la chaîne I<dest> (c'est-à "
+"dire l'adresse de l’octet NULL final) au lieu du début."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "ATTRIBUTES"
+msgstr "ATTRIBUTS"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"For an explanation of the terms used in this section, see B<attributes>(7)."
+msgstr ""
+"Pour une explication des termes utilisés dans cette section, consulter "
+"B<attributes>(7)."
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Interface"
+msgstr "Interface"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Attribute"
+msgstr "Attribut"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Value"
+msgstr "Valeur"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "B<stpcpy>()"
+msgstr "B<stpcpy>()"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Thread safety"
+msgstr "Sécurité des threads"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "MT-Safe"
+msgstr "MT-Safe"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr "CONFORMITÉ"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"This function was added to POSIX.1-2008. Before that, it was not part of "
+"the C or POSIX.1 standards, nor customary on UNIX systems. It first "
+"appeared at least as early as 1986, in the Lattice C AmigaDOS compiler, then "
+"in the GNU fileutils and GNU textutils in 1989, and in the GNU C library by "
+"1992. It is also present on the BSDs."
+msgstr ""
+"Cette fonction a été ajoutée à POSIX.1-2008. Avant cela, elle ne faisait "
+"partie ni de la norme C ni de POSIX.1, et n'était pas courante sur les "
+"systèmes UNIX. Elle est apparue pour la première fois en 1986 (voire plus "
+"tôt) dans le compilateur Lattice C de l'AmigaDOS, puis dans fileutils et "
+"textutils du projet GNU en 1989, et enfin dans la bibliothèque C de GNU en "
+"1992. Elle est également présente sur les BSD."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "BUGS"
+msgstr "BOGUES"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "This function may overrun the buffer I<dest>."
+msgstr "Cette fonction peut écraser des octets en dehors de I<dest>."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "EXAMPLE"
+msgstr "EXEMPLE"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"For example, this program uses B<stpcpy>() to concatenate B<foo> and B<bar> "
+"to produce B<foobar>, which it then prints."
+msgstr ""
+"Par exemple, ce programme utilise B<stpcpy>() pour concaténer B<foo> et "
+"B<bar> produisant ainsi B<foobar>, qui est alors affichée."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"main(void)\n"
+"{\n"
+" char buffer[20];\n"
+" char *to = buffer;\n"
+msgstr ""
+"int\n"
+"main(void)\n"
+"{\n"
+" char buffer[20];\n"
+" char *to = buffer;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" to = stpcpy(to, \"foo\");\n"
+" to = stpcpy(to, \"bar\");\n"
+" printf(\"%s\\en\", buffer);\n"
+"}\n"
+msgstr ""
+" to = stpcpy(to, \"foo\");\n"
+" to = stpcpy(to, \"bar\");\n"
+" printf(\"%s\\en\", buffer);\n"
+"}\n"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"B<bcopy>(3), B<memccpy>(3), B<memcpy>(3), B<memmove>(3), B<stpncpy>(3), "
+"B<strcpy>(3), B<string>(3), B<wcpcpy>(3)"
+msgstr ""
+"B<bcopy>(3), B<memccpy>(3), B<memcpy>(3), B<memmove>(3), B<stpncpy>(3), "
+"B<strcpy>(3), B<string>(3), B<wcpcpy>(3)"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "COLOPHON"
+msgstr "COLOPHON"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"This page is part of release 4.16 of the Linux I<man-pages> project. A "
+"description of the project, information about reporting bugs, and the latest "
+"version of this page, can be found at \\%https://www.kernel.org/doc/man-"
+"pages/."
+msgstr ""
+"Cette page fait partie de la publication 4.16 du projet I<man-pages> Linux. "
+"Une description du projet et des instructions pour signaler des anomalies et "
+"la dernière version de cette page peuvent être trouvées à l'adresse \\"
+"%https://www.kernel.org/doc/man-pages/."
diff --git a/po/fr/archive/man3/strcat.3.po b/po/fr/archive/man3/strcat.3.po
new file mode 100644
index 00000000..8b25d26c
--- /dev/null
+++ b/po/fr/archive/man3/strcat.3.po
@@ -0,0 +1,456 @@
+# French translation of manpages
+# This file is distributed under the same license as the manpages-l10n package.
+# Copyright © of this file:
+# Christophe Blaess <https://www.blaess.fr/christophe/>, 1996-2003.
+# Stéphan Rafin <stephan.rafin@laposte.net>, 2002.
+# Thierry Vignaud <tvignaud@mandriva.com>, 1999, 2002.
+# François Micaux, 2002.
+# Alain Portal <aportal@univ-montp2.fr>, 2003-2008.
+# Jean-Philippe Guérard <fevrier@tigreraye.org>, 2005-2006.
+# Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, 2006-2007.
+# Julien Cristau <jcristau@debian.org>, 2006-2007.
+# Thomas Huriaux <thomas.huriaux@gmail.com>, 2006-2008.
+# Nicolas François <nicolas.francois@centraliens.net>, 2006-2008.
+# Florentin Duneau <fduneau@gmail.com>, 2006-2010.
+# Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, 2006.
+# Denis Barbier <barbier@debian.org>, 2006, 2010.
+# David Prévot <david@tilapin.org>, 2010-2012, 2014.
+# Frédéric Hantrais <fhantrais@gmail.com>, 2013, 2014.
+# Grégoire Scano <gregoire.scano@malloc.fr>, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: perkamon\n"
+"POT-Creation-Date: 2023-08-27 17:24+0200\n"
+"PO-Revision-Date: 2023-03-20 18:33+0100\n"
+"Last-Translator: Grégoire Scano <gregoire.scano@malloc.fr>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Lokalize 22.12.1\n"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "STRCAT"
+msgstr "STRCAT"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "2017-09-15"
+msgstr "15 septembre 2017"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "GNU"
+msgstr "GNU"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Linux Programmer's Manual"
+msgstr "Manuel du programmeur Linux"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "strcat, strncat - concatenate two strings"
+msgstr "strcat, strncat - Concaténer deux chaînes"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "B<#include E<lt>string.hE<gt>>\n"
+msgstr "B<#include E<lt>string.hE<gt>>\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "B<char *strcat(char *>I<dest>B<, const char *>I<src>B<);>\n"
+msgstr "B<char *strcat(char *>I<dest>B<, const char *>I<src>B<);>\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "B<char *strncat(char *>I<dest>B<, const char *>I<src>B<, size_t >I<n>B<);>\n"
+msgstr "B<char *strncat(char *>I<dest>B<, const char *>I<src>B<, size_t >I<n>B<);>\n"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The B<strcat>() function appends the I<src> string to the I<dest> string, "
+"overwriting the terminating null byte (\\(aq\\e0\\(aq) at the end of "
+"I<dest>, and then adds a terminating null byte. The strings may not "
+"overlap, and the I<dest> string must have enough space for the result. If "
+"I<dest> is not large enough, program behavior is unpredictable; I<buffer "
+"overruns are a favorite avenue for attacking secure programs>."
+msgstr ""
+"La fonction B<strcat>() ajoute la chaîne I<src> à la fin de la chaîne "
+"I<dest> en écrasant l'octet NULL final («\\ \\e0\\ ») à la fin de I<dest>, "
+"puis en ajoutant un nouvel octet NULL final. Les chaînes ne doivent pas se "
+"chevaucher, et la chaîne I<dest> doit être assez grande pour accueillir le "
+"résultat. Si I<dest> n'est pas assez grande, le comportement du programme "
+"est imprévisible. I<Les dépassements de tampon font partie des moyens "
+"préférés pour attaquer les programmes sécurisés>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "The B<strncat>() function is similar, except that"
+msgstr "La fonction B<strncat>() est similaire, à la différence que :"
+
+#. type: IP
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "*"
+msgstr "*"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "it will use at most I<n> bytes from I<src>; and"
+msgstr "elle ne prend en compte que les I<n> premiers octets de I<src> ;"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"I<src> does not need to be null-terminated if it contains I<n> or more bytes."
+msgstr ""
+"I<src> n'a pas besoin d'être terminée par NULL si elle contient au moins "
+"I<n> octets."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"As with B<strcat>(), the resulting string in I<dest> is always null-"
+"terminated."
+msgstr ""
+"Comme pour B<strcat>(), la chaîne résultante dans I<dest> est toujours "
+"terminée par NULL."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"If I<src> contains I<n> or more bytes, B<strncat>() writes I<n+1> bytes to "
+"I<dest> (I<n> from I<src> plus the terminating null byte). Therefore, the "
+"size of I<dest> must be at least I<strlen(dest)+n+1>."
+msgstr ""
+"Si I<src> contient au moins I<n> octets, B<strncat>() écrit I<n + 1> octets "
+"dans I<dest> (I<n> octets de I<src> plus l'octet NULL final). De ce fait, "
+"I<dest> doit être au moins de taille I<strlen(dest) +n + 1>."
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "A simple implementation of B<strncat>() might be:"
+msgstr "Une implémentation simple de B<strncat>() pourrait être :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"char *\n"
+"strncat(char *dest, const char *src, size_t n)\n"
+"{\n"
+" size_t dest_len = strlen(dest);\n"
+" size_t i;\n"
+msgstr ""
+"char *\n"
+"strncat(char *dest, const char *src, size_t n)\n"
+"{\n"
+" size_t dest_len = strlen(dest);\n"
+" size_t i;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" for (i = 0 ; i E<lt> n && src[i] != \\(aq\\e0\\(aq ; i++)\n"
+" dest[dest_len + i] = src[i];\n"
+" dest[dest_len + i] = \\(aq\\e0\\(aq;\n"
+msgstr ""
+" for (i = 0 ; i E<lt> n && src[i] != \\(aq\\e0\\(aq ; i++)\n"
+" dest[dest_len + i] = src[i];\n"
+" dest[dest_len + i] = \\(aq\\e0\\(aq;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" return dest;\n"
+"}\n"
+msgstr ""
+" return dest;\n"
+"}\n"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "RETURN VALUE"
+msgstr "VALEUR RENVOYÉE"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"The B<strcat>() and B<strncat>() functions return a pointer to the "
+"resulting string I<dest>."
+msgstr ""
+"Les fonctions B<strcat>() et B<strncat>() renvoient un pointeur sur la "
+"chaîne résultat I<dest>."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "ATTRIBUTES"
+msgstr "ATTRIBUTS"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"For an explanation of the terms used in this section, see B<attributes>(7)."
+msgstr ""
+"Pour une explication des termes utilisés dans cette section, consulter "
+"B<attributes>(7)."
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Interface"
+msgstr "Interface"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Attribute"
+msgstr "Attribut"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Value"
+msgstr "Valeur"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"B<strcat>(),\n"
+"B<strncat>()"
+msgstr ""
+"B<strcat>(),\n"
+"B<strncat>()"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Thread safety"
+msgstr "Sécurité des threads"
+
+#. type: tbl table
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "MT-Safe"
+msgstr "MT-Safe"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "CONFORMING TO"
+msgstr "CONFORMITÉ"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid "POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD."
+msgstr "POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "NOTES"
+msgstr "NOTES"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"Some systems (the BSDs, Solaris, and others) provide the following function:"
+msgstr ""
+"Certains systèmes (BSD, Solaris et autres) fournissent la fonction suivante :"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid " size_t strlcat(char *dest, const char *src, size_t size);\n"
+msgstr " size_t strlcat(char *dest, const char *src, size_t size);\n"
+
+#. https://lwn.net/Articles/506530/
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"This function appends the null-terminated string I<src> to the string "
+"I<dest>, copying at most I<size-strlen(dest)-1> from I<src>, and adds a "
+"terminating null byte to the result, I<unless> I<size> is less than "
+"I<strlen(dest)>. This function fixes the buffer overrun problem of "
+"B<strcat>(), but the caller must still handle the possibility of data loss "
+"if I<size> is too small. The function returns the length of the string "
+"B<strlcat>() tried to create; if the return value is greater than or equal "
+"to I<size>, data loss occurred. If data loss matters, the caller I<must> "
+"either check the arguments before the call, or test the function return "
+"value. B<strlcat>() is not present in glibc and is not standardized by "
+"POSIX, but is available on Linux via the I<libbsd> library."
+msgstr ""
+"Cette fonction ajoute la chaîne I<src>, terminée par NULL, à la chaîne "
+"I<dest> en copiant au plus I<size-strlen(dest) - 1> depuis I<src> et ajoute "
+"l'octet NULL en fin de chaîne au résultat I<sauf> si I<size> est inférieur à "
+"I<strlen(dest)>. Cette fonction corrige le problème de dépassement de tampon "
+"de B<strcat>(), mais l'appelant doit quand même gérer la possibilité de "
+"pertes de données si I<size> est trop petit. La fonction renvoie la longueur "
+"de la chaîne que B<strlcat>() a essayé de créer. Si la valeur renvoyée est "
+"supérieure ou égale à I<size>, c'est qu'il y a eu perte de données. Si les "
+"pertes de données sont problématiques, l'appelant I<doit> soit vérifier les "
+"arguments avant l'appel, soit tester la valeur de retour de la fonction. "
+"B<strlcat>() n'existe pas dans glibc et n'est pas normalisée par POSIX, mais "
+"est disponible sous Linux avec la bibliothèque I<libbsd>."
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "EXAMPLE"
+msgstr "EXEMPLE"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"Because B<strcat>() and B<strncat>() must find the null byte that "
+"terminates the string I<dest> using a search that starts at the beginning of "
+"the string, the execution time of these functions scales according to the "
+"length of the string I<dest>. This can be demonstrated by running the "
+"program below. (If the goal is to concatenate many strings to one target, "
+"then manually copying the bytes from each source string while maintaining a "
+"pointer to the end of the target string will provide better performance.)"
+msgstr ""
+"Parce que les fonctions B<strcat>() et B<strncat>() doivent rechercher "
+"l'octet NULL qui termine I<dest> en partant du début de la chaîne, le temps "
+"d'exécution de ces fonctions est linéaire en la longueur de la chaîne "
+"I<dest>. Cela peut être mis en évidence avec le programme suivant (si "
+"l'objectif est de concaténer de nombreuses chaînes dans une chaîne tierce, "
+"la copie manuelle des octets de chacune de ces chaînes source tout en "
+"maintenant un pointeur sur la fin de la chaîne cible donnera de meilleures "
+"performances)."
+
+#. type: SS
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Program source"
+msgstr "Source du programme"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>time.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>time.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+"#define LIM 4000000\n"
+" int j;\n"
+" char p[LIM];\n"
+" time_t base;\n"
+msgstr ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+"#define LIM 4000000\n"
+" int j;\n"
+" char p[LIM];\n"
+" time_t base;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" base = time(NULL);\n"
+" p[0] = \\(aq\\e0\\(aq;\n"
+msgstr ""
+" base = time(NULL);\n"
+" p[0] = \\(aq\\e0\\(aq;\n"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" for (j = 0; j E<lt> LIM; j++) {\n"
+" if ((j % 10000) == 0)\n"
+" printf(\"%d %ld\\en\", j, (long) (time(NULL) - base));\n"
+" strcat(p, \"a\");\n"
+" }\n"
+"}\n"
+msgstr ""
+" for (j = 0; j E<lt> LIM; j++) {\n"
+" if ((j % 10000) == 0)\n"
+" printf(\"%d %ld\\en\", j, (long) (time(NULL) - base));\n"
+" strcat(p, \"a\");\n"
+" }\n"
+"}\n"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"B<bcopy>(3), B<memccpy>(3), B<memcpy>(3), B<strcpy>(3), B<string>(3), "
+"B<strncpy>(3), B<wcscat>(3), B<wcsncat>(3)"
+msgstr ""
+"B<bcopy>(3), B<memccpy>(3), B<memcpy>(3), B<strcpy>(3), B<string>(3), "
+"B<strncpy>(3), B<wcscat>(3), B<wcsncat>(3)"
+
+#. type: SH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "COLOPHON"
+msgstr "COLOPHON"
+
+#. type: Plain text
+#: opensuse-leap-15-6
+msgid ""
+"This page is part of release 4.16 of the Linux I<man-pages> project. A "
+"description of the project, information about reporting bugs, and the latest "
+"version of this page, can be found at \\%https://www.kernel.org/doc/man-"
+"pages/."
+msgstr ""
+"Cette page fait partie de la publication 4.16 du projet I<man-pages> Linux. "
+"Une description du projet et des instructions pour signaler des anomalies et "
+"la dernière version de cette page peuvent être trouvées à l'adresse \\"
+"%https://www.kernel.org/doc/man-pages/."