summaryrefslogtreecommitdiffstats
path: root/po/fr/man2/select_tut.2.po
diff options
context:
space:
mode:
Diffstat (limited to 'po/fr/man2/select_tut.2.po')
-rw-r--r--po/fr/man2/select_tut.2.po588
1 files changed, 571 insertions, 17 deletions
diff --git a/po/fr/man2/select_tut.2.po b/po/fr/man2/select_tut.2.po
index 440f501b..fa4c2c27 100644
--- a/po/fr/man2/select_tut.2.po
+++ b/po/fr/man2/select_tut.2.po
@@ -20,9 +20,9 @@
# Jean-Philippe MENGUAL <jpmengual@debian.org>, 2021-2024.
msgid ""
msgstr ""
-"Project-Id-Version: manpages-l10n 4.21.0\n"
-"POT-Creation-Date: 2024-03-01 17:07+0100\n"
-"PO-Revision-Date: 2024-03-14 10:31+0100\n"
+"Project-Id-Version: manpages-l10n 4.22.0\n"
+"POT-Creation-Date: 2024-06-01 06:20+0200\n"
+"PO-Revision-Date: 2024-06-02 11:12+0200\n"
"Last-Translator: Jean-Philippe MENGUAL <jpmengual@debian.org>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"Language: fr\n"
@@ -40,16 +40,16 @@ msgid "SELECT_TUT"
msgstr "SELECT_TUT"
#. type: TH
-#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#: archlinux debian-unstable opensuse-tumbleweed
#, no-wrap
-msgid "2023-10-31"
-msgstr "31 octobre 2023"
+msgid "2024-05-02"
+msgstr "2 mai 2024"
#. type: TH
-#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#: archlinux debian-unstable
#, no-wrap
-msgid "Linux man-pages 6.06"
-msgstr "Pages du manuel de Linux 6.06"
+msgid "Linux man-pages 6.8"
+msgstr "Pages du manuel de Linux 6.8"
#. type: SH
#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
@@ -683,8 +683,7 @@ msgstr ""
"un port TCP vers un autre."
#. type: Plain text
-#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
-#: opensuse-tumbleweed
+#: archlinux debian-unstable opensuse-tumbleweed
#, no-wrap
msgid ""
"#include E<lt>arpa/inet.hE<gt>\n"
@@ -696,6 +695,7 @@ msgid ""
"#include E<lt>string.hE<gt>\n"
"#include E<lt>sys/select.hE<gt>\n"
"#include E<lt>sys/socket.hE<gt>\n"
+"#include E<lt>sys/types.hE<gt>\n"
"#include E<lt>unistd.hE<gt>\n"
"\\&\n"
"static int forward_port;\n"
@@ -964,6 +964,7 @@ msgstr ""
"#include E<lt>string.hE<gt>\n"
"#include E<lt>sys/select.hE<gt>\n"
"#include E<lt>sys/socket.hE<gt>\n"
+"#include E<lt>sys/types.hE<gt>\n"
"#include E<lt>unistd.hE<gt>\n"
"\\&\n"
"static int forward_port;\n"
@@ -2126,19 +2127,572 @@ msgstr ""
"}\n"
#. type: TH
-#: debian-unstable opensuse-tumbleweed
+#: fedora-40 fedora-rawhide mageia-cauldron
#, no-wrap
-msgid "2023-05-03"
-msgstr "3 mai 2023"
+msgid "2023-10-31"
+msgstr "31 octobre 2023"
#. type: TH
-#: debian-unstable opensuse-tumbleweed
+#: fedora-40 mageia-cauldron
#, no-wrap
-msgid "Linux man-pages 6.05.01"
-msgstr "Pages du manuel de Linux 6.05.01"
+msgid "Linux man-pages 6.06"
+msgstr "Pages du manuel de Linux 6.06"
+
+#. type: Plain text
+#: fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid ""
+"#include E<lt>arpa/inet.hE<gt>\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>netinet/in.hE<gt>\n"
+"#include E<lt>signal.hE<gt>\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/select.hE<gt>\n"
+"#include E<lt>sys/socket.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"\\&\n"
+"static int forward_port;\n"
+"\\&\n"
+"#undef max\n"
+"#define max(x, y) ((x) E<gt> (y) ? (x) : (y))\n"
+"\\&\n"
+"static int\n"
+"listen_socket(int listen_port)\n"
+"{\n"
+" int lfd;\n"
+" int yes;\n"
+" struct sockaddr_in addr;\n"
+"\\&\n"
+" lfd = socket(AF_INET, SOCK_STREAM, 0);\n"
+" if (lfd == -1) {\n"
+" perror(\"socket\");\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" yes = 1;\n"
+" if (setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR,\n"
+" &yes, sizeof(yes)) == -1)\n"
+" {\n"
+" perror(\"setsockopt\");\n"
+" close(lfd);\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" memset(&addr, 0, sizeof(addr));\n"
+" addr.sin_port = htons(listen_port);\n"
+" addr.sin_family = AF_INET;\n"
+" if (bind(lfd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {\n"
+" perror(\"bind\");\n"
+" close(lfd);\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" printf(\"accepting connections on port %d\\en\", listen_port);\n"
+" listen(lfd, 10);\n"
+" return lfd;\n"
+"}\n"
+"\\&\n"
+"static int\n"
+"connect_socket(int connect_port, char *address)\n"
+"{\n"
+" int cfd;\n"
+" struct sockaddr_in addr;\n"
+"\\&\n"
+" cfd = socket(AF_INET, SOCK_STREAM, 0);\n"
+" if (cfd == -1) {\n"
+" perror(\"socket\");\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" memset(&addr, 0, sizeof(addr));\n"
+" addr.sin_port = htons(connect_port);\n"
+" addr.sin_family = AF_INET;\n"
+"\\&\n"
+" if (!inet_aton(address, (struct in_addr *) &addr.sin_addr.s_addr)) {\n"
+" fprintf(stderr, \"inet_aton(): bad IP address format\\en\");\n"
+" close(cfd);\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" if (connect(cfd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {\n"
+" perror(\"connect()\");\n"
+" shutdown(cfd, SHUT_RDWR);\n"
+" close(cfd);\n"
+" return -1;\n"
+" }\n"
+" return cfd;\n"
+"}\n"
+"\\&\n"
+"#define SHUT_FD1 do { \\e\n"
+" if (fd1 E<gt>= 0) { \\e\n"
+" shutdown(fd1, SHUT_RDWR); \\e\n"
+" close(fd1); \\e\n"
+" fd1 = -1; \\e\n"
+" } \\e\n"
+" } while (0)\n"
+"\\&\n"
+"#define SHUT_FD2 do { \\e\n"
+" if (fd2 E<gt>= 0) { \\e\n"
+" shutdown(fd2, SHUT_RDWR); \\e\n"
+" close(fd2); \\e\n"
+" fd2 = -1; \\e\n"
+" } \\e\n"
+" } while (0)\n"
+"\\&\n"
+"#define BUF_SIZE 1024\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int h;\n"
+" int ready, nfds;\n"
+" int fd1 = -1, fd2 = -1;\n"
+" int buf1_avail = 0, buf1_written = 0;\n"
+" int buf2_avail = 0, buf2_written = 0;\n"
+" char buf1[BUF_SIZE], buf2[BUF_SIZE];\n"
+" fd_set readfds, writefds, exceptfds;\n"
+" ssize_t nbytes;\n"
+"\\&\n"
+" if (argc != 4) {\n"
+" fprintf(stderr, \"Usage\\en\\etfwd E<lt>listen-portE<gt> \"\n"
+" \"E<lt>forward-to-portE<gt> E<lt>forward-to-ip-addressE<gt>\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" signal(SIGPIPE, SIG_IGN);\n"
+"\\&\n"
+" forward_port = atoi(argv[2]);\n"
+"\\&\n"
+" h = listen_socket(atoi(argv[1]));\n"
+" if (h == -1)\n"
+" exit(EXIT_FAILURE);\n"
+"\\&\n"
+" for (;;) {\n"
+" nfds = 0;\n"
+"\\&\n"
+" FD_ZERO(&readfds);\n"
+" FD_ZERO(&writefds);\n"
+" FD_ZERO(&exceptfds);\n"
+" FD_SET(h, &readfds);\n"
+" nfds = max(nfds, h);\n"
+"\\&\n"
+" if (fd1 E<gt> 0 && buf1_avail E<lt> BUF_SIZE)\n"
+" FD_SET(fd1, &readfds);\n"
+" /* Note: nfds is updated below, when fd1 is added to\n"
+" exceptfds. */\n"
+" if (fd2 E<gt> 0 && buf2_avail E<lt> BUF_SIZE)\n"
+" FD_SET(fd2, &readfds);\n"
+"\\&\n"
+" if (fd1 E<gt> 0 && buf2_avail - buf2_written E<gt> 0)\n"
+" FD_SET(fd1, &writefds);\n"
+" if (fd2 E<gt> 0 && buf1_avail - buf1_written E<gt> 0)\n"
+" FD_SET(fd2, &writefds);\n"
+"\\&\n"
+" if (fd1 E<gt> 0) {\n"
+" FD_SET(fd1, &exceptfds);\n"
+" nfds = max(nfds, fd1);\n"
+" }\n"
+" if (fd2 E<gt> 0) {\n"
+" FD_SET(fd2, &exceptfds);\n"
+" nfds = max(nfds, fd2);\n"
+" }\n"
+"\\&\n"
+" ready = select(nfds + 1, &readfds, &writefds, &exceptfds, NULL);\n"
+"\\&\n"
+" if (ready == -1 && errno == EINTR)\n"
+" continue;\n"
+"\\&\n"
+" if (ready == -1) {\n"
+" perror(\"select()\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" if (FD_ISSET(h, &readfds)) {\n"
+" socklen_t addrlen;\n"
+" struct sockaddr_in client_addr;\n"
+" int fd;\n"
+"\\&\n"
+" addrlen = sizeof(client_addr);\n"
+" memset(&client_addr, 0, addrlen);\n"
+" fd = accept(h, (struct sockaddr *) &client_addr, &addrlen);\n"
+" if (fd == -1) {\n"
+" perror(\"accept()\");\n"
+" } else {\n"
+" SHUT_FD1;\n"
+" SHUT_FD2;\n"
+" buf1_avail = buf1_written = 0;\n"
+" buf2_avail = buf2_written = 0;\n"
+" fd1 = fd;\n"
+" fd2 = connect_socket(forward_port, argv[3]);\n"
+" if (fd2 == -1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" printf(\"connect from %s\\en\",\n"
+" inet_ntoa(client_addr.sin_addr));\n"
+"\\&\n"
+" /* Skip any events on the old, closed file\n"
+" descriptors. */\n"
+"\\&\n"
+" continue;\n"
+" }\n"
+" }\n"
+"\\&\n"
+" /* NB: read OOB data before normal reads. */\n"
+"\\&\n"
+" if (fd1 E<gt> 0 && FD_ISSET(fd1, &exceptfds)) {\n"
+" char c;\n"
+"\\&\n"
+" nbytes = recv(fd1, &c, 1, MSG_OOB);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" send(fd2, &c, 1, MSG_OOB);\n"
+" }\n"
+" if (fd2 E<gt> 0 && FD_ISSET(fd2, &exceptfds)) {\n"
+" char c;\n"
+"\\&\n"
+" nbytes = recv(fd2, &c, 1, MSG_OOB);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD2;\n"
+" else\n"
+" send(fd1, &c, 1, MSG_OOB);\n"
+" }\n"
+" if (fd1 E<gt> 0 && FD_ISSET(fd1, &readfds)) {\n"
+" nbytes = read(fd1, buf1 + buf1_avail,\n"
+" BUF_SIZE - buf1_avail);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" buf1_avail += nbytes;\n"
+" }\n"
+" if (fd2 E<gt> 0 && FD_ISSET(fd2, &readfds)) {\n"
+" nbytes = read(fd2, buf2 + buf2_avail,\n"
+" BUF_SIZE - buf2_avail);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD2;\n"
+" else\n"
+" buf2_avail += nbytes;\n"
+" }\n"
+" if (fd1 E<gt> 0 && FD_ISSET(fd1, &writefds) && buf2_avail E<gt> 0) {\n"
+" nbytes = write(fd1, buf2 + buf2_written,\n"
+" buf2_avail - buf2_written);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" buf2_written += nbytes;\n"
+" }\n"
+" if (fd2 E<gt> 0 && FD_ISSET(fd2, &writefds) && buf1_avail E<gt> 0) {\n"
+" nbytes = write(fd2, buf1 + buf1_written,\n"
+" buf1_avail - buf1_written);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD2;\n"
+" else\n"
+" buf1_written += nbytes;\n"
+" }\n"
+"\\&\n"
+" /* Check if write data has caught read data. */\n"
+"\\&\n"
+" if (buf1_written == buf1_avail)\n"
+" buf1_written = buf1_avail = 0;\n"
+" if (buf2_written == buf2_avail)\n"
+" buf2_written = buf2_avail = 0;\n"
+"\\&\n"
+" /* One side has closed the connection, keep\n"
+" writing to the other side until empty. */\n"
+"\\&\n"
+" if (fd1 E<lt> 0 && buf1_avail - buf1_written == 0)\n"
+" SHUT_FD2;\n"
+" if (fd2 E<lt> 0 && buf2_avail - buf2_written == 0)\n"
+" SHUT_FD1;\n"
+" }\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+"#include E<lt>arpa/inet.hE<gt>\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>netinet/in.hE<gt>\n"
+"#include E<lt>signal.hE<gt>\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/select.hE<gt>\n"
+"#include E<lt>sys/socket.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"\\&\n"
+"static int forward_port;\n"
+"\\&\n"
+"#undef max\n"
+"#define max(x, y) ((x) E<gt> (y) ? (x) : (y))\n"
+"\\&\n"
+"static int\n"
+"listen_socket(int listen_port)\n"
+"{\n"
+" int lfd;\n"
+" int yes;\n"
+" struct sockaddr_in addr;\n"
+"\\&\n"
+" lfd = socket(AF_INET, SOCK_STREAM, 0);\n"
+" if (lfd == -1) {\n"
+" perror(\"socket\");\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" yes = 1;\n"
+" if (setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR,\n"
+" &yes, sizeof(yes)) == -1)\n"
+" {\n"
+" perror(\"setsockopt\");\n"
+" close(lfd);\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" memset(&addr, 0, sizeof(addr));\n"
+" addr.sin_port = htons(listen_port);\n"
+" addr.sin_family = AF_INET;\n"
+" if (bind(lfd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {\n"
+" perror(\"bind\");\n"
+" close(lfd);\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" printf(\"on accepte les connexions sur le port %d\\en\", listen_port);\n"
+" listen(lfd, 10);\n"
+" return lfd;\n"
+"}\n"
+"\\&\n"
+"static int\n"
+"connect_socket(int connect_port, char *address)\n"
+"{\n"
+" int cfd;\n"
+" struct sockaddr_in addr;\n"
+"\\&\n"
+" cfd = socket(AF_INET, SOCK_STREAM, 0);\n"
+" if (cfd == -1) {\n"
+" perror(\"socket\");\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" memset(&addr, 0, sizeof(addr));\n"
+" addr.sin_port = htons(connect_port);\n"
+" addr.sin_family = AF_INET;\n"
+"\\&\n"
+" if (!inet_aton(address, (struct in_addr *) &addr.sin_addr.s_addr)) {\n"
+" fprintf(stderr, \"inet_aton(): mauvais format d'adresse IP\\en\");\n"
+" close(cfd);\n"
+" return -1;\n"
+" }\n"
+"\\&\n"
+" if (connect(cfd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {\n"
+" perror(\"connect()\");\n"
+" shutdown(cfd, SHUT_RDWR);\n"
+" close(cfd);\n"
+" return -1;\n"
+" }\n"
+" return cfd;\n"
+"}\n"
+"\\&\n"
+"#define SHUT_FD1 do { \\e\n"
+" if (fd1 E<gt>= 0) { \\e\n"
+" shutdown(fd1, SHUT_RDWR); \\e\n"
+" close(fd1); \\e\n"
+" fd1 = -1; \\e\n"
+" } \\e\n"
+" } while (0)\n"
+"\\&\n"
+"#define SHUT_FD2 do { \\e\n"
+" if (fd2 E<gt>= 0) { \\e\n"
+" shutdown(fd2, SHUT_RDWR); \\e\n"
+" close(fd2); \\e\n"
+" fd2 = -1; \\e\n"
+" } \\e\n"
+" } while (0)\n"
+"\\&\n"
+"#define BUF_SIZE 1024\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int h;\n"
+" int ready, nfds;\n"
+" int fd1 = -1, fd2 = -1;\n"
+" int buf1_avail = 0, buf1_written = 0;\n"
+" int buf2_avail = 0, buf2_written = 0;\n"
+" char buf1[BUF_SIZE], buf2[BUF_SIZE];\n"
+" fd_set readfds, writefds, exceptfds;\n"
+" ssize_t nbytes;\n"
+"\\&\n"
+" if (argc != 4) {\n"
+" fprintf(stderr, \"Utilisation\\en\\etfwd E<lt>listen-portE<gt> \"\n"
+" \"E<lt>forward-to-portE<gt> E<lt>forward-to-ip-addressE<gt>\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" signal(SIGPIPE, SIG_IGN);\n"
+"\\&\n"
+" forward_port = atoi(argv[2]);\n"
+"\\&\n"
+" h = listen_socket(atoi(argv[1]));\n"
+" if (h == -1)\n"
+" exit(EXIT_FAILURE);\n"
+"\\&\n"
+" for (;;) {\n"
+" nfds = 0;\n"
+"\\&\n"
+" FD_ZERO(&readfds);\n"
+" FD_ZERO(&writefds);\n"
+" FD_ZERO(&exceptfds);\n"
+" FD_SET(h, &readfds);\n"
+" nfds = max(nfds, h);\n"
+"\\&\n"
+" if (fd1 E<gt> 0 && buf1_avail E<lt> BUF_SIZE)\n"
+" FD_SET(fd1, &readfds);\n"
+" /* Note: nfds est mis à jour ci-dessous, lorsque fd1\n"
+" est ajouté à exceptfds. */\n"
+" if (fd2 E<gt> 0 && buf2_avail E<lt> BUF_SIZE)\n"
+" FD_SET(fd2, &readfds);\n"
+"\\&\n"
+" if (fd1 E<gt> 0 && buf2_avail - buf2_written E<gt> 0)\n"
+" FD_SET(fd1, &writefds);\n"
+" if (fd2 E<gt> 0 && buf1_avail - buf1_written E<gt> 0)\n"
+" FD_SET(fd2, &writefds);\n"
+"\\&\n"
+" if (fd1 E<gt> 0) {\n"
+" FD_SET(fd1, &exceptfds);\n"
+" nfds = max(nfds, fd1);\n"
+" }\n"
+" if (fd2 E<gt> 0) {\n"
+" FD_SET(fd2, &exceptfds);\n"
+" nfds = max(nfds, fd2);\n"
+" }\n"
+"\\&\n"
+" ready = select(nfds + 1, &readfds, &writefds, &exceptfds, NULL);\n"
+"\\&\n"
+" if (ready == -1 && errno == EINTR)\n"
+" continue;\n"
+"\\&\n"
+" if (ready == -1) {\n"
+" perror(\"select()\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" if (FD_ISSET(h, &readfds)) {\n"
+" socklen_t addrlen;\n"
+" struct sockaddr_in client_addr;\n"
+" int fd;\n"
+"\\&\n"
+" addrlen = sizeof(client_addr);\n"
+" memset(&client_addr, 0, addrlen);\n"
+" fd = accept(h, (struct sockaddr *) &client_addr, &addrlen);\n"
+" if (fd == -1) {\n"
+" perror(\"accept()\");\n"
+" } else {\n"
+" SHUT_FD1;\n"
+" SHUT_FD2;\n"
+" buf1_avail = buf1_written = 0;\n"
+" buf2_avail = buf2_written = 0;\n"
+" fd1 = fd;\n"
+" fd2 = connect_socket(forward_port, argv[3]);\n"
+" if (fd2 == -1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" printf(\"connexion depuis %s\\en\",\n"
+" inet_ntoa(client_addr.sin_addr));\n"
+"\\&\n"
+" /* Passer les événements des anciens descripteurs de\n"
+" fichier fermés. */\n"
+"\\&\n"
+" continue;\n"
+" }\n"
+" }\n"
+"\\&\n"
+" /* NB : lecture des données hors bande avant les lectures normales */\n"
+"\\&\n"
+" if (fd1 E<gt> 0 && FD_ISSET(fd1, &exceptfds)) {\n"
+" char c;\n"
+"\\&\n"
+" nbytes = recv(fd1, &c, 1, MSG_OOB);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" send(fd2, &c, 1, MSG_OOB);\n"
+" }\n"
+" if (fd2 E<gt> 0 && FD_ISSET(fd2, &exceptfds)) {\n"
+" char c;\n"
+"\\&\n"
+" nbytes = recv(fd2, &c, 1, MSG_OOB);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD2;\n"
+" else\n"
+" send(fd1, &c, 1, MSG_OOB);\n"
+" }\n"
+" if (fd1 E<gt> 0 && FD_ISSET(fd1, &readfds)) {\n"
+" nbytes = read(fd1, buf1 + buf1_avail,\n"
+" BUF_SIZE - buf1_avail);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" buf1_avail += nbytes;\n"
+" }\n"
+" if (fd2 E<gt> 0 && FD_ISSET(fd2, &readfds)) {\n"
+" nbytes = read(fd2, buf2 + buf2_avail,\n"
+" BUF_SIZE - buf2_avail);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD2;\n"
+" else\n"
+" buf2_avail += nbytes;\n"
+" }\n"
+" if (fd1 E<gt> 0 && FD_ISSET(fd1, &writefds) && buf2_avail E<gt> 0) {\n"
+" nbytes = write(fd1, buf2 + buf2_written,\n"
+" buf2_avail - buf2_written);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD1;\n"
+" else\n"
+" buf2_written += nbytes;\n"
+" }\n"
+" if (fd2 E<gt> 0 && FD_ISSET(fd2, &writefds) && buf1_avail E<gt> 0) {\n"
+" nbytes = write(fd2, buf1 + buf1_written,\n"
+" buf1_avail - buf1_written);\n"
+" if (nbytes E<lt> 1)\n"
+" SHUT_FD2;\n"
+" else\n"
+" buf1_written += nbytes;\n"
+" }\n"
+"\\&\n"
+" /* Vérifier si l'écriture de données a rattrapé la lecture de données */\n"
+"\\&\n"
+" if (buf1_written == buf1_avail)\n"
+" buf1_written = buf1_avail = 0;\n"
+" if (buf2_written == buf2_avail)\n"
+" buf2_written = buf2_avail = 0;\n"
+"\\&\n"
+" /* une extrémité a fermé la connexion, continue\n"
+" d'écrire vers l'autre extrémité jusqu'à ce\n"
+" que ce soit vide */\n"
+"\\&\n"
+" if (fd1 E<lt> 0 && buf1_avail - buf1_written == 0)\n"
+" SHUT_FD2;\n"
+" if (fd2 E<lt> 0 && buf2_avail - buf2_written == 0)\n"
+" SHUT_FD1;\n"
+" }\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+
+#. type: TH
+#: fedora-rawhide
+#, no-wrap
+msgid "Linux man-pages 6.7"
+msgstr "Pages du manuel de Linux 6.7"
#. type: TH
#: opensuse-leap-15-6
#, no-wrap
msgid "Linux man-pages 6.04"
msgstr "Pages du manuel de Linux 6.04"
+
+#. type: TH
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "Linux man-pages (unreleased)"
+msgstr "Pages du manuel de Linux (non publiées)"