curses 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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