curses 1.3.2 → 1.4.0

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 (249) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +19 -0
  3. data/.github/workflows/ubuntu.yml +26 -0
  4. data/.github/workflows/windows.yml +28 -0
  5. data/History.md +6 -0
  6. data/README.md +4 -1
  7. data/Rakefile +0 -86
  8. data/curses.gemspec +2 -3
  9. data/ext/curses/curses.c +3 -1
  10. data/ext/curses/extconf.rb +81 -22
  11. data/lib/curses.rb +5 -12
  12. data/vendor/PDCurses/.gitignore +47 -0
  13. data/vendor/PDCurses/.travis.yml +49 -0
  14. data/vendor/PDCurses/CMakeLists.txt +68 -0
  15. data/vendor/PDCurses/HISTORY.md +2036 -0
  16. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  17. data/vendor/PDCurses/README.md +77 -0
  18. data/vendor/PDCurses/acs_defs.h +265 -0
  19. data/vendor/PDCurses/appveyor.yml +218 -0
  20. data/vendor/PDCurses/cmake/README.md +71 -0
  21. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  22. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  23. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  24. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  25. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  26. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  27. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  28. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  29. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  30. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  31. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  32. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  33. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  34. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  35. data/vendor/PDCurses/curses.h +1846 -0
  36. data/vendor/PDCurses/curspriv.h +134 -0
  37. data/vendor/PDCurses/demos/README.md +25 -0
  38. data/vendor/PDCurses/demos/firework.c +144 -0
  39. data/vendor/PDCurses/demos/newtest.c +581 -0
  40. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  41. data/vendor/PDCurses/demos/ptest.c +283 -0
  42. data/vendor/PDCurses/demos/rain.c +157 -0
  43. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  44. data/vendor/PDCurses/demos/tui.c +1048 -0
  45. data/vendor/PDCurses/demos/tui.h +65 -0
  46. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  47. data/vendor/PDCurses/demos/version.c +61 -0
  48. data/vendor/PDCurses/demos/worm.c +432 -0
  49. data/vendor/PDCurses/demos/xmas.c +955 -0
  50. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  51. data/vendor/PDCurses/dos/Makefile.bcc +83 -0
  52. data/vendor/PDCurses/dos/Makefile.dmc +257 -0
  53. data/vendor/PDCurses/dos/Makefile.msc +113 -0
  54. data/vendor/PDCurses/dos/Makefile.wcc +107 -0
  55. data/vendor/PDCurses/dos/README.md +51 -0
  56. data/vendor/PDCurses/dos/bccdos.lrf +9 -0
  57. data/vendor/PDCurses/dos/mscdos.lrf +50 -0
  58. data/vendor/PDCurses/dos/pdcclip.c +132 -0
  59. data/vendor/PDCurses/dos/pdcdisp.c +135 -0
  60. data/vendor/PDCurses/dos/pdcdos.h +194 -0
  61. data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
  62. data/vendor/PDCurses/dos/pdckbd.c +513 -0
  63. data/vendor/PDCurses/dos/pdcscrn.c +785 -0
  64. data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
  65. data/vendor/PDCurses/dos/pdcutil.c +212 -0
  66. data/vendor/PDCurses/libobjs.mif +26 -0
  67. data/vendor/PDCurses/makedist.mif +20 -0
  68. data/vendor/PDCurses/man/README.md +21 -0
  69. data/vendor/PDCurses/man/intro.md +361 -0
  70. data/vendor/PDCurses/man/manext.c +119 -0
  71. data/vendor/PDCurses/man/sdl.md +152 -0
  72. data/vendor/PDCurses/man/sdl2.md +58 -0
  73. data/vendor/PDCurses/man/x11.md +407 -0
  74. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  75. data/vendor/PDCurses/ncurses/README.md +26 -0
  76. data/vendor/PDCurses/ncurses/makefile +29 -0
  77. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  78. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  79. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  80. data/vendor/PDCurses/os2/README.md +43 -0
  81. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  82. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  83. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  84. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  85. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  86. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  87. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  88. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  89. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  90. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  91. data/vendor/PDCurses/panel.h +56 -0
  92. data/vendor/PDCurses/pdcurses/README.md +25 -0
  93. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  94. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  95. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  96. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  97. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  98. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  99. data/vendor/PDCurses/pdcurses/border.c +411 -0
  100. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  101. data/vendor/PDCurses/pdcurses/color.c +298 -0
  102. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  103. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  104. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  105. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  106. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  107. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  108. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  109. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  110. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  111. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  112. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  113. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  114. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  115. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  116. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  117. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  118. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  119. data/vendor/PDCurses/pdcurses/move.c +57 -0
  120. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  121. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  122. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  123. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  124. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  125. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  126. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  127. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  128. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  129. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  130. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  131. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  132. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  133. data/vendor/PDCurses/pdcurses/util.c +312 -0
  134. data/vendor/PDCurses/pdcurses/window.c +569 -0
  135. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  136. data/vendor/PDCurses/sdl1/README.md +31 -0
  137. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  138. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  139. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  140. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  141. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  142. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  143. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  144. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  145. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  146. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  147. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  148. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
  149. data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
  150. data/vendor/PDCurses/sdl2/README.md +34 -0
  151. data/vendor/PDCurses/sdl2/deffont.h +385 -0
  152. data/vendor/PDCurses/sdl2/deficon.h +23 -0
  153. data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
  154. data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
  155. data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
  156. data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
  157. data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
  158. data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
  159. data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
  160. data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
  161. data/vendor/PDCurses/sdl2/sdltest.c +81 -0
  162. data/vendor/PDCurses/term.h +48 -0
  163. data/vendor/PDCurses/version.mif +7 -0
  164. data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
  165. data/vendor/PDCurses/vt/Makefile.bcc +111 -0
  166. data/vendor/PDCurses/vt/Makefile.dmc +258 -0
  167. data/vendor/PDCurses/vt/Makefile.vc +144 -0
  168. data/vendor/PDCurses/vt/Makefile.wcc +107 -0
  169. data/vendor/PDCurses/vt/README.md +64 -0
  170. data/vendor/PDCurses/vt/pdcclip.c +20 -0
  171. data/vendor/PDCurses/vt/pdcdisp.c +284 -0
  172. data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
  173. data/vendor/PDCurses/vt/pdckbd.c +394 -0
  174. data/vendor/PDCurses/vt/pdcscrn.c +434 -0
  175. data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
  176. data/vendor/PDCurses/vt/pdcutil.c +43 -0
  177. data/vendor/PDCurses/vt/pdcvt.h +16 -0
  178. data/vendor/PDCurses/watcom.mif +68 -0
  179. data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
  180. data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
  181. data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
  182. data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
  183. data/vendor/PDCurses/wincon/Makefile.mng +176 -0
  184. data/vendor/PDCurses/wincon/Makefile.vc +144 -0
  185. data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
  186. data/vendor/PDCurses/wincon/README.md +85 -0
  187. data/vendor/PDCurses/wincon/pdcclip.c +174 -0
  188. data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
  189. data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
  190. data/vendor/PDCurses/wincon/pdckbd.c +786 -0
  191. data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
  192. data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
  193. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  194. data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
  195. data/vendor/PDCurses/wincon/pdcutil.c +41 -0
  196. data/vendor/PDCurses/wincon/pdcwin.h +31 -0
  197. data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
  198. data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
  199. data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
  200. data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
  201. data/vendor/PDCurses/wingui/Makefile.mng +171 -0
  202. data/vendor/PDCurses/wingui/Makefile.vc +144 -0
  203. data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
  204. data/vendor/PDCurses/wingui/README.md +93 -0
  205. data/vendor/PDCurses/wingui/pdcclip.c +174 -0
  206. data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
  207. data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
  208. data/vendor/PDCurses/wingui/pdckbd.c +143 -0
  209. data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
  210. data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
  211. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  212. data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
  213. data/vendor/PDCurses/wingui/pdcutil.c +61 -0
  214. data/vendor/PDCurses/wingui/pdcwin.h +122 -0
  215. data/vendor/PDCurses/x11/Makefile.in +754 -0
  216. data/vendor/PDCurses/x11/PDCurses.spec +82 -0
  217. data/vendor/PDCurses/x11/README.md +62 -0
  218. data/vendor/PDCurses/x11/ScrollBox.c +319 -0
  219. data/vendor/PDCurses/x11/ScrollBox.h +51 -0
  220. data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
  221. data/vendor/PDCurses/x11/aclocal.m4 +994 -0
  222. data/vendor/PDCurses/x11/big_icon.xbm +46 -0
  223. data/vendor/PDCurses/x11/compose.h +201 -0
  224. data/vendor/PDCurses/x11/config.guess +1500 -0
  225. data/vendor/PDCurses/x11/config.h.in +100 -0
  226. data/vendor/PDCurses/x11/config.sub +1616 -0
  227. data/vendor/PDCurses/x11/configure +6700 -0
  228. data/vendor/PDCurses/x11/configure.ac +295 -0
  229. data/vendor/PDCurses/x11/debian/changelog +6 -0
  230. data/vendor/PDCurses/x11/debian/compat +1 -0
  231. data/vendor/PDCurses/x11/debian/control +11 -0
  232. data/vendor/PDCurses/x11/debian/copyright +27 -0
  233. data/vendor/PDCurses/x11/debian/rules +98 -0
  234. data/vendor/PDCurses/x11/install-sh +253 -0
  235. data/vendor/PDCurses/x11/little_icon.xbm +14 -0
  236. data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
  237. data/vendor/PDCurses/x11/pdcclip.c +173 -0
  238. data/vendor/PDCurses/x11/pdcdisp.c +85 -0
  239. data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
  240. data/vendor/PDCurses/x11/pdckbd.c +104 -0
  241. data/vendor/PDCurses/x11/pdcscrn.c +258 -0
  242. data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
  243. data/vendor/PDCurses/x11/pdcutil.c +52 -0
  244. data/vendor/PDCurses/x11/pdcx11.c +316 -0
  245. data/vendor/PDCurses/x11/pdcx11.h +191 -0
  246. data/vendor/PDCurses/x11/sb.c +155 -0
  247. data/vendor/PDCurses/x11/x11.c +3686 -0
  248. data/vendor/PDCurses/x11/xcurses-config.in +81 -0
  249. metadata +254 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3dc6c1993c3ebe20eb4e46e30773476f8644a174cc438eb5518113d5b67f816
4
- data.tar.gz: 24f0c4505ce46d75e45d26003920b6cd03809e29d3d8384b5f243cd1ec15c473
3
+ metadata.gz: ab24f57e39b3e38b5b9833d34f9bf5d6c2d55337f59693c628e30aa1f4f7324e
4
+ data.tar.gz: a91a892d3c975670cccda3d99a5d7b7a9b0ff8e708aedaf87a2d57cc505d6338
5
5
  SHA512:
6
- metadata.gz: ea5cf9b18d0dbb6d95f7695dda34f7ebc47eb3385d5c0501a2adbccc67a3151c79777712b0dee96e1985077c1feb8d68ba2ba570addd507ca2356830f431bf49
7
- data.tar.gz: e13765a7885c62940a4d0579e5b3c41dd9be710d84208e848cbea7b4f6b3270e2518eeb0be202f6728d4d7c311ab4dabcbc61a6da32b3b402fed61fa75dad784
6
+ metadata.gz: eff7ca406eeb081d6dcac3fe394e44577fdfdfa41428ecfb2068fd7de5288204df78081ff1e5bc41f5594c43194e8b20797ae6361cf7ffa028faf7301b085dd9
7
+ data.tar.gz: d06b2e6d23e5eaac2b5c42cc9b433ef6e5ea25961e28dbe760d51b3fee5aadb2d5f68e76e1a7b1b066ecbcdc129b079c00e7e8427d7e31f4fe65950239eae9b5
@@ -0,0 +1,19 @@
1
+ name: macos
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: macos-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Install dependencies
11
+ run: |
12
+ gem install bundler --no-document
13
+ bundle install
14
+ - name: Build package
15
+ run: bundle exec rake build
16
+ - name: Install package
17
+ run: |
18
+ gem install pkg/curses-*.gem
19
+ ruby -r curses -e 'puts Curses::VERSION'
@@ -0,0 +1,26 @@
1
+ name: ubuntu
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ test:
7
+ strategy:
8
+ matrix:
9
+ ruby: [ head, 2.7, 2.6, 2.5 ]
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: ${{ matrix.ruby }}
16
+ - name: Install dependencies
17
+ run: |
18
+ sudo apt install libncursesw5-dev
19
+ gem install bundler --no-document
20
+ bundle install
21
+ - name: Build package
22
+ run: bundle exec rake build
23
+ - name: Install package
24
+ run: |
25
+ gem install pkg/curses-*.gem
26
+ ruby -r curses -e 'puts Curses::VERSION'
@@ -0,0 +1,28 @@
1
+ name: windows
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: windows-latest
8
+ strategy:
9
+ matrix:
10
+ ruby: [ '2.7.x', '2.6.x', '2.5.x' ]
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ with:
14
+ submodules: true
15
+ - name: Set up Ruby
16
+ uses: actions/setup-ruby@v1
17
+ with:
18
+ ruby-version: ${{ matrix.ruby }}
19
+ - name: Install dependencies
20
+ run: |
21
+ gem install bundler --no-document
22
+ bundle install
23
+ - name: Build package
24
+ run: bundle exec rake build
25
+ - name: Install package
26
+ run: |
27
+ gem install pkg/curses-*.gem
28
+ ruby -r curses -e 'puts Curses::VERSION'
data/History.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### 1.4.0 / 2020-12-10
2
+
3
+ New features:
4
+
5
+ * Remove fat binary support for newer versions of Ruby
6
+
1
7
  ### 1.3.2 / 2019-12-20
2
8
 
3
9
  Bug fixes:
data/README.md CHANGED
@@ -18,7 +18,7 @@ with the release of Ruby 2.1.0. (see [ruby/ruby@9c5b2fd][2])
18
18
  ## Install
19
19
 
20
20
  $ gem install curses
21
-
21
+
22
22
  Requires ncurses or ncursesw (with wide character support).
23
23
  On Debian based distributions, you can install it with apt:
24
24
 
@@ -28,6 +28,9 @@ Or
28
28
 
29
29
  $ apt install libncursesw5-dev
30
30
 
31
+ On mingw, `gem install curses` will install pre-built PDCurses, so you
32
+ don't need to install extra libraries.
33
+
31
34
  ## Documentation
32
35
 
33
36
  See [https://www.rubydoc.info/gems/curses](https://www.rubydoc.info/gems/curses).
data/Rakefile CHANGED
@@ -1,89 +1,3 @@
1
1
  require "bundler"
2
2
 
3
3
  Bundler::GemHelper.install_tasks
4
-
5
- begin
6
- require 'rake/extensiontask'
7
- rescue LoadError => e
8
- warn "\nmissing #{e.path} (for rake-compiler)" if e.respond_to? :path
9
- warn "run: bundle install\n\n"
10
- end
11
-
12
- $mswin = /mswin/ =~ RUBY_PLATFORM
13
-
14
- CLOBBER.include("vendor/#{RUBY_PLATFORM}") if $mswin
15
- CLOBBER.include("vendor/x86-mingw32")
16
- CLOBBER.include("vendor/x64-mingw32")
17
- CLOBBER.include("lib/2.*")
18
- CLOBBER.include("pkg")
19
-
20
- namespace :build do
21
- desc "Build PDCurses"
22
- task :pdcurses do
23
- mkdir_p "vendor/#{RUBY_PLATFORM}/PDCurses" if $mswin
24
- mkdir_p "vendor/x86-mingw32/PDCurses"
25
- mkdir_p "vendor/x64-mingw32/PDCurses"
26
- chdir "vendor/PDCurses/wincon" do
27
- if $mswin
28
- sh "nmake -f Makefile.vc clean all WIDE=Y DLL=Y"
29
- cp %w[pdcurses.dll pdcurses.lib], "../../#{RUBY_PLATFORM}/PDCurses"
30
- else
31
- sh "make -f Makefile.mng clean all WIDE=Y DLL=N"
32
- cp "pdcurses.a", "../../x86-mingw32/PDCurses/libpdcurses.a"
33
-
34
- sh "make -f Makefile.mng clean all _w64=1 WIDE=Y DLL=N"
35
- cp "pdcurses.a", "../../x64-mingw32/PDCurses/libpdcurses.a"
36
- end
37
- end
38
- end
39
- end
40
-
41
- namespace :clean do
42
- desc "Clean PDCurses"
43
- task :pdcurses do
44
- chdir "vendor/PDCurses/wincon" do
45
- if $mswin
46
- sh "nmake -f Makefile.vc clean"
47
- else
48
- sh "make -f Makefile.mng clean _linux_w64=1"
49
- end
50
- end
51
- end
52
- end
53
-
54
- spec = eval(File.read(File.expand_path("curses.gemspec", __dir__)))
55
- Rake::ExtensionTask.new(spec.name, spec) do |ext|
56
- if $mswin
57
- ext.config_options << '--with-curses-include=' +
58
- File.expand_path("vendor/PDCurses", __dir__) +
59
- ' --with-curses-version=function --enable-pdcurses-wide' +
60
- ' --enable-pdcurses-dll' +
61
- ' --with-curses-lib=' +
62
- File.expand_path("vendor/#{RUBY_PLATFORM}/PDCurses", __dir__)
63
- spec.files += ["vendor/#{RUBY_PLATFORM}/PDCurses/pdcurses.dll"]
64
- end
65
-
66
- ext.cross_compile = true
67
- ext.cross_platform = ["x86-mingw32", "x64-mingw32"]
68
- ext.cross_config_options << '--with-curses-include=' +
69
- File.expand_path("vendor/PDCurses", __dir__) +
70
- ' --with-curses-version=function --enable-pdcurses-wide'
71
- ext.cross_config_options << {
72
- 'x86-mingw32' => '--with-curses-lib=' +
73
- File.expand_path("vendor/x86-mingw32/PDCurses", __dir__),
74
- 'x64-mingw32' => '--with-curses-lib=' +
75
- File.expand_path("vendor/x64-mingw32/PDCurses", __dir__)
76
- }
77
- if $mswin
78
- ext.cross_compiling do |_spec|
79
- bin_file = "vendor/#{_spec.platform}/PDCurses/pdcurses.dll"
80
- _spec.files += [bin_file]
81
- stage_file = "#{ext.tmp_dir}/#{_spec.platform}/stage/#{bin_file}"
82
- stage_dir = File.dirname(stage_file)
83
- directory stage_dir
84
- file stage_file => [stage_dir, bin_file] do
85
- cp bin_file, stage_file
86
- end
87
- end
88
- end
89
- end
@@ -1,17 +1,16 @@
1
1
  Gem::Specification.new { |s|
2
2
  s.name = "curses"
3
- s.version = "1.3.2"
3
+ s.version = "1.4.0"
4
4
  s.author = ["Shugo Maeda", 'Eric Hodel']
5
5
  s.email = ["shugo@ruby-lang.org", 'drbrain@segment7.net']
6
6
  s.homepage = "https://github.com/ruby/curses"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.summary = "A Ruby binding for curses, ncurses, and PDCurses. curses is an extension library for text UI applications. Formerly part of the Ruby standard library, [curses was removed and placed in this gem][1] with the release of Ruby 2.1.0. (see [ruby/ruby@9c5b2fd][2])"
9
- s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(vendor)/}) }
9
+ s.files = `git ls-files --recurse-submodules -z`.split("\x0")
10
10
  s.extensions = ["ext/curses/extconf.rb"]
11
11
  s.require_path = "lib"
12
12
  s.required_ruby_version = Gem::Requirement.new('>= 2.1.0')
13
13
  s.licenses = ['Ruby', 'BSD-2-Clause']
14
14
  s.add_development_dependency 'bundler'
15
15
  s.add_development_dependency 'rake'
16
- s.add_development_dependency 'rake-compiler'
17
16
  }
@@ -20,7 +20,9 @@
20
20
  #include "ruby/io.h"
21
21
  #include "ruby/thread.h"
22
22
 
23
- #if defined(HAVE_NCURSESW_CURSES_H)
23
+ #if defined(HAVE_PDCURSES_H)
24
+ # include <pdcurses.h>
25
+ #elif defined(HAVE_NCURSESW_CURSES_H)
24
26
  # include <ncursesw/curses.h>
25
27
  #elif defined(HAVE_NCURSES_CURSES_H)
26
28
  # include <ncurses/curses.h>
@@ -1,5 +1,6 @@
1
1
  require 'mkmf'
2
2
  require 'shellwords'
3
+ require 'fileutils'
3
4
 
4
5
  def have_all(*args)
5
6
  old_libs = $libs.dup
@@ -22,7 +23,68 @@ def have_all(*args)
22
23
  end
23
24
  end
24
25
 
25
- dir_config('curses')
26
+ def exec_command(cmd)
27
+ puts "> #{cmd}"
28
+ if !system(cmd)
29
+ STDERR.puts("External command failed")
30
+ exit 1
31
+ end
32
+ end
33
+
34
+ $library_candidates = [
35
+ ["ncursesw/curses.h", ["ncursesw"]],
36
+ ["ncurses.h", ["ncursesw", "ncurses"]],
37
+ ["ncurses/curses.h", ["ncurses"]],
38
+ ["curses_colr/curses.h", ["cur_colr"]],
39
+ ["curses.h", ["curses", "pdcurses"]],
40
+ # ["xcurses.h", ["XCurses"]], # XCurses (PDCurses for X11)
41
+ ]
42
+
43
+ $mingw = /mingw/ =~ RUBY_PLATFORM
44
+ $mswin = /mswin/ =~ RUBY_PLATFORM
45
+ $windows = $mingw || $mswin
46
+ $x64 = /x64/ =~ RUBY_PLATFORM
47
+ $use_system_libs = arg_config('--use-system-libraries',
48
+ ENV.key?("CURSES_USE_SYSTEM_LIBRARIES"))
49
+ $idefault = nil
50
+ $ldefault = nil
51
+ $pdcurses_wide_default = nil
52
+ $pdcurses_dll_default = nil
53
+ $curses_version_default = nil
54
+ $use_bundled_pdcurses = !$use_system_libs && /mingw|mswin/ =~ RUBY_PLATFORM
55
+ if $use_bundled_pdcurses
56
+ $pdcurses_wide_default = true
57
+ $curses_version_default = "function"
58
+ pdcurses_dir = File.expand_path("../../vendor/PDCurses", __dir__)
59
+ $idefault = $ldefault = pdcurses_dir
60
+ wincon_dir = File.expand_path("wincon", pdcurses_dir)
61
+ old_dir = Dir.pwd
62
+ Dir.chdir(wincon_dir)
63
+ begin
64
+ if $mswin
65
+ exec_command "nmake -f Makefile.vc clean all WIDE=Y DLL=Y"
66
+ FileUtils.cp("pdcurses.dll", pdcurses_dir)
67
+ FileUtils.cp("pdcurses.lib", pdcurses_dir)
68
+ $pdcurses_dll_default = true
69
+ else
70
+ if $x64
71
+ exec_command "make -f Makefile.mng clean all _w64=1 WIDE=Y DLL=N"
72
+ else
73
+ exec_command "make -f Makefile.mng clean all WIDE=Y DLL=N"
74
+ end
75
+ FileUtils.cp("pdcurses.a", File.expand_path("libpdcurses.a", pdcurses_dir))
76
+ end
77
+ ensure
78
+ Dir.chdir(old_dir)
79
+ end
80
+ FileUtils.cp(File.expand_path("curses.h", pdcurses_dir),
81
+ File.expand_path("pdcurses.h", pdcurses_dir))
82
+ $library_candidates = [
83
+ ["pdcurses.h", ["pdcurses"]]
84
+ ]
85
+ end
86
+
87
+ dir_config('curses', $idefault, $ldefault)
26
88
  dir_config('ncurses')
27
89
  dir_config('termcap')
28
90
 
@@ -32,14 +94,7 @@ have_library("tinfow", "tgetent") ||
32
94
  have_library("termcap", "tgetent")
33
95
 
34
96
  header_library = nil
35
- [
36
- ["ncursesw/curses.h", ["ncursesw"]],
37
- ["ncurses.h", ["ncursesw", "ncurses"]],
38
- ["ncurses/curses.h", ["ncurses"]],
39
- ["curses_colr/curses.h", ["cur_colr"]],
40
- ["curses.h", ["curses", "pdcurses"]],
41
- # ["xcurses.h", ["XCurses"]], # XCurses (PDCurses for X11)
42
- ].each {|hdr, libs|
97
+ $library_candidates.each {|hdr, libs|
43
98
  header_library = have_all(
44
99
  lambda { have_header(hdr) && hdr },
45
100
  lambda {|h| libs.find {|lib| have_library(lib, "initscr", h) } })
@@ -89,8 +144,8 @@ if header_library
89
144
  # --with-curses-version=function for SVR4
90
145
  # --with-curses-version=variable for ncurses and PDcurses
91
146
  # (not given) automatically determined
92
-
93
- case with_curses_version = with_config("curses-version")
147
+ with_curses_version = with_config("curses-version", $curses_version_default)
148
+ case with_curses_version
94
149
  when "function"
95
150
  $defs << '-DHAVE_FUNC_CURSES_VERSION'
96
151
  when "variable"
@@ -136,27 +191,29 @@ if header_library
136
191
  warn "unexpected value for --with-curses-version: #{with_curses_version}"
137
192
  end
138
193
 
139
- if enable_config("pdcurses-wide")
194
+ if enable_config("pdcurses-wide", $pdcurses_wide_default)
140
195
  $defs << '-DPDC_WIDE'
141
196
  end
142
197
 
143
- if enable_config("pdcurses-dll")
198
+ if enable_config("pdcurses-dll", $pdcurses_dll_default)
144
199
  $defs << '-DPDC_DLL_BUILD'
145
200
  end
146
201
 
147
- if (have_header("ncursesw/menu.h") ||
148
- have_header("ncurses/menu.h") ||
149
- have_header("curses/menu.h") ||
150
- have_header("menu.h")) &&
202
+ if !$use_bundled_pdcurses &&
203
+ (have_header("ncursesw/menu.h") ||
204
+ have_header("ncurses/menu.h") ||
205
+ have_header("curses/menu.h") ||
206
+ have_header("menu.h")) &&
151
207
  (have_library("menuw", "new_menu") ||
152
208
  have_library("menu", "new_menu"))
153
209
  $defs << '-DHAVE_MENU'
154
210
  end
155
211
 
156
- if (have_header("ncursesw/form.h") ||
157
- have_header("ncurses/form.h") ||
158
- have_header("curses/form.h") ||
159
- have_header("form.h")) &&
212
+ if !$use_bundled_pdcurses &&
213
+ (have_header("ncursesw/form.h") ||
214
+ have_header("ncurses/form.h") ||
215
+ have_header("curses/form.h") ||
216
+ have_header("form.h")) &&
160
217
  (have_library("formw", "new_form") ||
161
218
  have_library("form", "new_form"))
162
219
  $defs << '-DHAVE_FORM'
@@ -166,7 +223,9 @@ if header_library
166
223
  ["WINDOW", "MEVENT", "ITEM", "MENU", "FIELD", "FORM"].each do |type|
167
224
  checking_for("sizeof(#{type}) is available") {
168
225
  if try_compile(<<EOF, Shellwords.join($defs))
169
- #if defined(HAVE_NCURSESW_CURSES_H)
226
+ #if defined(HAVE_PDCURSES_H)
227
+ # include <pdcurses.h>
228
+ #elif defined(HAVE_NCURSESW_CURSES_H)
170
229
  # include <ncursesw/curses.h>
171
230
  #elif defined(HAVE_NCURSES_CURSES_H)
172
231
  # include <ncurses/curses.h>
@@ -1,24 +1,17 @@
1
- platform = RUBY_PLATFORM.sub(/i[3-7]86/, "x86")
2
- pdcurses_path = File.expand_path("../vendor/#{platform}/PDCurses", __dir__)
3
- pdcurses_bundled = File.directory?(pdcurses_path)
4
- if pdcurses_bundled
1
+ pdcurses_dll = File.expand_path("../vendor/PDCurses/pdcurses.dll", __dir__)
2
+ if File.exist?(pdcurses_dll)
5
3
  path = ENV["PATH"]
6
4
  dir = File::ALT_SEPARATOR ?
7
- pdcurses_path.tr("/", File::ALT_SEPARATOR) : dir
5
+ File.dirname(pdcurses_dll).tr("/", File::ALT_SEPARATOR) : dir
8
6
  dirs = path.split(File::PATH_SEPARATOR)
9
7
  if !dirs.include?(dir)
10
8
  ENV["PATH"] = [dir, *dirs].join(File::PATH_SEPARATOR)
11
9
  end
12
10
  end
13
11
 
14
- begin
15
- major, minor, _ = RUBY_VERSION.split(/\./)
16
- require "#{major}.#{minor}/curses.so"
17
- rescue LoadError
18
- require "curses.so"
19
- end
12
+ require "curses.so"
20
13
 
21
- if pdcurses_bundled
14
+ if /mingw|mswin/ =~ RUBY_PLATFORM
22
15
  Curses.keyboard_encoding = Encoding::UTF_8
23
16
  end
24
17
 
@@ -0,0 +1,47 @@
1
+ *.[oa]
2
+ *.exe
3
+ firework
4
+ manext
5
+ libXCurses.so
6
+ ozdemo
7
+ newtest
8
+ ptest
9
+ rain
10
+ sdltest
11
+ testcurs
12
+ tuidemo
13
+ worm
14
+ xmas
15
+ *.sho
16
+ Makefile
17
+ config.h
18
+ config.log
19
+ config.status
20
+ PDCurses.md
21
+ xcurses-config
22
+ *.dll
23
+ wingui.gif
24
+ wingui.htm
25
+ *.bat
26
+ clock.c
27
+ clock1.c
28
+ fullscrn.c
29
+ hello
30
+ hello.c
31
+ wingui/wcr*
32
+ wingui/wct*
33
+ wingui/wc_*
34
+ wingui/wcw*
35
+ wingui/z*
36
+ wingui/scr2html.c
37
+ wingui/newtest*
38
+ wingui/*.sav
39
+ wingui/*.def
40
+ wincon/*.def
41
+ *.obj
42
+ *.bak
43
+ *.map
44
+ *.lib
45
+ m
46
+ .vscode
47
+ build