curses 1.4.6 → 1.5.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 (254) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/push_gem.yml +6 -4
  3. data/README.md +8 -1
  4. data/curses.gemspec +2 -2
  5. data/ext/curses/curses.c +188 -12
  6. data/ext/curses/extconf.rb +3 -2
  7. data/lib/curses.rb +7 -0
  8. data/sample/attr_demo.rb +4 -2
  9. data/sample/screen.rb +9 -0
  10. data/vendor/PDCurses/.gitignore +47 -0
  11. data/vendor/PDCurses/.travis.yml +49 -0
  12. data/vendor/PDCurses/CMakeLists.txt +68 -0
  13. data/vendor/PDCurses/HISTORY.md +2036 -0
  14. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  15. data/vendor/PDCurses/Makefile +27 -0
  16. data/vendor/PDCurses/README.md +77 -0
  17. data/vendor/PDCurses/acs_defs.h +265 -0
  18. data/vendor/PDCurses/appveyor.yml +218 -0
  19. data/vendor/PDCurses/cmake/README.md +71 -0
  20. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  21. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  22. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  23. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  24. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  25. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  26. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  27. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  28. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  29. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  30. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  31. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  32. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  33. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  34. data/vendor/PDCurses/curses.h +1846 -0
  35. data/vendor/PDCurses/curspriv.h +134 -0
  36. data/vendor/PDCurses/demos/README.md +25 -0
  37. data/vendor/PDCurses/demos/firework.c +144 -0
  38. data/vendor/PDCurses/demos/newtest.c +581 -0
  39. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  40. data/vendor/PDCurses/demos/ptest.c +283 -0
  41. data/vendor/PDCurses/demos/rain.c +157 -0
  42. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  43. data/vendor/PDCurses/demos/tui.c +1048 -0
  44. data/vendor/PDCurses/demos/tui.h +65 -0
  45. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  46. data/vendor/PDCurses/demos/version.c +61 -0
  47. data/vendor/PDCurses/demos/worm.c +432 -0
  48. data/vendor/PDCurses/demos/xmas.c +955 -0
  49. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  50. data/vendor/PDCurses/dos/Makefile +105 -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/Makefile +37 -0
  69. data/vendor/PDCurses/man/README.md +21 -0
  70. data/vendor/PDCurses/man/intro.md +361 -0
  71. data/vendor/PDCurses/man/manext.c +119 -0
  72. data/vendor/PDCurses/man/sdl.md +152 -0
  73. data/vendor/PDCurses/man/sdl2.md +58 -0
  74. data/vendor/PDCurses/man/x11.md +407 -0
  75. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  76. data/vendor/PDCurses/ncurses/README.md +26 -0
  77. data/vendor/PDCurses/ncurses/makefile +29 -0
  78. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  79. data/vendor/PDCurses/os2/Makefile +132 -0
  80. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  81. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  82. data/vendor/PDCurses/os2/README.md +43 -0
  83. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  84. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  85. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  86. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  87. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  88. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  89. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  90. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  91. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  92. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  93. data/vendor/PDCurses/panel.h +56 -0
  94. data/vendor/PDCurses/pdcurses/README.md +25 -0
  95. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  96. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  97. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  98. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  99. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  100. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  101. data/vendor/PDCurses/pdcurses/border.c +411 -0
  102. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  103. data/vendor/PDCurses/pdcurses/color.c +298 -0
  104. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  105. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  106. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  107. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  108. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  109. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  110. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  111. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  112. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  113. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  114. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  115. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  116. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  117. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  118. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  119. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  120. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  121. data/vendor/PDCurses/pdcurses/move.c +57 -0
  122. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  123. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  124. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  125. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  126. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  127. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  128. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  129. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  130. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  131. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  132. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  133. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  134. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  135. data/vendor/PDCurses/pdcurses/util.c +312 -0
  136. data/vendor/PDCurses/pdcurses/window.c +569 -0
  137. data/vendor/PDCurses/sdl1/Makefile +129 -0
  138. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  139. data/vendor/PDCurses/sdl1/README.md +31 -0
  140. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  141. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  142. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  143. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  144. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  145. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  146. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  147. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  148. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  149. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  150. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  151. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
  152. data/vendor/PDCurses/sdl2/Makefile +135 -0
  153. data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
  154. data/vendor/PDCurses/sdl2/README.md +34 -0
  155. data/vendor/PDCurses/sdl2/deffont.h +385 -0
  156. data/vendor/PDCurses/sdl2/deficon.h +23 -0
  157. data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
  158. data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
  159. data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
  160. data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
  161. data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
  162. data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
  163. data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
  164. data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
  165. data/vendor/PDCurses/sdl2/sdltest.c +81 -0
  166. data/vendor/PDCurses/term.h +48 -0
  167. data/vendor/PDCurses/version.mif +7 -0
  168. data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
  169. data/vendor/PDCurses/vt/Makefile +135 -0
  170. data/vendor/PDCurses/vt/Makefile.bcc +111 -0
  171. data/vendor/PDCurses/vt/Makefile.dmc +258 -0
  172. data/vendor/PDCurses/vt/Makefile.vc +144 -0
  173. data/vendor/PDCurses/vt/Makefile.wcc +107 -0
  174. data/vendor/PDCurses/vt/README.md +64 -0
  175. data/vendor/PDCurses/vt/pdcclip.c +20 -0
  176. data/vendor/PDCurses/vt/pdcdisp.c +284 -0
  177. data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
  178. data/vendor/PDCurses/vt/pdckbd.c +394 -0
  179. data/vendor/PDCurses/vt/pdcscrn.c +434 -0
  180. data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
  181. data/vendor/PDCurses/vt/pdcutil.c +43 -0
  182. data/vendor/PDCurses/vt/pdcvt.h +16 -0
  183. data/vendor/PDCurses/watcom.mif +68 -0
  184. data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
  185. data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
  186. data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
  187. data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
  188. data/vendor/PDCurses/wincon/Makefile.mng +176 -0
  189. data/vendor/PDCurses/wincon/Makefile.vc +144 -0
  190. data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
  191. data/vendor/PDCurses/wincon/README.md +85 -0
  192. data/vendor/PDCurses/wincon/pdcclip.c +174 -0
  193. data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
  194. data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
  195. data/vendor/PDCurses/wincon/pdckbd.c +786 -0
  196. data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
  197. data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
  198. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  199. data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
  200. data/vendor/PDCurses/wincon/pdcutil.c +41 -0
  201. data/vendor/PDCurses/wincon/pdcwin.h +31 -0
  202. data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
  203. data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
  204. data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
  205. data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
  206. data/vendor/PDCurses/wingui/Makefile.mng +171 -0
  207. data/vendor/PDCurses/wingui/Makefile.vc +144 -0
  208. data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
  209. data/vendor/PDCurses/wingui/README.md +93 -0
  210. data/vendor/PDCurses/wingui/pdcclip.c +174 -0
  211. data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
  212. data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
  213. data/vendor/PDCurses/wingui/pdckbd.c +143 -0
  214. data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
  215. data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
  216. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  217. data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
  218. data/vendor/PDCurses/wingui/pdcutil.c +61 -0
  219. data/vendor/PDCurses/wingui/pdcwin.h +122 -0
  220. data/vendor/PDCurses/x11/Makefile.in +754 -0
  221. data/vendor/PDCurses/x11/PDCurses.spec +82 -0
  222. data/vendor/PDCurses/x11/README.md +62 -0
  223. data/vendor/PDCurses/x11/ScrollBox.c +319 -0
  224. data/vendor/PDCurses/x11/ScrollBox.h +51 -0
  225. data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
  226. data/vendor/PDCurses/x11/aclocal.m4 +994 -0
  227. data/vendor/PDCurses/x11/big_icon.xbm +46 -0
  228. data/vendor/PDCurses/x11/compose.h +201 -0
  229. data/vendor/PDCurses/x11/config.guess +1500 -0
  230. data/vendor/PDCurses/x11/config.h.in +100 -0
  231. data/vendor/PDCurses/x11/config.sub +1616 -0
  232. data/vendor/PDCurses/x11/configure +6700 -0
  233. data/vendor/PDCurses/x11/configure.ac +295 -0
  234. data/vendor/PDCurses/x11/debian/changelog +6 -0
  235. data/vendor/PDCurses/x11/debian/compat +1 -0
  236. data/vendor/PDCurses/x11/debian/control +11 -0
  237. data/vendor/PDCurses/x11/debian/copyright +27 -0
  238. data/vendor/PDCurses/x11/debian/rules +98 -0
  239. data/vendor/PDCurses/x11/install-sh +253 -0
  240. data/vendor/PDCurses/x11/little_icon.xbm +14 -0
  241. data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
  242. data/vendor/PDCurses/x11/pdcclip.c +173 -0
  243. data/vendor/PDCurses/x11/pdcdisp.c +85 -0
  244. data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
  245. data/vendor/PDCurses/x11/pdckbd.c +104 -0
  246. data/vendor/PDCurses/x11/pdcscrn.c +258 -0
  247. data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
  248. data/vendor/PDCurses/x11/pdcutil.c +52 -0
  249. data/vendor/PDCurses/x11/pdcx11.c +316 -0
  250. data/vendor/PDCurses/x11/pdcx11.h +191 -0
  251. data/vendor/PDCurses/x11/sb.c +155 -0
  252. data/vendor/PDCurses/x11/x11.c +3686 -0
  253. data/vendor/PDCurses/x11/xcurses-config.in +81 -0
  254. metadata +249 -8
@@ -0,0 +1,51 @@
1
+ PDCurses for DOS
2
+ ================
3
+
4
+ This directory contains PDCurses source code files specific to DOS.
5
+
6
+
7
+ Building
8
+ --------
9
+
10
+ - Choose the appropriate makefile for your compiler:
11
+
12
+ Makefile - DJGPP V2
13
+ Makefile.bcc - Borland C++ 3.0+
14
+ Makefile.wcc - Open Watcom 1.8+ (16-bit or 32-bit)
15
+ Makefile.dmc - Digital Mars
16
+ Makefile.msc - Microsoft C
17
+
18
+ - For 16-bit compilers, you can change the memory MODEL in the makefile.
19
+ (Large model is the default, and recommended.)
20
+
21
+ (For Open Watcom, pass MODEL=f (flat model) to "wmake" in order to use
22
+ the 32-bit compiler. Selcting a 16-bit MODEL (e.g. MODEL=l) will
23
+ invoke the 16-bit compiler.)
24
+
25
+ - Optionally, you can build in a different directory than the platform
26
+ directory by setting PDCURSES_SRCDIR to point to the directory where
27
+ you unpacked PDCurses, and changing to your target directory:
28
+
29
+ set PDCURSES_SRCDIR=c:\pdcurses
30
+
31
+ - Build it:
32
+
33
+ make -f makefile
34
+
35
+ (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll
36
+ get the libraries (pdcurses.lib or .a, depending on your compiler; and
37
+ panel.lib or .a), the demos (*.exe), and a lot of object files.
38
+
39
+
40
+ Distribution Status
41
+ -------------------
42
+
43
+ The files in this directory are released to the Public Domain.
44
+
45
+
46
+ Acknowledgements
47
+ ----------------
48
+
49
+ Watcom C port was provided by Pieter Kunst <kunst@prl.philips.nl>
50
+
51
+ DJGPP 1.x port was provided by David Nugent <davidn@csource.oz.au>
@@ -0,0 +1,9 @@
1
+ +addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj &
2
+ +border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj &
3
+ +getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj &
4
+ +inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj &
5
+ +mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj &
6
+ +printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj &
7
+ +termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj &
8
+ +pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj &
9
+ +pdcsetsc.obj +pdcutil.obj ,lib.map
@@ -0,0 +1,50 @@
1
+ -+addch.obj &
2
+ -+addchstr.obj &
3
+ -+addstr.obj &
4
+ -+attr.obj &
5
+ -+beep.obj &
6
+ -+bkgd.obj &
7
+ -+border.obj &
8
+ -+clear.obj &
9
+ -+color.obj &
10
+ -+delch.obj &
11
+ -+deleteln.obj &
12
+ -+deprec.obj &
13
+ -+getch.obj &
14
+ -+getstr.obj &
15
+ -+getyx.obj &
16
+ -+inch.obj &
17
+ -+inchstr.obj &
18
+ -+initscr.obj &
19
+ -+inopts.obj &
20
+ -+insch.obj &
21
+ -+insstr.obj &
22
+ -+instr.obj &
23
+ -+kernel.obj &
24
+ -+keyname.obj &
25
+ -+mouse.obj &
26
+ -+move.obj &
27
+ -+outopts.obj &
28
+ -+overlay.obj &
29
+ -+pad.obj &
30
+ -+panel.obj &
31
+ -+printw.obj &
32
+ -+refresh.obj &
33
+ -+scanw.obj &
34
+ -+scr_dump.obj &
35
+ -+scroll.obj &
36
+ -+slk.obj &
37
+ -+termattr.obj &
38
+ -+terminfo.obj &
39
+ -+touch.obj &
40
+ -+util.obj &
41
+ -+window.obj &
42
+ -+debug.obj &
43
+ -+pdcclip.obj &
44
+ -+pdcdisp.obj &
45
+ -+pdcgetsc.obj &
46
+ -+pdckbd.obj &
47
+ -+pdcscrn.obj &
48
+ -+pdcsetsc.obj &
49
+ -+pdcutil.obj &
50
+ ,lib.map;
@@ -0,0 +1,132 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcdos.h"
4
+
5
+ #include <stdlib.h>
6
+
7
+ /*man-start**************************************************************
8
+
9
+ clipboard
10
+ ---------
11
+
12
+ ### Synopsis
13
+
14
+ int PDC_getclipboard(char **contents, long *length);
15
+ int PDC_setclipboard(const char *contents, long length);
16
+ int PDC_freeclipboard(char *contents);
17
+ int PDC_clearclipboard(void);
18
+
19
+ ### Description
20
+
21
+ PDC_getclipboard() gets the textual contents of the system's
22
+ clipboard. This function returns the contents of the clipboard
23
+ in the contents argument. It is the responsibilitiy of the
24
+ caller to free the memory returned, via PDC_freeclipboard().
25
+ The length of the clipboard contents is returned in the length
26
+ argument.
27
+
28
+ PDC_setclipboard copies the supplied text into the system's
29
+ clipboard, emptying the clipboard prior to the copy.
30
+
31
+ PDC_clearclipboard() clears the internal clipboard.
32
+
33
+ ### Return Values
34
+
35
+ indicator of success/failure of call.
36
+ PDC_CLIP_SUCCESS the call was successful
37
+ PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
38
+ the clipboard contents
39
+ PDC_CLIP_EMPTY the clipboard contains no text
40
+ PDC_CLIP_ACCESS_ERROR no clipboard support
41
+
42
+ ### Portability
43
+ X/Open BSD SYS V
44
+ PDC_getclipboard - - -
45
+ PDC_setclipboard - - -
46
+ PDC_freeclipboard - - -
47
+ PDC_clearclipboard - - -
48
+
49
+ **man-end****************************************************************/
50
+
51
+ /* global clipboard contents, should be NULL if none set */
52
+
53
+ static char *pdc_DOS_clipboard = NULL;
54
+
55
+ int PDC_getclipboard(char **contents, long *length)
56
+ {
57
+ int len;
58
+
59
+ PDC_LOG(("PDC_getclipboard() - called\n"));
60
+
61
+ if (!pdc_DOS_clipboard)
62
+ return PDC_CLIP_EMPTY;
63
+
64
+ len = strlen(pdc_DOS_clipboard);
65
+ if ((*contents = malloc(len + 1)) == NULL)
66
+ return PDC_CLIP_MEMORY_ERROR;
67
+
68
+ strcpy(*contents, pdc_DOS_clipboard);
69
+ *length = len;
70
+
71
+ return PDC_CLIP_SUCCESS;
72
+ }
73
+
74
+ int PDC_setclipboard(const char *contents, long length)
75
+ {
76
+ PDC_LOG(("PDC_setclipboard() - called\n"));
77
+
78
+ if (pdc_DOS_clipboard)
79
+ {
80
+ free(pdc_DOS_clipboard);
81
+ pdc_DOS_clipboard = NULL;
82
+ }
83
+
84
+ if (contents)
85
+ {
86
+ if ((pdc_DOS_clipboard = malloc(length + 1)) == NULL)
87
+ return PDC_CLIP_MEMORY_ERROR;
88
+
89
+ strcpy(pdc_DOS_clipboard, contents);
90
+ }
91
+
92
+ return PDC_CLIP_SUCCESS;
93
+ }
94
+
95
+ int PDC_freeclipboard(char *contents)
96
+ {
97
+ PDC_LOG(("PDC_freeclipboard() - called\n"));
98
+
99
+ /* should we also free empty the system clipboard? probably not */
100
+
101
+ if (contents)
102
+ {
103
+
104
+ /* NOTE: We free the memory, but we can not set caller's pointer
105
+ to NULL, so if caller calls again then will try to access
106
+ free'd memory. We 1st overwrite memory with a string so if
107
+ caller tries to use free memory they won't get what they
108
+ expect & hopefully notice. */
109
+
110
+ /* memset(contents, 0xFD, strlen(contents)); */
111
+
112
+ if (strlen(contents) >= strlen("PDCURSES"))
113
+ strcpy(contents, "PDCURSES");
114
+
115
+ free(contents);
116
+ }
117
+
118
+ return PDC_CLIP_SUCCESS;
119
+ }
120
+
121
+ int PDC_clearclipboard(void)
122
+ {
123
+ PDC_LOG(("PDC_clearclipboard() - called\n"));
124
+
125
+ if (pdc_DOS_clipboard)
126
+ {
127
+ free(pdc_DOS_clipboard);
128
+ pdc_DOS_clipboard = NULL;
129
+ }
130
+
131
+ return PDC_CLIP_SUCCESS;
132
+ }
@@ -0,0 +1,135 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcdos.h"
4
+
5
+ /* ACS definitions originally by jshumate@wrdis01.robins.af.mil -- these
6
+ match code page 437 and compatible pages (CP850, CP852, etc.) */
7
+
8
+ #ifdef CHTYPE_LONG
9
+ #define USE_UNICODE_ACS_CHARS 0
10
+ #include "acs_defs.h"
11
+ #endif
12
+
13
+ #ifdef __PACIFIC__
14
+ void movedata(unsigned sseg, unsigned soff, unsigned dseg,
15
+ unsigned doff, unsigned n)
16
+ {
17
+ far char *src = MK_FP(sseg, soff);
18
+ far char *dst = MK_FP(dseg, doff);
19
+
20
+ while (n--)
21
+ *dst++ = *src++;
22
+ }
23
+ #endif
24
+
25
+ /* position hardware cursor at (y, x) */
26
+
27
+ void PDC_gotoyx(int row, int col)
28
+ {
29
+ PDCREGS regs;
30
+
31
+ PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
32
+
33
+ regs.h.ah = 0x02;
34
+ regs.h.bh = 0;
35
+ regs.h.dh = (unsigned char) row;
36
+ regs.h.dl = (unsigned char) col;
37
+ PDCINT(0x10, regs);
38
+ }
39
+
40
+ /* update the given physical line to look like the corresponding line in
41
+ curscr */
42
+
43
+ /* NOTE: the original indexing into pdc_atrtab[] relied on three or five
44
+ attribute bits in 'chtype' being adjacent to the color bits. Such is
45
+ not the case for 64-bit chtypes (CHTYPE_LONG == 2), so we have to do
46
+ additional bit-fiddling for that situation. Code is similar in Win32
47
+ and DOS flavors. (BJG) */
48
+
49
+ void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
50
+ {
51
+ int j;
52
+
53
+ PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
54
+
55
+ if (pdc_direct_video)
56
+ {
57
+ #if SMALL || MEDIUM
58
+ # ifndef __PACIFIC__
59
+ struct SREGS segregs;
60
+ # endif
61
+ int ds;
62
+ #endif
63
+ /* this should be enough for the maximum width of a screen */
64
+
65
+ struct {unsigned char text, attr;} temp_line[256];
66
+
67
+ /* replace the attribute part of the chtype with the actual
68
+ color value for each chtype in the line */
69
+
70
+ for (j = 0; j < len; j++)
71
+ {
72
+ chtype ch = srcp[j];
73
+
74
+ #if defined( CHTYPE_LONG) && (CHTYPE_LONG >= 2)
75
+ temp_line[j].attr = pdc_atrtab[((ch >> PDC_ATTR_SHIFT) & 0x1f)
76
+ | (((ch >> PDC_COLOR_SHIFT) & 0xff) << 5)];
77
+ #else
78
+ temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
79
+ #endif
80
+
81
+ #ifdef CHTYPE_LONG
82
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
83
+ ch = acs_map[ch & 0x7f];
84
+ #endif
85
+ temp_line[j].text = ch & 0xff;
86
+ }
87
+
88
+ #ifdef __DJGPP__
89
+ dosmemput(temp_line, len * 2,
90
+ (unsigned long)_FAR_POINTER(pdc_video_seg,
91
+ pdc_video_ofs + (lineno * curscr->_maxx + x) * 2));
92
+ #else
93
+ # if SMALL || MEDIUM
94
+ # ifdef __PACIFIC__
95
+ ds = FP_SEG((void far *) temp_line);
96
+ # else
97
+ segread(&segregs);
98
+ ds = segregs.ds;
99
+ # endif
100
+ movedata(ds, (int)temp_line, pdc_video_seg,
101
+ pdc_video_ofs + (lineno * curscr->_maxx + x) * 2, len * 2);
102
+ # else
103
+ memcpy((void *)_FAR_POINTER(pdc_video_seg,
104
+ pdc_video_ofs + (lineno * curscr->_maxx + x) * 2),
105
+ temp_line, len * 2);
106
+ # endif
107
+ #endif
108
+
109
+ }
110
+ else
111
+ for (j = 0; j < len;)
112
+ {
113
+ PDCREGS regs;
114
+ unsigned short count = 1;
115
+ chtype ch = srcp[j];
116
+
117
+ while ((j + count < len) && (ch == srcp[j + count]))
118
+ count++;
119
+
120
+ PDC_gotoyx(lineno, j + x);
121
+
122
+ regs.h.ah = 0x09;
123
+ regs.W.bx = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
124
+ regs.W.cx = count;
125
+ #ifdef CHTYPE_LONG
126
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
127
+ ch = acs_map[ch & 0x7f];
128
+ #endif
129
+ regs.h.al = (unsigned char) (ch & 0xff);
130
+
131
+ PDCINT(0x10, regs);
132
+
133
+ j += count;
134
+ }
135
+ }
@@ -0,0 +1,194 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include <curspriv.h>
4
+ #include <string.h>
5
+
6
+ # if(CHTYPE_LONG >= 2) /* 64-bit chtypes */
7
+ # define PDC_ATTR_SHIFT 23
8
+ # else
9
+ #ifdef CHTYPE_LONG /* 32-bit chtypes */
10
+ # define PDC_ATTR_SHIFT 19
11
+ #else /* 16-bit chtypes */
12
+ # define PDC_ATTR_SHIFT 8
13
+ #endif
14
+ #endif
15
+
16
+ #if defined(_MSC_VER) || defined(_QC)
17
+ # define MSC 1
18
+ #endif
19
+
20
+ #if defined(__PACIFIC__) && !defined(__SMALL__)
21
+ # define __SMALL__
22
+ #endif
23
+
24
+ #if defined(__HIGHC__) || MSC
25
+ # include <bios.h>
26
+ #endif
27
+
28
+ /*----------------------------------------------------------------------
29
+ * MEMORY MODEL SUPPORT:
30
+ *
31
+ * MODELS
32
+ * TINY cs,ds,ss all in 1 segment (not enough memory!)
33
+ * SMALL cs:1 segment, ds:1 segment
34
+ * MEDIUM cs:many segments, ds:1 segment
35
+ * COMPACT cs:1 segment, ds:many segments
36
+ * LARGE cs:many segments, ds:many segments
37
+ * HUGE cs:many segments, ds:segments > 64K
38
+ */
39
+
40
+ #ifdef __TINY__
41
+ # define SMALL 1
42
+ #endif
43
+ #ifdef __SMALL__
44
+ # define SMALL 1
45
+ #endif
46
+ #ifdef __MEDIUM__
47
+ # define MEDIUM 1
48
+ #endif
49
+ #ifdef __COMPACT__
50
+ # define COMPACT 1
51
+ #endif
52
+ #ifdef __LARGE__
53
+ # define LARGE 1
54
+ #endif
55
+ #ifdef __HUGE__
56
+ # define HUGE 1
57
+ #endif
58
+
59
+ #include <dos.h>
60
+
61
+ extern unsigned char *pdc_atrtab;
62
+ extern int pdc_adapter;
63
+ extern int pdc_scrnmode;
64
+ extern int pdc_font;
65
+ extern bool pdc_direct_video;
66
+ extern bool pdc_bogus_adapter;
67
+ extern unsigned pdc_video_seg;
68
+ extern unsigned pdc_video_ofs;
69
+
70
+ #ifdef __DJGPP__ /* Note: works only in plain DOS... */
71
+ # if DJGPP == 2
72
+ # define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o)))
73
+ # else
74
+ # define _FAR_POINTER(s,o) (0xe0000000 + (((int)(s)) << 4) + ((int)(o)))
75
+ # endif
76
+ # define _FP_SEGMENT(p) (unsigned short)((((long)p) >> 4) & 0xffff)
77
+ #else
78
+ # ifdef __TURBOC__
79
+ # define _FAR_POINTER(s,o) MK_FP(s,o)
80
+ # else
81
+ # if defined(__WATCOMC__) && defined(__FLAT__)
82
+ # define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o)))
83
+ # else
84
+ # define _FAR_POINTER(s,o) (((long)s << 16) | (long)o)
85
+ # endif
86
+ # endif
87
+ # define _FP_SEGMENT(p) (unsigned short)(((long)p) >> 4)
88
+ #endif
89
+ #define _FP_OFFSET(p) ((unsigned short)p & 0x000f)
90
+
91
+ #ifdef __DJGPP__
92
+ # include <sys/movedata.h>
93
+ unsigned char getdosmembyte(int offs);
94
+ unsigned short getdosmemword(int offs);
95
+ unsigned long getdosmemdword(int offs);
96
+ void setdosmembyte(int offs, unsigned char b);
97
+ void setdosmemword(int offs, unsigned short w);
98
+ #else
99
+ # if SMALL || MEDIUM || MSC
100
+ # define PDC_FAR far
101
+ # else
102
+ # define PDC_FAR
103
+ # endif
104
+ # define getdosmembyte(offs) \
105
+ (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs)))
106
+ # define getdosmemword(offs) \
107
+ (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs)))
108
+ # define getdosmemdword(offs) \
109
+ (*((unsigned long PDC_FAR *) _FAR_POINTER(0,offs)))
110
+ # define setdosmembyte(offs,x) \
111
+ (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs)) = (x))
112
+ # define setdosmemword(offs,x) \
113
+ (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs)) = (x))
114
+ #endif
115
+
116
+ #if defined(__WATCOMC__) && defined(__386__)
117
+
118
+ typedef union
119
+ {
120
+ struct
121
+ {
122
+ unsigned long edi, esi, ebp, res, ebx, edx, ecx, eax;
123
+ } d;
124
+
125
+ struct
126
+ {
127
+ unsigned short di, di_hi, si, si_hi, bp, bp_hi, res, res_hi,
128
+ bx, bx_hi, dx, dx_hi, cx, cx_hi, ax, ax_hi,
129
+ flags, es, ds, fs, gs, ip, cs, sp, ss;
130
+ } w;
131
+
132
+ struct
133
+ {
134
+ unsigned char edi[4], esi[4], ebp[4], res[4],
135
+ bl, bh, ebx_b2, ebx_b3, dl, dh, edx_b2, edx_b3,
136
+ cl, ch, ecx_b2, ecx_b3, al, ah, eax_b2, eax_b3;
137
+ } h;
138
+ } pdc_dpmi_regs;
139
+
140
+ void PDC_dpmi_int(int, pdc_dpmi_regs *);
141
+
142
+ #endif
143
+
144
+ #ifdef __DJGPP__
145
+ # include <dpmi.h>
146
+ # define PDCREGS __dpmi_regs
147
+ # define PDCINT(vector, regs) __dpmi_int(vector, &regs)
148
+ #else
149
+ # ifdef __WATCOMC__
150
+ # ifdef __386__
151
+ # define PDCREGS pdc_dpmi_regs
152
+ # define PDCINT(vector, regs) PDC_dpmi_int(vector, &regs)
153
+ # else
154
+ # define PDCREGS union REGPACK
155
+ # define PDCINT(vector, regs) intr(vector, &regs)
156
+ # endif
157
+ # else
158
+ # define PDCREGS union REGS
159
+ # define PDCINT(vector, regs) int86(vector, &regs, &regs)
160
+ # endif
161
+ #endif
162
+
163
+ /* Wide registers in REGS: w or x? */
164
+
165
+ #ifdef __WATCOMC__
166
+ # define W w
167
+ #else
168
+ # define W x
169
+ #endif
170
+
171
+ /* Monitor (terminal) type information */
172
+
173
+ enum
174
+ {
175
+ _NONE, _MDA, _CGA,
176
+ _EGACOLOR = 0x04, _EGAMONO,
177
+ _VGACOLOR = 0x07, _VGAMONO,
178
+ _MCGACOLOR = 0x0a, _MCGAMONO,
179
+ _MDS_GENIUS = 0x30
180
+ };
181
+
182
+ /* Text-mode font size information */
183
+
184
+ enum
185
+ {
186
+ _FONT8 = 8,
187
+ _FONT14 = 14,
188
+ _FONT15, /* GENIUS */
189
+ _FONT16
190
+ };
191
+
192
+ #ifdef __PACIFIC__
193
+ void movedata(unsigned, unsigned, unsigned, unsigned, unsigned);
194
+ #endif
@@ -0,0 +1,98 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcdos.h"
4
+
5
+ #include <stdlib.h>
6
+
7
+ /* return width of screen/viewport */
8
+
9
+ int PDC_get_columns(void)
10
+ {
11
+ PDCREGS regs;
12
+ int cols;
13
+ const char *env_cols;
14
+
15
+ PDC_LOG(("PDC_get_columns() - called\n"));
16
+
17
+ /* use the value from COLS environment variable, if set. MH 10-Jun-92 */
18
+ /* and use the minimum of COLS and return from int10h MH 18-Jun-92 */
19
+
20
+ regs.h.ah = 0x0f;
21
+ PDCINT(0x10, regs);
22
+ cols = (int)regs.h.ah;
23
+
24
+ env_cols = getenv("COLS");
25
+
26
+ if (env_cols)
27
+ cols = min(atoi(env_cols), cols);
28
+
29
+ PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols));
30
+
31
+ return cols;
32
+ }
33
+
34
+ /* get the cursor size/shape */
35
+
36
+ int PDC_get_cursor_mode(void)
37
+ {
38
+ PDC_LOG(("PDC_get_cursor_mode() - called\n"));
39
+
40
+ return getdosmemword(0x460);
41
+ }
42
+
43
+ /* return number of screen rows */
44
+
45
+ int PDC_get_rows(void)
46
+ {
47
+ const char *env_rows;
48
+ int rows;
49
+
50
+ PDC_LOG(("PDC_get_rows() - called\n"));
51
+
52
+ /* use the value from LINES environment variable, if set. MH 10-Jun-92 */
53
+ /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */
54
+
55
+ rows = getdosmembyte(0x484) + 1;
56
+ env_rows = getenv("LINES");
57
+
58
+ if (env_rows)
59
+ rows = min(atoi(env_rows), rows);
60
+
61
+ if (rows == 1 && pdc_adapter == _MDS_GENIUS)
62
+ rows = 66;
63
+ if (rows == 1 && pdc_adapter == _MDA)
64
+ rows = 25;
65
+
66
+ if (rows == 1)
67
+ {
68
+ rows = 25;
69
+ pdc_direct_video = FALSE;
70
+ }
71
+
72
+ switch (pdc_adapter)
73
+ {
74
+ case _EGACOLOR:
75
+ case _EGAMONO:
76
+ switch (rows)
77
+ {
78
+ case 25:
79
+ case 43:
80
+ break;
81
+ default:
82
+ rows = 25;
83
+ }
84
+ break;
85
+
86
+ case _VGACOLOR:
87
+ case _VGAMONO:
88
+ break;
89
+
90
+ default:
91
+ rows = 25;
92
+ break;
93
+ }
94
+
95
+ PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows));
96
+
97
+ return rows;
98
+ }