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,122 +0,0 @@
1
- //
2
- // 2015-09-25
3
- // I measured these limits on the size of a single ReadConsoleOutputW call.
4
- // The limit seems to more-or-less disppear with Windows 8, which is the first
5
- // OS to stop using ALPCs for console I/O. My guess is that the new I/O
6
- // method does not use the 64KiB shared memory buffer that the ALPC method
7
- // uses.
8
- //
9
- // I'm guessing the remaining difference between Windows 8/8.1 and Windows 10
10
- // might be related to the 32-vs-64-bitness.
11
- //
12
- // Client OSs
13
- //
14
- // Windows XP 32-bit VM ==> up to 13304 characters
15
- // - 13304x1 works, but 13305x1 fails instantly
16
- // Windows 7 32-bit VM ==> between 16-17 thousand characters
17
- // - 16000x1 works, 17000x1 fails instantly
18
- // - 163x100 *crashes* conhost.exe but leaves VeryLargeRead.exe running
19
- // Windows 8 32-bit VM ==> between 240-250 million characters
20
- // - 10000x24000 works, but 10000x25000 does not
21
- // Windows 8.1 32-bit VM ==> between 240-250 million characters
22
- // - 10000x24000 works, but 10000x25000 does not
23
- // Windows 10 64-bit VM ==> no limit (tested to 576 million characters)
24
- // - 24000x24000 works
25
- // - `ver` reports [Version 10.0.10240], conhost.exe and ConhostV1.dll are
26
- // 10.0.10240.16384 for file and product version. ConhostV2.dll is
27
- // 10.0.10240.16391 for file and product version.
28
- //
29
- // Server OSs
30
- //
31
- // Windows Server 2008 64-bit VM ==> 14300-14400 characters
32
- // - 14300x1 works, 14400x1 fails instantly
33
- // - This OS does not have conhost.exe.
34
- // - `ver` reports [Version 6.0.6002]
35
- // Windows Server 2008 R2 64-bit VM ==> 15600-15700 characters
36
- // - 15600x1 works, 15700x1 fails instantly
37
- // - This OS has conhost.exe, and procexp.exe reveals console ALPC ports in
38
- // use in conhost.exe.
39
- // - `ver` reports [Version 6.1.7601], conhost.exe is 6.1.7601.23153 for file
40
- // and product version.
41
- // Windows Server 2012 64-bit VM ==> at least 100 million characters
42
- // - 10000x10000 works (VM had only 1GiB of RAM, so I skipped larger tests)
43
- // - This OS has Windows 8's task manager and procexp.exe reveals the same
44
- // lack of ALPC ports and the same \Device\ConDrv\* files as Windows 8.
45
- // - `ver` reports [Version 6.2.9200], conhost.exe is 6.2.9200.16579 for file
46
- // and product version.
47
- //
48
- // To summarize:
49
- //
50
- // client-OS server-OS notes
51
- // ---------------------------------------------------------------------------
52
- // XP Server 2008 CSRSS, small reads
53
- // 7 Server 2008 R2 ALPC-to-conhost, small reads
54
- // 8, 8.1 Server 2012 new I/O interface, large reads allowed
55
- // 10 <no server OS yet> enhanced console w/rewrapping
56
- //
57
- // (Presumably, Win2K, Vista, and Win2K3 behave the same as XP. conhost.exe
58
- // was announced as a Win7 feature.)
59
- //
60
-
61
- #include <windows.h>
62
- #include <assert.h>
63
- #include <vector>
64
-
65
- #include "TestUtil.cc"
66
-
67
- int main(int argc, char *argv[]) {
68
- long long width = 9000;
69
- long long height = 9000;
70
-
71
- assert(argc >= 1);
72
- if (argc == 4) {
73
- width = atoi(argv[2]);
74
- height = atoi(argv[3]);
75
- } else {
76
- if (argc == 3) {
77
- width = atoi(argv[1]);
78
- height = atoi(argv[2]);
79
- }
80
- wchar_t args[1024];
81
- swprintf(args, 1024, L"CHILD %lld %lld", width, height);
82
- startChildProcess(args);
83
- return 0;
84
- }
85
-
86
- const HANDLE conout = GetStdHandle(STD_OUTPUT_HANDLE);
87
-
88
- setWindowPos(0, 0, 1, 1);
89
- setBufferSize(width, height);
90
- setWindowPos(0, 0, std::min(80LL, width), std::min(50LL, height));
91
-
92
- setCursorPos(0, 0);
93
- printf("A");
94
- fflush(stdout);
95
- setCursorPos(width - 2, height - 1);
96
- printf("B");
97
- fflush(stdout);
98
-
99
- trace("sizeof(CHAR_INFO) = %d", (int)sizeof(CHAR_INFO));
100
-
101
- trace("Allocating buffer...");
102
- CHAR_INFO *buffer = new CHAR_INFO[width * height];
103
- assert(buffer != NULL);
104
- memset(&buffer[0], 0, sizeof(CHAR_INFO));
105
- memset(&buffer[width * height - 2], 0, sizeof(CHAR_INFO));
106
-
107
- COORD bufSize = { width, height };
108
- COORD bufCoord = { 0, 0 };
109
- SMALL_RECT readRegion = { 0, 0, width - 1, height - 1 };
110
- trace("ReadConsoleOutputW: calling...");
111
- BOOL success = ReadConsoleOutputW(conout, buffer, bufSize, bufCoord, &readRegion);
112
- trace("ReadConsoleOutputW: success=%d", success);
113
-
114
- assert(buffer[0].Char.UnicodeChar == L'A');
115
- assert(buffer[width * height - 2].Char.UnicodeChar == L'B');
116
- trace("Top-left and bottom-right characters read successfully!");
117
-
118
- Sleep(30000);
119
-
120
- delete [] buffer;
121
- return 0;
122
- }
@@ -1,56 +0,0 @@
1
- /*
2
- * Sending VK_PAUSE to the console window almost works as a mechanism for
3
- * pausing it, but it doesn't because the console could turn off the
4
- * ENABLE_LINE_INPUT console mode flag.
5
- */
6
-
7
- #define _WIN32_WINNT 0x0501
8
- #include <stdio.h>
9
- #include <stdlib.h>
10
- #include <windows.h>
11
-
12
- CALLBACK DWORD pausingThread(LPVOID dummy)
13
- {
14
- if (1) {
15
- Sleep(1000);
16
- HWND hwnd = GetConsoleWindow();
17
- SendMessage(hwnd, WM_KEYDOWN, VK_PAUSE, 1);
18
- Sleep(1000);
19
- SendMessage(hwnd, WM_KEYDOWN, VK_ESCAPE, 1);
20
- }
21
-
22
- if (0) {
23
- INPUT_RECORD ir;
24
- memset(&ir, 0, sizeof(ir));
25
- ir.EventType = KEY_EVENT;
26
- ir.Event.KeyEvent.bKeyDown = TRUE;
27
- ir.Event.KeyEvent.wVirtualKeyCode = VK_PAUSE;
28
- ir.Event.KeyEvent.wRepeatCount = 1;
29
- }
30
-
31
- return 0;
32
- }
33
-
34
- int main()
35
- {
36
- HANDLE hin = GetStdHandle(STD_INPUT_HANDLE);
37
- HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
38
- COORD c = { 0, 0 };
39
-
40
- DWORD mode;
41
- GetConsoleMode(hin, &mode);
42
- SetConsoleMode(hin, mode &
43
- ~(ENABLE_LINE_INPUT));
44
-
45
- CreateThread(NULL, 0,
46
- pausingThread, NULL,
47
- 0, NULL);
48
-
49
- int i = 0;
50
- while (true) {
51
- Sleep(100);
52
- printf("%d\n", ++i);
53
- }
54
-
55
- return 0;
56
- }
@@ -1,52 +0,0 @@
1
- /*
2
- * Demonstrates a conhost hang that occurs when widening the console buffer
3
- * while selection is in progress. The problem affects the new Windows 10
4
- * console, not the "legacy" console mode that Windows 10 also includes.
5
- *
6
- * First tested with:
7
- * - Windows 10.0.10240
8
- * - conhost.exe version 10.0.10240.16384
9
- * - ConhostV1.dll version 10.0.10240.16384
10
- * - ConhostV2.dll version 10.0.10240.16391
11
- */
12
-
13
- #include <windows.h>
14
- #include <stdio.h>
15
- #include <stdlib.h>
16
- #include <wchar.h>
17
-
18
- #include "TestUtil.cc"
19
-
20
- const int SC_CONSOLE_MARK = 0xFFF2;
21
- const int SC_CONSOLE_SELECT_ALL = 0xFFF5;
22
-
23
- int main(int argc, char *argv[]) {
24
- if (argc == 1) {
25
- startChildProcess(L"CHILD");
26
- return 0;
27
- }
28
-
29
- setWindowPos(0, 0, 1, 1);
30
- setBufferSize(80, 25);
31
- setWindowPos(0, 0, 80, 25);
32
-
33
- countDown(5);
34
-
35
- SendMessage(GetConsoleWindow(), WM_SYSCOMMAND, SC_CONSOLE_SELECT_ALL, 0);
36
- Sleep(2000);
37
-
38
- // This API call does not return. In the console window, the "Select All"
39
- // operation appears to end. The console window becomes non-responsive,
40
- // and the conhost.exe process must be killed from the Task Manager.
41
- // (Killing this test program or closing the console window is not
42
- // sufficient.)
43
- //
44
- // The same hang occurs whether line resizing is off or on. It happens
45
- // with both "Mark" and "Select All". Calling setBufferSize with the
46
- // existing buffer size does not hang, but calling it with only a changed
47
- // buffer height *does* hang. Calling setWindowPos does not hang.
48
- setBufferSize(120, 25);
49
-
50
- printf("Done...\n");
51
- Sleep(2000);
52
- }
@@ -1,57 +0,0 @@
1
- /*
2
- * Demonstrates some wrapping behaviors of the new Windows 10 console.
3
- */
4
-
5
- #include <windows.h>
6
- #include <stdio.h>
7
- #include <stdlib.h>
8
-
9
- #include "TestUtil.cc"
10
-
11
- int main(int argc, char *argv[]) {
12
- if (argc == 1) {
13
- startChildProcess(L"CHILD");
14
- return 0;
15
- }
16
-
17
- setWindowPos(0, 0, 1, 1);
18
- setBufferSize(40, 20);
19
- setWindowPos(0, 0, 40, 20);
20
-
21
- system("cls");
22
-
23
- repeatChar(39, 'A'); repeatChar(1, ' ');
24
- repeatChar(39, 'B'); repeatChar(1, ' ');
25
- printf("\n");
26
-
27
- repeatChar(39, 'C'); repeatChar(1, ' ');
28
- repeatChar(39, 'D'); repeatChar(1, ' ');
29
- printf("\n");
30
-
31
- repeatChar(40, 'E');
32
- repeatChar(40, 'F');
33
- printf("\n");
34
-
35
- repeatChar(39, 'G'); repeatChar(1, ' ');
36
- repeatChar(39, 'H'); repeatChar(1, ' ');
37
- printf("\n");
38
-
39
- Sleep(2000);
40
-
41
- setChar(39, 0, '*', 0x24);
42
- setChar(39, 1, '*', 0x24);
43
-
44
- setChar(39, 3, ' ', 0x24);
45
- setChar(39, 4, ' ', 0x24);
46
-
47
- setChar(38, 6, ' ', 0x24);
48
- setChar(38, 7, ' ', 0x24);
49
-
50
- Sleep(2000);
51
- setWindowPos(0, 0, 35, 20);
52
- setBufferSize(35, 20);
53
- trace("DONE");
54
-
55
- printf("Sleeping forever...\n");
56
- while(true) { Sleep(1000); }
57
- }
@@ -1,30 +0,0 @@
1
- #include <windows.h>
2
-
3
- #include "TestUtil.cc"
4
-
5
- int main(int argc, char *argv[]) {
6
- if (argc == 1) {
7
- startChildProcess(L"CHILD");
8
- return 0;
9
- }
10
-
11
- const int WIDTH = 25;
12
-
13
- setWindowPos(0, 0, 1, 1);
14
- setBufferSize(WIDTH, 40);
15
- setWindowPos(0, 0, WIDTH, 20);
16
-
17
- system("cls");
18
-
19
- for (int i = 0; i < 100; ++i) {
20
- printf("FOO(%d)\n", i);
21
- }
22
-
23
- repeatChar(5, '\n');
24
- repeatChar(WIDTH * 5, '.');
25
- repeatChar(10, '\n');
26
- setWindowPos(0, 20, WIDTH, 20);
27
- writeBox(0, 5, 1, 10, '|');
28
-
29
- Sleep(120000);
30
- }
@@ -1,26 +0,0 @@
1
- /*
2
- * A Win32 program that reads raw console input with ReadFile and echos
3
- * it to stdout.
4
- */
5
-
6
- #include <stdio.h>
7
- #include <conio.h>
8
- #include <windows.h>
9
-
10
- int main()
11
- {
12
- int count = 0;
13
- HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE);
14
- HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
15
- SetConsoleMode(hStdIn, 0);
16
-
17
- while (true) {
18
- DWORD actual;
19
- char ch;
20
- ReadFile(hStdIn, &ch, 1, &actual, NULL);
21
- printf("%02x ", ch);
22
- if (++count == 50)
23
- break;
24
- }
25
- return 0;
26
- }
@@ -1,19 +0,0 @@
1
- /*
2
- * A Win32 program that reads raw console input with getch and echos
3
- * it to stdout.
4
- */
5
-
6
- #include <stdio.h>
7
- #include <conio.h>
8
-
9
- int main()
10
- {
11
- int count = 0;
12
- while (true) {
13
- int ch = getch();
14
- printf("%02x ", ch);
15
- if (++count == 50)
16
- break;
17
- }
18
- return 0;
19
- }
@@ -1,46 +0,0 @@
1
- #define _WIN32_WINNT 0x0501
2
- #include "../src/shared/DebugClient.cc"
3
- #include <windows.h>
4
- #include <stdio.h>
5
-
6
- const int SC_CONSOLE_MARK = 0xFFF2;
7
-
8
- CALLBACK DWORD writerThread(void*)
9
- {
10
- while (true) {
11
- Sleep(1000);
12
- trace("writing");
13
- printf("X\n");
14
- trace("written");
15
- }
16
- }
17
-
18
- int main()
19
- {
20
- CreateThread(NULL, 0, writerThread, NULL, 0, NULL);
21
- trace("marking console");
22
- HWND hwnd = GetConsoleWindow();
23
- PostMessage(hwnd, WM_SYSCOMMAND, SC_CONSOLE_MARK, 0);
24
-
25
- Sleep(2000);
26
-
27
- trace("reading output");
28
- CHAR_INFO buf[1];
29
- COORD bufSize = { 1, 1 };
30
- COORD zeroCoord = { 0, 0 };
31
- SMALL_RECT readRect = { 0, 0, 0, 0 };
32
- ReadConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE),
33
- buf,
34
- bufSize,
35
- zeroCoord,
36
- &readRect);
37
- trace("done reading output");
38
-
39
- Sleep(2000);
40
-
41
- PostMessage(hwnd, WM_CHAR, 27, 0x00010001);
42
-
43
- Sleep(1100);
44
-
45
- return 0;
46
- }
@@ -1,70 +0,0 @@
1
- /*
2
- * This test demonstrates that putting a console into selection mode does not
3
- * block the low-level console APIs, even though it blocks WriteFile.
4
- */
5
-
6
- #define _WIN32_WINNT 0x0501
7
- #include "../src/shared/DebugClient.cc"
8
- #include <windows.h>
9
- #include <stdio.h>
10
-
11
- const int SC_CONSOLE_MARK = 0xFFF2;
12
-
13
- CALLBACK DWORD writerThread(void*)
14
- {
15
- CHAR_INFO xChar, fillChar;
16
- memset(&xChar, 0, sizeof(xChar));
17
- xChar.Char.AsciiChar = 'X';
18
- xChar.Attributes = 7;
19
- memset(&fillChar, 0, sizeof(fillChar));
20
- fillChar.Char.AsciiChar = ' ';
21
- fillChar.Attributes = 7;
22
- COORD oneCoord = { 1, 1 };
23
- COORD zeroCoord = { 0, 0 };
24
-
25
- while (true) {
26
- SMALL_RECT writeRegion = { 5, 5, 5, 5 };
27
- WriteConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE),
28
- &xChar, oneCoord,
29
- zeroCoord,
30
- &writeRegion);
31
- Sleep(500);
32
- SMALL_RECT scrollRect = { 1, 1, 20, 20 };
33
- COORD destCoord = { 0, 0 };
34
- ScrollConsoleScreenBuffer(GetStdHandle(STD_OUTPUT_HANDLE),
35
- &scrollRect,
36
- NULL,
37
- destCoord,
38
- &fillChar);
39
- }
40
- }
41
-
42
- int main()
43
- {
44
- CreateThread(NULL, 0, writerThread, NULL, 0, NULL);
45
- trace("marking console");
46
- HWND hwnd = GetConsoleWindow();
47
- PostMessage(hwnd, WM_SYSCOMMAND, SC_CONSOLE_MARK, 0);
48
-
49
- Sleep(2000);
50
-
51
- trace("reading output");
52
- CHAR_INFO buf[1];
53
- COORD bufSize = { 1, 1 };
54
- COORD zeroCoord = { 0, 0 };
55
- SMALL_RECT readRect = { 0, 0, 0, 0 };
56
- ReadConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE),
57
- buf,
58
- bufSize,
59
- zeroCoord,
60
- &readRect);
61
- trace("done reading output");
62
-
63
- Sleep(2000);
64
-
65
- PostMessage(hwnd, WM_CHAR, 27, 0x00010001);
66
-
67
- Sleep(1100);
68
-
69
- return 0;
70
- }
@@ -1,78 +0,0 @@
1
- /*
2
- * Creates a window station and starts a process under it. The new process
3
- * also gets a new console.
4
- */
5
-
6
- #include <windows.h>
7
- #include <string.h>
8
- #include <stdio.h>
9
-
10
- int main()
11
- {
12
- BOOL success;
13
-
14
- SECURITY_ATTRIBUTES sa;
15
- memset(&sa, 0, sizeof(sa));
16
- sa.bInheritHandle = TRUE;
17
-
18
- HWINSTA originalStation = GetProcessWindowStation();
19
- printf("originalStation == 0x%x\n", originalStation);
20
- HWINSTA station = CreateWindowStation(NULL,
21
- 0,
22
- WINSTA_ALL_ACCESS,
23
- &sa);
24
- printf("station == 0x%x\n", station);
25
- if (!SetProcessWindowStation(station))
26
- printf("SetWindowStation failed!\n");
27
- HDESK desktop = CreateDesktop("Default", NULL, NULL,
28
- /*dwFlags=*/0, GENERIC_ALL,
29
- &sa);
30
- printf("desktop = 0x%x\n", desktop);
31
-
32
- char stationName[256];
33
- stationName[0] = '\0';
34
- success = GetUserObjectInformation(station, UOI_NAME,
35
- stationName, sizeof(stationName),
36
- NULL);
37
- printf("stationName = [%s]\n", stationName);
38
-
39
- char startupDesktop[256];
40
- sprintf(startupDesktop, "%s\\Default", stationName);
41
-
42
- STARTUPINFO sui;
43
- PROCESS_INFORMATION pi;
44
- memset(&sui, 0, sizeof(sui));
45
- memset(&pi, 0, sizeof(pi));
46
- sui.cb = sizeof(STARTUPINFO);
47
- sui.lpDesktop = startupDesktop;
48
-
49
- // Start a cmd subprocess, and have it start its own cmd subprocess.
50
- // Both subprocesses will connect to the same non-interactive window
51
- // station.
52
-
53
- const char program[] = "c:\\windows\\system32\\cmd.exe";
54
- char cmdline[256];
55
- sprintf(cmdline, "%s /c cmd", program);
56
- success = CreateProcess(program,
57
- cmdline,
58
- NULL,
59
- NULL,
60
- /*bInheritHandles=*/FALSE,
61
- /*dwCreationFlags=*/CREATE_NEW_CONSOLE,
62
- NULL, NULL,
63
- &sui,
64
- &pi);
65
-
66
- printf("pid == %d\n", pi.dwProcessId);
67
-
68
- // This sleep is necessary. We must give the child enough time to
69
- // connect to the specified window station.
70
- Sleep(5000);
71
-
72
- SetProcessWindowStation(originalStation);
73
- CloseWindowStation(station);
74
- CloseDesktop(desktop);
75
- Sleep(5000);
76
-
77
- return 0;
78
- }
@@ -1,44 +0,0 @@
1
- /*
2
- * A Win32 program that scrolls and writes to the console using the ioctl-like
3
- * interface.
4
- */
5
-
6
- #include <stdio.h>
7
- #include <windows.h>
8
-
9
- int main()
10
- {
11
- HANDLE conout = GetStdHandle(STD_OUTPUT_HANDLE);
12
-
13
- for (int i = 0; i < 80; ++i) {
14
-
15
- CONSOLE_SCREEN_BUFFER_INFO info;
16
- GetConsoleScreenBufferInfo(conout, &info);
17
-
18
- SMALL_RECT src = { 0, 1, info.dwSize.X - 1, info.dwSize.Y - 1 };
19
- COORD destOrigin = { 0, 0 };
20
- CHAR_INFO fillCharInfo = { 0 };
21
- fillCharInfo.Char.AsciiChar = ' ';
22
- fillCharInfo.Attributes = 7;
23
- ScrollConsoleScreenBuffer(conout,
24
- &src,
25
- NULL,
26
- destOrigin,
27
- &fillCharInfo);
28
-
29
- CHAR_INFO buffer = { 0 };
30
- buffer.Char.AsciiChar = 'X';
31
- buffer.Attributes = 7;
32
- COORD bufferSize = { 1, 1 };
33
- COORD bufferCoord = { 0, 0 };
34
- SMALL_RECT writeRegion = { 0, 0, 0, 0 };
35
- writeRegion.Left = writeRegion.Right = i;
36
- writeRegion.Top = writeRegion.Bottom = 5;
37
- WriteConsoleOutput(conout,
38
- &buffer, bufferSize, bufferCoord,
39
- &writeRegion);
40
-
41
- Sleep(250);
42
- }
43
- return 0;
44
- }
@@ -1,27 +0,0 @@
1
- // I noticed this on the ConEmu web site:
2
- //
3
- // https://social.msdn.microsoft.com/Forums/en-US/40c8e395-cca9-45c8-b9b8-2fbe6782ac2b/readconsoleoutput-cause-access-violation-writing-location-exception
4
- // https://conemu.github.io/en/MicrosoftBugs.html
5
- //
6
- // In Windows 7, 8, and 8.1, a ReadConsoleOutputW with an out-of-bounds read
7
- // region crashes the application. I have reproduced the problem on Windows 8
8
- // and 8.1, but not on Windows 7.
9
- //
10
-
11
- #include <windows.h>
12
-
13
- #include "TestUtil.cc"
14
-
15
- int main() {
16
- setWindowPos(0, 0, 1, 1);
17
- setBufferSize(80, 25);
18
- setWindowPos(0, 0, 80, 25);
19
-
20
- const HANDLE conout = openConout();
21
- static CHAR_INFO lineBuf[80];
22
- SMALL_RECT readRegion = { 0, 999, 79, 999 };
23
- const BOOL ret = ReadConsoleOutputW(conout, lineBuf, {80, 1}, {0, 0}, &readRegion);
24
- ASSERT(!ret && "ReadConsoleOutputW should have failed");
25
-
26
- return 0;
27
- }