summaryrefslogtreecommitdiffstats
path: root/po/fr/man3/fopencookie.3.po
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--po/fr/man3/fopencookie.3.po1568
1 files changed, 1568 insertions, 0 deletions
diff --git a/po/fr/man3/fopencookie.3.po b/po/fr/man3/fopencookie.3.po
new file mode 100644
index 00000000..4ebe7dae
--- /dev/null
+++ b/po/fr/man3/fopencookie.3.po
@@ -0,0 +1,1568 @@
+# 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.
+# Frédéric Hantrais <fhantrais@gmail.com>, 2013, 2014.
+# Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, 2024.
+msgid ""
+msgstr ""
+"Project-Id-Version: manpages-l10n 4.21.0\n"
+"POT-Creation-Date: 2024-03-01 16:56+0100\n"
+"PO-Revision-Date: 2024-03-14 16:04+0100\n"
+"Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.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"
+"\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Lokalize 22.12.3\n"
+
+#. type: TH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "fopencookie"
+msgstr "fopencookie"
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "2023-12-29"
+msgstr "29 décembre 2023"
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "Linux man-pages 6.06"
+msgstr "Pages du manuel de Linux 6.06"
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#. type: Plain text
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+msgid "fopencookie - open a custom stream"
+msgstr "fopencookie – Ouvrir un flux particulier"
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "LIBRARY"
+msgstr "BIBLIOTHÈQUE"
+
+#. 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<libc>, I<-lc>)"
+msgstr "Bibliothèque C standard (I<libc>, I<-lc>)"
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
+"B<#define _FILE_OFFSET_BITS 64>\n"
+"B<#include E<lt>stdio.hE<gt>>\n"
+msgstr ""
+"B<#define _GNU_SOURCE> /* Consultez feature_test_macros(7) */\n"
+"B<#define _FILE_OFFSET_BITS 64>\n"
+"B<#include E<lt>stdio.hE<gt>>\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"B<FILE *fopencookie(void *restrict >I<cookie>B<, const char *restrict >I<mode>B<,>\n"
+"B< cookie_io_functions_t >I<io_funcs>B<);>\n"
+msgstr ""
+"B<FILE *fopencookie(void *restrict >I<cookie>B<, const char *restrict >I<mode>B<,>\n"
+"B< cookie_io_functions_t >I<io_funcs>B<);>\n"
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The B<fopencookie>() function allows the programmer to create a custom "
+"implementation for a standard I/O stream. This implementation can store the "
+"stream's data at a location of its own choosing; for example, "
+"B<fopencookie>() is used to implement B<fmemopen>(3), which provides a "
+"stream interface to data that is stored in a buffer in memory."
+msgstr ""
+"La fonction B<fopencookie>() permet au programmeur de créer des "
+"implémentations particulières de flux d'entrées-sorties. Cette "
+"implémentation peut sauvegarder les flux de données dans une location "
+"choisie. Par exemple, B<fopencookie>() est utilisée pour implémenter "
+"B<fmemopen>(3), qui fournit une interface qui sauvegarde les flux de données "
+"dans un tampon en mémoire."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "In order to create a custom stream the programmer must:"
+msgstr "Pour créer un flux particulier, le programmeur doit\\ :"
+
+#. type: IP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "\\[bu]"
+msgstr "-"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Implement four \"hook\" functions that are used internally by the standard I/"
+"O library when performing I/O on the stream."
+msgstr ""
+"Implémenter quatre fonctions de «\\ hook\\ » qui seront utilisées en interne "
+"par la bibliothèque standard d'entrées-sorties lors d'opération d'E/S."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Define a \"cookie\" data type, a structure that provides bookkeeping "
+"information (e.g., where to store data) used by the aforementioned hook "
+"functions. The standard I/O package knows nothing about the contents of "
+"this cookie (thus it is typed as I<void\\~*> when passed to "
+"B<fopencookie>()), but automatically supplies the cookie as the first "
+"argument when calling the hook functions."
+msgstr ""
+"Définit un type de données «\\ cookie\\ », une structure permettant de "
+"sauvegarder des informations (par exemple, où sauvegarder les données) "
+"utilisée par les fonctions de hook. Les fonctions E/S standards ne "
+"connaissent rien à propos du contenu de ce cookie (il est passé comme un "
+"type I<void\\~*> à B<fopencookie>()) et celui-ci est automatiquement passé "
+"en premier argument des fonctions de hook."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Call B<fopencookie>() to open a new stream and associate the cookie and "
+"hook functions with that stream."
+msgstr ""
+"Appeler B<fopencookie>() pour ouvrir un nouveau flux et associer le cookie "
+"et les fonctions de «\\ hook\\ » à ce flux."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The B<fopencookie>() function serves a purpose similar to B<fopen>(3): it "
+"opens a new stream and returns a pointer to a I<FILE> object that is used to "
+"operate on that stream."
+msgstr ""
+"La fonction B<fopencookie>() effectue une tâche similaire à celle de "
+"B<fopen>(3)\\ : elle ouvre un nouveau flux et renvoie un pointeur vers un "
+"objet I<FILE> utilisé pour manipuler le flux."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<cookie> argument is a pointer to the caller's cookie structure that is "
+"to be associated with the new stream. This pointer is supplied as the first "
+"argument when the standard I/O library invokes any of the hook functions "
+"described below."
+msgstr ""
+"L'argument I<cookie> est un pointeur vers la structure cookie appelante qui "
+"est associée au nouveau flux. Ce pointeur est passé en premier argument "
+"lorsque les bibliothèques d'E/S standard appellent une des fonctions de hook."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<mode> argument serves the same purpose as for B<fopen>(3). The "
+"following modes are supported: I<r>, I<w>, I<a>, I<r+>, I<w+>, and I<a+>. "
+"See B<fopen>(3) for details."
+msgstr ""
+"L'argument I<mode> a le même sens que pour B<fopen>(3). Les modes suivants "
+"sont gérés\\ : I<r>, I<w>, I<a>, I<r+>, I<w+> et I<a+>. Consultez "
+"B<fopen>(3) pour plus de détails."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<io_funcs> argument is a structure that contains four fields pointing "
+"to the programmer-defined hook functions that are used to implement this "
+"stream. The structure is defined as follows"
+msgstr ""
+"L'argument I<io_funcs> est une structure qui contient quatre champs pointant "
+"vers les fonctions de «\\ hook\\ » définies par le programmeur qui seront "
+"utilisées dans l'implémentation du flux. La structure est définie comme "
+"suit\\ :"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"typedef struct {\n"
+" cookie_read_function_t *read;\n"
+" cookie_write_function_t *write;\n"
+" cookie_seek_function_t *seek;\n"
+" cookie_close_function_t *close;\n"
+"} cookie_io_functions_t;\n"
+msgstr ""
+"typedef struct {\n"
+" cookie_read_function_t *read;\n"
+" cookie_write_function_t *write;\n"
+" cookie_seek_function_t *seek;\n"
+" cookie_close_function_t *close;\n"
+"} cookie_io_functions_t;\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The four fields are as follows:"
+msgstr "Les quatre membres sont définis comme suit\\ :"
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<cookie_read_function_t *read>"
+msgstr "I<cookie_read_function_t *read>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This function implements read operations for the stream. When called, it "
+"receives three arguments:"
+msgstr ""
+"Cette fonction implémente les opérations de lecture du flux. Lorsqu'elle est "
+"appelée, elle reçoit trois arguments."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "ssize_t read(void *cookie, char *buf, size_t size);\n"
+msgstr "ssize_t read(void *cookie, char *buf, size_t size);\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<buf> and I<size> arguments are, respectively, a buffer into which "
+"input data can be placed and the size of that buffer. As its function "
+"result, the I<read> function should return the number of bytes copied into "
+"I<buf>, 0 on end of file, or -1 on error. The I<read> function should "
+"update the stream offset appropriately."
+msgstr ""
+"Les argument I<buf> et I<size> sont respectivement, un tampon de données "
+"pour sauvegarder les données en provenance du flux et la taille du tampon. "
+"La fonction I<read> renvoie le nombre d'octets copiés depuis le flux ou -1 "
+"en cas d'erreur. La fonction I<read> doit mettre à jour la position dans le "
+"flux en conséquence."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If I<*read> is a null pointer, then reads from the custom stream always "
+"return end of file."
+msgstr ""
+"Si I<*read> est un pointeur NULL, alors les lectures du flux renvoient "
+"toujours fin de fichier."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<cookie_write_function_t *write>"
+msgstr "I<cookie_write_function_t *write>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This function implements write operations for the stream. When called, it "
+"receives three arguments:"
+msgstr ""
+"Cette fonction implémente les opérations d'écriture du flux. Lorsqu'elle est "
+"appelée, elle reçoit trois arguments\\ :"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "ssize_t write(void *cookie, const char *buf, size_t size);\n"
+msgstr "ssize_t write(void *cookie, const char *buf, size_t size);\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<buf> and I<size> arguments are, respectively, a buffer of data to be "
+"output to the stream and the size of that buffer. As its function result, "
+"the I<write> function should return the number of bytes copied from I<buf>, "
+"or 0 on error. (The function must not return a negative value.) The "
+"I<write> function should update the stream offset appropriately."
+msgstr ""
+"Les argument I<buf> et I<size> sont respectivement, un tampon de données à "
+"écrire dans le flux et la taille du tampon. La fonction I<write> renvoie le "
+"nombre d'octets copiés depuis I<buf> ou 0 en cas d'erreur (la fonction ne "
+"doit pas renvoyer de valeur négative). La fonction I<write> doit mettre à "
+"jour la position dans le flux en conséquence."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "If I<*write> is a null pointer, then output to the stream is discarded."
+msgstr ""
+"Si I<*write> est un pointeur NULL, alors les écritures dans le flux ne sont "
+"pas réalisées."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<cookie_seek_function_t *seek>"
+msgstr "I<cookie_seek_function_t *seek>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This function implements seek operations on the stream. When called, it "
+"receives three arguments:"
+msgstr ""
+"Cette fonction implémente les opérations de positionnement dans le flux. "
+"Lorsqu'elle est appelée, elle prend trois arguments\\ :"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "int seek(void *cookie, off_t *offset, int whence);\n"
+msgstr "int seek(void *cookie, off_t *offset, int whence);\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<*offset> argument specifies the new file offset depending on which of "
+"the following three values is supplied in I<whence>:"
+msgstr ""
+"L'argument I<*offset> spécifie le nouveau décalage du fichier selon les "
+"trois valeurs suivantes fournies à I<whence>\\ :"
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<SEEK_SET>"
+msgstr "B<SEEK_SET>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The stream offset should be set I<*offset> bytes from the start of the "
+"stream."
+msgstr ""
+"Le décalage du flux doit être défini à I<*offset> octets après le début du "
+"flux."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<SEEK_CUR>"
+msgstr "B<SEEK_CUR>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "I<*offset> should be added to the current stream offset."
+msgstr "I<*offset> doit être ajouté à l'offset actuel du flux."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<SEEK_END>"
+msgstr "B<SEEK_END>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The stream offset should be set to the size of the stream plus I<*offset>."
+msgstr "L'offset du flux doit être défini à la taille du flux plus I<*offset>."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Before returning, the I<seek> function should update I<*offset> to indicate "
+"the new stream offset."
+msgstr ""
+"La fonction I<seek> doit mettre à jour I<*offset> pour indiquer le nouvel "
+"offset du flux avant de renvoyer."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"As its function result, the I<seek> function should return 0 on success, and "
+"-1 on error."
+msgstr ""
+"La function I<seek> devrait renvoyer B<0> en cas de succès et B<-1> en cas "
+"d'erreur."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If I<*seek> is a null pointer, then it is not possible to perform seek "
+"operations on the stream."
+msgstr ""
+"Si I<*seek> est un pointeur NULL, alors il est impossible de se positionner "
+"dans le flux."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<cookie_close_function_t *close>"
+msgstr "I<cookie_close_function_t *close>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This function closes the stream. The hook function can do things such as "
+"freeing buffers allocated for the stream. When called, it receives one "
+"argument:"
+msgstr ""
+"Cette fonction ferme le flux. Par exemple, la fonction de hook peut "
+"désallouer des tampons alloués pour le flux. Lorsqu'elle est appelée, elle "
+"prend un argument\\ :"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "int close(void *cookie);\n"
+msgstr "int close(void *cookie);\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<cookie> argument is the cookie that the programmer supplied when "
+"calling B<fopencookie>()."
+msgstr ""
+"L'argument I<cookie> est le cookie que le programmeur fournit à "
+"B<fopencookie>()."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"As its function result, the I<close> function should return 0 on success, "
+"and B<EOF> on error."
+msgstr ""
+"La function I<close> devrait renvoyée 0 en cas de succès et B<EOF> en cas "
+"d'erreur."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"If I<*close> is NULL, then no special action is performed when the stream is "
+"closed."
+msgstr ""
+"Si I<*close> est NULL, alors aucune action n'est réalisée lorsque le flux "
+"est fermé."
+
+#. 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 "VALEUR RENVOYÉE"
+
+#. .SH ERRORS
+#. It's not clear if errno ever gets set...
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"On success B<fopencookie>() returns a pointer to the new stream. On error, "
+"NULL is returned."
+msgstr ""
+"En cas de succès, B<fopencookie>() renvoie un pointeur sur le nouveau flux. "
+"En cas d'erreur, NULL est renvoyé."
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "ATTRIBUTES"
+msgstr "ATTRIBUTS"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+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
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Interface"
+msgstr "Interface"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Attribute"
+msgstr "Attribut"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Value"
+msgstr "Valeur"
+
+#. type: tbl table
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ".na\n"
+msgstr ".na\n"
+
+#. type: tbl table
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ".nh\n"
+msgstr ".nh\n"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<fopencookie>()"
+msgstr "B<fopencookie>()"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Thread safety"
+msgstr "Sécurité des threads"
+
+#. type: tbl table
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "MT-Safe"
+msgstr "MT-Safe"
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "STANDARDS"
+msgstr "STANDARDS"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+msgid "GNU."
+msgstr "GNU."
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "EXEMPLES"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The program below implements a custom stream whose functionality is similar "
+"(but not identical) to that available via B<fmemopen>(3). It implements a "
+"stream whose data is stored in a memory buffer. The program writes its "
+"command-line arguments to the stream, and then seeks through the stream "
+"reading two out of every five characters and writing them to standard "
+"output. The following shell session demonstrates the use of the program:"
+msgstr ""
+"Le programme ci-dessous implémente un flux particulier dont la "
+"fonctionnalité est similaire (mais non identique) à celle de B<fmemopen>(3). "
+"Il implémente un flux dont les données sont sauvegardées dans un tampon. Le "
+"programme écrit les options de sa ligne de commande dans le flux et se "
+"positionne dans le flux afin de lire 2 caractères sur 5 et les écrit sur la "
+"sortie standard. La session shell suivante explique comment utiliser ce "
+"programme."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"$B< ./a.out \\[aq]hello world\\[aq]>\n"
+"/he/\n"
+"/ w/\n"
+"/d/\n"
+"Reached end of file\n"
+msgstr ""
+"$B< ./a.out \\[aq]hello world\\[aq]>\n"
+"/he/\n"
+"/ w/\n"
+"/d/\n"
+"Fin de fichier atteinte\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Note that a more general version of the program below could be improved to "
+"more robustly handle various error situations (e.g., opening a stream with a "
+"cookie that already has an open stream; closing a stream that has already "
+"been closed)."
+msgstr ""
+"Notez qu'une version plus générique et plus robuste du programme ci-dessous, "
+"avec une gestion des erreurs pourrait être implémenté (par exemple, "
+"l'ouverture d'un flux avec un cookie en cours d'utilisation par un autre "
+"flux\\ ; la fermeture d'un flux déjà fermé)."
+
+#. type: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Program source"
+msgstr "Source du programme"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>sys/types.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"\\&\n"
+"#define INIT_BUF_SIZE 4\n"
+"\\&\n"
+"struct memfile_cookie {\n"
+" char *buf; /* Dynamically sized buffer for data */\n"
+" size_t allocated; /* Size of buf */\n"
+" size_t endpos; /* Number of characters in buf */\n"
+" off_t offset; /* Current file offset in buf */\n"
+"};\n"
+"\\&\n"
+"ssize_t\n"
+"memfile_write(void *c, const char *buf, size_t size)\n"
+"{\n"
+" char *new_buff;\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" /* Buffer too small? Keep doubling size until big enough. */\n"
+"\\&\n"
+" while (size + cookie-E<gt>offset E<gt> cookie-E<gt>allocated) {\n"
+" new_buff = realloc(cookie-E<gt>buf, cookie-E<gt>allocated * 2);\n"
+" if (new_buff == NULL)\n"
+" return -1;\n"
+" cookie-E<gt>allocated *= 2;\n"
+" cookie-E<gt>buf = new_buff;\n"
+" }\n"
+"\\&\n"
+" memcpy(cookie-E<gt>buf + cookie-E<gt>offset, buf, size);\n"
+"\\&\n"
+" cookie-E<gt>offset += size;\n"
+" if (cookie-E<gt>offset E<gt> cookie-E<gt>endpos)\n"
+" cookie-E<gt>endpos = cookie-E<gt>offset;\n"
+"\\&\n"
+" return size;\n"
+"}\n"
+"\\&\n"
+"ssize_t\n"
+"memfile_read(void *c, char *buf, size_t size)\n"
+"{\n"
+" ssize_t xbytes;\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" /* Fetch minimum of bytes requested and bytes available. */\n"
+"\\&\n"
+" xbytes = size;\n"
+" if (cookie-E<gt>offset + size E<gt> cookie-E<gt>endpos)\n"
+" xbytes = cookie-E<gt>endpos - cookie-E<gt>offset;\n"
+" if (xbytes E<lt> 0) /* offset may be past endpos */\n"
+" xbytes = 0;\n"
+"\\&\n"
+" memcpy(buf, cookie-E<gt>buf + cookie-E<gt>offset, xbytes);\n"
+"\\&\n"
+" cookie-E<gt>offset += xbytes;\n"
+" return xbytes;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"memfile_seek(void *c, off_t *offset, int whence)\n"
+"{\n"
+" off_t new_offset;\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" if (whence == SEEK_SET)\n"
+" new_offset = *offset;\n"
+" else if (whence == SEEK_END)\n"
+" new_offset = cookie-E<gt>endpos + *offset;\n"
+" else if (whence == SEEK_CUR)\n"
+" new_offset = cookie-E<gt>offset + *offset;\n"
+" else\n"
+" return -1;\n"
+"\\&\n"
+" if (new_offset E<lt> 0)\n"
+" return -1;\n"
+"\\&\n"
+" cookie-E<gt>offset = new_offset;\n"
+" *offset = new_offset;\n"
+" return 0;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"memfile_close(void *c)\n"
+"{\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" free(cookie-E<gt>buf);\n"
+" cookie-E<gt>allocated = 0;\n"
+" cookie-E<gt>buf = NULL;\n"
+"\\&\n"
+" return 0;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" cookie_io_functions_t memfile_func = {\n"
+" .read = memfile_read,\n"
+" .write = memfile_write,\n"
+" .seek = memfile_seek,\n"
+" .close = memfile_close\n"
+" };\n"
+" FILE *stream;\n"
+" struct memfile_cookie mycookie;\n"
+" size_t nread;\n"
+" char buf[1000];\n"
+"\\&\n"
+" /* Set up the cookie before calling fopencookie(). */\n"
+"\\&\n"
+" mycookie.buf = malloc(INIT_BUF_SIZE);\n"
+" if (mycookie.buf == NULL) {\n"
+" perror(\"malloc\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" mycookie.allocated = INIT_BUF_SIZE;\n"
+" mycookie.offset = 0;\n"
+" mycookie.endpos = 0;\n"
+"\\&\n"
+" stream = fopencookie(&mycookie, \"w+\", memfile_func);\n"
+" if (stream == NULL) {\n"
+" perror(\"fopencookie\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" /* Write command-line arguments to our file. */\n"
+"\\&\n"
+" for (size_t j = 1; j E<lt> argc; j++)\n"
+" if (fputs(argv[j], stream) == EOF) {\n"
+" perror(\"fputs\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" /* Read two bytes out of every five, until EOF. */\n"
+"\\&\n"
+" for (long p = 0; ; p += 5) {\n"
+" if (fseek(stream, p, SEEK_SET) == -1) {\n"
+" perror(\"fseek\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" nread = fread(buf, 1, 2, stream);\n"
+" if (nread == 0) {\n"
+" if (ferror(stream) != 0) {\n"
+" fprintf(stderr, \"fread failed\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Reached end of file\\en\");\n"
+" break;\n"
+" }\n"
+"\\&\n"
+" printf(\"/%.*s/\\en\", (int) nread, buf);\n"
+" }\n"
+"\\&\n"
+" free(mycookie.buf);\n"
+"\\&\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>sys/types.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"\\&\n"
+"#define INIT_BUF_SIZE 4\n"
+"\\&\n"
+"struct memfile_cookie {\n"
+" char *buf; /* Tampon de taille dynamique pour les données */\n"
+" size_t allocated; /* Taille du tampon */\n"
+" size_t endpos; /* Nombre de caractères dans le tampon */\n"
+" off_t offset; /* Décalage du fichier actuel dans le tampon */\n"
+"};\n"
+"\\&\n"
+"ssize_t\n"
+"memfile_write(void *c, const char *buf, size_t size)\n"
+"{\n"
+" char *new_buff;\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" /* Tampon trop petit : doubler sa taille jusqu'à ce\n"
+" qu'il soit assez grand. */\n"
+"\\&\n"
+" while (size + cookie-E<gt>offset E<gt> cookie-E<gt>allocated) {\n"
+" new_buff = realloc(cookie-E<gt>buf, cookie-E<gt>allocated * 2);\n"
+" if (new_buff == NULL)\n"
+" return -1;\n"
+" cookie-E<gt>allocated *= 2;\n"
+" cookie-E<gt>buf = new_buff;\n"
+" }\n"
+"\\&\n"
+" memcpy(cookie-E<gt>buf + cookie-E<gt>offset, buf, size);\n"
+"\\&\n"
+" cookie-E<gt>offset += size;\n"
+" if (cookie-E<gt>offset E<gt> cookie-E<gt>endpos)\n"
+" cookie-E<gt>endpos = cookie-E<gt>offset;\n"
+"\\&\n"
+" return size;\n"
+"}\n"
+"\\&\n"
+"ssize_t\n"
+"memfile_read(void *c, char *buf, size_t size)\n"
+"{\n"
+" ssize_t xbytes;\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" /* Obtenir le minimum d'octets requis et d'octets disponibles. */\n"
+"\\&\n"
+" xbytes = size;\n"
+" if (cookie-E<gt>offset + size E<gt> cookie-E<gt>endpos)\n"
+" xbytes = cookie-E<gt>endpos - cookie-E<gt>offset;\n"
+" if (xbytes E<lt> 0) /* offset may be past endpos */\n"
+" xbytes = 0;\n"
+"\\&\n"
+" memcpy(buf, cookie-E<gt>buf + cookie-E<gt>offset, xbytes);\n"
+"\\&\n"
+" cookie-E<gt>offset += xbytes;\n"
+" return xbytes;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"memfile_seek(void *c, off_t *offset, int whence)\n"
+"{\n"
+" off_t new_offset;\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" if (whence == SEEK_SET)\n"
+" new_offset = *offset;\n"
+" else if (whence == SEEK_END)\n"
+" new_offset = cookie-E<gt>endpos + *offset;\n"
+" else if (whence == SEEK_CUR)\n"
+" new_offset = cookie-E<gt>offset + *offset;\n"
+" else\n"
+" return -1;\n"
+"\\&\n"
+" if (new_offset E<lt> 0)\n"
+" return -1;\n"
+"\\&\n"
+" cookie-E<gt>offset = new_offset;\n"
+" *offset = new_offset;\n"
+" return 0;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"memfile_close(void *c)\n"
+"{\n"
+" struct memfile_cookie *cookie = c;\n"
+"\\&\n"
+" free(cookie-E<gt>buf);\n"
+" cookie-E<gt>allocated = 0;\n"
+" cookie-E<gt>buf = NULL;\n"
+"\\&\n"
+" return 0;\n"
+"}\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" cookie_io_functions_t memfile_func = {\n"
+" .read = memfile_read,\n"
+" .write = memfile_write,\n"
+" .seek = memfile_seek,\n"
+" .close = memfile_close\n"
+" };\n"
+" FILE *stream;\n"
+" struct memfile_cookie mycookie;\n"
+" size_t nread;\n"
+" char buf[1000];\n"
+"\\&\n"
+" /* Définir le cookie avant l'appel de fopencookie(). */\n"
+"\\&\n"
+" mycookie.buf = malloc(INIT_BUF_SIZE);\n"
+" if (mycookie.buf == NULL) {\n"
+" perror(\"malloc\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" mycookie.allocated = INIT_BUF_SIZE;\n"
+" mycookie.offset = 0;\n"
+" mycookie.endpos = 0;\n"
+"\\&\n"
+" stream = fopencookie(&mycookie, \"w+\", memfile_func);\n"
+" if (stream == NULL) {\n"
+" perror(\"fopencookie\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" /* Écrire les arguments de la ligne de commande sur le fichier. */\n"
+"\\&\n"
+" for (size_t j = 1; j E<lt> argc; j++)\n"
+" if (fputs(argv[j], stream) == EOF) {\n"
+" perror(\"fputs\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" /* Lire deux octets tous les cinq octets jusqu'à EOF. */\n"
+"\\&\n"
+" for (long p = 0; ; p += 5) {\n"
+" if (fseek(stream, p, SEEK_SET) == -1) {\n"
+" perror(\"fseek\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" nread = fread(buf, 1, 2, stream);\n"
+" if (nread == 0) {\n"
+" if (ferror(stream) != 0) {\n"
+" fprintf(stderr, \"échec fread\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Fin de fichier atteinte\\en\");\n"
+" break;\n"
+" }\n"
+"\\&\n"
+" printf(\"/%.*s/\\en\", (int) nread, buf);\n"
+" }\n"
+"\\&\n"
+" free(mycookie.buf);\n"
+"\\&\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+
+#. SRC END
+#. type: SH
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "NOTES"
+msgstr "NOTES"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+msgid ""
+"B<_FILE_OFFSET_BITS> should be defined to be 64 in code that uses non-null "
+"I<seek> or that takes the address of B<fopencookie>, if the code is intended "
+"to be portable to traditional 32-bit x86 and ARM platforms where B<off_t>'s "
+"width defaults to 32 bits."
+msgstr ""
+"B<_FILE_OFFSET_BITS> devrait être défini à 64 dans du code qui utilise une "
+"valeur de I<seek> non NULL ou qui prend l'adresse de B<fopencookie>, si le "
+"code est destiné à être portable pour les plateformes traditionelles x86 et "
+"ARM 32 bits où la taille par défaut de B<off_t> est 32 bits."
+
+#. #-#-#-#-# archlinux: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. type: SH
+#. #-#-#-#-# debian-bookworm: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. SRC END
+#. type: SH
+#. #-#-#-#-# debian-unstable: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. type: SH
+#. #-#-#-#-# fedora-40: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. type: SH
+#. #-#-#-#-# fedora-rawhide: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. type: SH
+#. #-#-#-#-# mageia-cauldron: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. type: SH
+#. #-#-#-#-# opensuse-leap-15-6: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. SRC END
+#. type: SH
+#. #-#-#-#-# opensuse-tumbleweed: fopencookie.3.pot (PACKAGE VERSION) #-#-#-#-#
+#. 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 "VOIR AUSSI"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "B<fclose>(3), B<fmemopen>(3), B<fopen>(3), B<fseek>(3)"
+msgstr "B<fclose>(3), B<fmemopen>(3), B<fopen>(3), B<fseek>(3)"
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "2023-02-05"
+msgstr "5 février 2023"
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "Linux man-pages 6.03"
+msgstr "Pages du manuel de Linux 6.03"
+
+#. type: Plain text
+#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed
+msgid "fopencookie - opening a custom stream"
+msgstr "fopencookie - Ouvrir un flux particulier"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
+"B<#include E<lt>stdio.hE<gt>>\n"
+msgstr ""
+"B<#define _GNU_SOURCE> /* Consultez feature_test_macros(7) */\n"
+"B<#include E<lt>stdio.hE<gt>>\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "int seek(void *cookie, off64_t *offset, int whence);\n"
+msgstr "int seek(void *cookie, off64_t *offset, int whence);\n"
+
+#. type: Plain text
+#: debian-bookworm
+msgid "This function is a nonstandard GNU extension."
+msgstr "Cette fonction est une extension GNU non standard."
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>sys/types.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+msgstr ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>sys/types.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "#define INIT_BUF_SIZE 4\n"
+msgstr "#define INIT_BUF_SIZE 4\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"struct memfile_cookie {\n"
+" char *buf; /* Dynamically sized buffer for data */\n"
+" size_t allocated; /* Size of buf */\n"
+" size_t endpos; /* Number of characters in buf */\n"
+" off_t offset; /* Current file offset in buf */\n"
+"};\n"
+msgstr ""
+"struct memfile_cookie {\n"
+" char *buf; /* Tampon de taille dynamique pour les données */\n"
+" size_t allocated; /* Taille du tampon */\n"
+" size_t endpos; /* Nombre de caractères dans le tampon */\n"
+" off_t offset; /* Décalage du fichier actuel dans le tampon */\n"
+"};\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"ssize_t\n"
+"memfile_write(void *c, const char *buf, size_t size)\n"
+"{\n"
+" char *new_buff;\n"
+" struct memfile_cookie *cookie = c;\n"
+msgstr ""
+"ssize_t\n"
+"memfile_write(void *c, const char *buf, size_t size)\n"
+"{\n"
+" char *new_buff;\n"
+" struct memfile_cookie *cookie = c;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " /* Buffer too small? Keep doubling size until big enough. */\n"
+msgstr ""
+" /* Tampon trop petit : doubler sa taille jusqu'à ce\n"
+" qu'il soit assez grand. */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" while (size + cookie-E<gt>offset E<gt> cookie-E<gt>allocated) {\n"
+" new_buff = realloc(cookie-E<gt>buf, cookie-E<gt>allocated * 2);\n"
+" if (new_buff == NULL)\n"
+" return -1;\n"
+" cookie-E<gt>allocated *= 2;\n"
+" cookie-E<gt>buf = new_buff;\n"
+" }\n"
+msgstr ""
+" while (size + cookie-E<gt>offset E<gt> cookie-E<gt>allocated) {\n"
+" new_buff = realloc(cookie-E<gt>buf, cookie-E<gt>allocated * 2);\n"
+" if (new_buff == NULL)\n"
+" return -1;\n"
+" cookie-E<gt>allocated *= 2;\n"
+" cookie-E<gt>buf = new_buff;\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " memcpy(cookie-E<gt>buf + cookie-E<gt>offset, buf, size);\n"
+msgstr " memcpy(cookie-E<gt>buf + cookie-E<gt>offset, buf, size);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" cookie-E<gt>offset += size;\n"
+" if (cookie-E<gt>offset E<gt> cookie-E<gt>endpos)\n"
+" cookie-E<gt>endpos = cookie-E<gt>offset;\n"
+msgstr ""
+" cookie-E<gt>offset += size;\n"
+" if (cookie-E<gt>offset E<gt> cookie-E<gt>endpos)\n"
+" cookie-E<gt>endpos = cookie-E<gt>offset;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" return size;\n"
+"}\n"
+msgstr ""
+" return size;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"ssize_t\n"
+"memfile_read(void *c, char *buf, size_t size)\n"
+"{\n"
+" ssize_t xbytes;\n"
+" struct memfile_cookie *cookie = c;\n"
+msgstr ""
+"ssize_t\n"
+"memfile_read(void *c, char *buf, size_t size)\n"
+"{\n"
+" ssize_t xbytes;\n"
+" struct memfile_cookie *cookie = c;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " /* Fetch minimum of bytes requested and bytes available. */\n"
+msgstr " /* Obtenir le minimum d'octets requis et d'octets disponibles. */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" xbytes = size;\n"
+" if (cookie-E<gt>offset + size E<gt> cookie-E<gt>endpos)\n"
+" xbytes = cookie-E<gt>endpos - cookie-E<gt>offset;\n"
+" if (xbytes E<lt> 0) /* offset may be past endpos */\n"
+" xbytes = 0;\n"
+msgstr ""
+" xbytes = size;\n"
+" if (cookie-E<gt>offset + size E<gt> cookie-E<gt>endpos)\n"
+" xbytes = cookie-E<gt>endpos - cookie-E<gt>offset;\n"
+" if (xbytes E<lt> 0) /* offset may be past endpos */\n"
+" xbytes = 0;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " memcpy(buf, cookie-E<gt>buf + cookie-E<gt>offset, xbytes);\n"
+msgstr " memcpy(buf, cookie-E<gt>buf + cookie-E<gt>offset, xbytes);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" cookie-E<gt>offset += xbytes;\n"
+" return xbytes;\n"
+"}\n"
+msgstr ""
+" cookie-E<gt>offset += xbytes;\n"
+" return xbytes;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"memfile_seek(void *c, off64_t *offset, int whence)\n"
+"{\n"
+" off64_t new_offset;\n"
+" struct memfile_cookie *cookie = c;\n"
+msgstr ""
+"int\n"
+"memfile_seek(void *c, off64_t *offset, int whence)\n"
+"{\n"
+" off64_t new_offset;\n"
+" struct memfile_cookie *cookie = c;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (whence == SEEK_SET)\n"
+" new_offset = *offset;\n"
+" else if (whence == SEEK_END)\n"
+" new_offset = cookie-E<gt>endpos + *offset;\n"
+" else if (whence == SEEK_CUR)\n"
+" new_offset = cookie-E<gt>offset + *offset;\n"
+" else\n"
+" return -1;\n"
+msgstr ""
+" if (whence == SEEK_SET)\n"
+" new_offset = *offset;\n"
+" else if (whence == SEEK_END)\n"
+" new_offset = cookie-E<gt>endpos + *offset;\n"
+" else if (whence == SEEK_CUR)\n"
+" new_offset = cookie-E<gt>offset + *offset;\n"
+" else\n"
+" return -1;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (new_offset E<lt> 0)\n"
+" return -1;\n"
+msgstr ""
+" if (new_offset E<lt> 0)\n"
+" return -1;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" cookie-E<gt>offset = new_offset;\n"
+" *offset = new_offset;\n"
+" return 0;\n"
+"}\n"
+msgstr ""
+" cookie-E<gt>offset = new_offset;\n"
+" *offset = new_offset;\n"
+" return 0;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"memfile_close(void *c)\n"
+"{\n"
+" struct memfile_cookie *cookie = c;\n"
+msgstr ""
+"int\n"
+"memfile_close(void *c)\n"
+"{\n"
+" struct memfile_cookie *cookie = c;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" free(cookie-E<gt>buf);\n"
+" cookie-E<gt>allocated = 0;\n"
+" cookie-E<gt>buf = NULL;\n"
+msgstr ""
+" free(cookie-E<gt>buf);\n"
+" cookie-E<gt>allocated = 0;\n"
+" cookie-E<gt>buf = NULL;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" return 0;\n"
+"}\n"
+msgstr ""
+" return 0;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" cookie_io_functions_t memfile_func = {\n"
+" .read = memfile_read,\n"
+" .write = memfile_write,\n"
+" .seek = memfile_seek,\n"
+" .close = memfile_close\n"
+" };\n"
+" FILE *stream;\n"
+" struct memfile_cookie mycookie;\n"
+" size_t nread;\n"
+" char buf[1000];\n"
+msgstr ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" cookie_io_functions_t memfile_func = {\n"
+" .read = memfile_read,\n"
+" .write = memfile_write,\n"
+" .seek = memfile_seek,\n"
+" .close = memfile_close\n"
+" };\n"
+" FILE *stream;\n"
+" struct memfile_cookie mycookie;\n"
+" size_t nread;\n"
+" char buf[1000];\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " /* Set up the cookie before calling fopencookie(). */\n"
+msgstr " /* Définir le cookie avant l'appel de fopencookie(). */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" mycookie.buf = malloc(INIT_BUF_SIZE);\n"
+" if (mycookie.buf == NULL) {\n"
+" perror(\"malloc\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+" mycookie.buf = malloc(INIT_BUF_SIZE);\n"
+" if (mycookie.buf == NULL) {\n"
+" perror(\"malloc\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" mycookie.allocated = INIT_BUF_SIZE;\n"
+" mycookie.offset = 0;\n"
+" mycookie.endpos = 0;\n"
+msgstr ""
+" mycookie.allocated = INIT_BUF_SIZE;\n"
+" mycookie.offset = 0;\n"
+" mycookie.endpos = 0;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" stream = fopencookie(&mycookie, \"w+\", memfile_func);\n"
+" if (stream == NULL) {\n"
+" perror(\"fopencookie\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+" stream = fopencookie(&mycookie, \"w+\", memfile_func);\n"
+" if (stream == NULL) {\n"
+" perror(\"fopencookie\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " /* Write command-line arguments to our file. */\n"
+msgstr " /* Écrire les arguments de la ligne de commande sur le fichier. */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" for (size_t j = 1; j E<lt> argc; j++)\n"
+" if (fputs(argv[j], stream) == EOF) {\n"
+" perror(\"fputs\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+" for (size_t j = 1; j E<lt> argc; j++)\n"
+" if (fputs(argv[j], stream) == EOF) {\n"
+" perror(\"fputs\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " /* Read two bytes out of every five, until EOF. */\n"
+msgstr " /* Lire deux octets tous les cinq octets jusqu'à EOF. */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" for (long p = 0; ; p += 5) {\n"
+" if (fseek(stream, p, SEEK_SET) == -1) {\n"
+" perror(\"fseek\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" nread = fread(buf, 1, 2, stream);\n"
+" if (nread == 0) {\n"
+" if (ferror(stream) != 0) {\n"
+" fprintf(stderr, \"fread failed\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Reached end of file\\en\");\n"
+" break;\n"
+" }\n"
+msgstr ""
+" for (long p = 0; ; p += 5) {\n"
+" if (fseek(stream, p, SEEK_SET) == -1) {\n"
+" perror(\"fseek\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" nread = fread(buf, 1, 2, stream);\n"
+" if (nread == 0) {\n"
+" if (ferror(stream) != 0) {\n"
+" fprintf(stderr, \"échec fread \\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Fin de fichier atteinte\\en\");\n"
+" break;\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" printf(\"/%.*s/\\en\", (int) nread, buf);\n"
+" }\n"
+msgstr ""
+" printf(\"/%.*s/\\en\", (int) nread, buf);\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " free(mycookie.buf);\n"
+msgstr " free(mycookie.buf);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "2023-07-20"
+msgstr "20 juillet 2023"
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "Linux man-pages 6.05.01"
+msgstr "Pages du manuel de Linux 6.05.01"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "2023-03-30"
+msgstr "30 mars 2023"
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Linux man-pages 6.04"
+msgstr "Pages du manuel de Linux 6.04"