node-pty 1.2.0-beta.1 → 1.2.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/binding.gyp +76 -37
- package/lib/conpty_console_list_agent.js +10 -1
- package/lib/unixTerminal.js +6 -3
- package/lib/utils.js +1 -1
- package/lib/windowsPtyAgent.js +62 -95
- package/lib/windowsTerminal.js +4 -2
- package/package.json +6 -5
- package/prebuilds/darwin-arm64/pty.node +0 -0
- package/prebuilds/darwin-arm64/spawn-helper +0 -0
- package/prebuilds/darwin-x64/pty.node +0 -0
- package/prebuilds/darwin-x64/spawn-helper +0 -0
- package/prebuilds/linux-arm64/pty.node +0 -0
- package/prebuilds/linux-x64/pty.node +0 -0
- package/prebuilds/win32-arm64/conpty.node +0 -0
- package/prebuilds/win32-arm64/conpty.pdb +0 -0
- package/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
- package/prebuilds/win32-x64/conpty.node +0 -0
- package/prebuilds/win32-x64/conpty.pdb +0 -0
- package/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
- package/scripts/post-install.js +1 -5
- package/src/unix/pty.cc +111 -35
- package/src/win/conpty.cc +1 -2
- package/typings/node-pty.d.ts +13 -9
- package/deps/.editorconfig +0 -2
- package/deps/winpty/.drone.yml +0 -17
- package/deps/winpty/.gitattributes +0 -19
- package/deps/winpty/LICENSE +0 -21
- package/deps/winpty/Makefile +0 -166
- package/deps/winpty/README.md +0 -151
- package/deps/winpty/RELEASES.md +0 -280
- package/deps/winpty/VERSION.txt +0 -1
- package/deps/winpty/configure +0 -167
- package/deps/winpty/misc/BufferResizeTests.cc +0 -90
- package/deps/winpty/misc/ChangeScreenBuffer.cc +0 -53
- package/deps/winpty/misc/ClearConsole.cc +0 -72
- package/deps/winpty/misc/ConinMode.cc +0 -117
- package/deps/winpty/misc/ConinMode.ps1 +0 -116
- package/deps/winpty/misc/ConoutMode.cc +0 -113
- package/deps/winpty/misc/DebugClient.py +0 -42
- package/deps/winpty/misc/DebugServer.py +0 -63
- package/deps/winpty/misc/DumpLines.py +0 -5
- package/deps/winpty/misc/EnableExtendedFlags.txt +0 -46
- package/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +0 -528
- package/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +0 -633
- package/deps/winpty/misc/Font-Report-June2016/CP932.txt +0 -630
- package/deps/winpty/misc/Font-Report-June2016/CP936.txt +0 -630
- package/deps/winpty/misc/Font-Report-June2016/CP949.txt +0 -630
- package/deps/winpty/misc/Font-Report-June2016/CP950.txt +0 -630
- package/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +0 -16
- package/deps/winpty/misc/Font-Report-June2016/Results.txt +0 -4
- package/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +0 -144
- package/deps/winpty/misc/FontSurvey.cc +0 -100
- package/deps/winpty/misc/FormatChar.h +0 -21
- package/deps/winpty/misc/FreezePerfTest.cc +0 -62
- package/deps/winpty/misc/GetCh.cc +0 -20
- package/deps/winpty/misc/GetConsolePos.cc +0 -41
- package/deps/winpty/misc/GetFont.cc +0 -261
- package/deps/winpty/misc/IdentifyConsoleWindow.ps1 +0 -51
- package/deps/winpty/misc/IsNewConsole.cc +0 -87
- package/deps/winpty/misc/MouseInputNotes.txt +0 -90
- package/deps/winpty/misc/MoveConsoleWindow.cc +0 -34
- package/deps/winpty/misc/Notes.txt +0 -219
- package/deps/winpty/misc/OSVersion.cc +0 -27
- package/deps/winpty/misc/ScreenBufferFreezeInactive.cc +0 -101
- package/deps/winpty/misc/ScreenBufferTest.cc +0 -671
- package/deps/winpty/misc/ScreenBufferTest2.cc +0 -151
- package/deps/winpty/misc/SelectAllTest.cc +0 -45
- package/deps/winpty/misc/SetBufferSize.cc +0 -32
- package/deps/winpty/misc/SetCursorPos.cc +0 -10
- package/deps/winpty/misc/SetFont.cc +0 -145
- package/deps/winpty/misc/SetWindowRect.cc +0 -36
- package/deps/winpty/misc/ShowArgv.cc +0 -12
- package/deps/winpty/misc/ShowConsoleInput.cc +0 -40
- package/deps/winpty/misc/Spew.py +0 -5
- package/deps/winpty/misc/TestUtil.cc +0 -172
- package/deps/winpty/misc/UnicodeDoubleWidthTest.cc +0 -102
- package/deps/winpty/misc/UnicodeWideTest1.cc +0 -246
- package/deps/winpty/misc/UnicodeWideTest2.cc +0 -130
- package/deps/winpty/misc/UnixEcho.cc +0 -89
- package/deps/winpty/misc/Utf16Echo.cc +0 -46
- package/deps/winpty/misc/VeryLargeRead.cc +0 -122
- package/deps/winpty/misc/VkEscapeTest.cc +0 -56
- package/deps/winpty/misc/Win10ResizeWhileFrozen.cc +0 -52
- package/deps/winpty/misc/Win10WrapTest1.cc +0 -57
- package/deps/winpty/misc/Win10WrapTest2.cc +0 -30
- package/deps/winpty/misc/Win32Echo1.cc +0 -26
- package/deps/winpty/misc/Win32Echo2.cc +0 -19
- package/deps/winpty/misc/Win32Test1.cc +0 -46
- package/deps/winpty/misc/Win32Test2.cc +0 -70
- package/deps/winpty/misc/Win32Test3.cc +0 -78
- package/deps/winpty/misc/Win32Write1.cc +0 -44
- package/deps/winpty/misc/WindowsBugCrashReader.cc +0 -27
- package/deps/winpty/misc/WriteConsole.cc +0 -106
- package/deps/winpty/misc/build32.sh +0 -9
- package/deps/winpty/misc/build64.sh +0 -9
- package/deps/winpty/misc/color-test.sh +0 -212
- package/deps/winpty/misc/font-notes.txt +0 -300
- package/deps/winpty/misc/winbug-15048.cc +0 -201
- package/deps/winpty/ship/build-pty4j-libpty.bat +0 -36
- package/deps/winpty/ship/common_ship.py +0 -53
- package/deps/winpty/ship/make_msvc_package.py +0 -165
- package/deps/winpty/ship/ship.py +0 -108
- package/deps/winpty/src/agent/Agent.cc +0 -613
- package/deps/winpty/src/agent/Agent.h +0 -103
- package/deps/winpty/src/agent/AgentCreateDesktop.cc +0 -84
- package/deps/winpty/src/agent/AgentCreateDesktop.h +0 -28
- package/deps/winpty/src/agent/ConsoleFont.cc +0 -632
- package/deps/winpty/src/agent/ConsoleFont.h +0 -28
- package/deps/winpty/src/agent/ConsoleInput.cc +0 -852
- package/deps/winpty/src/agent/ConsoleInput.h +0 -109
- package/deps/winpty/src/agent/ConsoleInputReencoding.cc +0 -121
- package/deps/winpty/src/agent/ConsoleInputReencoding.h +0 -36
- package/deps/winpty/src/agent/ConsoleLine.cc +0 -152
- package/deps/winpty/src/agent/ConsoleLine.h +0 -41
- package/deps/winpty/src/agent/Coord.h +0 -87
- package/deps/winpty/src/agent/DebugShowInput.cc +0 -239
- package/deps/winpty/src/agent/DebugShowInput.h +0 -32
- package/deps/winpty/src/agent/DefaultInputMap.cc +0 -422
- package/deps/winpty/src/agent/DefaultInputMap.h +0 -28
- package/deps/winpty/src/agent/DsrSender.h +0 -30
- package/deps/winpty/src/agent/EventLoop.cc +0 -99
- package/deps/winpty/src/agent/EventLoop.h +0 -47
- package/deps/winpty/src/agent/InputMap.cc +0 -246
- package/deps/winpty/src/agent/InputMap.h +0 -114
- package/deps/winpty/src/agent/LargeConsoleRead.cc +0 -71
- package/deps/winpty/src/agent/LargeConsoleRead.h +0 -68
- package/deps/winpty/src/agent/NamedPipe.cc +0 -378
- package/deps/winpty/src/agent/NamedPipe.h +0 -125
- package/deps/winpty/src/agent/Scraper.cc +0 -699
- package/deps/winpty/src/agent/Scraper.h +0 -103
- package/deps/winpty/src/agent/SimplePool.h +0 -75
- package/deps/winpty/src/agent/SmallRect.h +0 -143
- package/deps/winpty/src/agent/Terminal.cc +0 -535
- package/deps/winpty/src/agent/Terminal.h +0 -69
- package/deps/winpty/src/agent/UnicodeEncoding.h +0 -157
- package/deps/winpty/src/agent/UnicodeEncodingTest.cc +0 -189
- package/deps/winpty/src/agent/Win32Console.cc +0 -107
- package/deps/winpty/src/agent/Win32Console.h +0 -67
- package/deps/winpty/src/agent/Win32ConsoleBuffer.cc +0 -193
- package/deps/winpty/src/agent/Win32ConsoleBuffer.h +0 -99
- package/deps/winpty/src/agent/main.cc +0 -114
- package/deps/winpty/src/agent/subdir.mk +0 -61
- package/deps/winpty/src/configurations.gypi +0 -60
- package/deps/winpty/src/debugserver/DebugServer.cc +0 -117
- package/deps/winpty/src/debugserver/subdir.mk +0 -41
- package/deps/winpty/src/include/winpty.h +0 -242
- package/deps/winpty/src/include/winpty_constants.h +0 -131
- package/deps/winpty/src/libwinpty/AgentLocation.cc +0 -75
- package/deps/winpty/src/libwinpty/AgentLocation.h +0 -28
- package/deps/winpty/src/libwinpty/LibWinptyException.h +0 -54
- package/deps/winpty/src/libwinpty/WinptyInternal.h +0 -72
- package/deps/winpty/src/libwinpty/subdir.mk +0 -46
- package/deps/winpty/src/libwinpty/winpty.cc +0 -970
- package/deps/winpty/src/shared/AgentMsg.h +0 -38
- package/deps/winpty/src/shared/BackgroundDesktop.cc +0 -122
- package/deps/winpty/src/shared/BackgroundDesktop.h +0 -73
- package/deps/winpty/src/shared/Buffer.cc +0 -103
- package/deps/winpty/src/shared/Buffer.h +0 -102
- package/deps/winpty/src/shared/DebugClient.cc +0 -187
- package/deps/winpty/src/shared/DebugClient.h +0 -38
- package/deps/winpty/src/shared/GenRandom.cc +0 -138
- package/deps/winpty/src/shared/GenRandom.h +0 -55
- package/deps/winpty/src/shared/GetCommitHash.bat +0 -13
- package/deps/winpty/src/shared/Mutex.h +0 -54
- package/deps/winpty/src/shared/OsModule.h +0 -63
- package/deps/winpty/src/shared/OwnedHandle.cc +0 -36
- package/deps/winpty/src/shared/OwnedHandle.h +0 -45
- package/deps/winpty/src/shared/PrecompiledHeader.h +0 -43
- package/deps/winpty/src/shared/StringBuilder.h +0 -227
- package/deps/winpty/src/shared/StringBuilderTest.cc +0 -114
- package/deps/winpty/src/shared/StringUtil.cc +0 -55
- package/deps/winpty/src/shared/StringUtil.h +0 -80
- package/deps/winpty/src/shared/TimeMeasurement.h +0 -63
- package/deps/winpty/src/shared/UnixCtrlChars.h +0 -45
- package/deps/winpty/src/shared/UpdateGenVersion.bat +0 -20
- package/deps/winpty/src/shared/WindowsSecurity.cc +0 -460
- package/deps/winpty/src/shared/WindowsSecurity.h +0 -104
- package/deps/winpty/src/shared/WindowsVersion.cc +0 -252
- package/deps/winpty/src/shared/WindowsVersion.h +0 -29
- package/deps/winpty/src/shared/WinptyAssert.cc +0 -55
- package/deps/winpty/src/shared/WinptyAssert.h +0 -64
- package/deps/winpty/src/shared/WinptyException.cc +0 -57
- package/deps/winpty/src/shared/WinptyException.h +0 -43
- package/deps/winpty/src/shared/WinptyVersion.cc +0 -42
- package/deps/winpty/src/shared/WinptyVersion.h +0 -27
- package/deps/winpty/src/shared/winpty_snprintf.h +0 -99
- package/deps/winpty/src/subdir.mk +0 -5
- package/deps/winpty/src/tests/subdir.mk +0 -28
- package/deps/winpty/src/tests/trivial_test.cc +0 -158
- package/deps/winpty/src/unix-adapter/InputHandler.cc +0 -114
- package/deps/winpty/src/unix-adapter/InputHandler.h +0 -56
- package/deps/winpty/src/unix-adapter/OutputHandler.cc +0 -80
- package/deps/winpty/src/unix-adapter/OutputHandler.h +0 -53
- package/deps/winpty/src/unix-adapter/Util.cc +0 -86
- package/deps/winpty/src/unix-adapter/Util.h +0 -31
- package/deps/winpty/src/unix-adapter/WakeupFd.cc +0 -70
- package/deps/winpty/src/unix-adapter/WakeupFd.h +0 -42
- package/deps/winpty/src/unix-adapter/main.cc +0 -729
- package/deps/winpty/src/unix-adapter/subdir.mk +0 -41
- package/deps/winpty/src/winpty.gyp +0 -234
- package/deps/winpty/vcbuild.bat +0 -83
- package/lib/conpty_console_list_agent.js.map +0 -1
- package/lib/eventEmitter2.js.map +0 -1
- package/lib/eventEmitter2.test.js +0 -30
- package/lib/eventEmitter2.test.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/interfaces.js.map +0 -1
- package/lib/shared/conout.js.map +0 -1
- package/lib/terminal.js.map +0 -1
- package/lib/terminal.test.js +0 -139
- package/lib/terminal.test.js.map +0 -1
- package/lib/testUtils.test.js +0 -28
- package/lib/testUtils.test.js.map +0 -1
- package/lib/types.js.map +0 -1
- package/lib/unixTerminal.js.map +0 -1
- package/lib/unixTerminal.test.js +0 -351
- package/lib/unixTerminal.test.js.map +0 -1
- package/lib/utils.js.map +0 -1
- package/lib/windowsConoutConnection.js.map +0 -1
- package/lib/windowsPtyAgent.js.map +0 -1
- package/lib/windowsPtyAgent.test.js +0 -90
- package/lib/windowsPtyAgent.test.js.map +0 -1
- package/lib/windowsTerminal.js.map +0 -1
- package/lib/windowsTerminal.test.js +0 -219
- package/lib/windowsTerminal.test.js.map +0 -1
- package/lib/worker/conoutSocketWorker.js.map +0 -1
- package/prebuilds/win32-arm64/pty.node +0 -0
- package/prebuilds/win32-arm64/pty.pdb +0 -0
- package/prebuilds/win32-arm64/winpty-agent.exe +0 -0
- package/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
- package/prebuilds/win32-arm64/winpty.dll +0 -0
- package/prebuilds/win32-arm64/winpty.pdb +0 -0
- package/prebuilds/win32-x64/pty.node +0 -0
- package/prebuilds/win32-x64/pty.pdb +0 -0
- package/prebuilds/win32-x64/winpty-agent.exe +0 -0
- package/prebuilds/win32-x64/winpty-agent.pdb +0 -0
- package/prebuilds/win32-x64/winpty.dll +0 -0
- package/prebuilds/win32-x64/winpty.pdb +0 -0
- package/scripts/gen-compile-commands.js +0 -8
- package/scripts/increment-version.js +0 -54
- package/src/conpty_console_list_agent.ts +0 -15
- package/src/eventEmitter2.test.ts +0 -30
- package/src/eventEmitter2.ts +0 -48
- package/src/index.ts +0 -52
- package/src/interfaces.ts +0 -130
- package/src/native.d.ts +0 -54
- package/src/shared/conout.ts +0 -15
- package/src/terminal.test.ts +0 -119
- package/src/terminal.ts +0 -211
- package/src/testUtils.test.ts +0 -23
- package/src/tsconfig.json +0 -22
- package/src/types.ts +0 -15
- package/src/unixTerminal.test.ts +0 -367
- package/src/unixTerminal.ts +0 -388
- package/src/utils.ts +0 -29
- package/src/win/winpty.cc +0 -333
- package/src/windowsConoutConnection.ts +0 -82
- package/src/windowsPtyAgent.test.ts +0 -94
- package/src/windowsPtyAgent.ts +0 -321
- package/src/windowsTerminal.test.ts +0 -229
- package/src/windowsTerminal.ts +0 -203
- package/src/worker/conoutSocketWorker.ts +0 -22
package/src/unix/pty.cc
CHANGED
|
@@ -37,6 +37,8 @@
|
|
|
37
37
|
/* http://www.gnu.org/software/gnulib/manual/html_node/forkpty.html */
|
|
38
38
|
#if defined(__linux__)
|
|
39
39
|
#include <pty.h>
|
|
40
|
+
#include <dirent.h>
|
|
41
|
+
#include <sys/syscall.h>
|
|
40
42
|
#elif defined(__APPLE__)
|
|
41
43
|
#include <util.h>
|
|
42
44
|
#elif defined(__FreeBSD__)
|
|
@@ -110,6 +112,40 @@ struct ExitEvent {
|
|
|
110
112
|
int exit_code = 0, signal_code = 0;
|
|
111
113
|
};
|
|
112
114
|
|
|
115
|
+
#if defined(__linux__)
|
|
116
|
+
|
|
117
|
+
static int
|
|
118
|
+
SetCloseOnExec(int fd) {
|
|
119
|
+
int flags = fcntl(fd, F_GETFD, 0);
|
|
120
|
+
if (flags == -1)
|
|
121
|
+
return flags;
|
|
122
|
+
if (flags & FD_CLOEXEC)
|
|
123
|
+
return 0;
|
|
124
|
+
return fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Close all file descriptors >= 3 to prevent FD leakage to child processes.
|
|
129
|
+
* Uses close_range() syscall on Linux 5.9+, falls back to /proc/self/fd iteration.
|
|
130
|
+
*/
|
|
131
|
+
static void
|
|
132
|
+
pty_close_inherited_fds() {
|
|
133
|
+
// Try close_range() first (Linux 5.9+, glibc 2.34+)
|
|
134
|
+
#if defined(SYS_close_range) && defined(CLOSE_RANGE_CLOEXEC)
|
|
135
|
+
if (syscall(SYS_close_range, 3, ~0U, CLOSE_RANGE_CLOEXEC) == 0) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
#endif
|
|
139
|
+
|
|
140
|
+
int fd;
|
|
141
|
+
// Set the CLOEXEC flag on all open descriptors. Unconditionally try the first
|
|
142
|
+
// 16 file descriptors. After that, bail out after the first error.
|
|
143
|
+
for (fd = 3; ; fd++)
|
|
144
|
+
if (SetCloseOnExec(fd) && fd > 15)
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
#endif
|
|
148
|
+
|
|
113
149
|
void SetupExitCallback(Napi::Env env, Napi::Function cb, pid_t pid) {
|
|
114
150
|
std::thread *th = new std::thread;
|
|
115
151
|
// Don't use Napi::AsyncWorker which is limited by UV_THREADPOOL_SIZE.
|
|
@@ -243,7 +279,7 @@ pty_posix_spawn(char** argv, char** env,
|
|
|
243
279
|
const struct winsize *winp,
|
|
244
280
|
int* master,
|
|
245
281
|
pid_t* pid,
|
|
246
|
-
|
|
282
|
+
std::string* err);
|
|
247
283
|
#endif
|
|
248
284
|
|
|
249
285
|
struct DelBuf {
|
|
@@ -352,7 +388,7 @@ Napi::Value PtyFork(const Napi::CallbackInfo& info) {
|
|
|
352
388
|
std::string helper_path = info[9].As<Napi::String>();
|
|
353
389
|
|
|
354
390
|
pid_t pid;
|
|
355
|
-
int master;
|
|
391
|
+
int master = -1;
|
|
356
392
|
#if defined(__APPLE__)
|
|
357
393
|
int argc = argv_.Length();
|
|
358
394
|
int argl = argc + 4;
|
|
@@ -367,10 +403,13 @@ Napi::Value PtyFork(const Napi::CallbackInfo& info) {
|
|
|
367
403
|
argv[i + 3] = strdup(arg.c_str());
|
|
368
404
|
}
|
|
369
405
|
|
|
370
|
-
|
|
406
|
+
std::string err;
|
|
371
407
|
pty_posix_spawn(argv, env, term, &winp, &master, &pid, &err);
|
|
372
|
-
if (err
|
|
373
|
-
|
|
408
|
+
if (!err.empty()) {
|
|
409
|
+
if (master != -1) {
|
|
410
|
+
close(master);
|
|
411
|
+
}
|
|
412
|
+
throw Napi::Error::New(napiEnv, err);
|
|
374
413
|
}
|
|
375
414
|
if (pty_nonblock(master) == -1) {
|
|
376
415
|
throw Napi::Error::New(napiEnv, "Could not set master fd to nonblocking.");
|
|
@@ -433,6 +472,9 @@ Napi::Value PtyFork(const Napi::CallbackInfo& info) {
|
|
|
433
472
|
}
|
|
434
473
|
}
|
|
435
474
|
|
|
475
|
+
// Close inherited FDs to prevent leaking pty master FDs to child
|
|
476
|
+
pty_close_inherited_fds();
|
|
477
|
+
|
|
436
478
|
{
|
|
437
479
|
char **old = environ;
|
|
438
480
|
environ = env;
|
|
@@ -504,11 +546,13 @@ Napi::Value PtyResize(const Napi::CallbackInfo& info) {
|
|
|
504
546
|
Napi::Env env(info.Env());
|
|
505
547
|
Napi::HandleScope scope(env);
|
|
506
548
|
|
|
507
|
-
if (info.Length() !=
|
|
549
|
+
if (info.Length() != 5 ||
|
|
508
550
|
!info[0].IsNumber() ||
|
|
509
551
|
!info[1].IsNumber() ||
|
|
510
|
-
!info[2].IsNumber()
|
|
511
|
-
|
|
552
|
+
!info[2].IsNumber() ||
|
|
553
|
+
!info[3].IsNumber() ||
|
|
554
|
+
!info[4].IsNumber()) {
|
|
555
|
+
throw Napi::Error::New(env, "Usage: pty.resize(fd, cols, rows, xPixel, yPixel)");
|
|
512
556
|
}
|
|
513
557
|
|
|
514
558
|
int fd = info[0].As<Napi::Number>().Int32Value();
|
|
@@ -516,8 +560,8 @@ Napi::Value PtyResize(const Napi::CallbackInfo& info) {
|
|
|
516
560
|
struct winsize winp;
|
|
517
561
|
winp.ws_col = info[1].As<Napi::Number>().Int32Value();
|
|
518
562
|
winp.ws_row = info[2].As<Napi::Number>().Int32Value();
|
|
519
|
-
winp.ws_xpixel =
|
|
520
|
-
winp.ws_ypixel =
|
|
563
|
+
winp.ws_xpixel = info[3].As<Napi::Number>().Int32Value();
|
|
564
|
+
winp.ws_ypixel = info[4].As<Napi::Number>().Int32Value();
|
|
521
565
|
|
|
522
566
|
if (ioctl(fd, TIOCSWINSZ, &winp) == -1) {
|
|
523
567
|
switch (errno) {
|
|
@@ -684,15 +728,26 @@ pty_getproc(int fd, char *tty) {
|
|
|
684
728
|
#endif
|
|
685
729
|
|
|
686
730
|
#if defined(__APPLE__)
|
|
731
|
+
static std::string format_error(const char* func, int err_code) {
|
|
732
|
+
char buf[256];
|
|
733
|
+
snprintf(buf, sizeof(buf), "%s: %s", func, strerror(err_code));
|
|
734
|
+
return buf;
|
|
735
|
+
}
|
|
736
|
+
|
|
687
737
|
static void
|
|
688
738
|
pty_posix_spawn(char** argv, char** env,
|
|
689
739
|
const struct termios *termp,
|
|
690
740
|
const struct winsize *winp,
|
|
691
741
|
int* master,
|
|
692
742
|
pid_t* pid,
|
|
693
|
-
|
|
743
|
+
std::string* err) {
|
|
694
744
|
int low_fds[3];
|
|
695
745
|
size_t count = 0;
|
|
746
|
+
int res = 0;
|
|
747
|
+
int slave = -1;
|
|
748
|
+
char slave_pty_name[128];
|
|
749
|
+
int spawn_err;
|
|
750
|
+
sigset_t signal_set;
|
|
696
751
|
|
|
697
752
|
for (; count < 3; count++) {
|
|
698
753
|
low_fds[count] = posix_openpt(O_RDWR);
|
|
@@ -704,82 +759,103 @@ pty_posix_spawn(char** argv, char** env,
|
|
|
704
759
|
POSIX_SPAWN_SETSIGDEF |
|
|
705
760
|
POSIX_SPAWN_SETSIGMASK |
|
|
706
761
|
POSIX_SPAWN_SETSID;
|
|
762
|
+
|
|
763
|
+
posix_spawn_file_actions_t acts;
|
|
764
|
+
posix_spawn_file_actions_init(&acts);
|
|
765
|
+
|
|
766
|
+
posix_spawnattr_t attrs;
|
|
767
|
+
posix_spawnattr_init(&attrs);
|
|
768
|
+
|
|
707
769
|
*master = posix_openpt(O_RDWR);
|
|
708
770
|
if (*master == -1) {
|
|
709
|
-
|
|
771
|
+
*err = format_error("posix_openpt failed", errno);
|
|
772
|
+
goto done;
|
|
710
773
|
}
|
|
711
774
|
|
|
712
|
-
|
|
775
|
+
res = grantpt(*master);
|
|
713
776
|
if (res == -1) {
|
|
714
|
-
|
|
777
|
+
*err = format_error("grantpt failed", errno);
|
|
778
|
+
goto done;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
res = unlockpt(*master);
|
|
782
|
+
if (res == -1) {
|
|
783
|
+
*err = format_error("unlockpt failed", errno);
|
|
784
|
+
goto done;
|
|
715
785
|
}
|
|
716
786
|
|
|
717
787
|
// Use TIOCPTYGNAME instead of ptsname() to avoid threading problems.
|
|
718
|
-
int slave;
|
|
719
|
-
char slave_pty_name[128];
|
|
720
788
|
res = ioctl(*master, TIOCPTYGNAME, slave_pty_name);
|
|
721
789
|
if (res == -1) {
|
|
722
|
-
|
|
790
|
+
*err = format_error("ioctl(TIOCPTYGNAME) failed", errno);
|
|
791
|
+
goto done;
|
|
723
792
|
}
|
|
724
793
|
|
|
725
794
|
slave = open(slave_pty_name, O_RDWR | O_NOCTTY);
|
|
726
795
|
if (slave == -1) {
|
|
727
|
-
|
|
796
|
+
*err = format_error("open slave pty failed", errno);
|
|
797
|
+
goto done;
|
|
728
798
|
}
|
|
729
799
|
|
|
730
800
|
if (termp) {
|
|
731
801
|
res = tcsetattr(slave, TCSANOW, termp);
|
|
732
802
|
if (res == -1) {
|
|
733
|
-
|
|
803
|
+
*err = format_error("tcsetattr failed", errno);
|
|
804
|
+
goto done;
|
|
734
805
|
};
|
|
735
806
|
}
|
|
736
807
|
|
|
737
808
|
if (winp) {
|
|
738
809
|
res = ioctl(slave, TIOCSWINSZ, winp);
|
|
739
810
|
if (res == -1) {
|
|
740
|
-
|
|
811
|
+
*err = format_error("ioctl(TIOCSWINSZ) failed", errno);
|
|
812
|
+
goto done;
|
|
741
813
|
}
|
|
742
814
|
}
|
|
743
815
|
|
|
744
|
-
posix_spawn_file_actions_t acts;
|
|
745
|
-
posix_spawn_file_actions_init(&acts);
|
|
746
816
|
posix_spawn_file_actions_adddup2(&acts, slave, STDIN_FILENO);
|
|
747
817
|
posix_spawn_file_actions_adddup2(&acts, slave, STDOUT_FILENO);
|
|
748
818
|
posix_spawn_file_actions_adddup2(&acts, slave, STDERR_FILENO);
|
|
749
819
|
posix_spawn_file_actions_addclose(&acts, slave);
|
|
750
820
|
posix_spawn_file_actions_addclose(&acts, *master);
|
|
751
821
|
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
if (*err != 0) {
|
|
822
|
+
spawn_err = posix_spawnattr_setflags(&attrs, flags);
|
|
823
|
+
if (spawn_err != 0) {
|
|
824
|
+
*err = format_error("posix_spawnattr_setflags failed", spawn_err);
|
|
756
825
|
goto done;
|
|
757
826
|
}
|
|
758
827
|
|
|
759
|
-
sigset_t signal_set;
|
|
760
828
|
/* Reset all signal the child to their default behavior */
|
|
761
829
|
sigfillset(&signal_set);
|
|
762
|
-
|
|
763
|
-
if (
|
|
830
|
+
spawn_err = posix_spawnattr_setsigdefault(&attrs, &signal_set);
|
|
831
|
+
if (spawn_err != 0) {
|
|
832
|
+
*err = format_error("posix_spawnattr_setsigdefault failed", spawn_err);
|
|
764
833
|
goto done;
|
|
765
834
|
}
|
|
766
835
|
|
|
767
836
|
/* Reset the signal mask for all signals */
|
|
768
837
|
sigemptyset(&signal_set);
|
|
769
|
-
|
|
770
|
-
if (
|
|
838
|
+
spawn_err = posix_spawnattr_setsigmask(&attrs, &signal_set);
|
|
839
|
+
if (spawn_err != 0) {
|
|
840
|
+
*err = format_error("posix_spawnattr_setsigmask failed", spawn_err);
|
|
771
841
|
goto done;
|
|
772
842
|
}
|
|
773
843
|
|
|
774
844
|
do
|
|
775
|
-
|
|
776
|
-
while (
|
|
845
|
+
spawn_err = posix_spawn(pid, argv[0], &acts, &attrs, argv, env);
|
|
846
|
+
while (spawn_err == EINTR);
|
|
847
|
+
if (spawn_err != 0) {
|
|
848
|
+
*err = format_error("posix_spawn failed", spawn_err);
|
|
849
|
+
}
|
|
777
850
|
done:
|
|
778
851
|
posix_spawn_file_actions_destroy(&acts);
|
|
779
852
|
posix_spawnattr_destroy(&attrs);
|
|
853
|
+
if (slave != -1) {
|
|
854
|
+
close(slave);
|
|
855
|
+
}
|
|
780
856
|
|
|
781
|
-
for (
|
|
782
|
-
close(low_fds[
|
|
857
|
+
for (size_t i = 0; i <= count; i++) {
|
|
858
|
+
close(low_fds[i]);
|
|
783
859
|
}
|
|
784
860
|
}
|
|
785
861
|
#endif
|
package/src/win/conpty.cc
CHANGED
|
@@ -230,7 +230,6 @@ HRESULT CreateNamedPipesAndPseudoConsole(const Napi::CallbackInfo& info,
|
|
|
230
230
|
{
|
|
231
231
|
// Failed to find CreatePseudoConsole in kernel32. This is likely because
|
|
232
232
|
// the user is not running a build of Windows that supports that API.
|
|
233
|
-
// We should fall back to winpty in this case.
|
|
234
233
|
return HRESULT_FROM_WIN32(GetLastError());
|
|
235
234
|
}
|
|
236
235
|
} else {
|
|
@@ -238,7 +237,7 @@ HRESULT CreateNamedPipesAndPseudoConsole(const Napi::CallbackInfo& info,
|
|
|
238
237
|
}
|
|
239
238
|
|
|
240
239
|
// Failed to find kernel32. This is realy unlikely - honestly no idea how
|
|
241
|
-
// this is even possible to hit.
|
|
240
|
+
// this is even possible to hit.
|
|
242
241
|
return HRESULT_FROM_WIN32(GetLastError());
|
|
243
242
|
}
|
|
244
243
|
|
package/typings/node-pty.d.ts
CHANGED
|
@@ -86,13 +86,14 @@ declare module 'node-pty' {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
export interface IWindowsPtyForkOptions extends IBasePtyForkOptions {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Whether to use the ConPTY system on Windows. When this is not set, ConPTY will be used when
|
|
91
|
+
* the Windows build number is >= 18309 (instead of winpty). Note that ConPTY is available from
|
|
92
|
+
* build 17134 but is too unstable to enable by default.
|
|
93
|
+
*
|
|
94
|
+
* @deprecated This option is ignored and will be removed in a future version.
|
|
95
|
+
* https://github.com/microsoft/node-pty/issues/871
|
|
96
|
+
*/
|
|
96
97
|
useConpty?: boolean;
|
|
97
98
|
|
|
98
99
|
/**
|
|
@@ -111,7 +112,7 @@ declare module 'node-pty' {
|
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
/**
|
|
114
|
-
* An interface representing a pseudoterminal
|
|
115
|
+
* An interface representing a pseudoterminal.
|
|
115
116
|
*/
|
|
116
117
|
export interface IPty {
|
|
117
118
|
/**
|
|
@@ -158,8 +159,11 @@ declare module 'node-pty' {
|
|
|
158
159
|
* Resizes the dimensions of the pty.
|
|
159
160
|
* @param columns The number of columns to use.
|
|
160
161
|
* @param rows The number of rows to use.
|
|
162
|
+
* @param pixelSize Optional pixel dimensions of the pty. On Unix, this sets the `ws_xpixel`
|
|
163
|
+
* and `ws_ypixel` fields of the `winsize` struct. Applications running in the pty can read
|
|
164
|
+
* these values via the `TIOCGWINSZ` ioctl. This parameter is ignored on Windows.
|
|
161
165
|
*/
|
|
162
|
-
resize(columns: number, rows: number): void;
|
|
166
|
+
resize(columns: number, rows: number, pixelSize?: { width: number, height: number }): void;
|
|
163
167
|
|
|
164
168
|
/**
|
|
165
169
|
* Clears the pty's internal representation of its buffer. This is a no-op
|
package/deps/.editorconfig
DELETED
package/deps/winpty/.drone.yml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Build configure for https://www.tea-ci.org (fork of Drone CI with Msys2 support)
|
|
2
|
-
build:
|
|
3
|
-
image: teaci/msys$$arch
|
|
4
|
-
pull: true
|
|
5
|
-
shell: msys$$arch
|
|
6
|
-
commands:
|
|
7
|
-
- pacman -S --needed --noconfirm --noprogressbar mingw-w64-cross-gcc mingw-w64-cross-crt-git
|
|
8
|
-
- ./configure
|
|
9
|
-
- make
|
|
10
|
-
- make tests
|
|
11
|
-
- build/trivial_test.exe
|
|
12
|
-
- mintty --log - --exec build/winpty.exe cmd /c ver | grep Windows
|
|
13
|
-
|
|
14
|
-
matrix:
|
|
15
|
-
arch:
|
|
16
|
-
- 64
|
|
17
|
-
- 32
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
* text=auto
|
|
2
|
-
*.bat text eol=crlf
|
|
3
|
-
*.c text
|
|
4
|
-
*.cc text
|
|
5
|
-
*.gyp text
|
|
6
|
-
*.gypi text
|
|
7
|
-
*.h text
|
|
8
|
-
*.ps1 text eol=crlf
|
|
9
|
-
*.rst text
|
|
10
|
-
*.sh text
|
|
11
|
-
*.txt text
|
|
12
|
-
.gitignore text
|
|
13
|
-
.gitattributes text
|
|
14
|
-
Makefile text
|
|
15
|
-
configure text
|
|
16
|
-
|
|
17
|
-
*.sh eol=lf
|
|
18
|
-
configure eol=lf
|
|
19
|
-
VERSION.txt eol=lf
|
package/deps/winpty/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2011-2016 Ryan Prichard
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to
|
|
7
|
-
deal in the Software without restriction, including without limitation the
|
|
8
|
-
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
9
|
-
sell copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
20
|
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
21
|
-
IN THE SOFTWARE.
|
package/deps/winpty/Makefile
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2011-2015 Ryan Prichard
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
# of this software and associated documentation files (the "Software"), to
|
|
5
|
-
# deal in the Software without restriction, including without limitation the
|
|
6
|
-
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
7
|
-
# sell copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
# furnished to do so, subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in
|
|
11
|
-
# all copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
18
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
19
|
-
# IN THE SOFTWARE.
|
|
20
|
-
|
|
21
|
-
# Use make -n to see the actual command-lines make would run.
|
|
22
|
-
|
|
23
|
-
# The default "make install" prefix is /usr/local. Pass PREFIX=<path> on the
|
|
24
|
-
# command-line to override the default.
|
|
25
|
-
|
|
26
|
-
.SECONDEXPANSION :
|
|
27
|
-
|
|
28
|
-
.PHONY : default
|
|
29
|
-
default : all
|
|
30
|
-
|
|
31
|
-
PREFIX := /usr/local
|
|
32
|
-
UNIX_ADAPTER_EXE := winpty.exe
|
|
33
|
-
MINGW_ENABLE_CXX11_FLAG := -std=c++11
|
|
34
|
-
USE_PCH := 1
|
|
35
|
-
|
|
36
|
-
COMMON_CXXFLAGS :=
|
|
37
|
-
UNIX_CXXFLAGS :=
|
|
38
|
-
MINGW_CXXFLAGS :=
|
|
39
|
-
MINGW_LDFLAGS :=
|
|
40
|
-
UNIX_LDFLAGS :=
|
|
41
|
-
|
|
42
|
-
# Include config.mk but complain if it hasn't been created yet.
|
|
43
|
-
ifeq "$(wildcard config.mk)" ""
|
|
44
|
-
$(error config.mk does not exist. Please run ./configure)
|
|
45
|
-
endif
|
|
46
|
-
include config.mk
|
|
47
|
-
|
|
48
|
-
COMMON_CXXFLAGS += \
|
|
49
|
-
-MMD -Wall \
|
|
50
|
-
-DUNICODE \
|
|
51
|
-
-D_UNICODE \
|
|
52
|
-
-D_WIN32_WINNT=0x0501 \
|
|
53
|
-
-Ibuild/gen
|
|
54
|
-
|
|
55
|
-
UNIX_CXXFLAGS += \
|
|
56
|
-
$(COMMON_CXXFLAGS)
|
|
57
|
-
|
|
58
|
-
MINGW_CXXFLAGS += \
|
|
59
|
-
$(COMMON_CXXFLAGS) \
|
|
60
|
-
-O2 \
|
|
61
|
-
$(MINGW_ENABLE_CXX11_FLAG)
|
|
62
|
-
|
|
63
|
-
MINGW_LDFLAGS += -static -static-libgcc -static-libstdc++
|
|
64
|
-
UNIX_LDFLAGS += $(UNIX_LDFLAGS_STATIC)
|
|
65
|
-
|
|
66
|
-
ifeq "$(USE_PCH)" "1"
|
|
67
|
-
MINGW_CXXFLAGS += -include build/mingw/PrecompiledHeader.h
|
|
68
|
-
PCH_DEP := build/mingw/PrecompiledHeader.h.gch
|
|
69
|
-
else
|
|
70
|
-
PCH_DEP :=
|
|
71
|
-
endif
|
|
72
|
-
|
|
73
|
-
build/gen/GenVersion.h : VERSION.txt $(COMMIT_HASH_DEP) | $$(@D)/.mkdir
|
|
74
|
-
$(info Updating build/gen/GenVersion.h)
|
|
75
|
-
@echo "const char GenVersion_Version[] = \"$(shell cat VERSION.txt | tr -d '\r\n')\";" > build/gen/GenVersion.h
|
|
76
|
-
@echo "const char GenVersion_Commit[] = \"$(COMMIT_HASH)\";" >> build/gen/GenVersion.h
|
|
77
|
-
|
|
78
|
-
build/mingw/PrecompiledHeader.h : src/shared/PrecompiledHeader.h | $$(@D)/.mkdir
|
|
79
|
-
$(info Copying $< to $@)
|
|
80
|
-
@cp $< $@
|
|
81
|
-
|
|
82
|
-
build/mingw/PrecompiledHeader.h.gch : build/mingw/PrecompiledHeader.h | $$(@D)/.mkdir
|
|
83
|
-
$(info Compiling $<)
|
|
84
|
-
@$(MINGW_CXX) $(MINGW_CXXFLAGS) -c -o $@ $<
|
|
85
|
-
|
|
86
|
-
-include build/mingw/PrecompiledHeader.h.d
|
|
87
|
-
|
|
88
|
-
define def_unix_target
|
|
89
|
-
build/$1/%.o : src/%.cc | $$$$(@D)/.mkdir
|
|
90
|
-
$$(info Compiling $$<)
|
|
91
|
-
@$$(UNIX_CXX) $$(UNIX_CXXFLAGS) $2 -I src/include -c -o $$@ $$<
|
|
92
|
-
endef
|
|
93
|
-
|
|
94
|
-
define def_mingw_target
|
|
95
|
-
build/$1/%.o : src/%.cc $$(PCH_DEP) | $$$$(@D)/.mkdir
|
|
96
|
-
$$(info Compiling $$<)
|
|
97
|
-
@$$(MINGW_CXX) $$(MINGW_CXXFLAGS) $2 -I src/include -c -o $$@ $$<
|
|
98
|
-
endef
|
|
99
|
-
|
|
100
|
-
include src/subdir.mk
|
|
101
|
-
|
|
102
|
-
.PHONY : all
|
|
103
|
-
all : $(ALL_TARGETS)
|
|
104
|
-
|
|
105
|
-
.PHONY : tests
|
|
106
|
-
tests : $(TEST_PROGRAMS)
|
|
107
|
-
|
|
108
|
-
.PHONY : install-bin
|
|
109
|
-
install-bin : all
|
|
110
|
-
mkdir -p $(PREFIX)/bin
|
|
111
|
-
install -m 755 -p -s build/$(UNIX_ADAPTER_EXE) $(PREFIX)/bin
|
|
112
|
-
install -m 755 -p -s build/winpty.dll $(PREFIX)/bin
|
|
113
|
-
install -m 755 -p -s build/winpty-agent.exe $(PREFIX)/bin
|
|
114
|
-
|
|
115
|
-
.PHONY : install-debugserver
|
|
116
|
-
install-debugserver : all
|
|
117
|
-
mkdir -p $(PREFIX)/bin
|
|
118
|
-
install -m 755 -p -s build/winpty-debugserver.exe $(PREFIX)/bin
|
|
119
|
-
|
|
120
|
-
.PHONY : install-lib
|
|
121
|
-
install-lib : all
|
|
122
|
-
mkdir -p $(PREFIX)/lib
|
|
123
|
-
install -m 644 -p build/winpty.lib $(PREFIX)/lib
|
|
124
|
-
|
|
125
|
-
.PHONY : install-doc
|
|
126
|
-
install-doc :
|
|
127
|
-
mkdir -p $(PREFIX)/share/doc/winpty
|
|
128
|
-
install -m 644 -p LICENSE $(PREFIX)/share/doc/winpty
|
|
129
|
-
install -m 644 -p README.md $(PREFIX)/share/doc/winpty
|
|
130
|
-
install -m 644 -p RELEASES.md $(PREFIX)/share/doc/winpty
|
|
131
|
-
|
|
132
|
-
.PHONY : install-include
|
|
133
|
-
install-include :
|
|
134
|
-
mkdir -p $(PREFIX)/include/winpty
|
|
135
|
-
install -m 644 -p src/include/winpty.h $(PREFIX)/include/winpty
|
|
136
|
-
install -m 644 -p src/include/winpty_constants.h $(PREFIX)/include/winpty
|
|
137
|
-
|
|
138
|
-
.PHONY : install
|
|
139
|
-
install : \
|
|
140
|
-
install-bin \
|
|
141
|
-
install-debugserver \
|
|
142
|
-
install-lib \
|
|
143
|
-
install-doc \
|
|
144
|
-
install-include
|
|
145
|
-
|
|
146
|
-
.PHONY : clean
|
|
147
|
-
clean :
|
|
148
|
-
rm -fr build
|
|
149
|
-
|
|
150
|
-
.PHONY : clean-msvc
|
|
151
|
-
clean-msvc :
|
|
152
|
-
rm -fr src/Default src/Release src/.vs src/gen
|
|
153
|
-
rm -f src/*.vcxproj src/*.vcxproj.filters src/*.sln src/*.sdf
|
|
154
|
-
|
|
155
|
-
.PHONY : distclean
|
|
156
|
-
distclean : clean
|
|
157
|
-
rm -f config.mk
|
|
158
|
-
|
|
159
|
-
.PRECIOUS : %.mkdir
|
|
160
|
-
%.mkdir :
|
|
161
|
-
$(info Creating directory $(dir $@))
|
|
162
|
-
@mkdir -p $(dir $@)
|
|
163
|
-
@touch $@
|
|
164
|
-
|
|
165
|
-
src/%.h :
|
|
166
|
-
@echo "Missing header file $@ (stale dependency file?)"
|