[PATCH] QProcess/Unix: fallback on _POSIX_PIPE_BUF w/ missing PIPE_BUF
authorPino Toscano <toscano.pino@tiscali.it>
Mon, 17 Jan 2022 19:43:01 +0000 (20:43 +0100)
committerPino Toscano <pino@debian.org>
Sat, 3 Sep 2022 06:15:09 +0000 (07:15 +0100)
PIPE_BUF is optional in POSIX, e.g. "where the corresponding value is
equal to or greater than the stated minimum, but where the value can
vary depending on the file to which it is applied." [1]

GNU/Hurd does not provide PIPE_BUF, so fallback to its minimum
acceptable value, that is _POSIX_PIPE_BUF.

[1] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html

Also, explicitly include <limits.h> in this file, to make sure PIPE_BUF
or _POSIX_PIPE_BUF are available without relying on other headers to
pull <limits.h>.

Change-Id: Ifae964db81841e1d31fc09e73b45594af9a326d1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Gbp-Pq: Name upstream_QProcess-Unix-fallback-on-_POSIX_PIPE_BUF-w-missing-.patch

src/corelib/io/qprocess_unix.cpp

index 3a2e5cf584776f437d5e5d399dcc2b3719eaf5f3..9f97bb7af9fd5f41a5ab5b2de5564347ebfb2333 100644 (file)
@@ -69,6 +69,7 @@
 #endif
 
 #include <errno.h>
+#include <limits.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -936,7 +937,11 @@ bool QProcessPrivate::startDetached(qint64 *pid)
 {
     QByteArray encodedWorkingDirectory = QFile::encodeName(workingDirectory);
 
+#ifdef PIPE_BUF
     static_assert(PIPE_BUF >= sizeof(ChildError));
+#else
+    static_assert(_POSIX_PIPE_BUF >= sizeof(ChildError));
+#endif
     ChildError childStatus = { 0, {} };
 
     AutoPipe startedPipe, pidPipe;