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.
Files changed (265) hide show
  1. package/README.md +4 -5
  2. package/binding.gyp +76 -37
  3. package/lib/conpty_console_list_agent.js +10 -1
  4. package/lib/unixTerminal.js +6 -3
  5. package/lib/utils.js +1 -1
  6. package/lib/windowsPtyAgent.js +62 -95
  7. package/lib/windowsTerminal.js +4 -2
  8. package/package.json +6 -5
  9. package/prebuilds/darwin-arm64/pty.node +0 -0
  10. package/prebuilds/darwin-arm64/spawn-helper +0 -0
  11. package/prebuilds/darwin-x64/pty.node +0 -0
  12. package/prebuilds/darwin-x64/spawn-helper +0 -0
  13. package/prebuilds/linux-arm64/pty.node +0 -0
  14. package/prebuilds/linux-x64/pty.node +0 -0
  15. package/prebuilds/win32-arm64/conpty.node +0 -0
  16. package/prebuilds/win32-arm64/conpty.pdb +0 -0
  17. package/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  18. package/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  19. package/prebuilds/win32-x64/conpty.node +0 -0
  20. package/prebuilds/win32-x64/conpty.pdb +0 -0
  21. package/prebuilds/win32-x64/conpty_console_list.node +0 -0
  22. package/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  23. package/scripts/post-install.js +1 -5
  24. package/src/unix/pty.cc +111 -35
  25. package/src/win/conpty.cc +1 -2
  26. package/typings/node-pty.d.ts +13 -9
  27. package/deps/.editorconfig +0 -2
  28. package/deps/winpty/.drone.yml +0 -17
  29. package/deps/winpty/.gitattributes +0 -19
  30. package/deps/winpty/LICENSE +0 -21
  31. package/deps/winpty/Makefile +0 -166
  32. package/deps/winpty/README.md +0 -151
  33. package/deps/winpty/RELEASES.md +0 -280
  34. package/deps/winpty/VERSION.txt +0 -1
  35. package/deps/winpty/configure +0 -167
  36. package/deps/winpty/misc/BufferResizeTests.cc +0 -90
  37. package/deps/winpty/misc/ChangeScreenBuffer.cc +0 -53
  38. package/deps/winpty/misc/ClearConsole.cc +0 -72
  39. package/deps/winpty/misc/ConinMode.cc +0 -117
  40. package/deps/winpty/misc/ConinMode.ps1 +0 -116
  41. package/deps/winpty/misc/ConoutMode.cc +0 -113
  42. package/deps/winpty/misc/DebugClient.py +0 -42
  43. package/deps/winpty/misc/DebugServer.py +0 -63
  44. package/deps/winpty/misc/DumpLines.py +0 -5
  45. package/deps/winpty/misc/EnableExtendedFlags.txt +0 -46
  46. package/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +0 -528
  47. package/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +0 -633
  48. package/deps/winpty/misc/Font-Report-June2016/CP932.txt +0 -630
  49. package/deps/winpty/misc/Font-Report-June2016/CP936.txt +0 -630
  50. package/deps/winpty/misc/Font-Report-June2016/CP949.txt +0 -630
  51. package/deps/winpty/misc/Font-Report-June2016/CP950.txt +0 -630
  52. package/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +0 -16
  53. package/deps/winpty/misc/Font-Report-June2016/Results.txt +0 -4
  54. package/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +0 -144
  55. package/deps/winpty/misc/FontSurvey.cc +0 -100
  56. package/deps/winpty/misc/FormatChar.h +0 -21
  57. package/deps/winpty/misc/FreezePerfTest.cc +0 -62
  58. package/deps/winpty/misc/GetCh.cc +0 -20
  59. package/deps/winpty/misc/GetConsolePos.cc +0 -41
  60. package/deps/winpty/misc/GetFont.cc +0 -261
  61. package/deps/winpty/misc/IdentifyConsoleWindow.ps1 +0 -51
  62. package/deps/winpty/misc/IsNewConsole.cc +0 -87
  63. package/deps/winpty/misc/MouseInputNotes.txt +0 -90
  64. package/deps/winpty/misc/MoveConsoleWindow.cc +0 -34
  65. package/deps/winpty/misc/Notes.txt +0 -219
  66. package/deps/winpty/misc/OSVersion.cc +0 -27
  67. package/deps/winpty/misc/ScreenBufferFreezeInactive.cc +0 -101
  68. package/deps/winpty/misc/ScreenBufferTest.cc +0 -671
  69. package/deps/winpty/misc/ScreenBufferTest2.cc +0 -151
  70. package/deps/winpty/misc/SelectAllTest.cc +0 -45
  71. package/deps/winpty/misc/SetBufferSize.cc +0 -32
  72. package/deps/winpty/misc/SetCursorPos.cc +0 -10
  73. package/deps/winpty/misc/SetFont.cc +0 -145
  74. package/deps/winpty/misc/SetWindowRect.cc +0 -36
  75. package/deps/winpty/misc/ShowArgv.cc +0 -12
  76. package/deps/winpty/misc/ShowConsoleInput.cc +0 -40
  77. package/deps/winpty/misc/Spew.py +0 -5
  78. package/deps/winpty/misc/TestUtil.cc +0 -172
  79. package/deps/winpty/misc/UnicodeDoubleWidthTest.cc +0 -102
  80. package/deps/winpty/misc/UnicodeWideTest1.cc +0 -246
  81. package/deps/winpty/misc/UnicodeWideTest2.cc +0 -130
  82. package/deps/winpty/misc/UnixEcho.cc +0 -89
  83. package/deps/winpty/misc/Utf16Echo.cc +0 -46
  84. package/deps/winpty/misc/VeryLargeRead.cc +0 -122
  85. package/deps/winpty/misc/VkEscapeTest.cc +0 -56
  86. package/deps/winpty/misc/Win10ResizeWhileFrozen.cc +0 -52
  87. package/deps/winpty/misc/Win10WrapTest1.cc +0 -57
  88. package/deps/winpty/misc/Win10WrapTest2.cc +0 -30
  89. package/deps/winpty/misc/Win32Echo1.cc +0 -26
  90. package/deps/winpty/misc/Win32Echo2.cc +0 -19
  91. package/deps/winpty/misc/Win32Test1.cc +0 -46
  92. package/deps/winpty/misc/Win32Test2.cc +0 -70
  93. package/deps/winpty/misc/Win32Test3.cc +0 -78
  94. package/deps/winpty/misc/Win32Write1.cc +0 -44
  95. package/deps/winpty/misc/WindowsBugCrashReader.cc +0 -27
  96. package/deps/winpty/misc/WriteConsole.cc +0 -106
  97. package/deps/winpty/misc/build32.sh +0 -9
  98. package/deps/winpty/misc/build64.sh +0 -9
  99. package/deps/winpty/misc/color-test.sh +0 -212
  100. package/deps/winpty/misc/font-notes.txt +0 -300
  101. package/deps/winpty/misc/winbug-15048.cc +0 -201
  102. package/deps/winpty/ship/build-pty4j-libpty.bat +0 -36
  103. package/deps/winpty/ship/common_ship.py +0 -53
  104. package/deps/winpty/ship/make_msvc_package.py +0 -165
  105. package/deps/winpty/ship/ship.py +0 -108
  106. package/deps/winpty/src/agent/Agent.cc +0 -613
  107. package/deps/winpty/src/agent/Agent.h +0 -103
  108. package/deps/winpty/src/agent/AgentCreateDesktop.cc +0 -84
  109. package/deps/winpty/src/agent/AgentCreateDesktop.h +0 -28
  110. package/deps/winpty/src/agent/ConsoleFont.cc +0 -632
  111. package/deps/winpty/src/agent/ConsoleFont.h +0 -28
  112. package/deps/winpty/src/agent/ConsoleInput.cc +0 -852
  113. package/deps/winpty/src/agent/ConsoleInput.h +0 -109
  114. package/deps/winpty/src/agent/ConsoleInputReencoding.cc +0 -121
  115. package/deps/winpty/src/agent/ConsoleInputReencoding.h +0 -36
  116. package/deps/winpty/src/agent/ConsoleLine.cc +0 -152
  117. package/deps/winpty/src/agent/ConsoleLine.h +0 -41
  118. package/deps/winpty/src/agent/Coord.h +0 -87
  119. package/deps/winpty/src/agent/DebugShowInput.cc +0 -239
  120. package/deps/winpty/src/agent/DebugShowInput.h +0 -32
  121. package/deps/winpty/src/agent/DefaultInputMap.cc +0 -422
  122. package/deps/winpty/src/agent/DefaultInputMap.h +0 -28
  123. package/deps/winpty/src/agent/DsrSender.h +0 -30
  124. package/deps/winpty/src/agent/EventLoop.cc +0 -99
  125. package/deps/winpty/src/agent/EventLoop.h +0 -47
  126. package/deps/winpty/src/agent/InputMap.cc +0 -246
  127. package/deps/winpty/src/agent/InputMap.h +0 -114
  128. package/deps/winpty/src/agent/LargeConsoleRead.cc +0 -71
  129. package/deps/winpty/src/agent/LargeConsoleRead.h +0 -68
  130. package/deps/winpty/src/agent/NamedPipe.cc +0 -378
  131. package/deps/winpty/src/agent/NamedPipe.h +0 -125
  132. package/deps/winpty/src/agent/Scraper.cc +0 -699
  133. package/deps/winpty/src/agent/Scraper.h +0 -103
  134. package/deps/winpty/src/agent/SimplePool.h +0 -75
  135. package/deps/winpty/src/agent/SmallRect.h +0 -143
  136. package/deps/winpty/src/agent/Terminal.cc +0 -535
  137. package/deps/winpty/src/agent/Terminal.h +0 -69
  138. package/deps/winpty/src/agent/UnicodeEncoding.h +0 -157
  139. package/deps/winpty/src/agent/UnicodeEncodingTest.cc +0 -189
  140. package/deps/winpty/src/agent/Win32Console.cc +0 -107
  141. package/deps/winpty/src/agent/Win32Console.h +0 -67
  142. package/deps/winpty/src/agent/Win32ConsoleBuffer.cc +0 -193
  143. package/deps/winpty/src/agent/Win32ConsoleBuffer.h +0 -99
  144. package/deps/winpty/src/agent/main.cc +0 -114
  145. package/deps/winpty/src/agent/subdir.mk +0 -61
  146. package/deps/winpty/src/configurations.gypi +0 -60
  147. package/deps/winpty/src/debugserver/DebugServer.cc +0 -117
  148. package/deps/winpty/src/debugserver/subdir.mk +0 -41
  149. package/deps/winpty/src/include/winpty.h +0 -242
  150. package/deps/winpty/src/include/winpty_constants.h +0 -131
  151. package/deps/winpty/src/libwinpty/AgentLocation.cc +0 -75
  152. package/deps/winpty/src/libwinpty/AgentLocation.h +0 -28
  153. package/deps/winpty/src/libwinpty/LibWinptyException.h +0 -54
  154. package/deps/winpty/src/libwinpty/WinptyInternal.h +0 -72
  155. package/deps/winpty/src/libwinpty/subdir.mk +0 -46
  156. package/deps/winpty/src/libwinpty/winpty.cc +0 -970
  157. package/deps/winpty/src/shared/AgentMsg.h +0 -38
  158. package/deps/winpty/src/shared/BackgroundDesktop.cc +0 -122
  159. package/deps/winpty/src/shared/BackgroundDesktop.h +0 -73
  160. package/deps/winpty/src/shared/Buffer.cc +0 -103
  161. package/deps/winpty/src/shared/Buffer.h +0 -102
  162. package/deps/winpty/src/shared/DebugClient.cc +0 -187
  163. package/deps/winpty/src/shared/DebugClient.h +0 -38
  164. package/deps/winpty/src/shared/GenRandom.cc +0 -138
  165. package/deps/winpty/src/shared/GenRandom.h +0 -55
  166. package/deps/winpty/src/shared/GetCommitHash.bat +0 -13
  167. package/deps/winpty/src/shared/Mutex.h +0 -54
  168. package/deps/winpty/src/shared/OsModule.h +0 -63
  169. package/deps/winpty/src/shared/OwnedHandle.cc +0 -36
  170. package/deps/winpty/src/shared/OwnedHandle.h +0 -45
  171. package/deps/winpty/src/shared/PrecompiledHeader.h +0 -43
  172. package/deps/winpty/src/shared/StringBuilder.h +0 -227
  173. package/deps/winpty/src/shared/StringBuilderTest.cc +0 -114
  174. package/deps/winpty/src/shared/StringUtil.cc +0 -55
  175. package/deps/winpty/src/shared/StringUtil.h +0 -80
  176. package/deps/winpty/src/shared/TimeMeasurement.h +0 -63
  177. package/deps/winpty/src/shared/UnixCtrlChars.h +0 -45
  178. package/deps/winpty/src/shared/UpdateGenVersion.bat +0 -20
  179. package/deps/winpty/src/shared/WindowsSecurity.cc +0 -460
  180. package/deps/winpty/src/shared/WindowsSecurity.h +0 -104
  181. package/deps/winpty/src/shared/WindowsVersion.cc +0 -252
  182. package/deps/winpty/src/shared/WindowsVersion.h +0 -29
  183. package/deps/winpty/src/shared/WinptyAssert.cc +0 -55
  184. package/deps/winpty/src/shared/WinptyAssert.h +0 -64
  185. package/deps/winpty/src/shared/WinptyException.cc +0 -57
  186. package/deps/winpty/src/shared/WinptyException.h +0 -43
  187. package/deps/winpty/src/shared/WinptyVersion.cc +0 -42
  188. package/deps/winpty/src/shared/WinptyVersion.h +0 -27
  189. package/deps/winpty/src/shared/winpty_snprintf.h +0 -99
  190. package/deps/winpty/src/subdir.mk +0 -5
  191. package/deps/winpty/src/tests/subdir.mk +0 -28
  192. package/deps/winpty/src/tests/trivial_test.cc +0 -158
  193. package/deps/winpty/src/unix-adapter/InputHandler.cc +0 -114
  194. package/deps/winpty/src/unix-adapter/InputHandler.h +0 -56
  195. package/deps/winpty/src/unix-adapter/OutputHandler.cc +0 -80
  196. package/deps/winpty/src/unix-adapter/OutputHandler.h +0 -53
  197. package/deps/winpty/src/unix-adapter/Util.cc +0 -86
  198. package/deps/winpty/src/unix-adapter/Util.h +0 -31
  199. package/deps/winpty/src/unix-adapter/WakeupFd.cc +0 -70
  200. package/deps/winpty/src/unix-adapter/WakeupFd.h +0 -42
  201. package/deps/winpty/src/unix-adapter/main.cc +0 -729
  202. package/deps/winpty/src/unix-adapter/subdir.mk +0 -41
  203. package/deps/winpty/src/winpty.gyp +0 -234
  204. package/deps/winpty/vcbuild.bat +0 -83
  205. package/lib/conpty_console_list_agent.js.map +0 -1
  206. package/lib/eventEmitter2.js.map +0 -1
  207. package/lib/eventEmitter2.test.js +0 -30
  208. package/lib/eventEmitter2.test.js.map +0 -1
  209. package/lib/index.js.map +0 -1
  210. package/lib/interfaces.js.map +0 -1
  211. package/lib/shared/conout.js.map +0 -1
  212. package/lib/terminal.js.map +0 -1
  213. package/lib/terminal.test.js +0 -139
  214. package/lib/terminal.test.js.map +0 -1
  215. package/lib/testUtils.test.js +0 -28
  216. package/lib/testUtils.test.js.map +0 -1
  217. package/lib/types.js.map +0 -1
  218. package/lib/unixTerminal.js.map +0 -1
  219. package/lib/unixTerminal.test.js +0 -351
  220. package/lib/unixTerminal.test.js.map +0 -1
  221. package/lib/utils.js.map +0 -1
  222. package/lib/windowsConoutConnection.js.map +0 -1
  223. package/lib/windowsPtyAgent.js.map +0 -1
  224. package/lib/windowsPtyAgent.test.js +0 -90
  225. package/lib/windowsPtyAgent.test.js.map +0 -1
  226. package/lib/windowsTerminal.js.map +0 -1
  227. package/lib/windowsTerminal.test.js +0 -219
  228. package/lib/windowsTerminal.test.js.map +0 -1
  229. package/lib/worker/conoutSocketWorker.js.map +0 -1
  230. package/prebuilds/win32-arm64/pty.node +0 -0
  231. package/prebuilds/win32-arm64/pty.pdb +0 -0
  232. package/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  233. package/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  234. package/prebuilds/win32-arm64/winpty.dll +0 -0
  235. package/prebuilds/win32-arm64/winpty.pdb +0 -0
  236. package/prebuilds/win32-x64/pty.node +0 -0
  237. package/prebuilds/win32-x64/pty.pdb +0 -0
  238. package/prebuilds/win32-x64/winpty-agent.exe +0 -0
  239. package/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  240. package/prebuilds/win32-x64/winpty.dll +0 -0
  241. package/prebuilds/win32-x64/winpty.pdb +0 -0
  242. package/scripts/gen-compile-commands.js +0 -8
  243. package/scripts/increment-version.js +0 -54
  244. package/src/conpty_console_list_agent.ts +0 -15
  245. package/src/eventEmitter2.test.ts +0 -30
  246. package/src/eventEmitter2.ts +0 -48
  247. package/src/index.ts +0 -52
  248. package/src/interfaces.ts +0 -130
  249. package/src/native.d.ts +0 -54
  250. package/src/shared/conout.ts +0 -15
  251. package/src/terminal.test.ts +0 -119
  252. package/src/terminal.ts +0 -211
  253. package/src/testUtils.test.ts +0 -23
  254. package/src/tsconfig.json +0 -22
  255. package/src/types.ts +0 -15
  256. package/src/unixTerminal.test.ts +0 -367
  257. package/src/unixTerminal.ts +0 -388
  258. package/src/utils.ts +0 -29
  259. package/src/win/winpty.cc +0 -333
  260. package/src/windowsConoutConnection.ts +0 -82
  261. package/src/windowsPtyAgent.test.ts +0 -94
  262. package/src/windowsPtyAgent.ts +0 -321
  263. package/src/windowsTerminal.test.ts +0 -229
  264. package/src/windowsTerminal.ts +0 -203
  265. 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
- }