Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Stieber2013-12-15 16:28:15 +0000
committerAnton Leherbauer2013-12-16 08:54:34 +0000
commite72c037dbd749499bb0ff5fb8a41bd68e42598b8 (patch)
treec6064ead3cdb451c06d805f7dc075f8c869081cd /core/org.eclipse.cdt.core.win32
parentebc858ec44b4ad8f58c15403a7d098b4b9f4f5d0 (diff)
downloadorg.eclipse.cdt-e72c037dbd749499bb0ff5fb8a41bd68e42598b8.tar.gz
org.eclipse.cdt-e72c037dbd749499bb0ff5fb8a41bd68e42598b8.tar.xz
org.eclipse.cdt-e72c037dbd749499bb0ff5fb8a41bd68e42598b8.zip
Bug 419391 - Contribute Windows PTY support
Signed-off-by: Uwe Stieber <uwe.stieber@windriver.com>
Diffstat (limited to 'core/org.eclipse.cdt.core.win32')
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h45
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h31
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h29
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp71
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp416
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/pty.sln46
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj177
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters30
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj185
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters90
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj167
-rw-r--r--core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters39
12 files changed, 1326 insertions, 0 deletions
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h
new file mode 100644
index 00000000000..5c80c5793c8
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTY.h
@@ -0,0 +1,45 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_pty_PTY */
+
+#ifndef _Included_org_eclipse_cdt_utils_pty_PTY
+#define _Included_org_eclipse_cdt_utils_pty_PTY
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: openMaster
+ * Signature: (Z)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster
+ (JNIEnv *, jobject, jboolean);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: change_window_size
+ * Signature: (III)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size
+ (JNIEnv *, jobject, jint, jint, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: exec2
+ * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILjava/lang/String;IZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_exec2
+ (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray, jstring, jint, jboolean);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: waitFor
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_waitFor
+ (JNIEnv *, jobject, jint, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h
new file mode 100644
index 00000000000..86cd5bdd240
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYInputStream.h
@@ -0,0 +1,31 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_pty_PTYInputStream */
+
+#ifndef _Included_org_eclipse_cdt_utils_pty_PTYInputStream
+#define _Included_org_eclipse_cdt_utils_pty_PTYInputStream
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef org_eclipse_cdt_utils_pty_PTYInputStream_MAX_SKIP_BUFFER_SIZE
+#define org_eclipse_cdt_utils_pty_PTYInputStream_MAX_SKIP_BUFFER_SIZE 2048L
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: read0
+ * Signature: (I[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0
+ (JNIEnv *, jobject, jint, jbyteArray, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0
+ (JNIEnv *, jobject, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h
new file mode 100644
index 00000000000..108ef248d8c
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/jni/include/PTYOutputStream.h
@@ -0,0 +1,29 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_eclipse_cdt_utils_pty_PTYOutputStream */
+
+#ifndef _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
+#define _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: write0
+ * Signature: (I[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0
+ (JNIEnv *, jobject, jint, jbyteArray, jint);
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0
+ (JNIEnv *, jobject, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp b/core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp
new file mode 100644
index 00000000000..c19f2ebbdcc
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/jni/src/dllmain.cpp
@@ -0,0 +1,71 @@
+// dllmain.cpp : Defines the entry point for the DLL application.
+#include <windows.h>
+#include <delayimp.h>
+#include <assert.h>
+
+#pragma comment(lib, "delayimp")
+
+BOOL APIENTRY DllMain( HMODULE hModule,
+ DWORD ul_reason_for_call,
+ LPVOID lpReserved
+ )
+{
+ switch (ul_reason_for_call)
+ {
+ case DLL_PROCESS_ATTACH:
+ case DLL_THREAD_ATTACH:
+ case DLL_THREAD_DETACH:
+ case DLL_PROCESS_DETACH:
+ break;
+ }
+ return TRUE;
+}
+
+static HMODULE getCurrentModule()
+{
+ HMODULE module;
+ if (!GetModuleHandleEx(
+ GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
+ GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
+ (LPCTSTR)getCurrentModule,
+ &module)) {
+ assert(false);
+ }
+ return module;
+}
+
+HMODULE PTYExplicitLoadLibrary( LPCSTR pszModuleName )
+{
+ if( lstrcmpiA( pszModuleName, "winpty.dll" ) == 0 )
+ {
+ CHAR szPath[MAX_PATH] = "";
+ //_hdllInstance is the HMODULE of *this* module
+ DWORD cchPath = GetModuleFileNameA(getCurrentModule(), szPath, MAX_PATH );
+ while( cchPath > 0 )
+ {
+ switch( szPath[cchPath - 1] )
+ {
+ case '\\':
+ case '/':
+ case ':':
+ break;
+ default:
+ --cchPath;
+ continue;
+ }
+ break; //stop searching; found path separator
+ }
+ lstrcpynA( szPath + cchPath, pszModuleName, MAX_PATH - cchPath );
+ return LoadLibraryA( szPath ); //call with full path to dependent DLL
+ }
+ return NULL;
+}
+
+FARPROC WINAPI PTYDliNotifyHook( unsigned dliNotify, PDelayLoadInfo pdli )
+{
+ if( dliNotify == dliNotePreLoadLibrary )
+ return (FARPROC)PTYExplicitLoadLibrary( pdli->szDll );
+ return NULL;
+}
+
+extern "C" PfnDliHook __pfnDliNotifyHook2 = PTYDliNotifyHook;
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp b/core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp
new file mode 100644
index 00000000000..d1b5f42c163
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/jni/src/pty.cpp
@@ -0,0 +1,416 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Wind River Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the terms
+ * of the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+
+#include "PTY.h"
+#include "PTYInputStream.h"
+#include "PTYOutputStream.h"
+#include "winpty.h"
+
+#include <string>
+#include <vector>
+#include <map>
+#include <stdlib.h>
+#include <assert.h>
+#include <ctime>
+
+static std::map<int, winpty_t*> fd2pty;
+static std::map<int, int> fd2rc;
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: openMaster
+ * Signature: (Z)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster(JNIEnv *env, jobject jobj, jboolean console)
+{
+ jfieldID fid; /* Store the field ID */
+ jstring jstr = NULL;
+ jclass cls;
+
+ int master = -1;
+ char line[1024];
+
+ line[0] = '\0';
+
+ /* Open new winpty handle */
+ winpty_t* winpty = winpty_open(80, 40);
+ if (winpty == NULL) {
+ return NULL;
+ }
+
+ /* Configure console mode */
+ if (console) {
+ winpty_set_console_mode(winpty, 1);
+ }
+
+ /* Generate masterFD based on current system time */
+ srand((unsigned int)time(NULL));
+ master = rand();
+
+ sprintf(line, "winpty_%i", master);
+
+ /* Remember the winpty handle for the generated masterFD */
+ fd2pty.insert(std::pair<int, winpty_t*>(master, winpty));
+
+ /* Get a reference to the obj's class */
+ cls = env->GetObjectClass(jobj);
+
+ /* Set the master fd. */
+ fid = env->GetFieldID(cls, "master", "I");
+ if (fid == NULL) {
+ return NULL;
+ }
+ env->SetIntField(jobj, fid, (jint)master);
+
+ /* Create a new String for the slave. */
+ jstr = env->NewStringUTF(line);
+
+ return jstr;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: change_window_size
+ * Signature: (III)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size(JNIEnv *env, jobject jobj, jint fdm, jint width, jint height)
+{
+ int fd;
+ std::map<int, winpty_t*> :: const_iterator fd2pty_Iter;
+
+ fd = fdm;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t* winpty = fd2pty_Iter -> second;
+ if (winpty != NULL)
+ return winpty_set_size(winpty, width, height);
+ }
+
+ return 0;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: read0
+ * Signature: (I[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0
+ (JNIEnv *env, jobject jobj, jint jfd, jbyteArray buf, jint buf_len)
+{
+ DWORD amount = -1;
+ OVERLAPPED over;
+ int fd;
+ std::map<int, winpty_t*> :: const_iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t* winpty = fd2pty_Iter -> second;
+ if (winpty != NULL) {
+ /* Get the pipe handle */
+ HANDLE handle = winpty_get_data_pipe(winpty);
+
+ memset(&over, 0, sizeof(over));
+ over.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+
+ char *buffer = new char[buf_len];
+ memset(buffer, 0, sizeof(*buffer));
+
+ jbyte *data = env->GetByteArrayElements(buf, 0);
+ memset(data, 0, sizeof(*data));
+
+ amount = 0;
+ BOOL ret = ReadFile(handle, buffer, buf_len, &amount, &over);
+ if (!ret) {
+ DWORD error = GetLastError();
+ if (error == ERROR_IO_PENDING)
+ ret = GetOverlappedResult(handle, &over, &amount, TRUE);
+ }
+
+ if (ret && amount > 0)
+ memcpy(data, buffer, amount);
+
+ if (!ret || amount == 0)
+ amount = -1;
+
+ if (!ret) {
+ int rc = winpty_get_exit_code(winpty);
+ fd2rc.insert(std::pair<int, int>(fd, rc));
+ }
+
+ delete[] buffer;
+ env->ReleaseByteArrayElements(buf, data, 0);
+ ResetEvent(over.hEvent);
+ }
+ }
+
+ return amount;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYInputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv *env, jobject jobj, jint jfd)
+{
+ int fd;
+ std::map<int, winpty_t*> :: iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t* winpty = fd2pty_Iter -> second;
+ if (winpty != NULL) {
+ winpty_close(winpty);
+ winpty = NULL;
+ }
+ fd2pty.erase(fd2pty_Iter);
+ }
+
+ return 0;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: write0
+ * Signature: (I[BI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv *env, jobject jobj, jint jfd, jbyteArray buf, jint buf_len)
+{
+ DWORD written = -1;
+ OVERLAPPED over;
+ int fd;
+ std::map<int, winpty_t*> :: iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t* winpty = fd2pty_Iter -> second;
+ if (winpty != NULL) {
+ /* Get the pipe handle */
+ HANDLE handle = winpty_get_data_pipe(winpty);
+
+ memset(&over, 0, sizeof(over));
+ over.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+
+ char *buffer = new char[buf_len];
+ memset(buffer, 0, sizeof(*buffer));
+
+ jbyte *data = env->GetByteArrayElements(buf, 0);
+ memcpy(buffer, data, buf_len);
+
+ BOOL ret = WriteFile(handle, buffer, buf_len, &written, &over);
+ env->ReleaseByteArrayElements(buf, data, 0);
+
+ if (!ret && GetLastError() == ERROR_IO_PENDING)
+ ret = GetOverlappedResult(handle, &over, &written, TRUE);
+ if (!ret || (int)written != buf_len)
+ written = -1;
+
+ delete[] buffer;
+ }
+ }
+
+ return written;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTYOutputStream
+ * Method: close0
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv *env, jobject jobj, jint jfd)
+{
+ int fd;
+ std::map<int, winpty_t*> :: iterator fd2pty_Iter;
+
+ fd = jfd;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t* winpty = fd2pty_Iter -> second;
+ if (winpty != NULL) {
+ winpty_close(winpty);
+ winpty = NULL;
+ }
+ fd2pty.erase(fd2pty_Iter);
+ }
+
+ return 0;
+}
+
+/*
+ * Convert convert slashes to backslashes.
+ */
+static std::wstring convertSlashes(const wchar_t *path)
+{
+ std::wstring ret;
+
+ for (int i = 0; path[i] != L'\0'; ++i) {
+ if (path[i] == L'/')
+ ret.push_back(L'\\');
+ else
+ ret.push_back(path[i]);
+ }
+
+ return ret;
+}
+
+// Convert argc/argv into a Win32 command-line following the escaping convention
+// documented on MSDN. (e.g. see CommandLineToArgvW documentation)
+static std::wstring argvToCommandLine(const std::vector<std::wstring> &argv)
+{
+ std::wstring result;
+ for (size_t argIndex = 0; argIndex < argv.size(); ++argIndex) {
+ if (argIndex > 0)
+ result.push_back(L' ');
+ const wchar_t *arg = argv[argIndex].c_str();
+ const bool quote =
+ wcschr(arg, L' ') != NULL ||
+ wcschr(arg, L'\t') != NULL ||
+ *arg == L'\0';
+ if (quote)
+ result.push_back(L'\"');
+ int bsCount = 0;
+ for (const wchar_t *p = arg; *p != L'\0'; ++p) {
+ if (*p == L'\\') {
+ bsCount++;
+ } else if (*p == L'\"') {
+ result.append(bsCount * 2 + 1, L'\\');
+ result.push_back(L'\"');
+ bsCount = 0;
+ } else {
+ result.append(bsCount, L'\\');
+ bsCount = 0;
+ result.push_back(*p);
+ }
+ }
+ if (quote) {
+ result.append(bsCount * 2, L'\\');
+ result.push_back(L'\"');
+ } else {
+ result.append(bsCount, L'\\');
+ }
+ }
+ return result;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: exec2
+ * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILjava/lang/String;IZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_exec2
+ (JNIEnv *env, jobject jobj, jobjectArray jcmd, jobjectArray jenv, jstring jdir, jintArray jchannels, jstring jslaveName, jint masterFD, jboolean console)
+{
+ int fd;
+ std::map<int, winpty_t*> :: iterator fd2pty_Iter;
+
+ jint *channels = env->GetIntArrayElements(jchannels, 0);
+ const wchar_t *cwdW = (const wchar_t *) env->GetStringChars(jdir, NULL);
+ const char *pts_name = env->GetStringUTFChars(jslaveName, NULL);
+
+ int pid = -1;
+
+ int i;
+ jint argc = env->GetArrayLength(jcmd);
+ jint envc = env->GetArrayLength(jenv);
+
+ if (channels == NULL)
+ goto bail_out;
+
+ fd = masterFD;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t* winpty = fd2pty_Iter -> second;
+ if (winpty != NULL) {
+ std::vector<std::wstring> argVector;
+
+ for (i = 0; i < argc; i++) {
+ jstring j_str = (jstring) env->GetObjectArrayElement(jcmd, i);
+ const wchar_t *w_str = (const wchar_t *) env->GetStringChars(j_str, NULL);
+ if (i == 0) argVector.push_back(convertSlashes(w_str));
+ else argVector.push_back(w_str);
+ env->ReleaseStringChars(j_str, (const jchar *) w_str);
+ env->DeleteLocalRef(j_str);
+ }
+
+ std::wstring envp;
+
+ for (i = 0; i < envc; i++) {
+ jstring j_str = (jstring) env->GetObjectArrayElement(jenv, i);
+ const wchar_t *w_str = (const wchar_t *) env->GetStringChars(j_str, NULL);
+ envp.append(w_str);
+ envp.push_back(L'\0');
+ env->ReleaseStringChars(j_str, (const jchar *) w_str);
+ env->DeleteLocalRef(j_str);
+ }
+
+ std::wstring cmdLine = argvToCommandLine(argVector);
+ const wchar_t *cmdLineW = cmdLine.c_str();
+
+ int ret = winpty_start_process(winpty,
+ NULL,
+ cmdLineW,
+ cwdW,
+ envp.c_str());
+
+ if (ret == 0) {
+ // Success. Get the process id.
+ pid = winpty_get_process_id(winpty);
+ }
+ }
+ }
+
+bail_out:
+ env->ReleaseIntArrayElements(jchannels, channels, 0);
+ env->ReleaseStringChars(jdir, (const jchar *) cwdW);
+ env->ReleaseStringUTFChars(jslaveName, pts_name);
+
+ return pid;
+}
+
+/*
+ * Class: org_eclipse_cdt_utils_pty_PTY
+ * Method: waitFor
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_waitFor
+ (JNIEnv *env, jobject jobj, jint masterFD, jint pid)
+{
+ int status = -1;
+ DWORD flags;
+
+ int fd;
+ std::map<int, winpty_t*> :: iterator fd2pty_Iter;
+ std::map<int, int> :: iterator fd2rc_Iter;
+
+ fd = masterFD;
+ fd2pty_Iter = fd2pty.find(fd);
+ if (fd2pty_Iter != fd2pty.end()) {
+ winpty_t* winpty = fd2pty_Iter -> second;
+ if (winpty != NULL) {
+ HANDLE handle = winpty_get_data_pipe(winpty);
+ BOOL success;
+ do {
+ success = GetHandleInformation(handle, &flags);
+ if (success) Sleep(500);
+ } while (success);
+
+ fd2rc_Iter = fd2rc.find(fd);
+ if (fd2rc_Iter != fd2rc.end()) {
+ status = fd2rc_Iter -> second;
+ fd2rc.erase(fd2rc_Iter);
+ }
+ }
+ }
+
+ return status;
+}
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/pty.sln b/core/org.eclipse.cdt.core.win32/library/pty/pty.sln
new file mode 100644
index 00000000000..bd82345255b
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/pty.sln
@@ -0,0 +1,46 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pty", "pty.vcxproj", "{5589D515-1C56-4641-97CF-3C4561109258}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winpty", "winpty.vcxproj", "{D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winpty-agent", "winpty-agent.vcxproj", "{E7A42398-12E7-4BC1-B72B-5D62B71E9816}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5589D515-1C56-4641-97CF-3C4561109258}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5589D515-1C56-4641-97CF-3C4561109258}.Debug|Win32.Build.0 = Debug|Win32
+ {5589D515-1C56-4641-97CF-3C4561109258}.Debug|x64.ActiveCfg = Debug|x64
+ {5589D515-1C56-4641-97CF-3C4561109258}.Debug|x64.Build.0 = Debug|x64
+ {5589D515-1C56-4641-97CF-3C4561109258}.Release|Win32.ActiveCfg = Release|Win32
+ {5589D515-1C56-4641-97CF-3C4561109258}.Release|Win32.Build.0 = Release|Win32
+ {5589D515-1C56-4641-97CF-3C4561109258}.Release|x64.ActiveCfg = Release|x64
+ {5589D515-1C56-4641-97CF-3C4561109258}.Release|x64.Build.0 = Release|x64
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|Win32.Build.0 = Debug|Win32
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|x64.ActiveCfg = Debug|x64
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Debug|x64.Build.0 = Debug|x64
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|Win32.ActiveCfg = Release|Win32
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|Win32.Build.0 = Release|Win32
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|x64.ActiveCfg = Release|x64
+ {D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}.Release|x64.Build.0 = Release|x64
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|Win32.Build.0 = Debug|Win32
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|x64.ActiveCfg = Debug|x64
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Debug|x64.Build.0 = Debug|x64
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|Win32.ActiveCfg = Release|Win32
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|Win32.Build.0 = Release|Win32
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|x64.ActiveCfg = Release|x64
+ {E7A42398-12E7-4BC1-B72B-5D62B71E9816}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj b/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj
new file mode 100644
index 00000000000..29311ce2b06
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5589D515-1C56-4641-97CF-3C4561109258}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>pty</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
+ <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
+ <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
+ <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>./jni/include;C:\NoScan\Apps\Java\jdk1.6.0_31\include;C:\NoScan\Apps\Java\jdk1.6.0_31\include\win32;..\winpty\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <AdditionalDependencies>DelayImp.lib;winpty.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
+ <DelayLoadDLLs>winpty.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="jni\include\PTY.h" />
+ <ClInclude Include="jni\include\PTYInputStream.h" />
+ <ClInclude Include="jni\include\PTYOutputStream.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="jni\src\dllmain.cpp" />
+ <ClCompile Include="jni\src\pty.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters b/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters
new file mode 100644
index 00000000000..4c428115fd8
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/pty.vcxproj.filters
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="include">
+ <UniqueIdentifier>{679c3039-d4a8-48db-9a3b-33f73f3b44c0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src">
+ <UniqueIdentifier>{b7f98685-8f42-40d2-bd2b-65bcbac17645}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="jni\include\PTY.h">
+ <Filter>include</Filter>
+ </ClInclude>
+ <ClInclude Include="jni\include\PTYInputStream.h">
+ <Filter>include</Filter>
+ </ClInclude>
+ <ClInclude Include="jni\include\PTYOutputStream.h">
+ <Filter>include</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="jni\src\pty.cpp">
+ <Filter>src</Filter>
+ </ClCompile>
+ <ClCompile Include="jni\src\dllmain.cpp">
+ <Filter>src</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj b/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj
new file mode 100644
index 00000000000..69e8ac3b008
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E7A42398-12E7-4BC1-B72B-5D62B71E9816}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>winptyagent</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="..\winpty\agent\Agent.h" />
+ <ClInclude Include="..\winpty\agent\AgentAssert.h" />
+ <ClInclude Include="..\winpty\agent\ConsoleInput.h" />
+ <ClInclude Include="..\winpty\agent\Coord.h" />
+ <ClInclude Include="..\winpty\agent\DsrSender.h" />
+ <ClInclude Include="..\winpty\agent\EventLoop.h" />
+ <ClInclude Include="..\winpty\agent\NamedPipe.h" />
+ <ClInclude Include="..\winpty\agent\SmallRect.h" />
+ <ClInclude Include="..\winpty\agent\Terminal.h" />
+ <ClInclude Include="..\winpty\agent\Win32Console.h" />
+ <ClInclude Include="..\winpty\shared\AgentMsg.h" />
+ <ClInclude Include="..\winpty\shared\Buffer.h" />
+ <ClInclude Include="..\winpty\shared\c99_snprintf.h" />
+ <ClInclude Include="..\winpty\shared\DebugClient.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\winpty\agent\Agent.cc" />
+ <ClCompile Include="..\winpty\agent\AgentAssert.cc" />
+ <ClCompile Include="..\winpty\agent\ConsoleInput.cc" />
+ <ClCompile Include="..\winpty\agent\Coord.cc" />
+ <ClCompile Include="..\winpty\agent\EventLoop.cc" />
+ <ClCompile Include="..\winpty\agent\main.cc" />
+ <ClCompile Include="..\winpty\agent\NamedPipe.cc" />
+ <ClCompile Include="..\winpty\agent\SmallRect.cc" />
+ <ClCompile Include="..\winpty\agent\Terminal.cc" />
+ <ClCompile Include="..\winpty\agent\Win32Console.cc" />
+ <ClCompile Include="..\winpty\shared\DebugClient.cc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters b/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters
new file mode 100644
index 00000000000..17401866621
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/winpty-agent.vcxproj.filters
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="agent">
+ <UniqueIdentifier>{a7174beb-334f-4496-868c-348a80e5f4d8}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="shared">
+ <UniqueIdentifier>{0c9e153d-99b4-4f47-ba3c-57e53e1c71b7}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\winpty\shared\AgentMsg.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\shared\Buffer.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\shared\c99_snprintf.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\shared\DebugClient.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\Agent.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\AgentAssert.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\ConsoleInput.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\Coord.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\DsrSender.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\EventLoop.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\NamedPipe.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\SmallRect.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\Terminal.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\agent\Win32Console.h">
+ <Filter>agent</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\winpty\shared\DebugClient.cc">
+ <Filter>shared</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\Agent.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\AgentAssert.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\ConsoleInput.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\Coord.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\EventLoop.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\main.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\NamedPipe.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\SmallRect.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\Terminal.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\agent\Win32Console.cc">
+ <Filter>agent</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj b/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj
new file mode 100644
index 00000000000..bf4fabb5b4d
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D7BFF73A-A86A-47FF-AD2B-CC2EFCAD5ABD}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>winpty</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>Windows7.1SDK</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;NOMINMAX;_DEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;_DEBUG;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NOMINMAX;NDEBUG;_WINDOWS;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;_WINDOWS;NOMINMAX;NDEBUG;_USRDLL;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WINPTY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\winpty\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="..\winpty\include\winpty.h" />
+ <ClInclude Include="..\winpty\shared\AgentMsg.h" />
+ <ClInclude Include="..\winpty\shared\Buffer.h" />
+ <ClInclude Include="..\winpty\shared\c99_snprintf.h" />
+ <ClInclude Include="..\winpty\shared\DebugClient.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\winpty\libwinpty\winpty.cc" />
+ <ClCompile Include="..\winpty\shared\DebugClient.cc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters b/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters
new file mode 100644
index 00000000000..ad2b6019f77
--- /dev/null
+++ b/core/org.eclipse.cdt.core.win32/library/pty/winpty.vcxproj.filters
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="include">
+ <UniqueIdentifier>{6f8f9f7f-1797-423e-9189-990b2baff405}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libwinpty">
+ <UniqueIdentifier>{6fa1f334-3a7c-4a8c-970b-15c2a6a08ba2}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="shared">
+ <UniqueIdentifier>{84962cba-90e7-4b83-8656-6563b933bb73}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\winpty\shared\AgentMsg.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\shared\Buffer.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\shared\c99_snprintf.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\shared\DebugClient.h">
+ <Filter>shared</Filter>
+ </ClInclude>
+ <ClInclude Include="..\winpty\include\winpty.h">
+ <Filter>include</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\winpty\shared\DebugClient.cc">
+ <Filter>shared</Filter>
+ </ClCompile>
+ <ClCompile Include="..\winpty\libwinpty\winpty.cc">
+ <Filter>libwinpty</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file

Back to the top