node-pty 1.1.0 → 1.2.0-beta.10

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.
Files changed (264) hide show
  1. package/README.md +3 -5
  2. package/binding.gyp +76 -37
  3. package/lib/unixTerminal.js +6 -3
  4. package/lib/utils.js +1 -1
  5. package/lib/windowsPtyAgent.js +32 -95
  6. package/lib/windowsTerminal.js +2 -2
  7. package/package.json +6 -5
  8. package/prebuilds/darwin-arm64/pty.node +0 -0
  9. package/prebuilds/darwin-arm64/spawn-helper +0 -0
  10. package/prebuilds/darwin-x64/pty.node +0 -0
  11. package/prebuilds/darwin-x64/spawn-helper +0 -0
  12. package/prebuilds/linux-arm64/pty.node +0 -0
  13. package/prebuilds/linux-x64/pty.node +0 -0
  14. package/prebuilds/win32-arm64/conpty.node +0 -0
  15. package/prebuilds/win32-arm64/conpty.pdb +0 -0
  16. package/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  17. package/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  18. package/prebuilds/win32-x64/conpty.node +0 -0
  19. package/prebuilds/win32-x64/conpty.pdb +0 -0
  20. package/prebuilds/win32-x64/conpty_console_list.node +0 -0
  21. package/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  22. package/scripts/post-install.js +1 -5
  23. package/src/unix/pty.cc +111 -35
  24. package/src/win/conpty.cc +1 -2
  25. package/typings/node-pty.d.ts +13 -9
  26. package/deps/.editorconfig +0 -2
  27. package/deps/winpty/.drone.yml +0 -17
  28. package/deps/winpty/.gitattributes +0 -19
  29. package/deps/winpty/LICENSE +0 -21
  30. package/deps/winpty/Makefile +0 -166
  31. package/deps/winpty/README.md +0 -151
  32. package/deps/winpty/RELEASES.md +0 -280
  33. package/deps/winpty/VERSION.txt +0 -1
  34. package/deps/winpty/configure +0 -167
  35. package/deps/winpty/misc/BufferResizeTests.cc +0 -90
  36. package/deps/winpty/misc/ChangeScreenBuffer.cc +0 -53
  37. package/deps/winpty/misc/ClearConsole.cc +0 -72
  38. package/deps/winpty/misc/ConinMode.cc +0 -117
  39. package/deps/winpty/misc/ConinMode.ps1 +0 -116
  40. package/deps/winpty/misc/ConoutMode.cc +0 -113
  41. package/deps/winpty/misc/DebugClient.py +0 -42
  42. package/deps/winpty/misc/DebugServer.py +0 -63
  43. package/deps/winpty/misc/DumpLines.py +0 -5
  44. package/deps/winpty/misc/EnableExtendedFlags.txt +0 -46
  45. package/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +0 -528
  46. package/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +0 -633
  47. package/deps/winpty/misc/Font-Report-June2016/CP932.txt +0 -630
  48. package/deps/winpty/misc/Font-Report-June2016/CP936.txt +0 -630
  49. package/deps/winpty/misc/Font-Report-June2016/CP949.txt +0 -630
  50. package/deps/winpty/misc/Font-Report-June2016/CP950.txt +0 -630
  51. package/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +0 -16
  52. package/deps/winpty/misc/Font-Report-June2016/Results.txt +0 -4
  53. package/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +0 -144
  54. package/deps/winpty/misc/FontSurvey.cc +0 -100
  55. package/deps/winpty/misc/FormatChar.h +0 -21
  56. package/deps/winpty/misc/FreezePerfTest.cc +0 -62
  57. package/deps/winpty/misc/GetCh.cc +0 -20
  58. package/deps/winpty/misc/GetConsolePos.cc +0 -41
  59. package/deps/winpty/misc/GetFont.cc +0 -261
  60. package/deps/winpty/misc/IdentifyConsoleWindow.ps1 +0 -51
  61. package/deps/winpty/misc/IsNewConsole.cc +0 -87
  62. package/deps/winpty/misc/MouseInputNotes.txt +0 -90
  63. package/deps/winpty/misc/MoveConsoleWindow.cc +0 -34
  64. package/deps/winpty/misc/Notes.txt +0 -219
  65. package/deps/winpty/misc/OSVersion.cc +0 -27
  66. package/deps/winpty/misc/ScreenBufferFreezeInactive.cc +0 -101
  67. package/deps/winpty/misc/ScreenBufferTest.cc +0 -671
  68. package/deps/winpty/misc/ScreenBufferTest2.cc +0 -151
  69. package/deps/winpty/misc/SelectAllTest.cc +0 -45
  70. package/deps/winpty/misc/SetBufferSize.cc +0 -32
  71. package/deps/winpty/misc/SetCursorPos.cc +0 -10
  72. package/deps/winpty/misc/SetFont.cc +0 -145
  73. package/deps/winpty/misc/SetWindowRect.cc +0 -36
  74. package/deps/winpty/misc/ShowArgv.cc +0 -12
  75. package/deps/winpty/misc/ShowConsoleInput.cc +0 -40
  76. package/deps/winpty/misc/Spew.py +0 -5
  77. package/deps/winpty/misc/TestUtil.cc +0 -172
  78. package/deps/winpty/misc/UnicodeDoubleWidthTest.cc +0 -102
  79. package/deps/winpty/misc/UnicodeWideTest1.cc +0 -246
  80. package/deps/winpty/misc/UnicodeWideTest2.cc +0 -130
  81. package/deps/winpty/misc/UnixEcho.cc +0 -89
  82. package/deps/winpty/misc/Utf16Echo.cc +0 -46
  83. package/deps/winpty/misc/VeryLargeRead.cc +0 -122
  84. package/deps/winpty/misc/VkEscapeTest.cc +0 -56
  85. package/deps/winpty/misc/Win10ResizeWhileFrozen.cc +0 -52
  86. package/deps/winpty/misc/Win10WrapTest1.cc +0 -57
  87. package/deps/winpty/misc/Win10WrapTest2.cc +0 -30
  88. package/deps/winpty/misc/Win32Echo1.cc +0 -26
  89. package/deps/winpty/misc/Win32Echo2.cc +0 -19
  90. package/deps/winpty/misc/Win32Test1.cc +0 -46
  91. package/deps/winpty/misc/Win32Test2.cc +0 -70
  92. package/deps/winpty/misc/Win32Test3.cc +0 -78
  93. package/deps/winpty/misc/Win32Write1.cc +0 -44
  94. package/deps/winpty/misc/WindowsBugCrashReader.cc +0 -27
  95. package/deps/winpty/misc/WriteConsole.cc +0 -106
  96. package/deps/winpty/misc/build32.sh +0 -9
  97. package/deps/winpty/misc/build64.sh +0 -9
  98. package/deps/winpty/misc/color-test.sh +0 -212
  99. package/deps/winpty/misc/font-notes.txt +0 -300
  100. package/deps/winpty/misc/winbug-15048.cc +0 -201
  101. package/deps/winpty/ship/build-pty4j-libpty.bat +0 -36
  102. package/deps/winpty/ship/common_ship.py +0 -53
  103. package/deps/winpty/ship/make_msvc_package.py +0 -165
  104. package/deps/winpty/ship/ship.py +0 -108
  105. package/deps/winpty/src/agent/Agent.cc +0 -613
  106. package/deps/winpty/src/agent/Agent.h +0 -103
  107. package/deps/winpty/src/agent/AgentCreateDesktop.cc +0 -84
  108. package/deps/winpty/src/agent/AgentCreateDesktop.h +0 -28
  109. package/deps/winpty/src/agent/ConsoleFont.cc +0 -632
  110. package/deps/winpty/src/agent/ConsoleFont.h +0 -28
  111. package/deps/winpty/src/agent/ConsoleInput.cc +0 -852
  112. package/deps/winpty/src/agent/ConsoleInput.h +0 -109
  113. package/deps/winpty/src/agent/ConsoleInputReencoding.cc +0 -121
  114. package/deps/winpty/src/agent/ConsoleInputReencoding.h +0 -36
  115. package/deps/winpty/src/agent/ConsoleLine.cc +0 -152
  116. package/deps/winpty/src/agent/ConsoleLine.h +0 -41
  117. package/deps/winpty/src/agent/Coord.h +0 -87
  118. package/deps/winpty/src/agent/DebugShowInput.cc +0 -239
  119. package/deps/winpty/src/agent/DebugShowInput.h +0 -32
  120. package/deps/winpty/src/agent/DefaultInputMap.cc +0 -422
  121. package/deps/winpty/src/agent/DefaultInputMap.h +0 -28
  122. package/deps/winpty/src/agent/DsrSender.h +0 -30
  123. package/deps/winpty/src/agent/EventLoop.cc +0 -99
  124. package/deps/winpty/src/agent/EventLoop.h +0 -47
  125. package/deps/winpty/src/agent/InputMap.cc +0 -246
  126. package/deps/winpty/src/agent/InputMap.h +0 -114
  127. package/deps/winpty/src/agent/LargeConsoleRead.cc +0 -71
  128. package/deps/winpty/src/agent/LargeConsoleRead.h +0 -68
  129. package/deps/winpty/src/agent/NamedPipe.cc +0 -378
  130. package/deps/winpty/src/agent/NamedPipe.h +0 -125
  131. package/deps/winpty/src/agent/Scraper.cc +0 -699
  132. package/deps/winpty/src/agent/Scraper.h +0 -103
  133. package/deps/winpty/src/agent/SimplePool.h +0 -75
  134. package/deps/winpty/src/agent/SmallRect.h +0 -143
  135. package/deps/winpty/src/agent/Terminal.cc +0 -535
  136. package/deps/winpty/src/agent/Terminal.h +0 -69
  137. package/deps/winpty/src/agent/UnicodeEncoding.h +0 -157
  138. package/deps/winpty/src/agent/UnicodeEncodingTest.cc +0 -189
  139. package/deps/winpty/src/agent/Win32Console.cc +0 -107
  140. package/deps/winpty/src/agent/Win32Console.h +0 -67
  141. package/deps/winpty/src/agent/Win32ConsoleBuffer.cc +0 -193
  142. package/deps/winpty/src/agent/Win32ConsoleBuffer.h +0 -99
  143. package/deps/winpty/src/agent/main.cc +0 -114
  144. package/deps/winpty/src/agent/subdir.mk +0 -61
  145. package/deps/winpty/src/configurations.gypi +0 -60
  146. package/deps/winpty/src/debugserver/DebugServer.cc +0 -117
  147. package/deps/winpty/src/debugserver/subdir.mk +0 -41
  148. package/deps/winpty/src/include/winpty.h +0 -242
  149. package/deps/winpty/src/include/winpty_constants.h +0 -131
  150. package/deps/winpty/src/libwinpty/AgentLocation.cc +0 -75
  151. package/deps/winpty/src/libwinpty/AgentLocation.h +0 -28
  152. package/deps/winpty/src/libwinpty/LibWinptyException.h +0 -54
  153. package/deps/winpty/src/libwinpty/WinptyInternal.h +0 -72
  154. package/deps/winpty/src/libwinpty/subdir.mk +0 -46
  155. package/deps/winpty/src/libwinpty/winpty.cc +0 -970
  156. package/deps/winpty/src/shared/AgentMsg.h +0 -38
  157. package/deps/winpty/src/shared/BackgroundDesktop.cc +0 -122
  158. package/deps/winpty/src/shared/BackgroundDesktop.h +0 -73
  159. package/deps/winpty/src/shared/Buffer.cc +0 -103
  160. package/deps/winpty/src/shared/Buffer.h +0 -102
  161. package/deps/winpty/src/shared/DebugClient.cc +0 -187
  162. package/deps/winpty/src/shared/DebugClient.h +0 -38
  163. package/deps/winpty/src/shared/GenRandom.cc +0 -138
  164. package/deps/winpty/src/shared/GenRandom.h +0 -55
  165. package/deps/winpty/src/shared/GetCommitHash.bat +0 -13
  166. package/deps/winpty/src/shared/Mutex.h +0 -54
  167. package/deps/winpty/src/shared/OsModule.h +0 -63
  168. package/deps/winpty/src/shared/OwnedHandle.cc +0 -36
  169. package/deps/winpty/src/shared/OwnedHandle.h +0 -45
  170. package/deps/winpty/src/shared/PrecompiledHeader.h +0 -43
  171. package/deps/winpty/src/shared/StringBuilder.h +0 -227
  172. package/deps/winpty/src/shared/StringBuilderTest.cc +0 -114
  173. package/deps/winpty/src/shared/StringUtil.cc +0 -55
  174. package/deps/winpty/src/shared/StringUtil.h +0 -80
  175. package/deps/winpty/src/shared/TimeMeasurement.h +0 -63
  176. package/deps/winpty/src/shared/UnixCtrlChars.h +0 -45
  177. package/deps/winpty/src/shared/UpdateGenVersion.bat +0 -20
  178. package/deps/winpty/src/shared/WindowsSecurity.cc +0 -460
  179. package/deps/winpty/src/shared/WindowsSecurity.h +0 -104
  180. package/deps/winpty/src/shared/WindowsVersion.cc +0 -252
  181. package/deps/winpty/src/shared/WindowsVersion.h +0 -29
  182. package/deps/winpty/src/shared/WinptyAssert.cc +0 -55
  183. package/deps/winpty/src/shared/WinptyAssert.h +0 -64
  184. package/deps/winpty/src/shared/WinptyException.cc +0 -57
  185. package/deps/winpty/src/shared/WinptyException.h +0 -43
  186. package/deps/winpty/src/shared/WinptyVersion.cc +0 -42
  187. package/deps/winpty/src/shared/WinptyVersion.h +0 -27
  188. package/deps/winpty/src/shared/winpty_snprintf.h +0 -99
  189. package/deps/winpty/src/subdir.mk +0 -5
  190. package/deps/winpty/src/tests/subdir.mk +0 -28
  191. package/deps/winpty/src/tests/trivial_test.cc +0 -158
  192. package/deps/winpty/src/unix-adapter/InputHandler.cc +0 -114
  193. package/deps/winpty/src/unix-adapter/InputHandler.h +0 -56
  194. package/deps/winpty/src/unix-adapter/OutputHandler.cc +0 -80
  195. package/deps/winpty/src/unix-adapter/OutputHandler.h +0 -53
  196. package/deps/winpty/src/unix-adapter/Util.cc +0 -86
  197. package/deps/winpty/src/unix-adapter/Util.h +0 -31
  198. package/deps/winpty/src/unix-adapter/WakeupFd.cc +0 -70
  199. package/deps/winpty/src/unix-adapter/WakeupFd.h +0 -42
  200. package/deps/winpty/src/unix-adapter/main.cc +0 -729
  201. package/deps/winpty/src/unix-adapter/subdir.mk +0 -41
  202. package/deps/winpty/src/winpty.gyp +0 -234
  203. package/deps/winpty/vcbuild.bat +0 -83
  204. package/lib/conpty_console_list_agent.js.map +0 -1
  205. package/lib/eventEmitter2.js.map +0 -1
  206. package/lib/eventEmitter2.test.js +0 -30
  207. package/lib/eventEmitter2.test.js.map +0 -1
  208. package/lib/index.js.map +0 -1
  209. package/lib/interfaces.js.map +0 -1
  210. package/lib/shared/conout.js.map +0 -1
  211. package/lib/terminal.js.map +0 -1
  212. package/lib/terminal.test.js +0 -139
  213. package/lib/terminal.test.js.map +0 -1
  214. package/lib/testUtils.test.js +0 -28
  215. package/lib/testUtils.test.js.map +0 -1
  216. package/lib/types.js.map +0 -1
  217. package/lib/unixTerminal.js.map +0 -1
  218. package/lib/unixTerminal.test.js +0 -351
  219. package/lib/unixTerminal.test.js.map +0 -1
  220. package/lib/utils.js.map +0 -1
  221. package/lib/windowsConoutConnection.js.map +0 -1
  222. package/lib/windowsPtyAgent.js.map +0 -1
  223. package/lib/windowsPtyAgent.test.js +0 -90
  224. package/lib/windowsPtyAgent.test.js.map +0 -1
  225. package/lib/windowsTerminal.js.map +0 -1
  226. package/lib/windowsTerminal.test.js +0 -219
  227. package/lib/windowsTerminal.test.js.map +0 -1
  228. package/lib/worker/conoutSocketWorker.js.map +0 -1
  229. package/prebuilds/win32-arm64/pty.node +0 -0
  230. package/prebuilds/win32-arm64/pty.pdb +0 -0
  231. package/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  232. package/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  233. package/prebuilds/win32-arm64/winpty.dll +0 -0
  234. package/prebuilds/win32-arm64/winpty.pdb +0 -0
  235. package/prebuilds/win32-x64/pty.node +0 -0
  236. package/prebuilds/win32-x64/pty.pdb +0 -0
  237. package/prebuilds/win32-x64/winpty-agent.exe +0 -0
  238. package/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  239. package/prebuilds/win32-x64/winpty.dll +0 -0
  240. package/prebuilds/win32-x64/winpty.pdb +0 -0
  241. package/scripts/gen-compile-commands.js +0 -8
  242. package/scripts/increment-version.js +0 -54
  243. package/src/conpty_console_list_agent.ts +0 -15
  244. package/src/eventEmitter2.test.ts +0 -30
  245. package/src/eventEmitter2.ts +0 -48
  246. package/src/index.ts +0 -52
  247. package/src/interfaces.ts +0 -130
  248. package/src/native.d.ts +0 -54
  249. package/src/shared/conout.ts +0 -15
  250. package/src/terminal.test.ts +0 -119
  251. package/src/terminal.ts +0 -211
  252. package/src/testUtils.test.ts +0 -23
  253. package/src/tsconfig.json +0 -22
  254. package/src/types.ts +0 -15
  255. package/src/unixTerminal.test.ts +0 -367
  256. package/src/unixTerminal.ts +0 -388
  257. package/src/utils.ts +0 -29
  258. package/src/win/winpty.cc +0 -333
  259. package/src/windowsConoutConnection.ts +0 -82
  260. package/src/windowsPtyAgent.test.ts +0 -94
  261. package/src/windowsPtyAgent.ts +0 -321
  262. package/src/windowsTerminal.test.ts +0 -229
  263. package/src/windowsTerminal.ts +0 -203
  264. package/src/worker/conoutSocketWorker.ts +0 -22
@@ -1,151 +0,0 @@
1
- #include <windows.h>
2
-
3
- #include "TestUtil.cc"
4
-
5
- const char *g_prefix = "";
6
-
7
- static void dumpHandles() {
8
- trace("%sSTDIN=0x%I64x STDOUT=0x%I64x STDERR=0x%I64x",
9
- g_prefix,
10
- (long long)GetStdHandle(STD_INPUT_HANDLE),
11
- (long long)GetStdHandle(STD_OUTPUT_HANDLE),
12
- (long long)GetStdHandle(STD_ERROR_HANDLE));
13
- }
14
-
15
- static HANDLE createBuffer() {
16
-
17
- // If sa isn't provided, the handle defaults to not-inheritable.
18
- SECURITY_ATTRIBUTES sa = {0};
19
- sa.nLength = sizeof(sa);
20
- sa.bInheritHandle = TRUE;
21
-
22
- trace("%sCreating a new buffer...", g_prefix);
23
- HANDLE conout = CreateConsoleScreenBuffer(
24
- GENERIC_READ | GENERIC_WRITE,
25
- FILE_SHARE_READ | FILE_SHARE_WRITE,
26
- &sa,
27
- CONSOLE_TEXTMODE_BUFFER, NULL);
28
-
29
- trace("%sCreating a new buffer... 0x%I64x", g_prefix, (long long)conout);
30
- return conout;
31
- }
32
-
33
- static const char *successOrFail(BOOL ret) {
34
- return ret ? "ok" : "FAILED";
35
- }
36
-
37
- static void setConsoleActiveScreenBuffer(HANDLE conout) {
38
- trace("%sSetConsoleActiveScreenBuffer(0x%I64x) called...",
39
- g_prefix, (long long)conout);
40
- trace("%sSetConsoleActiveScreenBuffer(0x%I64x) called... %s",
41
- g_prefix, (long long)conout,
42
- successOrFail(SetConsoleActiveScreenBuffer(conout)));
43
- }
44
-
45
- static void writeTest(HANDLE conout, const char *msg) {
46
- char writeData[256];
47
- sprintf(writeData, "%s%s\n", g_prefix, msg);
48
-
49
- trace("%sWriting to 0x%I64x: '%s'...",
50
- g_prefix, (long long)conout, msg);
51
- DWORD actual = 0;
52
- BOOL ret = WriteConsoleA(conout, writeData, strlen(writeData), &actual, NULL);
53
- trace("%sWriting to 0x%I64x: '%s'... %s",
54
- g_prefix, (long long)conout, msg,
55
- successOrFail(ret && actual == strlen(writeData)));
56
- }
57
-
58
- static HANDLE startChildInSameConsole(const wchar_t *args, BOOL
59
- bInheritHandles=FALSE) {
60
- wchar_t program[1024];
61
- wchar_t cmdline[1024];
62
- GetModuleFileNameW(NULL, program, 1024);
63
- swprintf(cmdline, L"\"%ls\" %ls", program, args);
64
-
65
- STARTUPINFOW sui;
66
- PROCESS_INFORMATION pi;
67
- memset(&sui, 0, sizeof(sui));
68
- memset(&pi, 0, sizeof(pi));
69
- sui.cb = sizeof(sui);
70
-
71
- CreateProcessW(program, cmdline,
72
- NULL, NULL,
73
- /*bInheritHandles=*/bInheritHandles,
74
- /*dwCreationFlags=*/0,
75
- NULL, NULL,
76
- &sui, &pi);
77
-
78
- return pi.hProcess;
79
- }
80
-
81
- static HANDLE dup(HANDLE h, HANDLE targetProcess) {
82
- HANDLE h2 = INVALID_HANDLE_VALUE;
83
- BOOL ret = DuplicateHandle(
84
- GetCurrentProcess(), h,
85
- targetProcess, &h2,
86
- 0, TRUE, DUPLICATE_SAME_ACCESS);
87
- trace("dup(0x%I64x) to process 0x%I64x... %s, 0x%I64x",
88
- (long long)h,
89
- (long long)targetProcess,
90
- successOrFail(ret),
91
- (long long)h2);
92
- return h2;
93
- }
94
-
95
- int main(int argc, char *argv[]) {
96
- if (argc == 1) {
97
- startChildProcess(L"parent");
98
- return 0;
99
- }
100
-
101
- if (!strcmp(argv[1], "parent")) {
102
- g_prefix = "parent: ";
103
- dumpHandles();
104
- HANDLE hChild = startChildInSameConsole(L"child");
105
-
106
- // Windows 10.
107
- HANDLE orig1 = GetStdHandle(STD_OUTPUT_HANDLE);
108
- HANDLE new1 = createBuffer();
109
-
110
- Sleep(2000);
111
- setConsoleActiveScreenBuffer(new1);
112
-
113
- // Handle duplication results to child process in same console:
114
- // - Windows XP: fails
115
- // - Windows 7 Ultimate SP1 32-bit: fails
116
- // - Windows Server 2008 R2 Datacenter SP1 64-bit: fails
117
- // - Windows 8 Enterprise 32-bit: succeeds
118
- // - Windows 10: succeeds
119
- HANDLE orig2 = dup(orig1, GetCurrentProcess());
120
- HANDLE new2 = dup(new1, GetCurrentProcess());
121
-
122
- dup(orig1, hChild);
123
- dup(new1, hChild);
124
-
125
- // The writes to orig1/orig2 are invisible. The writes to new1/new2
126
- // are visible.
127
- writeTest(orig1, "write to orig1");
128
- writeTest(orig2, "write to orig2");
129
- writeTest(new1, "write to new1");
130
- writeTest(new2, "write to new2");
131
-
132
- Sleep(120000);
133
- return 0;
134
- }
135
-
136
- if (!strcmp(argv[1], "child")) {
137
- g_prefix = "child: ";
138
- dumpHandles();
139
- Sleep(4000);
140
- for (unsigned int i = 0x1; i <= 0xB0; ++i) {
141
- char msg[256];
142
- sprintf(msg, "Write to handle 0x%x", i);
143
- HANDLE h = reinterpret_cast<HANDLE>(i);
144
- writeTest(h, msg);
145
- }
146
- Sleep(120000);
147
- return 0;
148
- }
149
-
150
- return 0;
151
- }
@@ -1,45 +0,0 @@
1
- #define _WIN32_WINNT 0x0501
2
- #include <stdio.h>
3
- #include <windows.h>
4
-
5
- #include "../src/shared/DebugClient.cc"
6
-
7
- const int SC_CONSOLE_MARK = 0xFFF2;
8
- const int SC_CONSOLE_SELECT_ALL = 0xFFF5;
9
-
10
- CALLBACK DWORD pausingThread(LPVOID dummy)
11
- {
12
- HWND hwnd = GetConsoleWindow();
13
- while (true) {
14
- SendMessage(hwnd, WM_SYSCOMMAND, SC_CONSOLE_SELECT_ALL, 0);
15
- Sleep(1000);
16
- SendMessage(hwnd, WM_CHAR, 27, 0x00010001);
17
- Sleep(1000);
18
- }
19
- }
20
-
21
- int main()
22
- {
23
- HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
24
- CONSOLE_SCREEN_BUFFER_INFO info;
25
-
26
- GetConsoleScreenBufferInfo(out, &info);
27
- COORD initial = info.dwCursorPosition;
28
-
29
- CreateThread(NULL, 0,
30
- pausingThread, NULL,
31
- 0, NULL);
32
-
33
- for (int i = 0; i < 30; ++i) {
34
- Sleep(100);
35
- GetConsoleScreenBufferInfo(out, &info);
36
- if (memcmp(&info.dwCursorPosition, &initial, sizeof(COORD)) != 0) {
37
- trace("cursor moved to [%d,%d]",
38
- info.dwCursorPosition.X,
39
- info.dwCursorPosition.Y);
40
- } else {
41
- trace("cursor in expected position");
42
- }
43
- }
44
- return 0;
45
- }
@@ -1,32 +0,0 @@
1
- #include <windows.h>
2
-
3
- #include <stdio.h>
4
- #include <stdlib.h>
5
-
6
- #include "TestUtil.cc"
7
-
8
- int main(int argc, char *argv[]) {
9
- if (argc != 3) {
10
- printf("Usage: %s x y width height\n", argv[0]);
11
- return 1;
12
- }
13
-
14
- const HANDLE conout = CreateFileW(L"CONOUT$",
15
- GENERIC_READ | GENERIC_WRITE,
16
- FILE_SHARE_READ | FILE_SHARE_WRITE,
17
- NULL, OPEN_EXISTING, 0, NULL);
18
- ASSERT(conout != INVALID_HANDLE_VALUE);
19
-
20
- COORD size = {
21
- (short)atoi(argv[1]),
22
- (short)atoi(argv[2]),
23
- };
24
-
25
- BOOL ret = SetConsoleScreenBufferSize(conout, size);
26
- const unsigned lastError = GetLastError();
27
- const char *const retStr = ret ? "OK" : "failed";
28
- trace("SetConsoleScreenBufferSize ret: %s (LastError=0x%x)", retStr, lastError);
29
- printf("SetConsoleScreenBufferSize ret: %s (LastError=0x%x)\n", retStr, lastError);
30
-
31
- return 0;
32
- }
@@ -1,10 +0,0 @@
1
- #include <windows.h>
2
-
3
- #include "TestUtil.cc"
4
-
5
- int main(int argc, char *argv[]) {
6
- int col = atoi(argv[1]);
7
- int row = atoi(argv[2]);
8
- setCursorPos(col, row);
9
- return 0;
10
- }
@@ -1,145 +0,0 @@
1
- #include <windows.h>
2
- #include <locale.h>
3
- #include <stdio.h>
4
- #include <stdlib.h>
5
- #include <string>
6
-
7
- #include "TestUtil.cc"
8
-
9
- #define COUNT_OF(array) (sizeof(array) / sizeof((array)[0]))
10
-
11
- // See https://en.wikipedia.org/wiki/List_of_CJK_fonts
12
- const wchar_t kMSGothic[] = { 0xff2d, 0xff33, 0x0020, 0x30b4, 0x30b7, 0x30c3, 0x30af, 0 }; // Japanese
13
- const wchar_t kNSimSun[] = { 0x65b0, 0x5b8b, 0x4f53, 0 }; // Simplified Chinese
14
- const wchar_t kMingLight[] = { 0x7d30, 0x660e, 0x9ad4, 0 }; // Traditional Chinese
15
- const wchar_t kGulimChe[] = { 0xad74, 0xb9bc, 0xccb4, 0 }; // Korean
16
-
17
- int main() {
18
- setlocale(LC_ALL, "");
19
- wchar_t *cmdline = GetCommandLineW();
20
- int argc = 0;
21
- wchar_t **argv = CommandLineToArgvW(cmdline, &argc);
22
- const HANDLE conout = openConout();
23
-
24
- if (argc == 1) {
25
- cprintf(L"Usage:\n");
26
- cprintf(L" SetFont <index>\n");
27
- cprintf(L" SetFont options\n");
28
- cprintf(L"\n");
29
- cprintf(L"Options for SetCurrentConsoleFontEx:\n");
30
- cprintf(L" -idx INDEX\n");
31
- cprintf(L" -w WIDTH\n");
32
- cprintf(L" -h HEIGHT\n");
33
- cprintf(L" -family (0xNN|NN)\n");
34
- cprintf(L" -weight (normal|bold|NNN)\n");
35
- cprintf(L" -face FACENAME\n");
36
- cprintf(L" -face-{gothic|simsun|minglight|gulimche) [JP,CN-sim,CN-tra,KR]\n");
37
- cprintf(L" -tt\n");
38
- cprintf(L" -vec\n");
39
- cprintf(L" -vp\n");
40
- cprintf(L" -dev\n");
41
- cprintf(L" -roman\n");
42
- cprintf(L" -swiss\n");
43
- cprintf(L" -modern\n");
44
- cprintf(L" -script\n");
45
- cprintf(L" -decorative\n");
46
- return 0;
47
- }
48
-
49
- if (isdigit(argv[1][0])) {
50
- int index = _wtoi(argv[1]);
51
- HMODULE kernel32 = LoadLibraryW(L"kernel32.dll");
52
- FARPROC proc = GetProcAddress(kernel32, "SetConsoleFont");
53
- if (proc == NULL) {
54
- cprintf(L"Couldn't get address of SetConsoleFont\n");
55
- } else {
56
- BOOL ret = reinterpret_cast<BOOL WINAPI(*)(HANDLE, DWORD)>(proc)(
57
- conout, index);
58
- cprintf(L"SetFont returned %d\n", ret);
59
- }
60
- return 0;
61
- }
62
-
63
- CONSOLE_FONT_INFOEX fontex = {0};
64
- fontex.cbSize = sizeof(fontex);
65
-
66
- for (int i = 1; i < argc; ++i) {
67
- std::wstring arg = argv[i];
68
- if (i + 1 < argc) {
69
- std::wstring next = argv[i + 1];
70
- if (arg == L"-idx") {
71
- fontex.nFont = _wtoi(next.c_str());
72
- ++i; continue;
73
- } else if (arg == L"-w") {
74
- fontex.dwFontSize.X = _wtoi(next.c_str());
75
- ++i; continue;
76
- } else if (arg == L"-h") {
77
- fontex.dwFontSize.Y = _wtoi(next.c_str());
78
- ++i; continue;
79
- } else if (arg == L"-weight") {
80
- if (next == L"normal") {
81
- fontex.FontWeight = 400;
82
- } else if (next == L"bold") {
83
- fontex.FontWeight = 700;
84
- } else {
85
- fontex.FontWeight = _wtoi(next.c_str());
86
- }
87
- ++i; continue;
88
- } else if (arg == L"-face") {
89
- wcsncpy(fontex.FaceName, next.c_str(), COUNT_OF(fontex.FaceName));
90
- ++i; continue;
91
- } else if (arg == L"-family") {
92
- fontex.FontFamily = strtol(narrowString(next).c_str(), nullptr, 0);
93
- ++i; continue;
94
- }
95
- }
96
- if (arg == L"-tt") {
97
- fontex.FontFamily |= TMPF_TRUETYPE;
98
- } else if (arg == L"-vec") {
99
- fontex.FontFamily |= TMPF_VECTOR;
100
- } else if (arg == L"-vp") {
101
- // Setting the TMPF_FIXED_PITCH bit actually indicates variable
102
- // pitch.
103
- fontex.FontFamily |= TMPF_FIXED_PITCH;
104
- } else if (arg == L"-dev") {
105
- fontex.FontFamily |= TMPF_DEVICE;
106
- } else if (arg == L"-roman") {
107
- fontex.FontFamily = (fontex.FontFamily & ~0xF0) | FF_ROMAN;
108
- } else if (arg == L"-swiss") {
109
- fontex.FontFamily = (fontex.FontFamily & ~0xF0) | FF_SWISS;
110
- } else if (arg == L"-modern") {
111
- fontex.FontFamily = (fontex.FontFamily & ~0xF0) | FF_MODERN;
112
- } else if (arg == L"-script") {
113
- fontex.FontFamily = (fontex.FontFamily & ~0xF0) | FF_SCRIPT;
114
- } else if (arg == L"-decorative") {
115
- fontex.FontFamily = (fontex.FontFamily & ~0xF0) | FF_DECORATIVE;
116
- } else if (arg == L"-face-gothic") {
117
- wcsncpy(fontex.FaceName, kMSGothic, COUNT_OF(fontex.FaceName));
118
- } else if (arg == L"-face-simsun") {
119
- wcsncpy(fontex.FaceName, kNSimSun, COUNT_OF(fontex.FaceName));
120
- } else if (arg == L"-face-minglight") {
121
- wcsncpy(fontex.FaceName, kMingLight, COUNT_OF(fontex.FaceName));
122
- } else if (arg == L"-face-gulimche") {
123
- wcsncpy(fontex.FaceName, kGulimChe, COUNT_OF(fontex.FaceName));
124
- } else {
125
- cprintf(L"Unrecognized argument: %ls\n", arg.c_str());
126
- exit(1);
127
- }
128
- }
129
-
130
- cprintf(L"Setting to: nFont=%u dwFontSize=(%d,%d) "
131
- L"FontFamily=0x%x FontWeight=%u "
132
- L"FaceName=\"%ls\"\n",
133
- static_cast<unsigned>(fontex.nFont),
134
- fontex.dwFontSize.X, fontex.dwFontSize.Y,
135
- fontex.FontFamily, fontex.FontWeight,
136
- fontex.FaceName);
137
-
138
- BOOL ret = SetCurrentConsoleFontEx(
139
- conout,
140
- FALSE,
141
- &fontex);
142
- cprintf(L"SetCurrentConsoleFontEx returned %d\n", ret);
143
-
144
- return 0;
145
- }
@@ -1,36 +0,0 @@
1
- #include <windows.h>
2
-
3
- #include <stdio.h>
4
- #include <stdlib.h>
5
-
6
- #include "TestUtil.cc"
7
-
8
- int main(int argc, char *argv[]) {
9
- if (argc != 5) {
10
- printf("Usage: %s x y width height\n", argv[0]);
11
- return 1;
12
- }
13
-
14
- const HANDLE conout = CreateFileW(L"CONOUT$",
15
- GENERIC_READ | GENERIC_WRITE,
16
- FILE_SHARE_READ | FILE_SHARE_WRITE,
17
- NULL, OPEN_EXISTING, 0, NULL);
18
- ASSERT(conout != INVALID_HANDLE_VALUE);
19
-
20
- SMALL_RECT sr = {
21
- (short)atoi(argv[1]),
22
- (short)atoi(argv[2]),
23
- (short)(atoi(argv[1]) + atoi(argv[3]) - 1),
24
- (short)(atoi(argv[2]) + atoi(argv[4]) - 1),
25
- };
26
-
27
- trace("Calling SetConsoleWindowInfo with {L=%d,T=%d,R=%d,B=%d}",
28
- sr.Left, sr.Top, sr.Right, sr.Bottom);
29
- BOOL ret = SetConsoleWindowInfo(conout, TRUE, &sr);
30
- const unsigned lastError = GetLastError();
31
- const char *const retStr = ret ? "OK" : "failed";
32
- trace("SetConsoleWindowInfo ret: %s (LastError=0x%x)", retStr, lastError);
33
- printf("SetConsoleWindowInfo ret: %s (LastError=0x%x)\n", retStr, lastError);
34
-
35
- return 0;
36
- }
@@ -1,12 +0,0 @@
1
- // This test program is useful for studying commandline<->argv conversion.
2
-
3
- #include <stdio.h>
4
- #include <windows.h>
5
-
6
- int main(int argc, char **argv)
7
- {
8
- printf("cmdline = [%s]\n", GetCommandLine());
9
- for (int i = 0; i < argc; ++i)
10
- printf("[%s]\n", argv[i]);
11
- return 0;
12
- }
@@ -1,40 +0,0 @@
1
- #include <windows.h>
2
- #include <stdio.h>
3
- #include <ctype.h>
4
-
5
- int main(int argc, char *argv[])
6
- {
7
- static int escCount = 0;
8
-
9
- HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
10
- while (true) {
11
- DWORD count;
12
- INPUT_RECORD ir;
13
- if (!ReadConsoleInput(hStdin, &ir, 1, &count)) {
14
- printf("ReadConsoleInput failed\n");
15
- return 1;
16
- }
17
-
18
- if (true) {
19
- DWORD mode;
20
- GetConsoleMode(hStdin, &mode);
21
- SetConsoleMode(hStdin, mode & ~ENABLE_PROCESSED_INPUT);
22
- }
23
-
24
- if (ir.EventType == KEY_EVENT) {
25
- const KEY_EVENT_RECORD &ker = ir.Event.KeyEvent;
26
- printf("%s", ker.bKeyDown ? "dn" : "up");
27
- printf(" ch=");
28
- if (isprint(ker.uChar.AsciiChar))
29
- printf("'%c'", ker.uChar.AsciiChar);
30
- printf("%d", ker.uChar.AsciiChar);
31
- printf(" vk=%#x", ker.wVirtualKeyCode);
32
- printf(" scan=%#x", ker.wVirtualScanCode);
33
- printf(" state=%#x", (int)ker.dwControlKeyState);
34
- printf(" repeat=%d", ker.wRepeatCount);
35
- printf("\n");
36
- if (ker.uChar.AsciiChar == 27 && ++escCount == 6)
37
- break;
38
- }
39
- }
40
- }
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env python
2
- i = 0;
3
- while True:
4
- i += 1
5
- print(i)
@@ -1,172 +0,0 @@
1
- // This file is included into test programs using #include
2
-
3
- #include <windows.h>
4
- #include <assert.h>
5
- #include <stdio.h>
6
- #include <string.h>
7
- #include <wchar.h>
8
- #include <vector>
9
- #include <string>
10
-
11
- #include "../src/shared/DebugClient.h"
12
- #include "../src/shared/TimeMeasurement.h"
13
-
14
- #include "../src/shared/DebugClient.cc"
15
- #include "../src/shared/WinptyAssert.cc"
16
- #include "../src/shared/WinptyException.cc"
17
-
18
- // Launch this test program again, in a new console that we will destroy.
19
- static void startChildProcess(const wchar_t *args) {
20
- wchar_t program[1024];
21
- wchar_t cmdline[1024];
22
- GetModuleFileNameW(NULL, program, 1024);
23
- swprintf(cmdline, L"\"%ls\" %ls", program, args);
24
-
25
- STARTUPINFOW sui;
26
- PROCESS_INFORMATION pi;
27
- memset(&sui, 0, sizeof(sui));
28
- memset(&pi, 0, sizeof(pi));
29
- sui.cb = sizeof(sui);
30
-
31
- CreateProcessW(program, cmdline,
32
- NULL, NULL,
33
- /*bInheritHandles=*/FALSE,
34
- /*dwCreationFlags=*/CREATE_NEW_CONSOLE,
35
- NULL, NULL,
36
- &sui, &pi);
37
- }
38
-
39
- static void setBufferSize(HANDLE conout, int x, int y) {
40
- COORD size = { static_cast<SHORT>(x), static_cast<SHORT>(y) };
41
- BOOL success = SetConsoleScreenBufferSize(conout, size);
42
- trace("setBufferSize: (%d,%d), result=%d", x, y, success);
43
- }
44
-
45
- static void setWindowPos(HANDLE conout, int x, int y, int w, int h) {
46
- SMALL_RECT r = {
47
- static_cast<SHORT>(x), static_cast<SHORT>(y),
48
- static_cast<SHORT>(x + w - 1),
49
- static_cast<SHORT>(y + h - 1)
50
- };
51
- BOOL success = SetConsoleWindowInfo(conout, /*bAbsolute=*/TRUE, &r);
52
- trace("setWindowPos: (%d,%d,%d,%d), result=%d", x, y, w, h, success);
53
- }
54
-
55
- static void setCursorPos(HANDLE conout, int x, int y) {
56
- COORD coord = { static_cast<SHORT>(x), static_cast<SHORT>(y) };
57
- SetConsoleCursorPosition(conout, coord);
58
- }
59
-
60
- static void setBufferSize(int x, int y) {
61
- setBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), x, y);
62
- }
63
-
64
- static void setWindowPos(int x, int y, int w, int h) {
65
- setWindowPos(GetStdHandle(STD_OUTPUT_HANDLE), x, y, w, h);
66
- }
67
-
68
- static void setCursorPos(int x, int y) {
69
- setCursorPos(GetStdHandle(STD_OUTPUT_HANDLE), x, y);
70
- }
71
-
72
- static void countDown(int sec) {
73
- for (int i = sec; i > 0; --i) {
74
- printf("%d.. ", i);
75
- fflush(stdout);
76
- Sleep(1000);
77
- }
78
- printf("\n");
79
- }
80
-
81
- static void writeBox(int x, int y, int w, int h, char ch, int attributes=7) {
82
- CHAR_INFO info = { 0 };
83
- info.Char.AsciiChar = ch;
84
- info.Attributes = attributes;
85
- std::vector<CHAR_INFO> buf(w * h, info);
86
- HANDLE conout = GetStdHandle(STD_OUTPUT_HANDLE);
87
- COORD bufSize = { static_cast<SHORT>(w), static_cast<SHORT>(h) };
88
- COORD bufCoord = { 0, 0 };
89
- SMALL_RECT writeRegion = {
90
- static_cast<SHORT>(x),
91
- static_cast<SHORT>(y),
92
- static_cast<SHORT>(x + w - 1),
93
- static_cast<SHORT>(y + h - 1)
94
- };
95
- WriteConsoleOutputA(conout, buf.data(), bufSize, bufCoord, &writeRegion);
96
- }
97
-
98
- static void setChar(int x, int y, char ch, int attributes=7) {
99
- writeBox(x, y, 1, 1, ch, attributes);
100
- }
101
-
102
- static void fillChar(int x, int y, int repeat, char ch) {
103
- COORD coord = { static_cast<SHORT>(x), static_cast<SHORT>(y) };
104
- DWORD actual = 0;
105
- FillConsoleOutputCharacterA(
106
- GetStdHandle(STD_OUTPUT_HANDLE),
107
- ch, repeat, coord, &actual);
108
- }
109
-
110
- static void repeatChar(int count, char ch) {
111
- for (int i = 0; i < count; ++i) {
112
- putchar(ch);
113
- }
114
- fflush(stdout);
115
- }
116
-
117
- // I don't know why, but wprintf fails to print this face name,
118
- // "MS ゴシック" (aka MS Gothic). It helps to use wprintf instead of printf, and
119
- // it helps to call `setlocale(LC_ALL, "")`, but the Japanese symbols are
120
- // ultimately converted to `?` symbols, even though MS Gothic is able to
121
- // display its own name, and the current code page is 932 (Shift-JIS).
122
- static void cvfprintf(HANDLE conout, const wchar_t *fmt, va_list ap) {
123
- wchar_t buffer[256];
124
- vswprintf(buffer, 256 - 1, fmt, ap);
125
- buffer[255] = L'\0';
126
- DWORD actual = 0;
127
- if (!WriteConsoleW(conout, buffer, wcslen(buffer), &actual, NULL)) {
128
- wprintf(L"WriteConsoleW call failed!\n");
129
- }
130
- }
131
-
132
- static void cfprintf(HANDLE conout, const wchar_t *fmt, ...) {
133
- va_list ap;
134
- va_start(ap, fmt);
135
- cvfprintf(conout, fmt, ap);
136
- va_end(ap);
137
- }
138
-
139
- static void cprintf(const wchar_t *fmt, ...) {
140
- va_list ap;
141
- va_start(ap, fmt);
142
- cvfprintf(GetStdHandle(STD_OUTPUT_HANDLE), fmt, ap);
143
- va_end(ap);
144
- }
145
-
146
- static std::string narrowString(const std::wstring &input)
147
- {
148
- int mblen = WideCharToMultiByte(
149
- CP_UTF8, 0,
150
- input.data(), input.size(),
151
- NULL, 0, NULL, NULL);
152
- if (mblen <= 0) {
153
- return std::string();
154
- }
155
- std::vector<char> tmp(mblen);
156
- int mblen2 = WideCharToMultiByte(
157
- CP_UTF8, 0,
158
- input.data(), input.size(),
159
- tmp.data(), tmp.size(),
160
- NULL, NULL);
161
- assert(mblen2 == mblen);
162
- return std::string(tmp.data(), tmp.size());
163
- }
164
-
165
- HANDLE openConout() {
166
- const HANDLE conout = CreateFileW(L"CONOUT$",
167
- GENERIC_READ | GENERIC_WRITE,
168
- FILE_SHARE_READ | FILE_SHARE_WRITE,
169
- NULL, OPEN_EXISTING, 0, NULL);
170
- ASSERT(conout != INVALID_HANDLE_VALUE);
171
- return conout;
172
- }