summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qprocess_unix.cpp
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2016-12-14 20:13:29 -0800
committerJake Petroules <jake.petroules@qt.io>2016-12-16 09:14:24 +0000
commitb9f56751cb926b6b4a6dd8ba2524394dcade9eef (patch)
tree9450b9d32941f470d51d02980c75b32cae6121b6 /src/corelib/io/qprocess_unix.cpp
parent66c2b87547e29a8c31377b6cac959a7d3bd6076b (diff)
Introduce a configure option for QProcessEnvironment
This decouples QProcess and QProcessEnvironment, since the latter may actually be available on platforms where the former is not. Change-Id: I3dc799ffdf94486b64143ed01a369897fff44a96 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io/qprocess_unix.cpp')
-rw-r--r--src/corelib/io/qprocess_unix.cpp73
1 files changed, 40 insertions, 33 deletions
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index b39816dd7d..39ec370d9c 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -41,9 +41,7 @@
//#define QPROCESS_DEBUG
#include "qdebug.h"
-#ifndef QT_NO_PROCESS
-
-#if defined QPROCESS_DEBUG
+#if QT_CONFIG(process) && defined(QPROCESS_DEBUG)
#include "private/qtools_p.h"
#include <ctype.h>
@@ -114,10 +112,47 @@ QT_END_NAMESPACE
#include <errno.h>
#include <stdlib.h>
#include <string.h>
+
+#if QT_CONFIG(process)
#include <forkfd.h>
+#endif
QT_BEGIN_NAMESPACE
+#if QT_CONFIG(processenvironment)
+
+QT_BEGIN_INCLUDE_NAMESPACE
+#if defined(Q_OS_MACOS)
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron())
+#else
+extern char **environ;
+#endif
+QT_END_INCLUDE_NAMESPACE
+
+QProcessEnvironment QProcessEnvironment::systemEnvironment()
+{
+ QProcessEnvironment env;
+#if !defined(QT_PLATFORM_UIKIT)
+ const char *entry;
+ for (int count = 0; (entry = environ[count]); ++count) {
+ const char *equal = strchr(entry, '=');
+ if (!equal)
+ continue;
+
+ QByteArray name(entry, equal - entry);
+ QByteArray value(equal + 1);
+ env.d->hash.insert(QProcessEnvironmentPrivate::Key(name),
+ QProcessEnvironmentPrivate::Value(value));
+ }
+#endif
+ return env;
+}
+
+#endif // QT_CONFIG(processenvironment)
+
+#if QT_CONFIG(process)
+
// POSIX requires PIPE_BUF to be 512 or larger
// so we will use 512
static const int errorBufferMax = 512;
@@ -310,34 +345,6 @@ bool QProcessPrivate::openChannel(Channel &channel)
}
}
-QT_BEGIN_INCLUDE_NAMESPACE
-#if defined(Q_OS_MACX)
-# include <crt_externs.h>
-# define environ (*_NSGetEnviron())
-#else
- extern char **environ;
-#endif
-QT_END_INCLUDE_NAMESPACE
-
-QProcessEnvironment QProcessEnvironment::systemEnvironment()
-{
- QProcessEnvironment env;
-#if !defined(QT_PLATFORM_UIKIT)
- const char *entry;
- for (int count = 0; (entry = environ[count]); ++count) {
- const char *equal = strchr(entry, '=');
- if (!equal)
- continue;
-
- QByteArray name(entry, equal - entry);
- QByteArray value(equal + 1);
- env.d->hash.insert(QProcessEnvironmentPrivate::Key(name),
- QProcessEnvironmentPrivate::Value(value));
- }
-#endif
- return env;
-}
-
static char **_q_dupEnvironment(const QProcessEnvironmentPrivate::Hash &environment, int *envc)
{
*envc = 0;
@@ -1044,6 +1051,6 @@ bool QProcessPrivate::startDetached(const QString &program, const QStringList &a
return success;
}
-QT_END_NAMESPACE
-
#endif // QT_NO_PROCESS
+
+QT_END_NAMESPACE