diff options
Diffstat (limited to 'qmake/qpopen.cpp')
-rw-r--r-- | qmake/qpopen.cpp | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/qmake/qpopen.cpp b/qmake/qpopen.cpp deleted file mode 100644 index f2d530d..0000000 --- a/qmake/qpopen.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the qmake application of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the either Technology Preview License Agreement or the -** Beta Release License Agreement. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://www.qtsoftware.com/contact. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qpopen.h" - - -QPopen::QPopen() -{ -} - -bool QPopen::init(const char *command, const char* /* mode */) -{ - SECURITY_ATTRIBUTES attributes; - - attributes.nLength = sizeof(SECURITY_ATTRIBUTES); - attributes.bInheritHandle = TRUE; - attributes.lpSecurityDescriptor = NULL; - - if (! CreatePipe(&childStdOutR, &childStdOutW, &attributes, 0)) { - return false; - } - - // Ensure that the read handle to the child process's pipe for STDOUT is not inherited. - SetHandleInformation(childStdOutR, HANDLE_FLAG_INHERIT, 0); - - // Create a pipe for the child process's STDIN. - if (! CreatePipe(&childStdInR, &childStdInW, &attributes, 0)) { - return false; - } - - // Ensure that the write handle to the child process's pipe for STDIN is not inherited. - SetHandleInformation(childStdInW, HANDLE_FLAG_INHERIT, 0); - - TCHAR *szCmdLine = new TCHAR[strlen(command)+1]; - strcpy(szCmdLine, command); - - // Set up members of the PROCESS_INFORMATION structure. - - ZeroMemory(&processInfo, sizeof(PROCESS_INFORMATION)); - - // Set up members of the STARTUPINFO structure. - - ZeroMemory(&siStartInfo, sizeof(STARTUPINFO)); - siStartInfo.cb = sizeof(STARTUPINFO); - siStartInfo.hStdError = childStdOutW; - siStartInfo.hStdOutput = childStdOutW; - siStartInfo.hStdInput = childStdInR; - siStartInfo.dwFlags |= STARTF_USESTDHANDLES; - - // Create the child process. - - bool success = CreateProcess(NULL, - szCmdLine, // command line - NULL, // process security attributes - NULL, // primary thread security attributes - TRUE, // handles are inherited - 0, // creation flags - NULL, // use parent's environment - NULL, // use parent's current directory - &siStartInfo, // STARTUPINFO pointer - &processInfo); // receives PROCESS_INFORMATION - - delete szCmdLine; - - return success; -} - -QPopen::~QPopen() -{ - CloseHandle(processInfo.hProcess); - CloseHandle(processInfo.hThread); - CloseHandle(childStdInR); - CloseHandle(childStdInW); - CloseHandle(childStdOutR); - CloseHandle(childStdOutW); -} - -int QPopen::fwrite(char* buffer, int maxBytes) -{ - DWORD bytesWritten; - - bool success = WriteFile(childStdInW, buffer, maxBytes, &bytesWritten, NULL); - if (success) { - return bytesWritten; - } - - return 0; -} - -int QPopen::fread(char* buffer, int maxBytes) -{ - DWORD bytesRead; - - if (!CloseHandle(childStdOutW)) - return 0; - - bool success = ReadFile(childStdOutR, buffer, maxBytes, &bytesRead, NULL); - if (success) - return bytesRead; - - return 0; -} |