node-pty 1.2.0-beta.6 → 1.2.0-beta.8

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