From: Eric Wong Date: Mon, 4 Sep 2023 23:49:46 +0000 (+0000) Subject: xap_helper: allow non-standard file description flags X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2983af77a96a1bf2bcf1cc5409957ab4ef4138aa;p=thirdparty%2Fpublic-inbox.git 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. --- 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; }