From 2983af77a96a1bf2bcf1cc5409957ab4ef4138aa Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 4 Sep 2023 23:49:46 +0000 Subject: [PATCH] xap_helper: allow non-standard file description flags pipe2(.., O_CLOEXEC) on NetBSD sets the O_CLOEXEC file description flag along with the FD_CLOEXEC file descriptor flag, so we must not attempt to do exact matches on the file description flags. --- lib/PublicInbox/xap_helper.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/PublicInbox/xap_helper.h b/lib/PublicInbox/xap_helper.h index 0f16d316f..73590efd8 100644 --- a/lib/PublicInbox/xap_helper.h +++ b/lib/PublicInbox/xap_helper.h @@ -636,18 +636,17 @@ static bool recv_req(struct req *req, char *rbuf, size_t *len) int fd = *fdp++; const char *mode = NULL; int fl = fd_ok ? fcntl(fd, F_GETFL) : 0; - switch (fl) { - case 0: break; // hit previous error - case -1: + if (fl == 0) { + continue; // hit previous error + } else if (fl == -1) { warnx("invalid fd=%d", fd); fd_ok = false; - break; - case O_WRONLY: mode = "w"; break; - case O_RDWR: + } else if (fl & O_WRONLY) { + mode = "w"; + } else if (fl & O_RDWR) { mode = "r+"; if (i == 0) req->has_input = true; - break; - default: + } else { warnx("invalid mode from F_GETFL: 0x%x", fl); fd_ok = false; } -- 2.47.3