curses 1.3.0 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) 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 +25 -0
  5. data/History.md +34 -0
  6. data/README.md +14 -46
  7. data/Rakefile +0 -86
  8. data/curses.gemspec +2 -3
  9. data/ext/curses/curses.c +70 -58
  10. data/ext/curses/extconf.rb +134 -21
  11. data/lib/curses.rb +5 -12
  12. data/sample/addch.rb +16 -0
  13. data/sample/attr_demo.rb +32 -0
  14. data/sample/colors.rb +26 -0
  15. data/sample/menu.rb +3 -3
  16. data/sample/mouse_move.rb +75 -0
  17. data/vendor/PDCurses/.gitignore +47 -0
  18. data/vendor/PDCurses/.travis.yml +49 -0
  19. data/vendor/PDCurses/CMakeLists.txt +68 -0
  20. data/vendor/PDCurses/HISTORY.md +2036 -0
  21. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  22. data/vendor/PDCurses/README.md +77 -0
  23. data/vendor/PDCurses/acs_defs.h +265 -0
  24. data/vendor/PDCurses/appveyor.yml +218 -0
  25. data/vendor/PDCurses/cmake/README.md +71 -0
  26. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  27. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  28. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  29. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  30. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  31. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  32. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  33. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  34. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  35. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  36. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  37. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  38. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  39. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  40. data/vendor/PDCurses/curses.h +1846 -0
  41. data/vendor/PDCurses/curspriv.h +134 -0
  42. data/vendor/PDCurses/demos/README.md +25 -0
  43. data/vendor/PDCurses/demos/firework.c +144 -0
  44. data/vendor/PDCurses/demos/newtest.c +581 -0
  45. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  46. data/vendor/PDCurses/demos/ptest.c +283 -0
  47. data/vendor/PDCurses/demos/rain.c +157 -0
  48. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  49. data/vendor/PDCurses/demos/tui.c +1048 -0
  50. data/vendor/PDCurses/demos/tui.h +65 -0
  51. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  52. data/vendor/PDCurses/demos/version.c +61 -0
  53. data/vendor/PDCurses/demos/worm.c +432 -0
  54. data/vendor/PDCurses/demos/xmas.c +955 -0
  55. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  56. data/vendor/PDCurses/dos/Makefile.bcc +83 -0
  57. data/vendor/PDCurses/dos/Makefile.dmc +257 -0
  58. data/vendor/PDCurses/dos/Makefile.msc +113 -0
  59. data/vendor/PDCurses/dos/Makefile.wcc +107 -0
  60. data/vendor/PDCurses/dos/README.md +51 -0
  61. data/vendor/PDCurses/dos/bccdos.lrf +9 -0
  62. data/vendor/PDCurses/dos/mscdos.lrf +50 -0
  63. data/vendor/PDCurses/dos/pdcclip.c +132 -0
  64. data/vendor/PDCurses/dos/pdcdisp.c +135 -0
  65. data/vendor/PDCurses/dos/pdcdos.h +194 -0
  66. data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
  67. data/vendor/PDCurses/dos/pdckbd.c +513 -0
  68. data/vendor/PDCurses/dos/pdcscrn.c +785 -0
  69. data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
  70. data/vendor/PDCurses/dos/pdcutil.c +212 -0
  71. data/vendor/PDCurses/libobjs.mif +26 -0
  72. data/vendor/PDCurses/makedist.mif +20 -0
  73. data/vendor/PDCurses/man/README.md +21 -0
  74. data/vendor/PDCurses/man/intro.md +361 -0
  75. data/vendor/PDCurses/man/manext.c +119 -0
  76. data/vendor/PDCurses/man/sdl.md +152 -0
  77. data/vendor/PDCurses/man/sdl2.md +58 -0
  78. data/vendor/PDCurses/man/x11.md +407 -0
  79. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  80. data/vendor/PDCurses/ncurses/README.md +26 -0
  81. data/vendor/PDCurses/ncurses/makefile +29 -0
  82. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  83. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  84. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  85. data/vendor/PDCurses/os2/README.md +43 -0
  86. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  87. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  88. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  89. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  90. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  91. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  92. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  93. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  94. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  95. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  96. data/vendor/PDCurses/panel.h +56 -0
  97. data/vendor/PDCurses/pdcurses/README.md +25 -0
  98. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  99. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  100. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  101. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  102. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  103. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  104. data/vendor/PDCurses/pdcurses/border.c +411 -0
  105. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  106. data/vendor/PDCurses/pdcurses/color.c +298 -0
  107. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  108. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  109. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  110. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  111. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  112. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  113. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  114. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  115. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  116. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  117. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  118. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  119. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  120. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  121. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  122. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  123. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  124. data/vendor/PDCurses/pdcurses/move.c +57 -0
  125. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  126. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  127. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  128. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  129. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  130. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  131. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  132. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  133. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  134. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  135. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  136. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  137. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  138. data/vendor/PDCurses/pdcurses/util.c +312 -0
  139. data/vendor/PDCurses/pdcurses/window.c +569 -0
  140. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  141. data/vendor/PDCurses/sdl1/README.md +31 -0
  142. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  143. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  144. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  145. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  146. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  147. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  148. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  149. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  150. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  151. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  152. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  153. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
  154. data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
  155. data/vendor/PDCurses/sdl2/README.md +34 -0
  156. data/vendor/PDCurses/sdl2/deffont.h +385 -0
  157. data/vendor/PDCurses/sdl2/deficon.h +23 -0
  158. data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
  159. data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
  160. data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
  161. data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
  162. data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
  163. data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
  164. data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
  165. data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
  166. data/vendor/PDCurses/sdl2/sdltest.c +81 -0
  167. data/vendor/PDCurses/term.h +48 -0
  168. data/vendor/PDCurses/version.mif +7 -0
  169. data/vendor/PDCurses/vt/CMakeLists.txt +28 -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 +258 -24
  255. data/.travis.yml +0 -16
  256. data/appveyor.yml +0 -16
@@ -0,0 +1,49 @@
1
+ language: c
2
+
3
+ os:
4
+ - linux
5
+ - osx
6
+
7
+ compiler:
8
+ - gcc
9
+ - clang
10
+
11
+ env:
12
+ - BUILD_TYPE=Debug CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=OFF -DPDCDEBUG=ON"
13
+ - BUILD_TYPE=Debug CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDCDEBUG=ON"
14
+ - BUILD_TYPE=Debug CMAKE_ARGS="-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDCDEBUG=ON"
15
+
16
+ - BUILD_TYPE=Release CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=OFF"
17
+ - BUILD_TYPE=Release CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=ON"
18
+ - BUILD_TYPE=Release CMAKE_ARGS="-DPDC_WIDE=ON -DPDC_UTF8=OFF"
19
+
20
+ - BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=OFF"
21
+ - BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=ON"
22
+ - BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DPDC_WIDE=ON -DPDC_UTF8=OFF"
23
+
24
+ addons:
25
+ apt:
26
+ packages:
27
+ - libncurses5-dev
28
+ - libncursesw5-dev
29
+ - libxaw7-dev
30
+
31
+ install:
32
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"; fi
33
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then mkdir ${DEPS_DIR} && cd ${DEPS_DIR} && pwd; fi
34
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then travis_retry wget --no-check-certificate https://cmake.org/files/v3.11/cmake-3.11.0-Linux-x86_64.tar.gz; fi
35
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then echo "96d67e21f0983ebf0fffc5b106ec338c *cmake-3.11.0-Linux-x86_64.tar.gz" > cmake_md5.txt; fi
36
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then md5sum -c cmake_md5.txt; fi
37
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tar -xvf cmake-3.11.0-Linux-x86_64.tar.gz > /dev/null; fi
38
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then mv cmake-3.11.0-Linux-x86_64 cmake-install; fi
39
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:$PATH; fi
40
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ncurses; fi
41
+
42
+ before_script:
43
+ - cd ${TRAVIS_BUILD_DIR}
44
+ - mkdir build && cd build
45
+ - cmake -DCMAKE_VERBOSE_MAKEFILE=FALSE -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
46
+ -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/build/dist ${CMAKE_ARGS}
47
+ ..
48
+ script:
49
+ - cmake --build . --config ${BUILD_TYPE} --target install
@@ -0,0 +1,68 @@
1
+ cmake_minimum_required(VERSION 3.11)
2
+
3
+ if(NOT CMAKE_BUILD_TYPE)
4
+ set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE)
5
+ message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to MinSizeRel.")
6
+ endif()
7
+
8
+ set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake")
9
+
10
+ include (get_version)
11
+
12
+ if(MSVC)
13
+ set(CMAKE_DEBUG_POSTFIX d)
14
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") # enable parallel builds
15
+ endif()
16
+
17
+ message(STATUS "Generator .............. ${CMAKE_GENERATOR}")
18
+ message(STATUS "Build Type ............. ${CMAKE_BUILD_TYPE}")
19
+
20
+ include(build_options)
21
+ include(build_dependencies)
22
+
23
+ project(pdcurses VERSION "${CURSES_VERSION}" LANGUAGES C)
24
+ message(STATUS "PDC Version ............ ${PROJECT_VERSION}")
25
+
26
+ include(gen_config_header)
27
+
28
+ file(GLOB pdcurses_src_files pdcurses/*.c)
29
+
30
+ if(CYGWIN)
31
+ message(STATUS "Windows Kit UM lib path = ${WINDOWS_KIT_LIBRARY_DIR}")
32
+ link_directories(${WINDOWS_KIT_LIBRARY_DIR})
33
+ endif()
34
+
35
+ if(PDC_DOS_BUILD) # currently requires a unique toolchain file
36
+
37
+ add_subdirectory(dos)
38
+
39
+ elseif(PDC_OS2_BUILD) # currently requires a unique toolchain file
40
+
41
+ add_subdirectory(os2)
42
+
43
+ else()
44
+
45
+ add_subdirectory(ncurses)
46
+
47
+ if(PDC_SDL2_BUILD)
48
+
49
+ add_subdirectory(sdl2)
50
+
51
+ endif()
52
+
53
+ if(UNIX)
54
+ add_subdirectory(vt)
55
+ endif()
56
+
57
+ if(WIN32)
58
+
59
+ add_subdirectory(wincon)
60
+ add_subdirectory(wingui)
61
+
62
+ endif()
63
+
64
+ endif()
65
+
66
+ add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake")
67
+
68
+ set(CPACK_COMPONENTS_ALL applications)
@@ -0,0 +1,2036 @@
1
+ PDCurses 4.0.4 - 2019 Jan 20
2
+ =========================
3
+ Major new feature:
4
+ -------------------
5
+
6
+ - New VT backend. Works within an xterm or xterm-based terminal and some
7
+ other terminals. Mostly works in the Linux console, and on Win10
8
+ directly and on Win9x/DOS if ANSI.SYS (or NANSI or NNANSI .SYS or .COM)
9
+ are installed.
10
+
11
+ Minor new features:
12
+ -------------------
13
+
14
+ - SDL2 variant: dimmed, bold, blinking, and RGB text are handled, as is
15
+ window resizing.
16
+
17
+ - DOS variant: cross-compilation from GNU/Linux works with both DJGPP and
18
+ Watcom C/C++; and, 16-bit and 32-bit Watcom makefiles have been combined
19
+ into one
20
+
21
+ - Many modifications (and some bug fixes) taken from William McBrine's
22
+ branch. An effort has been made to narrow the gap between the forks
23
+ where possible. But both forks are moving targets with different
24
+ design choices and priorities.
25
+
26
+ - Demos improved to show version info
27
+
28
+ Bug fixes
29
+ -------------------
30
+ - compilation warnings/errors with some compilers in some variants #53, #57, #58, #65, ...
31
+
32
+ - newtest sample was broken in all widw variants #60
33
+
34
+ - the paste button printed debug output #62
35
+
36
+ - some corner cases (midnight crossing, atomicity of tick count reads) in
37
+ DOS version of napms() were not handled well
38
+
39
+ PDCurses 4.0.2 - 2017 Sep 12
40
+ =========================
41
+ Major new features:
42
+ -------------------
43
+
44
+ - New WinGUI (Windows GUI) and SDL2 backends.
45
+ SDL1 is still supported, but may eventually go away.
46
+
47
+ - Bold, italic, underlined, overlined, dimmed, 'strikeout', blinking text,
48
+ 256 colors and color pairs, and full RGB colors.
49
+ These are all supported in WinGUI and mostly supported in X11, SDL1 and SDL2.
50
+
51
+ - In WinGUI, one can choose a font, and both programmatic and user resizing
52
+ are supported.
53
+ (Recompiling is necessary to change the font in X11.)
54
+
55
+ - (WinGUI only) Support of SMP Unicode (points beyond 64K) and combining
56
+ characters.
57
+ This may be extended to X11 and SDL2 eventually.
58
+
59
+ - Demos corrected to be buildable and testable with `ncurses`.
60
+
61
+ Minor new features
62
+ -------------------
63
+ (note that not all of these are available on all backends)
64
+
65
+ - Support for up to nine mouse buttons and wheel and tilt-wheel mice, and
66
+ double and triple mouse clicks
67
+
68
+ - (X11, WinGUI, Win32) Extended range of keys that are recognized. This
69
+ now includes most of the "oddball" keys such as 'browser back' and
70
+ 'favorites' found on some keyboards.
71
+
72
+ - Blinking cursors in WinGUI and X11 of various shapes (this could be
73
+ extended to SDLx eventually).
74
+
75
+ - In X11 and WinGUI, one can call resize_term( ) before initscr( ) to set
76
+ the initial window size.
77
+
78
+ - Soft Label Keys (SLKs) are considerably more flexible, with the ability
79
+ to set arbitrary numbers of keys and groupings.
80
+ See slk.c for details. This applies to all backends.
81
+
82
+ - Many changes to `testcurs` to test all these new features, and `newtest`
83
+ added to test still more features.
84
+
85
+ - Option to get detailed version information of the used PDCurses library
86
+ at run time with new exported `PDC_version` as `PDC_version_info` structure.
87
+
88
+ - ACS_x and WACS_x #defines extended to include a lot of "alternative
89
+ characters" that overlap in Unicode and CP-437: double-line box chars,
90
+ card suits, vulgar fractions, etc.
91
+ This applies to all backends. See `acs_defs.h` for the full list.
92
+
93
+ - Cleaned up some makefiles for Win32 and WinGUI.
94
+ On both platforms, `vcwin32.mak` can now be used with the Intel(R) compiler,
95
+ and `mingwin32.mak` can be used to cross-compile from Linux, or in
96
+ `command.com` under Windows, or with Cygwin/MSYS.
97
+ Also added a makefile for Digital Mars for the DOS version.
98
+
99
+ - The "def" files that were needed before to create PDCurses on Windows
100
+ are removed as they are no longer necessary.
101
+
102
+ PDCurses 3.4 - 2008/09/08
103
+ =========================
104
+
105
+ Nothing much new this time, but I've been sitting on some bug fixes for
106
+ almost a year, so it's overdue. Apart from bugs, the main changes are in
107
+ the documentation.
108
+
109
+ New features:
110
+ -------------------
111
+
112
+ - setsyx() is now a function rather than a macro.
113
+
114
+ Bug fixes and such:
115
+ -------------------
116
+
117
+ - In x11, the xc_atrtab table size was under-calculated by half,
118
+ resulting in crashes at (oddly) certain line counts. (It should've
119
+ crashed a lot more.) Reported by Mark Hessling.
120
+
121
+ - Test for moved cursor was omitting the window origin offset. Reported
122
+ by Carey Evans.
123
+
124
+ - Is DOS and OS/2, the value for max items in key_table was still wrong.
125
+ Reported by C.E.
126
+
127
+ - Changed isendwin() so it won't crash after delscreen().
128
+
129
+ - Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs().
130
+
131
+ - Disable QuickEdit Mode when enabling mouse input for the Win32
132
+ console; reported by "Zalapkrakna".
133
+
134
+ - Fix for building under Innotek C (I hope). Report by Elbert Pol, fix
135
+ courtesy of Paul Smedley.
136
+
137
+ - Unified exports list with no duplicates -- pdcurses.def is now built
138
+ from components at compile time.
139
+
140
+ - Don't install curspriv.h, and don't include it with binary
141
+ distributions.
142
+
143
+ - Building DLLs with LCC is no longer supported, due to the primitive
144
+ nature of its make.exe.
145
+
146
+ - Export the terminfo stub functions from the DLLs, too.
147
+
148
+ - Added support for Apple's ".dylib" in configure. Suggested by Marc
149
+ Vaillant (who says it's needed with OS 10.5.)
150
+
151
+ - In sdl1/Makefile.mng, ensure that CC is set.
152
+
153
+ - In the gcc makefiles, "$?" didn't really have the desired effect --
154
+ _all_ the dependencies showed up on the command line, including
155
+ curses.h, and pdcurses.a twice. And apparently, this can mess up some
156
+ old version (?) of MinGW. So, revert to spelling out "tuidemo.o
157
+ tui.o". Reported by "Howard L."
158
+
159
+ - Extensive documentation revision and reorganizing. More to do here.
160
+ For example, I moved the build instructions from INSTALL (which never
161
+ really described installation) to the platform-specific READMEs.
162
+
163
+ - New indentation standard: four spaces, no tabs.
164
+
165
+ ------------------------------------------------------------------------
166
+
167
+ PDCurses 3.3 - 2007/07/11
168
+ =========================
169
+
170
+ This release adds an SDL backend, refines the demos, and is faster in
171
+ some cases.
172
+
173
+ New features:
174
+ -------------------
175
+
176
+ - SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details.
177
+
178
+ - Double-buffering -- minimize screen writes by checking, in doupdate()
179
+ and wnoutrefresh(), whether the changes to curscr are really changes.
180
+ In most cases, this makes no difference (writes were already limited
181
+ to areas marked as changed), but it can greatly reduce the overhead
182
+ from touchwin(). It also helps if you have small, separated updates on
183
+ the same line.
184
+
185
+ - The PDC_RGB colors can now be used, or not, with any platform (as long
186
+ as the same options are used when compiling both the library and
187
+ apps). This may help if you have apps that are hardwired to assume
188
+ certain definitions.
189
+
190
+ - Restored the use_default_colors() stuff from the ncurses versions of
191
+ the rain and worm demos, to make them "transparent" (this is useful
192
+ now, with the SDL port); added transparency to newdemo.
193
+
194
+ - Added setlocale() to tuidemo, to make it easier to browse files with
195
+ non-ASCII characters.
196
+
197
+ - Sped up firework demo by replacing unneeded clear() and init_pair()
198
+ calls.
199
+
200
+ - Allow exit from ptest demo by typing 'q'.
201
+
202
+ - New functions for implementors: PDC_pair_content() and PDC_init_pair()
203
+ (the old pdc_atrtab stuff was arguably the last remnant of code in the
204
+ pdcurses directory that was based on platform details).
205
+
206
+ Bug fixes and such:
207
+ -------------------
208
+
209
+ - Implicit wrefresh() needs to be called from wgetch() when the window's
210
+ cursor position is changed, even if there are no other changes.
211
+
212
+ - Set SP->audible on a per-platform basis, as was documented in
213
+ IMPLEMNT, but not actually being done.
214
+
215
+ - Minor tweaks for efficiency and readability, notably with wscrl().
216
+
217
+ - tuidemo didn't work correctly on monochrome screens when A_COLOR was
218
+ defined -- the color pair numbers appeared as the corresponding
219
+ character; also, the input box was (I now realize) broken with ncurses
220
+ since our 2.7, and broke more subtly with PDCurses' new implicit
221
+ refresh handling; also, the path to the default file for the Browse
222
+ function was a bit off.
223
+
224
+ - Assume in the demos that curs_set() is always available -- there's no
225
+ good test for this, and the existing tests were bogus.
226
+
227
+ - Made the command-line parameter for ptest work. (If given an argument,
228
+ it delays that number of milliseconds between changes, instead of
229
+ waiting for a key, and automatically loops five times.)
230
+
231
+ - Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside
232
+ the platform directory.
233
+
234
+ - Building the X11 port with Cygwin required manually editing the
235
+ Makefile after configuring; no longer. Reported by Warren W. Gay.
236
+
237
+ - Minor tightening of configure and makefiles.
238
+
239
+ - Bogus references to "ACS_BLCORNER" in the border man page. Reported by
240
+ "Walrii".
241
+
242
+ - slk_wlabel() was not documented.
243
+
244
+ - Spelling cleanup.
245
+
246
+ - Changed RCSIDs to not end with a semicolon -- avoids warnings when
247
+ compiling with the -pedantic option.
248
+
249
+ - Merged latin-1.txt into x11.txt.
250
+
251
+ - Updated config.guess and config.sub to more recent versions.
252
+
253
+ ------------------------------------------------------------------------
254
+
255
+ PDCurses 3.2 - 2007/06/06
256
+ =========================
257
+
258
+ This release mainly covers changes to the build process, along with a
259
+ few structural changes.
260
+
261
+ New features:
262
+ -------------------
263
+
264
+ - The panel library has been folded into the main library. What this
265
+ means is that you no longer need to specify "-lpanel" or equivalent
266
+ when linking programs that use panel functionality with PDCurses;
267
+ however, panel.lib/.a is still provided (as a copy of pdcurses.lib/.a)
268
+ so that you can, optionally, build your projects with no changes. It
269
+ also means that panel functionality is available with the DLL or
270
+ shared library. Note that panel.h remains separate from curses.h.
271
+
272
+ - Setting the PDCURSES_SRCDIR environment variable is no longer required
273
+ before building, unless you want to build in a location other than the
274
+ platform directory. (See INSTALL.)
275
+
276
+ - MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y"
277
+ option. Partly due to Timofei Shatrov.
278
+
279
+ - Support for the Digital Mars compiler.
280
+
281
+ - Watcom makefiles now use the "loaddll" feature.
282
+
283
+ Bug fixes and such:
284
+ -------------------
285
+
286
+ - Eliminated the platform defines (DOS, WIN32, OS2, XCURSES) from
287
+ curses.h, except for X11-specific SCREEN elements and functions.
288
+ Dynamically-linked X11 apps built against an old version will have
289
+ their red and blue swapped until rebuilt. (You can define PDC_RGB to
290
+ build the library with the old color scheme, but it would also have to
291
+ be defined when building any new app.) Any app that depends on
292
+ PDCurses to determine the platform it's building on will have to make
293
+ other arrangements.
294
+
295
+ - Documentation cleanup -- added more details; removed some content that
296
+ didn't apply to PDCurses; moved the doc-building tool to the doc
297
+ directory; changed *.man to *.txt.
298
+
299
+ - The EMX makefile now accepts "DLL=Y", builds pdcurses.dll instead of
300
+ curses.dll, builds either the static library or the DLL (not both at
301
+ once), and links all the demos with the DLL when building it.
302
+
303
+ - In Win32, read the registry only when needed: when init_color() or
304
+ color_content() is called, instead of at startup.
305
+
306
+ - A few additional consts in declarations.
307
+
308
+ - The Win32 compilers that build DLLs now use common .def files.
309
+
310
+ - panel.h functions sorted by name, as with other .h files; curses.h is
311
+ no longer included by repeated inclusions of panel.h or term.h.
312
+
313
+ - Simplified Borland makefiles.
314
+
315
+ - Makefile.aix.in depended on a file, xcurses.exp, that was never there.
316
+ This problem was fixed as part of the change to common .def files;
317
+ however, I still haven't been able to test building on AIX.
318
+
319
+ ------------------------------------------------------------------------
320
+
321
+ PDCurses 3.1 - 2007/05/03
322
+ =========================
323
+
324
+ Primarily clipboard-related fixes, and special UTF-8 support.
325
+
326
+ New features:
327
+ -------------------
328
+
329
+ - "Force UTF-8" mode, a compile-time option to force the use of UTF-8
330
+ for multibyte strings, instead of the system locale. (Mainly for
331
+ Windows, where UTF-8 doesn't work well in the console.) See INSTALL.
332
+
333
+ - Multibyte string support in PDC_*clipboard() functions, and in Win32's
334
+ PDC_set_title().
335
+
336
+ - Added the global string "ttytype", per other curses implementations,
337
+ for compatibility with old BSD curses.
338
+
339
+ - Real functions for the "quasi-standard aliases" -- crmode(),
340
+ nocrmode(), draino(), resetterm(), fixterm() and saveterm().
341
+ (Corresponding macros removed.)
342
+
343
+ Bug fixes and such:
344
+ -------------------
345
+
346
+ - In Win32, under NT-family OSes, the scrollback buffer would be
347
+ restored by endwin(), but would not be turned off again when resuming
348
+ curses after an endwin(). The result was an odd, partly-scrolled-up
349
+ display. Now, the buffer is toggled by PDC_reset_prog_mode() and
350
+ PDC_reset_shell_mode(), so it's properly turned off when returning
351
+ from an endwin().
352
+
353
+ - In 3.0, selection in X11 didn't work. (Well, the selecting worked, but
354
+ the pasting elsewhere didn't.) This was due to the attempted fix
355
+ "don't return selection start as a press event," so that's been
356
+ reverted for now.
357
+
358
+ - PDC_setclipboard() was locking up in X11. Reported by Mark Hessling.
359
+
360
+ - Missing underscore in the declaration of XC_say() prevented
361
+ compilation with PDCDEBUG defined. Reported by M.H.
362
+
363
+ - Off-by-one error in copywin() -- the maximum coordinates for the
364
+ destination window should be inclusive. Reported by Tiago Dionizio.
365
+
366
+ - Start in echo mode, per X/Open. Reported by T.D.
367
+
368
+ - Strip leading and trailing spaces from slk labels, per a literal
369
+ reading of X/Open. Suggested by Alexey Miheev (about ncurses, but it
370
+ also applies here).
371
+
372
+ - The #endif for __PDCURSES__ needs to come _after_ the closing of the
373
+ extern "C". This has been broken since June 2005. Fortunately (?), it
374
+ only shows up if the file is included multiple times, and then only in
375
+ C++. Reported on the DOSBox forums.
376
+
377
+ - Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the
378
+ clipboard functions in Win32, to match the console.
379
+
380
+ - Changed the format of the string returned from longname().
381
+
382
+ - In the clipboard test in the testcurs demo, use a single mvprintw() to
383
+ display the return from PDC_getclipboard(), instead of a loop of
384
+ addch(), which was incompatible with multibyte strings.
385
+
386
+ - Moved has_key() into the keyname module, and documented it.
387
+
388
+ - Moved RIPPEDOFFLINE to curspriv.h.
389
+
390
+ - Typos in IMPLEMNT.
391
+
392
+ ------------------------------------------------------------------------
393
+
394
+ PDCurses 3.0 - 2007/04/01
395
+ =========================
396
+
397
+ The focuses for this release are X/Open conformance, i18n, better color
398
+ support, cleaner code, and more consistency across platforms.
399
+
400
+ This is only a brief summary of the changes. For more details, consult
401
+ the CVS log.
402
+
403
+ New features:
404
+ -------------------
405
+
406
+ - An almost complete implementation of X/Open curses, including the
407
+ wide-character and attr_t functions (but excluding terminfo). The
408
+ wide-character functions work only in Win32 and X11, for now, and
409
+ require building the library with the appropriate options (see
410
+ INSTALL). Note that this is a simplistic implementation, with exactly
411
+ one wchar_t per cchar_t; the only characters it handles properly are
412
+ those that are one column wide.
413
+
414
+ - Support for X Input Methods in the X11 port (see INSTALL). When built
415
+ this way, the internal compose key support is disabled in favor of
416
+ XIM's, which is a lot more complete, although you lose the box cursor.
417
+
418
+ - Multibyte character support in the non-wide string handling functions,
419
+ per X/Open. This only works when the library is built with wide-
420
+ character support enabled.
421
+
422
+ - Mouse support for DOS and OS/2. The DOS version includes untested
423
+ support for scroll wheels, via the "CuteMouse" driver.
424
+
425
+ - An ncurses-compatible mouse interface, which can work in parallel with
426
+ the traditional PDCurses mouse interface. See the man page (or
427
+ mouse.c) for details.
428
+
429
+ - DOS and OS/2 can now return modifiers as keys, as in Win32 and X11.
430
+
431
+ - COLORS, which had been fixed at 8, is now either 8 or 16, depending on
432
+ the terminal -- usually 16. When it's 8, blinking mode is enabled
433
+ (controlled as before by the A_BLINK attribute); when it's 16, bright
434
+ background colors are used instead. On platforms where it can be
435
+ changed, the mode is toggled by the new function PDC_set_blink().
436
+ PDCurses tries to set PDC_set_blink(FALSE) at startup. (In Win32, it's
437
+ always set to FALSE; in DOS, with other than an EGA or VGA card, it
438
+ can't be.) Also, COLORS is now set to 0 until start_color() is called.
439
+
440
+ - Corresponding to the change in COLORS, COLOR_PAIRS is now 256.
441
+
442
+ - Working init_color() and color_content(). The OS/2 version of
443
+ init_color() works only in a full-screen session; the Win32 version
444
+ works only in windowed mode, and only in NT-family OSes; the DOS
445
+ version works only with VGA adapters (real or simulated). The Win32
446
+ version is based mostly on James Brown's setconsoleinfo.c
447
+ (www.catch22.net).
448
+
449
+ - use_default_colors(), assume_default_colors(), and curses_version(),
450
+ after ncurses.
451
+
452
+ - Added global int TABSIZE, after ncurses and Solaris curses; removed
453
+ window-specific _tabsize.
454
+
455
+ - Logical extension to the wide-character slk_ funcs: slk_wlabel(), for
456
+ retrieving the label as a wide-character string.
457
+
458
+ - A non-macro implementation of ncurses' wresize().
459
+
460
+ - Working putwin(), getwin(), scr_dump() and scr_restore().
461
+
462
+ - A working acs_map[]. Characters from the ACS are now stored in window
463
+ structures as a regular character plus the A_ALTCHARSET attribute, and
464
+ rendered to the ACS only when displayed. (This allows, for example,
465
+ the correct display on one platform of windows saved from another.)
466
+
467
+ - In X11, allow selection and paste of UTF8_STRING.
468
+
469
+ - The testcurs demo now includes a color chart and init_color() test, a
470
+ wide character input test, a display of wide ACS characters with
471
+ sample Unicode text, a specific test of flash(), more info in the
472
+ resize test, and attempts to change the width as well as the height.
473
+
474
+ - Command-line option for MSVC to build DLLs (see INSTALL). Also, the
475
+ naming distinction for DLLs ("curses" vs. "pdcurses") is abandoned,
476
+ and either the static lib or DLL is built, not both at once (except
477
+ for X11).
478
+
479
+ - For backwards compatibility, a special module just for deprecated
480
+ functions -- currently PDC_check_bios_key(), PDC_get_bios_key(),
481
+ PDC_get_ctrl_break() and PDC_set_ctrl_break(). These shouldn't be used
482
+ in applications, but currently are... in fact, all the "private"
483
+ functions (in curspriv.h) are subject to change and should be avoided.
484
+
485
+ - A new document, IMPLEMNT, describing PDCurses' internal functions for
486
+ those wishing to port it to new platforms.
487
+
488
+ - Mark Hessling has released the X11 port to the public domain.
489
+ (However, x11/ScrollBox* retain their separate copyright and MIT-like
490
+ license.)
491
+
492
+ Bug fixes and such:
493
+ -------------------
494
+
495
+ - Most of the macros have been removed (along with the NOMACROS ifdef).
496
+ The only remaining ones are those which have to be macros to work, and
497
+ those that are required by X/Open to be macros. There were numerous
498
+ problems with the macros, and no apparent reason to keep them, except
499
+ tradition -- although it was PCcurses 1.x that first omitted them.
500
+
501
+ - Clean separation of platform-specific code from the rest. Outside of
502
+ the platform directories, there remain only a few ifdefs in curses.h
503
+ and curspriv.h.
504
+
505
+ - General reorganization and simplification.
506
+
507
+ - Documentation revisions.
508
+
509
+ - When expanding control characters in addch() or insch(), retain the
510
+ attributes from the chtype.
511
+
512
+ - Preserve the A_ALTCHARSET attribute in addch() and insch().
513
+
514
+ - Per X/Open, beep() should always return OK.
515
+
516
+ - On platforms with a controlling terminal (i.e., not X11), curs_set(1)
517
+ now sets the cursor to the shape it had at the time of initscr(),
518
+ rather than always making it small. (Exception for DOS: If the video
519
+ mode has been changed by PDC_resize_screen(), curs_set(1) reverts to
520
+ line 6/7.) The shape is taken from SP->orig_cursor (the meaning of
521
+ which is platform-specific).
522
+
523
+ - Stop updating the cursor position when the cursor is invisible (this
524
+ gives a huge performance boost in Win 9x); update the cursor position
525
+ from curs_set() if changing from invisible to visible.
526
+
527
+ - Some tweaking of the behavior of def_prog_mode(), def_shell_mode(),
528
+ savetty(), reset_prog_mode(), reset_shell_mode() and resetty()...
529
+ still not quite right.
530
+
531
+ - flash() was not implemented for Win32 or X. A portable implementation
532
+ is now used for all platforms. Note that it's much slower than the
533
+ old (DOS and OS/2) version, but this is only apparent on an extremely
534
+ slow machine, such as an XT.
535
+
536
+ - In getstr(), backspacing on high-bit characters caused a double
537
+ backspace.
538
+
539
+ - hline() and vline() used an incorrect (off by one) interpretation of
540
+ _maxx and _maxy. If values of n greater than the max were specified,
541
+ these functions could access unallocated memory.
542
+
543
+ - innstr() is supposed to return the number of characters read, not just
544
+ OK or ERR. Reported by Mike Aubury.
545
+
546
+ - A proper implementation of insch() -- the PDC_chadd()-based version
547
+ wasn't handling the control characters correctly.
548
+
549
+ - Return ASCII and control key names from keyname() (problem revealed by
550
+ ncurses' movewindow test); also, per X/Open, return "UNKNOWN KEY" when
551
+ appropriate, rather than "NO KEY NAME".
552
+
553
+ - Turn off the cursor from leaveok(TRUE), even in X11; leaveok(FALSE)
554
+ now calls curs_set(1), regardless of the previous state of the cursor.
555
+
556
+ - In the slk area, BUTTON_CLICKED events now translate to function keys,
557
+ along with the previously recognized BUTTON_PRESSED events. Of course,
558
+ it should really be checking the events specified by map_button(),
559
+ which still doesn't work.
560
+
561
+ - napms(0) now returns immediately.
562
+
563
+ - A unified napms() implementation for DOS -- no longer throttles the
564
+ CPU when built with any compiler.
565
+
566
+ - Allow backspace editing of the nocbreak() buffer.
567
+
568
+ - pair_content(0, ...) is valid.
569
+
570
+ - There was no check to ensure that the pnoutrefresh() window fit within
571
+ the screen. It now returns an ERR if it doesn't.
572
+
573
+ - In X11, resize_term() must be called with parameters (0, 0), and only
574
+ when SP->resized is set, else it returns ERR.
575
+
576
+ - Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's
577
+ web site.
578
+
579
+ - slk_clear() now removes the buttons completely, as in ncurses.
580
+
581
+ - Use the current foreground color for the line attributes (underline,
582
+ left, right), unless PDC_set_line_color() is explicitly called. After
583
+ setting the line color, you can reset it to this mode via
584
+ "PDC_set_line_color(-1)".
585
+
586
+ - Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER().
587
+
588
+ - Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch()
589
+ are now (again) the core functions.
590
+
591
+ - Dropped or made static many obsolete, unused, and/or broken functions,
592
+ including PDC_chg_attrs(), PDC_cursor_on() and _off(),
593
+ PDC_fix_cursor(), PDC_get_attribute(), PDC_get_cur_col() and _row(),
594
+ PDC_set_80x25(), PDC_set_cursor_mode(), PDC_set_rows(),
595
+ PDC_wunderline(), PDC_wleftline(), PDC_wrightline(),
596
+ XCursesModifierPress() and XCurses_refresh_scrollbar().
597
+
598
+ - Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR
599
+ _ENDLINE, _FULLWIN and _SCROLLWIN.
600
+
601
+ - Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*,
602
+ _lasts*.
603
+
604
+ - Obsolete/unused elements of the SCREEN struct: orgcbr, visible_cursor,
605
+ sizeable, shell, blank, cursor, orig_emulation, font, orig_font,
606
+ tahead, adapter, scrnmode, kbdinfo, direct_video, video_page,
607
+ video_seg, video_ofs, bogus_adapter. (Some of these persist outside
608
+ the SCREEN struct, in the platform directories.) Added mouse_wait and
609
+ key_code.
610
+
611
+ - Removed all the EMALLOC stuff. Straight malloc calls were used
612
+ elsewhere; it was undocumented outside of comments in curspriv.h; and
613
+ there are better ways to use a substitute malloc().
614
+
615
+ - Single mouse clicks are now reportable on all platforms (not just
616
+ double-clicks). And in general, mouse event reporting is more
617
+ consistent across platforms.
618
+
619
+ - The mouse cursor no longer appears in full-screen mode in Win32 unless
620
+ a nonzero mouse event mask is used.
621
+
622
+ - ALT-keypad input now works in Win32.
623
+
624
+ - In Win32, SetConsoleMode(ENABLE_WINDOW_INPUT) is not useful, and
625
+ appears to be the source of a four-year-old bug report (hanging in
626
+ THE) by Phil Smith.
627
+
628
+ - Removed the PDC_THREAD_BUILD stuff, which has never worked. For the
629
+ record: PDCurses is not thread-safe. Neither is ncurses; and the
630
+ X/Open curses spec explicitly makes it a non-requirement.
631
+
632
+ - With the internal compose key system in the X11 port, modifier keys
633
+ were breaking out of the compose state, making it impossible to type
634
+ accented capitals, etc. Also, Multi_key is now the default compose
635
+ key, instead of leaving it undefined by default; and a few more combos
636
+ are supported.
637
+
638
+ - In X11, the first reported mouse event after startup always read as a
639
+ double-click at position 0, 0. (This bug was introduced in 2.8.)
640
+
641
+ - In X11, don't return selection start as a press event. (Shift-click on
642
+ button 1 is still returned.)
643
+
644
+ - In X11, properly handle pasting of high-bit chars. (It was doing an
645
+ unwanted sign extension.)
646
+
647
+ - In X11, BUTTON_MOVED was never returned, although PDC_MOUSE_MOVED was
648
+ set.
649
+
650
+ - The fix in 2.8 for the scroll wheel in X11 wasn't very good -- it did
651
+ report the events as scroll wheel events, but it doubled them. Here's
652
+ a proper fix.
653
+
654
+ - Changed mouse handling in X11: Simpler translation table, with
655
+ XCursesPasteSelection() called from XCursesButton() instead of the
656
+ translation table; require shift with button 1 or 2 for select or
657
+ paste when mouse events are being reported (as with ncurses), allowing
658
+ passthrough of simple button 2 events. This fixes the previously
659
+ unreliable button 2 behavior.
660
+
661
+ - Modifier keys are now returned on key up in X11, as in Win32. And in
662
+ general, modifier key reporting is more consistent across platforms.
663
+
664
+ - Modifiers are not returned as keys when a mouse click has occurred
665
+ since the key press.
666
+
667
+ - In BIOS mode (in DOS), count successive identical output bytes, and
668
+ make only one BIOS call for all of them. This dramatically improves
669
+ performance.
670
+
671
+ - The cursor position was not always updated correctly in BIOS mode.
672
+
673
+ - In testcurs, the way the ACS test was written, it would really only
674
+ work with a) PDCurses (with any compiler), or b) gcc (with any
675
+ curses). Here's a more portable implementation.
676
+
677
+ - Better reporting of mouse events in testcurs.
678
+
679
+ - Blank out buffer and num before the scanw() test in testcurs, in case
680
+ the user just hits enter or etc.; clear the screen after resizing.
681
+
682
+ - Allow tuidemo to use the last line.
683
+
684
+ - Separate left/right modifier keys are now reported properly in Win32.
685
+ (Everything was being reported as _R.)
686
+
687
+ - Attempts to redirect input in Win32 now cause program exit and an
688
+ error message, instead of hanging.
689
+
690
+ - Dropped support for the Microway NDP compiler.
691
+
692
+ - Some modules renamed, rearranged.
693
+
694
+ - Fixes for errors and warnings when building with Visual C++ 2005.
695
+
696
+ - In MSVC, the panel library didn't work with the DLL.
697
+
698
+ - Complete export lists for DLLs.
699
+
700
+ - Simplified makefiles; moved common elements to .mif files; better
701
+ optimization; strip demos when possible.
702
+
703
+ - Changed makefile targets of "pdcurses.a/lib" and "panel.a/lib" to
704
+ $(LIBCURSES) and $(LIBPANEL). Suggestion of Doug Kaufman.
705
+
706
+ - Changed "install" target in the makefile to a double-colon rule, to
707
+ get around a conflict with INSTALL on non-case-sensitive filesystems,
708
+ such as Mac OS X's HFS+. Reported by Douglas Godfrey et al.
709
+
710
+ - Make PDCurses.man dependent on manext. Suggestion of Tiziano Mueller.
711
+
712
+ - Set up configure.ac so autoheader works; removed some obsolescent
713
+ macros. Partly the suggestion of T.M.
714
+
715
+ - The X11 port now builds in the x11 directory (including the demos), as
716
+ with other ports.
717
+
718
+ - The X11 port should now build on more 64-bit systems. Partly due to
719
+ M.H.
720
+
721
+ - The default window title and icons for the X11 port are now "PDCurses"
722
+ instead of "XCurses".
723
+
724
+ - Internal functions and variables made static where possible.
725
+
726
+ - Adopted a somewhat more consistent naming style: Internal functions
727
+ with external linkage, and only those, have the prefix "PDC_";
728
+ external variables that aren't part of the API use "pdc_"; static
729
+ functions use "_"; and "XC_" and "xc_" prefixes are used for functions
730
+ and variables, respectively, that are shared between both processes in
731
+ the X11 port. Also eliminated camel casing, where possible.
732
+
733
+ - Changed the encoding for non-ASCII characters in comments and
734
+ documentation from Latin-1 to UTF-8.
735
+
736
+ ------------------------------------------------------------------------
737
+
738
+ PDCurses 2.8 - 2006/04/01
739
+ =========================
740
+
741
+ As with the previous version, you should assume that apps linked against
742
+ older dynamic versions of the library won't work with this one until
743
+ recompiled.
744
+
745
+ New features:
746
+
747
+ - Simpler, faster.
748
+
749
+ - Declarations for all supported, standard functions, per the X/Open
750
+ Curses 4.2 spec, with the notable exception of getch() and ungetch().
751
+ You can disable the use of the macro versions by defining NOMACROS
752
+ before including curses.h (see xmas.c for an example). NOMACROS yields
753
+ smaller but theoretically slower executables.
754
+
755
+ - New functions: vwprintw(), vwscanw(), vw_printw() and vw_scanw(). This
756
+ completes the list of X/Open 4.2 functions, except for those concerned
757
+ with attr_t and wide characters. Some (especially the terminfo/termcap
758
+ functions) aren't yet fully fleshed out, though.
759
+
760
+ - Non-macro implementations for COLOR_PAIR(), PAIR_NUMBER(), getbkgd(),
761
+ mvgetnstr(), mvwgetnstr(), mvhline(), mvvline(), mvwhline(), and
762
+ mvwvline(). (The macros are still available, too.)
763
+
764
+ - newterm() works now, in a limited way -- the parameters are ignored,
765
+ and only the first invocation will work (i.e., only one SCREEN can be
766
+ used).
767
+
768
+ - start_color() works now -- which is to say, if you _don't_ call it,
769
+ you'll only get monochrome output. Also, without calling it, the
770
+ terminal's default colors will be used, where supported (currently
771
+ only in Win32). This is equivalent to the PDC_ORIGINAL_COLORS behavior
772
+ introduced in 2.7, except that _only_ the default colors will be used.
773
+ (PDC_ORIGINAL_COLORS is still available, if you want to combine the
774
+ use of specific colors and the default colors.)
775
+
776
+ - New logic for termname() and longname(): termname() always returns
777
+ "pdcurses"; longname() returns "PDCurses for [platform] [adapter]
778
+ [COLOR/MONO]-YxX" (adapter is only defined for DOS and OS/2). This is
779
+ the first time these functions return _anything_ in Win32.
780
+
781
+ - New installation method for XCurses: the header files are placed in a
782
+ subdirectory "xcurses" within the include directory, rather than being
783
+ renamed. (But the renamed xcurses.h and xpanel.h are also installed,
784
+ for backwards compatibility.) curspriv.h and term.h are now available,
785
+ and existing curses-based code need no longer be edited to use
786
+ XCurses' curses.h. And with no more need for explicit XCursesExit()
787
+ calls (see below), your code need not be changed at all to move from
788
+ another curses implementation to XCurses. It can be as simple as "gcc
789
+ -I/usr/local/include/xcurses -lXCurses -oprogname progname.c".
790
+
791
+ - Combined readme.* into this HISTORY file, and incorporated the old 1.x
792
+ (PCcurses) history.
793
+
794
+ - New functionality for the testcurs demo: ACS character display; menu
795
+ support for PgUp, PgDn, Home and End; centered menu; and it can now
796
+ be resized in X.
797
+
798
+ - Added modified versions of the rain and worm demos from ncurses.
799
+
800
+ Bug fixes and such:
801
+
802
+ - Big cleanup of dead and redundant code, including unneeded defines,
803
+ ifdefs, and structure elements.
804
+
805
+ - flushinp() was not implemented for Win32.
806
+
807
+ - resetty() was not restoring LINES and COLS.
808
+
809
+ - nonl() made '\n' print a line feed without carriage return. This was
810
+ incorrect.
811
+
812
+ - Removed bogus implementation of intrflush().
813
+
814
+ - The line-breakout optimization system, disabled by default in 2.7, is
815
+ removed in 2.8. It simply didn't work, and never has. (The typeahead()
816
+ function remains, for compatibility, but does nothing.)
817
+
818
+ - The declarations for the printw() and scanw() function families were
819
+ erroneously ifdef'd.
820
+
821
+ - Safer printw() calls on platforms that support vsnprintf().
822
+
823
+ - Use the native vsscanf() in DJGPP, MinGW and Cygwin.
824
+
825
+ - ACS_BLOCK now works in X.
826
+
827
+ - Explicit calls to XCursesExit() are no longer needed.
828
+
829
+ - XCURSES is now defined automatically if not DOS, OS2 or WIN32.
830
+
831
+ - The default icon for XCurses wasn't working (had to remove the focus
832
+ hint code to fix this). Also, the default title is now "XCurses"
833
+ instead of "main".
834
+
835
+ - Incorrect dimensions (undercounting by two in each direction) were
836
+ shown while resizing in X.
837
+
838
+ - Scroll wheel events were not always correctly reported in X.
839
+
840
+ - 32 bits are enough for the "long" chtype, but 64 bits were used on a
841
+ 64-bit system, wasting memory. Now conditioned on _LP64. This could be
842
+ faster, too.
843
+
844
+ - The short, 16-bit chtype now works with XCurses.
845
+
846
+ - Corrected return value for is_linetouched(), is_wintouched(),
847
+ can_change_color() and isendwin() (bool instead of int).
848
+
849
+ - timeout(), wtimeout(), idcok() and immedok() return void.
850
+
851
+ - pair_content() takes a short.
852
+
853
+ - Replaced incorrect usages of attr_t with chtype. attr_t is still
854
+ typedef'd, for backwards compatibility. (It's supposed to be used for
855
+ the WA_*-style functions, which PDCurses doesn't yet support.)
856
+
857
+ - Added const where required by the spec, and in other appropriate
858
+ places.
859
+
860
+ - Removed PDC_usleep(). napms() is now the core delay routine.
861
+
862
+ - Fixed poll() support in napms().
863
+
864
+ - Various changes to the internal PDC_* functions -- don't depend on
865
+ these, and don't use them unless you absolutely have to.
866
+
867
+ - Some routines accessed window structures in their variable
868
+ declarations, _before_ checking for a NULL window pointer.
869
+
870
+ - Dropped support for the undocumented PDC_FULL_DISPLAY, wtitle(), and
871
+ PDC_print().
872
+
873
+ - Cleaned up remaining warnings.
874
+
875
+ - Reduced unnecessary #include directives -- speeds up compilation.
876
+
877
+ - Fix for demos build in Borland/DOS -- the makefile in 2.7 didn't
878
+ specify the memory model. Reported by Erwin Waterlander.
879
+
880
+ - Simplified the makefiles; e.g., some now build each demo in a single
881
+ step, and Watcom no longer uses demos.lnk. Also, the demo exes are now
882
+ stripped when possible; maximum compression used for archives built
883
+ by the makefiles; xcurses-config removed as part of "make distclean";
884
+ and I tweaked optimization for some platforms.
885
+
886
+ - Reverted to /usr/local/ as default installation directory for XCurses.
887
+
888
+ - Upgraded to autoconf 2.59... instantly doubling the size of the
889
+ configure script. Ah well. Otherwise, simplified the build system.
890
+
891
+ - Dropped support for pre-ANSI compilers. (It hasn't worked since at
892
+ least version 2.4, anyway.)
893
+
894
+ - Revised and, I hope, clarified the boilerplate and other comments.
895
+
896
+ - Simplified logging and RCS ids; added RCS ids where missing.
897
+
898
+ - Consistent formatting for all code, approximately equivalent to
899
+ "indent -kr -i8 -bl -bli0", with adjustments for 80 columns.
900
+
901
+ ------------------------------------------------------------------------
902
+
903
+ PDCurses 2.7 - 2005/12/30
904
+ =========================
905
+
906
+ INTRODUCTION:
907
+
908
+ Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses.
909
+ Here's a brief summary of changes in this release. (More details are
910
+ available in the CVS log and trackers on SourceForge.)
911
+
912
+ NEW FEATURES:
913
+
914
+ - Functions: delscreen(), getattrs(), has_key(), slk_color(),
915
+ wcolor_set(), wtimeout().
916
+
917
+ - Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(),
918
+ mvwvline(), timeout(), wresize().
919
+
920
+ - Stub implementations of terminfo functions (including a term.h).
921
+
922
+ - More stubs for compatibility: filter(), getwin(), putwin(),
923
+ noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(),
924
+ scr_set(), use_env(), vidattr(), vidputs().
925
+
926
+ - The terminal's default colors are used as curses' default colors when
927
+ the environment variable "PDC_ORIGINAL_COLORS" is set to any value
928
+ (Win32 only at the moment).
929
+
930
+ - Simplified build system.
931
+
932
+ - Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak
933
+ files for more info).
934
+
935
+ - Minimal implementation of color_content() -- no longer a stub.
936
+
937
+ - Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for
938
+ DOS/OS2/Win; "enhanced" versions of existing ACS characters used.
939
+
940
+ - Support for scroll wheels.
941
+
942
+ - Support for Pacific C.
943
+
944
+ BUGS FIXED:
945
+
946
+ - Builds correctly (including demos) on all tested platforms (see
947
+ below); nearly all compiler warnings have been cleaned up; the ptest
948
+ demo is built on all platforms; "clean" targets are improved.
949
+
950
+ - The ability to build ncurses_tests has been restored (see demos dir).
951
+
952
+ - Line-breakout optimization now defaults to off (equivalent to
953
+ "typeahead(-1)"), so output is not interrupted by keystrokes (it's
954
+ supposed to resume on the next refresh(), which wasn't working).
955
+
956
+ - Implicit wrefresh() in wgetch() was not being invoked in nodelay mode.
957
+
958
+ - subpad() was erroneously offsetting from the origin coordinates of the
959
+ parent pad (which are always -1,-1).
960
+
961
+ - In wborder(), whline(), and wvline(), the current (wattrset) attribute
962
+ was being used, but not the current background (wbkgd).
963
+
964
+ - Allow Russian 'r' character ASCII 0xe0 to be returned.
965
+
966
+ - termattrs() now also returns A_UNDERLINE, A_REVERSE.
967
+
968
+ - In Win32, with large scrollback buffers set, there was an unwanted
969
+ "scrollup" effect on startup.
970
+
971
+ - Revamped keyboard handling for Win32.
972
+
973
+ - New screen resize method for Win32.
974
+
975
+ - napms(), delay_output(), etc. now work with Cygwin.
976
+
977
+ - curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode --
978
+ the cursor stayed on.
979
+
980
+ - The A_REVERSE attribute was broken in XCurses.
981
+
982
+ - On 64-bit systems, XCurses was ignoring every other keystroke.
983
+
984
+ - Added focus hints for XCurses.
985
+
986
+ - Demos (except for tuidemo) once again have their proper titles in
987
+ XCurses (using Xinitscr() instead of the obsolete XCursesProgramName).
988
+
989
+ - The 16-bit chtype is a working option again (by removing #define
990
+ CHTYPE_LONG from curses.h), except in XCurses. It's not recommended;
991
+ but if your needs are limited, it still works.
992
+
993
+ - Reset screen size in resetty() under DOS, as in Win32 and OS/2.
994
+
995
+ - Changes for cursor size under DOS.
996
+
997
+ - Automatic setting of BIOS mode for CGA under DOS now works.
998
+
999
+ - The cursor is now always updated in PDC_gotoxy(); this fixes the
1000
+ problem of missing characters in BIOS mode.
1001
+
1002
+ - Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(),
1003
+ nl() and nonl() now return OK.
1004
+
1005
+ - ERR and OK are now defined as -1 and 0, respectively, for
1006
+ compatibility with other curses implementations -- note that this
1007
+ change is not binary compatible; you'll have to rebuild programs that
1008
+ use shared/dynamic libraries.
1009
+
1010
+ - Added "const" to prototypes where appropriate.
1011
+
1012
+ - Miscellaneous code cleanup.
1013
+
1014
+ ACKNOWLEDGEMENTS:
1015
+
1016
+ - Walter Briscoe
1017
+ - Jean-Pierre Demailly
1018
+ - Ruslan Fedyarov
1019
+ - Warren Gay
1020
+ - Florian Grosse-Coosmann
1021
+ - Vladimir Kokovic
1022
+ - Matt Maloy
1023
+ - K.H. Man
1024
+ - Michael Ryazanov
1025
+ - Ron Thibodeau
1026
+ - Alexandr Zamaraev
1027
+
1028
+ and of course, MARK HESSLING, for his over 13 years of service as the
1029
+ maintainer of PDCurses. Plus, thanks to all who've reported bugs or
1030
+ requested features. Apologies to anyone I've forgotten.
1031
+
1032
+ I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS;
1033
+ DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2;
1034
+ EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows;
1035
+ recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++;
1036
+ and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris.
1037
+
1038
+ -- William McBrine
1039
+
1040
+ ------------------------------------------------------------------------
1041
+
1042
+ PDCurses 2.6 - 2003/01/08
1043
+ =========================
1044
+
1045
+ INTRODUCTION:
1046
+
1047
+ This release of PDCurses includes the following changes:
1048
+
1049
+ BUGS FIXED:
1050
+
1051
+ - Allow accented characters on Win32 platform when run on non-English
1052
+ keyboards.
1053
+
1054
+ - Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned.
1055
+
1056
+ - Some bugs with halfdelay() fixed by William McBrine.
1057
+
1058
+ - pechochar() should now work correctly.
1059
+
1060
+ - redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi
1061
+
1062
+ - Don't include "special" characters like KEY_SHIFT_L to be returned in
1063
+ getnstr() family. Bug 542913
1064
+
1065
+ - Entering TAB in wgetnstr() no longer exceeds requested buffer size.
1066
+ Bug 489233
1067
+
1068
+ - Fixed bug 550066, scrollok() and pads.
1069
+ Also beep() called when buffer exceeded. Bug 562041.
1070
+
1071
+ - Reverse video of X11 selection reinstated. Pablo Garcia Abio??
1072
+
1073
+ - Right Alt modifier now works like left Alt modifier under Win32
1074
+
1075
+ - Add support for all libXaw replacement libraries with Scrollbar bug.
1076
+ Note that for this to work, you still have to change the libXaw
1077
+ replacement libraries to fix the bug :-(
1078
+
1079
+ - Don't trap signals in XCurses if calling application has ignored them.
1080
+ Change by Frank Heckenbach.
1081
+
1082
+ - Bug reports from Warren W. Gay:
1083
+ - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms.
1084
+ - Fix definition of getsyx() and setsyx() to be consistent with
1085
+ ncurses. Bug 624424.
1086
+ - Fix definition of echo() and noecho(). Bug 625001.
1087
+ - Fix definition of keypad() and leaveok(). Bug 632653.
1088
+ - Missing panel_hidden() prototype. Bug 649320.
1089
+
1090
+ - Fixed bug with calling def_prog_mode(), resize_term(),
1091
+ reset_prog_mode(); the resize details were being lost.
1092
+
1093
+ NEW FEATURES:
1094
+
1095
+ - Clipboard support now available on DOS platform, but handled
1096
+ internally to the currently running process.
1097
+
1098
+ - New X11 resource: textCursor, allows the text cursor to be specified
1099
+ as a vertical bar, or the standard horizontal bar. Thanks to Frank
1100
+ Heckenbach for the suggestion.
1101
+
1102
+ NEW COMPILER SUPPORT:
1103
+
1104
+ - lcc-win32 now works correctly
1105
+
1106
+ ------------------------------------------------------------------------
1107
+
1108
+ PDCurses 2.5 - 2001/11/26
1109
+ =========================
1110
+
1111
+ INTRODUCTION:
1112
+
1113
+ This release of PDCurses includes the following changes:
1114
+
1115
+ - Set BASE address for Win32 DLL
1116
+
1117
+ - Add KEY_SUP and KEY_SDOWN.
1118
+
1119
+ - Add PDC_set_line_color()
1120
+
1121
+ - Add blink support as bold background
1122
+
1123
+ - Add bold colors
1124
+
1125
+ - Add getbkgd() macro
1126
+
1127
+ - Add new PDC functions for adding underline, overline, leftline and
1128
+ rightline
1129
+
1130
+ - Add support for shifted keypad keys.
1131
+
1132
+ - Allow more keypad keys to work under Win32
1133
+
1134
+ - Change Win32 and OS/2 DLL name to curses.dll
1135
+
1136
+ - Change example resources to allow overriding from the command line
1137
+
1138
+ - Changes for building cleanly on OS/2
1139
+
1140
+ - Changes to handle building XCurses under AIX
1141
+
1142
+ - Check if prefresh() and pnoutrefresh() parameters are valid.
1143
+
1144
+ - Ensure build/install works from any directory
1145
+
1146
+ - Handle platforms where X11 headers do not typedef XPointer.
1147
+
1148
+ - Mention that Flexos is likely out-of-date.
1149
+
1150
+ - Pass delaytenths to XCurses_rawgetch()
1151
+
1152
+ - Remove boldFont
1153
+
1154
+ - Updates for cursor blinking and italic.
1155
+
1156
+ BUGS FIXED:
1157
+
1158
+ - Fix bug with getting Win32 clipboard contents. Added new
1159
+ PDC_freeclipboard() function.
1160
+
1161
+ - Fix bug with halfdelay()
1162
+
1163
+ - Fix bug with mouse interrupting programs that are not trapping mouse
1164
+ events under Win32.
1165
+
1166
+ - Fix return value from curs_set()
1167
+
1168
+ - Reverse the left and right pointing bars in ALT_CHARSET
1169
+
1170
+ NEW COMPILER SUPPORT:
1171
+
1172
+ - Add QNX-RTP port
1173
+
1174
+ ------------------------------------------------------------------------
1175
+
1176
+ PDCurses 2.4 - 2000/01/17
1177
+ =========================
1178
+
1179
+ INTRODUCTION:
1180
+
1181
+ This release of PDCurses includes the following changes:
1182
+
1183
+ - full support of X11 selection handling
1184
+
1185
+ - removed the need for the cursos2.h file
1186
+
1187
+ - enabled the "shifted" key on the numeric keypad
1188
+
1189
+ - added native clipboard support for X11, Win32 and OS/2
1190
+
1191
+ - added extra functions for obtaining internal PDCurses status
1192
+
1193
+ - added clipboard and key modifier tests in testcurs.c
1194
+
1195
+ - fixes for panel library
1196
+
1197
+ - key modifiers pressed by themselves are now returned as keys:
1198
+ KEY_SHIFT_L KEY_SHIFT_R KEY_CONTROL_L KEY_CONTROL_R KEY_ALT_L KEY_ALT_R
1199
+ This works on Win32 and X11 ports only
1200
+
1201
+ - Added X11 shared library support
1202
+
1203
+ - Added extra slk formats supported by ncurses
1204
+
1205
+ - Fixed bug with resizing the terminal when slk were on.
1206
+
1207
+ - Changed behavior of slk_attrset(), slk_attron() slk_attroff()
1208
+ functions to work more like ncurses.
1209
+
1210
+ BUGS FIXED:
1211
+
1212
+ - some minor bug and portability fixes were included in this release
1213
+
1214
+ NEW FUNCTIONS:
1215
+
1216
+ - PDC_getclipboard() and PDC_setclipboard() for accessing the native
1217
+ clipboard (X11, Win32 and OS/2)
1218
+
1219
+ - PDC_set_title() for setting the title of the window (X11 and Win32
1220
+ only)
1221
+
1222
+ - PDC_get_input_fd() for getting the file handle of the PDCurses input
1223
+
1224
+ - PDC_get_key_modifiers() for getting the keyboard modifier settings at
1225
+ the time of the last (w)getch()
1226
+
1227
+ - Xinitscr() (only for X11 port) which allows standard X11 switches to
1228
+ be passed to the application
1229
+
1230
+ NEW COMPILER SUPPORT:
1231
+
1232
+ - MingW32 GNU compiler under Win95/NT
1233
+
1234
+ - Cygnus Win32 GNU compiler under Win95/NT
1235
+
1236
+ - Borland C++ for OS/2 1.0+
1237
+
1238
+ - lcc-win32 compiler under Win95/NT
1239
+
1240
+ ACKNOWLEDGEMENTS: (for this release)
1241
+
1242
+ - Georg Fuchs for various changes.
1243
+ - Juan David Palomar for pointing out getnstr() was not implemented.
1244
+ - William McBrine for fix to allow black/black as valid color pair.
1245
+ - Peter Preus for pointing out the missing bccos2.mak file.
1246
+ - Laura Michaels for a couple of bug fixes and changes required to
1247
+ support Mingw32 compiler.
1248
+ - Frank Heckenbach for PDC_get_input_fd() and some portability fixes and
1249
+ the fixes for panel library.
1250
+ - Matthias Burian for the lcc-win32 compiler support.
1251
+
1252
+ ------------------------------------------------------------------------
1253
+
1254
+ PDCurses 2.3 - 1998/07/09
1255
+ =========================
1256
+
1257
+ INTRODUCTION:
1258
+
1259
+ This release of PDCurses includes the following changes:
1260
+
1261
+ - added more System V R4 functions
1262
+
1263
+ - added Win32 port
1264
+
1265
+ - the X11 port is now fully functional
1266
+
1267
+ - the MS Visual C++ Win32 port now includes a DLL
1268
+
1269
+ - both the X11 and Win32 ports support the mouse
1270
+
1271
+ - the slk..() functions are now functional
1272
+
1273
+ - support for scrollbars under X11 are experimental at this stage
1274
+
1275
+ - long chtype extended to non-Unix ports
1276
+
1277
+ The name of the statically built library is pdcurses.lib (or
1278
+ pdcurses.a). The name of the DLL import library (where applicable) is
1279
+ curses.lib.
1280
+
1281
+ BUGS FIXED:
1282
+
1283
+ - some minor bugs were corrected in this release
1284
+
1285
+ NEW FUNCTIONS:
1286
+
1287
+ - slk..() functions
1288
+
1289
+ NEW COMPILER SUPPORT:
1290
+
1291
+ - MS Visual C++ under Win95/NT
1292
+
1293
+ - Watcom C++ under OS/2, Win32 and DOS
1294
+
1295
+ - two EMX ports have been provided:
1296
+ - OS/2 only using OS/2 APIs
1297
+ - OS/2 and DOS using EMX video support routines
1298
+
1299
+ EXTRA OPTIONS:
1300
+
1301
+ PDCurses recognizes two environment variables which determines the
1302
+ initialization and finalization behavior. These environment variables
1303
+ do not apply to the X11 port.
1304
+
1305
+ PDC_PRESERVE_SCREEN -
1306
+ If this environment variable is set, PDCurses will not clear the screen
1307
+ to the default white on black on startup. This allows you to overlay
1308
+ a window over the top of the existing screen background.
1309
+
1310
+ PDC_RESTORE_SCREEN -
1311
+ If this environment variable is set, PDCurses will take a copy of the
1312
+ contents of the screen at the time that PDCurses is started; initscr(),
1313
+ and when endwin() is called, the screen will be restored.
1314
+
1315
+
1316
+ ACKNOWLEDGEMENTS: (for this release)
1317
+
1318
+ - Chris Szurgot for original Win32 port.
1319
+ - Gurusamy Sarathy for some updates to the Win32 port.
1320
+ - Kim Huron for the slk..() functions.
1321
+ - Florian Grosse Coosmann for some bug fixes.
1322
+ - Esa Peuha for reducing compiler warnings.
1323
+ - Augustin Martin Domingo for patches to X11 port to enable accented
1324
+ characters.
1325
+
1326
+ ------------------------------------------------------------------------
1327
+
1328
+ PDCurses 2.2 - 1995/02/12
1329
+ =========================
1330
+
1331
+ INTRODUCTION:
1332
+
1333
+ This release of PDCurses has includes a number of major changes:
1334
+
1335
+ - The portable library functions are now grouped together into single
1336
+ files with the same arrangement as System V R4 curses.
1337
+
1338
+ - A panels library has been included. This panels library was written by
1339
+ Warren Tucker.
1340
+
1341
+ - Quite a few more functions have been supplied by Wade Schauer and
1342
+ incorporated into release 2.2. Wade also supplied the support for the
1343
+ Microway NDP C/C++ 32 bit DOS compiler.
1344
+
1345
+ - The curses datatype has been changed from an unsigned int to a long.
1346
+ This allows more attributes to be stored as well as increasing the
1347
+ number of color-pairs from 32 to 64.
1348
+
1349
+ - Xwindows port (experimental at the moment).
1350
+
1351
+ BUGS FIXED:
1352
+
1353
+ - mvwin() checked the wrong coordinates
1354
+
1355
+ - removed DESQview shadow memory buffer checking bug in curses.h in
1356
+ \#define for wstandout()
1357
+
1358
+ - lots of others I can't remember
1359
+
1360
+ NEW FUNCTIONS:
1361
+
1362
+ - Too many to mention. See intro.man for a complete list of the
1363
+ functions PDCurses now supports.
1364
+
1365
+ COMPILER SUPPORT:
1366
+
1367
+ - DJGPP 1.12 is now supported. The run-time error that caused programs
1368
+ to crash has been removed.
1369
+
1370
+ - emx 0.9a is supported. A program compiled for OS/2 should also work
1371
+ under DOS if you use the VID=EMX switch when compiling. See the
1372
+ makefile for details.
1373
+
1374
+ - The Microway NDP C/C++ DOS compiler is now supported. Thanks to Wade
1375
+ Schauer for this port.
1376
+
1377
+ - The Watcom C++ 10.0 DOS compiler is now supported. Thanks to Pieter
1378
+ Kunst for this port.
1379
+
1380
+ - The library now has many functions grouped together to reduce the size
1381
+ of the library and to improve the speed of compilation.
1382
+
1383
+ - The "names" of a couple of the compilers in the makefile has changed;
1384
+ CSET2 is now ICC and GO32 is now GCC.
1385
+
1386
+ EXTRA OPTIONS:
1387
+
1388
+ One difference between the behavior of PDCurses and Unix curses is the
1389
+ attributes that are displayed when a character is cleared. Under Unix
1390
+ curses, no attributes are displayed, so the result is always black.
1391
+ Under PDCurses, these functions clear with the current attributes in
1392
+ effect at the time. With the introduction of the bkgd functions, by
1393
+ default, PDCurses clears using the value set by (w)bkgd(). To have
1394
+ PDCurses behave the same way as it did before release 2.2, compile with
1395
+ -DPDCURSES_WCLR
1396
+
1397
+ ACKNOWLEDGEMENTS: (for this release)
1398
+
1399
+ Pieter Kunst, David Nugent, Warren Tucker, Darin Haugen, Stefan Strack,
1400
+ Wade Schauer and others who either alerted me to bugs or supplied
1401
+ fixes.
1402
+
1403
+ ------------------------------------------------------------------------
1404
+
1405
+ PDCurses 2.1 - 1993/06/20
1406
+ =========================
1407
+
1408
+ INTRODUCTION:
1409
+
1410
+ The current code contains bug fixes for the DOS and OS/2 releases and
1411
+ also includes an alpha release for Unix. The Unix release uses another
1412
+ public domain package (mytinfo) to handle the low-level screen writes.
1413
+ mytinfo was posted to comp.sources.unix (or misc) in December 1992 or
1414
+ January 1993. Unless you are a glutton for punishment I would recommend
1415
+ you avoid the Unix port at this stage.
1416
+
1417
+ The other major addition to PDCurses is the support for DJGPP (the DOS
1418
+ port of GNU C++). Thanks to David Nugent <davidn@csource.oz.au>.
1419
+
1420
+ Other additions are copywin() function, function debugging support and
1421
+ getting the small and medium memory models to work. The testcurs.c demo
1422
+ program has also been changed significantly and a new demo program,
1423
+ tuidemo, has been added.
1424
+
1425
+ Some people have suggested including information on where to get dmake
1426
+ from. oak.oakland.edu in /pub/msdos/c
1427
+
1428
+ OTHER NOTES:
1429
+
1430
+ Under DOS, by default, screen writes to a CGA monitor are done via the
1431
+ video BIOS rather than by direct video memory writes. This is due to
1432
+ the CGA "snow" problem. If you have a CGA monitor and do not suffer
1433
+ from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
1434
+ This will then use cause PDCurses to write directly to the CGA video
1435
+ memory.
1436
+
1437
+ Function debugging: Firstly to get function debugging, you have to
1438
+ compile the library with OPT=N in the makefile. This also turns on
1439
+ compiler debugging. You can control when you want PDCurses to write to
1440
+ the debug file (called trace in the current directory) by using the
1441
+ functions traceon() and traceoff() in your program.
1442
+
1443
+ Microsoft C 6.00 Users note:
1444
+ ----------------------------
1445
+
1446
+ With the addition of several new functions, using dmake to compile
1447
+ PDCurses now causes the compiler to run "out of heap space in pass 2".
1448
+ Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes this
1449
+ problem; hence the -EM switch.
1450
+
1451
+ Functional changes
1452
+ ------------------
1453
+
1454
+ Added OS/2 DLL support.
1455
+
1456
+ A few curses functions have been fixed to exhibit their correct
1457
+ behavior and make them more functionally portable with System V
1458
+ curses. The functions that have changed are overlay(), overwrite() and
1459
+ typeahead.
1460
+
1461
+ overlay() and overwrite()
1462
+
1463
+ Both of theses functions in PDCurses 2.0 allowed for one window to be
1464
+ effectively placed on top of another, and the characters in the first
1465
+ window were overlaid or overwritten starting at 0,0 in both windows.
1466
+ This behavior of these functions was not correct. These functions only
1467
+ operate on windows that physically overlap with respect to the
1468
+ displayed screen. To achieve the same functionality as before, use the
1469
+ new function copywin(). See the manual page for further details.
1470
+
1471
+ typeahead()
1472
+
1473
+ This function in PDCurses 2.0 effectively checked to see if there were
1474
+ any characters remaining in the keyboard buffer. This is not the
1475
+ behavior exhibited by System V curses. This function is intended
1476
+ purely to set a flag so that curses can check while updating the
1477
+ physical screen if any keyboard input is pending. To achieve the same
1478
+ effect with typeahead() under PDCurses 2.1 the following code should be
1479
+ used.
1480
+
1481
+ In place of...
1482
+
1483
+ while(!typeahead(stdin))
1484
+ {
1485
+ /* do something until any key is pressed... */
1486
+ }
1487
+
1488
+ use...
1489
+
1490
+ /* getch() to return ERR if no key pending */
1491
+ nodelay(stdscr,TRUE);
1492
+ while(getch() == (ERR))
1493
+ {
1494
+ /* do something until any key is pressed... */
1495
+ }
1496
+
1497
+
1498
+ ACKNOWLEDGEMENTS: (in no particular order)
1499
+
1500
+ Jason Shumate, Pieter Kunst, David Nugent, Andreas Otte, Pasi
1501
+ Hamalainen, James McLennan, Duane Paulson, Ib Hojme
1502
+
1503
+ Apologies to anyone I may have left out.
1504
+
1505
+ ------------------------------------------------------------------------
1506
+
1507
+ PDCurses 2.0 - 1992/11/23
1508
+ =========================
1509
+
1510
+ INTRODUCTION:
1511
+
1512
+ Well, here it finally is; PDCurses v2.0.
1513
+
1514
+ PDCurses v2.0 is an almost total rewrite of PCcurses 1.4 done by John
1515
+ 'Frotz' Fa'atuai, the previous maintainer. It adds support for OS/2 as
1516
+ well as DOS.
1517
+
1518
+ This version has been tested with Microsoft C v6.0, QuickC v2.0 and
1519
+ Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02
1520
+ under OS/2 2.0. Also the library has been compiled successfully with
1521
+ emx 0.8e, C Set/2 and Watcom 9. Most testing was done with the large
1522
+ memory model, where applicable. The large memory model is probably the
1523
+ best model to use.
1524
+
1525
+ The amount of testing has not been as extensive as I would have liked,
1526
+ but demands on releasing a product have outweighed the product's
1527
+ quality. Nothing new with that !! Hopefully with wider circulation,
1528
+ more bugs will be fixed more quickly.
1529
+
1530
+ I have included just 1 makefile which is suitable for dmake 3.8 for
1531
+ both DOS and OS/2. The makefile does not rely on customization of the
1532
+ dmake.ini file.
1533
+
1534
+ If you discover bugs, and especially if you have fixes, please let me
1535
+ know ASAP.
1536
+
1537
+ The source to the library is distributed as a zip file made with zip
1538
+ 1.9. You will need Info-ZIP unzip 5.0 to unzip. Follow the directions
1539
+ below to compile the library.
1540
+
1541
+ DIRECTIONS:
1542
+
1543
+ 1. Create a new directory in which to unzip pdcurs20.zip. This will
1544
+ create a curses directory and a number of subdirectories containing
1545
+ source code for the library and utilities and the documentation.
1546
+
1547
+ 2. Make changes to the makefile where necessary:
1548
+ Change the MODEL or model macro to the appropriate value (if it
1549
+ applies to your compiler). Use model for Borland compilers.
1550
+
1551
+ Change any paths in the defined macros to be suitable for your
1552
+ compiler.
1553
+
1554
+ 3. Invoke DMAKE [-e environment_options] [target]
1555
+
1556
+ where environment_options are:
1557
+
1558
+ OS (host operating system)
1559
+ COMP (compiler)
1560
+ OPT (optimized version or debug version) - optional. default Y
1561
+ TOS (target operating system) - optional. default OS
1562
+
1563
+ see the makefile for valid combinations
1564
+
1565
+ targets: all, demos, lcursesd.lib, manual...
1566
+
1567
+ NB. dmake is case sensitive with targets, so those environments that
1568
+ use an upper case model value (eg MSC) MUST specify the library
1569
+ target as for eg. Lcursesd.lib
1570
+
1571
+ The makefile is by default set up for Borland C++. The use of -e
1572
+ environment_options override these defaults. If you prefer, you can
1573
+ just change the defaults in the makefile and invoke it without the
1574
+ -e switch.
1575
+
1576
+ OTHER NOTES:
1577
+
1578
+ The documentation for the library is built into each source file, a
1579
+ couple of specific doc files and the header files. A program is
1580
+ supplied (manext) to build the manual. This program gets compiled when
1581
+ you build the documentation.
1582
+
1583
+ To generate the library response file correctly, I had to write a quick
1584
+ and dirty program (buildlrf) to achieve this. Originally the makefiles
1585
+ just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" which appended
1586
+ a suitable line to the response file. Unfortunately under some
1587
+ combinations of makefiles and command processors (eg. nmake and 4DOS)
1588
+ the & would get treated as stderr and the echo command would fail.
1589
+
1590
+ The original source for PDCurses that I received from the previous
1591
+ maintainer contained support for the FLEXOS operating system. Not
1592
+ having access to it, I could not test the changes I made so its support
1593
+ has fallen by the wayside. If you really need to have PDCurses running
1594
+ under FLEXOS, contact me and I will see what can be arranged.
1595
+
1596
+ Under DOS, by default, screen writes to a CGA monitor are done via the
1597
+ video BIOS rather than by direct video memory writes. This is due to
1598
+ the CGA "snow" problem. If you have a CGA monitor and do not suffer
1599
+ from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
1600
+ This will then use cause PDCurses to write directly to the CGA video
1601
+ memory.
1602
+
1603
+ Added System V color support.
1604
+
1605
+ COMPILER-SPECIFIC NOTES:
1606
+
1607
+ Microsoft C
1608
+ -----------
1609
+
1610
+ It is possible with MSC 6.0 to build the OS/2 libraries and demo
1611
+ programs from within DOS. This is the only case where it is possible to
1612
+ specify the value of TOS on the command line to be OS2 and the value of
1613
+ OS be DOS.
1614
+
1615
+ C Set/2
1616
+ -------
1617
+
1618
+ I have only tested the library using the migration libraries. I doubt
1619
+ that the demo programs will work without them.
1620
+
1621
+ emx
1622
+ ---
1623
+
1624
+ Testing has been done with 0.8e of emx together with the 16_to_32
1625
+ libraries. The emx\lib directory should include the vio32.lib and
1626
+ kbd32.lib libraries from the 16_to_32 package.
1627
+
1628
+ BUGS and UNFINISHED BUSINESS:
1629
+
1630
+ - PDC_set_ctrl_break() function does not work under OS/2.
1631
+
1632
+ - win_print() and PDC_print() do not work under OS/2.
1633
+
1634
+ - The file todo.man in the doc directory also lists those functions of
1635
+ System V 3.2 curses not yet implemented. Any volunteers?
1636
+
1637
+ ACKNOWLEDGEMENTS:
1638
+
1639
+ - John 'Frotz' Fa'atuai, the previous maintainer for providing an
1640
+ excellent base for further development.
1641
+ - John Burnell <johnb@kea.am.dsir.govt.nz>, for the OS/2 port.
1642
+ - John Steele, Jason (finally NOT a John) Shumate....
1643
+ for various fixes and suggestions.
1644
+ - Eberhardt Mattes (author of emx) for allowing code based on his
1645
+ C library to be included with PDCurses.
1646
+ - Several others for their support, moral and actual.
1647
+
1648
+ -- Mark Hessling
1649
+
1650
+ ------------------------------------------------------------------------
1651
+
1652
+ PDCurses 2.0Beta - 1991/12/21
1653
+ =============================
1654
+
1655
+ Changed back from short to int. (int is the correct size for the default
1656
+ platform. Short might be too short on some platforms. This is more
1657
+ portable. I, also, made this mistake.)
1658
+
1659
+ Many functions are now macros. If you want the real thing, #undef the
1660
+ macro. (X/Open requirement.)
1661
+
1662
+ Merged many sources into current release.
1663
+
1664
+ Added many X/Open routines (not quite all yet).
1665
+
1666
+ Added internal documentation to all routines.
1667
+
1668
+ Added a HISTORY file to the environment.
1669
+
1670
+ Added a CONTRIB file to the environment.
1671
+
1672
+ ------------------------------------------------------------------------
1673
+
1674
+ PDCurses 1.5Beta - 1990/07/14
1675
+ =============================
1676
+
1677
+ Added many levels of compiler support. Added mixed prototypes for all
1678
+ "internal" routines. Removed all assembly language. Added EGA/VGA
1679
+ support. Converted all #ifdef to #if in all modules except CURSES.H and
1680
+ CURSPRIV.H. Always include ASSERT.H. Added support for an external
1681
+ malloc(), calloc() and free(). Added support for FAST_VIDEO
1682
+ (direct-memory writes). Added various memory model support (for
1683
+ FAST_VIDEO). Added much of the December 1988 X/Open Curses
1684
+ specification.
1685
+
1686
+ -- John 'Frotz' Fa'atuai
1687
+
1688
+ ------------------------------------------------------------------------
1689
+
1690
+ PCcurses 1.4 - 1990/01/14
1691
+ =========================
1692
+
1693
+ In PCcurses v.1.4, both portability improvements and bugfixes have
1694
+ been made. The files have been changed to allow lint-free compilation
1695
+ with Microsoft C v.5.1, and with Turbo C v.2.0. The source should still
1696
+ compile without problems on older compilers, although this has not been
1697
+ verified.
1698
+
1699
+ The makefiles have been changed to suit both the public release and
1700
+ the author, who maintains a special kind of libraries for himself. In
1701
+ the case of Microsoft C, changes were done in the makefile to lower the
1702
+ warning level to 2 (was 3). This was to avoid ANSI warnings which are
1703
+ abundant because PCcurses does not attempt to follow strict ANSI C
1704
+ standard.
1705
+
1706
+ BUG FIXES FROM V.1.3 TO V.1.4:
1707
+
1708
+ !!!IMPORTANT CHANGE!!!
1709
+
1710
+ The definitions for OK and ERR in curses.h were exchanged. This was
1711
+ done to be more consistent with UNIX versions. Also, it permits
1712
+ functions like newwin() and subwin() to return 0 (=NULL) when they fail
1713
+ due to memory shortage. This incompatibility with UNIX curses was
1714
+ pointed out by Fred C. Smith. If you have tested success/failure by
1715
+ comparisons to anything other than ERR and OK, your applications will
1716
+ need to be be changed on that point. Sorry... but presumably most of you
1717
+ used the symbolic constants?
1718
+
1719
+ (END OF IMPORTANT CHANGE)
1720
+
1721
+ Fred also pointed out a bug in the file update.c. The bug caused the
1722
+ first character printed after 'unauthorized' screen changes (like during
1723
+ a shell escape, for example) to be placed at the wrong screen position.
1724
+ This happened even if the normal precautions (clear / touch / refresh)
1725
+ were taken. The problem has now been fixed.
1726
+
1727
+ PCcurses is currently also being used on a 68000 system with
1728
+ hard-coded ESCape sequences for ANSI terminals. However, ints used by
1729
+ the 68000 C compiler are 32 bits. Therefore ints have been turned into
1730
+ shorts wherever possible in the code (otherwise all window structures
1731
+ occupy twice as much space as required on the 68000). This does not
1732
+ affect PC versions since normally both ints and shorts are 16 bits for
1733
+ PC C compilers.
1734
+
1735
+ At some places in the source code there are references made to the
1736
+ 68000 version. There are also a makefile, a curses68.c file, and a
1737
+ curses68.cmd file. These are for making, low-level I/O, and linking
1738
+ commands when building the 68000 version. These files are probably
1739
+ useful to no-one but the author, since it is very specific for its
1740
+ special hardware environment. Still in an effort to keep all
1741
+ curses-related sources in one place they are included. Note however that
1742
+ PCcurses will not officially support a non-PC environment.
1743
+
1744
+ The file cursesio.c, which was included in the package at revision
1745
+ level 1.2, and which was to be an alternative to the cursesio.asm file,
1746
+ has been verified to behave incorrectly in the function _curseskeytst().
1747
+ The problem was that the value of 'cflag' does not contain the proper
1748
+ data for the test that is attempted. Furthermore, neither Turbo C or
1749
+ Microsoft C allows any way to return the data that is needed, and
1750
+ consequently you should not use cursesio.c. The best solution is to
1751
+ simply use the ASM version. In v.1.2 and v.1.3, the user could edit the
1752
+ makefile to select which version he wanted to use. The makefiles in
1753
+ v.1.4 have removed this possibility forcing the use of the ASM file, and
1754
+ cursesio.c has been dropped from the distribution.
1755
+
1756
+ A bug in the wgetstr() function caused PCcurses to echo characters
1757
+ when reading a keyboard string, even if the echo had been turned off.
1758
+ Thanks to Per Foreby at Lund University, Sweden, for this. Per also
1759
+ reported bugs concerning the handling of characters with bit 8 set.
1760
+ Their ASCII code were considered as lower than 32, so they were erased
1761
+ etc. like control characters, i.e. erasing two character positions. The
1762
+ control character test was changed to cope with this.
1763
+
1764
+ The overlay() and overwrite() functions were changed so that the
1765
+ overlaying window is positioned at its 'own' coordinates inside the
1766
+ underlying window (it used to be at the underlying window's [0,0]
1767
+ position). There is some controversy about this - the documentation for
1768
+ different curses versions say different things. I think the choice made
1769
+ is the most reasonable.
1770
+
1771
+ The border() and wborder() functions were changed to actually draw a
1772
+ border, since this seems to be the correct behavior of these functions.
1773
+ They used to just set the border characters to be used by box(). These
1774
+ functions are not present in standard BSD UNIX curses.
1775
+
1776
+ The subwin() function previously did not allow the subwindow to be as
1777
+ big as the original window in which it was created. This has now been
1778
+ fixed. There was also the problem that the default size (set by
1779
+ specifying numlines or numcols (or both) as 0 made the resulting actual
1780
+ size 1 line/column too small.
1781
+
1782
+ There were a few spelling errors in function names, both in the
1783
+ function declarations and in curses.h. This was reported by Carlos
1784
+ Amaral at INESC in Portugal. Thanks! There was also an unnecessary (but
1785
+ harmless) parameter in a function call at one place.
1786
+
1787
+ ------------------------------------------------------------------------
1788
+
1789
+ PCcurses 1.3 - 1988/10/05
1790
+ =========================
1791
+
1792
+ The file 'border.c' is now included. It allows you to explicitly
1793
+ specify what characters should be used as box borders when the box()
1794
+ functions are called. If the new border characters are non-0, they
1795
+ override the border characters specified in the box() call. In my
1796
+ understanding, this functionality is required for AT&T UNIX sV.3
1797
+ compatibility. Thanks for this goes to Tony L. Hansen
1798
+ (hansen@pegasus.UUCP) for posting an article about it on Usenet
1799
+ (newsgroup comp.unix.questions; his posting was not related at all to
1800
+ PCcurses).
1801
+
1802
+ The only other difference between v.1.2 and v.1.3 is that the latter
1803
+ has been changed to avoid warning diagnostics if the source files are
1804
+ compiled with warning switches on (for Microsoft this means '-W3', for
1805
+ Turbo C it means '-w -w-pro'). Of these, the Turbo C warning check is
1806
+ clearly to be used rather than Microsoft, even if neither of them comes
1807
+ even close to a real UNIX 'lint'. Some of the warnings in fact indicated
1808
+ real bugs, mostly functions that did not return correct return values or
1809
+ types.
1810
+
1811
+ The makefiles for both MSC and TRC have been modified to produce
1812
+ warning messages as part of normal compilation.
1813
+
1814
+ ------------------------------------------------------------------------
1815
+
1816
+ PCcurses 1.2 - 1988/10/02
1817
+ =========================
1818
+
1819
+ The changes from v.1.1 to v.1.2 are minor. The biggest change is that
1820
+ there was a bug related to limiting the cursor movement if the
1821
+ application tried to move it outside the screen (something that should
1822
+ not be done anyway). Such erroneous application behavior is now handled
1823
+ appropriately.
1824
+
1825
+ All modules have been changed to have a revision string in them, which
1826
+ makes it easier to determine what version is linked into a program (or
1827
+ what library version you have).
1828
+
1829
+ There is now a 'cursesio.c' file. That file does the same as
1830
+ 'cursesio.asm' (i.e. it provides the interface to the lower-level system
1831
+ I/O routines). It is written in C and thus it is (possibly) more
1832
+ portable than the assembler version (but still not so portable since it
1833
+ uses 8086 INT XX calls directly). When one creates new curses libraries,
1834
+ one chooses whether to use the assembler or the C version of cursesio.
1835
+ The choice is made by commenting out the appropriate dependencies for
1836
+ cursesio.obj, near the end of the makefiles.
1837
+
1838
+ There is now a 'setmode.c' file. That file contains functions that
1839
+ save and restore terminal modes. They do it into other variables than do
1840
+ savetty() and resetty(), so one should probably use either
1841
+ savetty()/resetty() or the new functions only - and not mix the both
1842
+ ways unless one really knows what one does.
1843
+
1844
+ Diff lists vs v.1.0 are no longer included in the distribution. The
1845
+ make utility still is. PCcurses v.1.2 still compiles with Microsoft C
1846
+ v.4.0, and with Borland Turbo C v.1.0. There is as far as I know no
1847
+ reason to believe that it does not compile under Microsoft C v.3.0 and
1848
+ 5.x, or Turbo C v.1.5, but this has not been tested.
1849
+
1850
+ There are two makefiles included, one for Microsoft C, one for Turbo
1851
+ C. They are both copies of my personal makefiles, and as such they
1852
+ reflect the directory structure on my own computer. This will have to be
1853
+ changed before you run make. Check $(INCDIR) and $(LIBDIR) in
1854
+ particular, and make the choice of ASM or C cursesio version as
1855
+ mentioned above (the distribution version uses the C version of
1856
+ cursesio).
1857
+
1858
+ The manual file (curses.man) has been changed at appropriate places.
1859
+
1860
+ I would like to thank the following persons for their help:
1861
+
1862
+ Brandon S. Allbery (alberry@ncoast.UUCP)
1863
+ for running comp.binaries.ibm.pc (at that time)
1864
+ and comp.source.misc.
1865
+
1866
+ Steve Balogh (Steve@cit5.cit.oz.AU)
1867
+ for writing a set of manual pages and posting
1868
+ them to the net.
1869
+
1870
+ Torbjorn Lindh
1871
+ for finding bugs and suggesting raw
1872
+ character output routines.
1873
+
1874
+ Nathan Glasser (nathan@eddie.mit.edu)
1875
+ for finding and reporting bugs.
1876
+
1877
+ Ingvar Olafsson (...enea!hafro!ingvar)
1878
+ for finding and reporting bugs.
1879
+
1880
+ Eric Rosco (...enea!ipmoea!ericr)
1881
+ for finding and reporting bugs.
1882
+
1883
+ Steve Creps (creps@silver.bacs.indiana.edu)
1884
+ for doing a lot of work - among others
1885
+ posting bug fixes to the net, and writing
1886
+ the new cursesio.c module.
1887
+
1888
+ N. Dean Pentcheff (dean@violet.berkeley.edu)
1889
+ for finding bugs and rewriting cursesio.asm
1890
+ for Turbo 'C' 1.5.
1891
+
1892
+ Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff)
1893
+ (jeff@ads.arpa)
1894
+ has had a shareware version of curses deliverable since
1895
+ about half a year before I released PCcurses 1.0 on Use-
1896
+ Net. He is very concerned about confusion between the two
1897
+ packages, and therefore any references on the network
1898
+ should make clear whether they reference Dean's PCcurses
1899
+ or Larsson's PCcurses.
1900
+
1901
+ ------------------------------------------------------------------------
1902
+
1903
+ PCcurses 1.1 - 1988/03/06
1904
+ =========================
1905
+
1906
+ The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes,
1907
+ and new (non-portable) functions for verbatim IBM character font display
1908
+ have been added (in charadd.c and charins.c). The manual file
1909
+ (curses.man) has been changed at appropriate places.
1910
+
1911
+ In the file v10tov11.dif there are listings of the differences between
1912
+ version 1.0 and 1.1. The diff listings are in UNIX diff(1) format.
1913
+
1914
+ Version 1.1 compiles with Turbo C v.1.0, as well as Microsoft C v.3.0
1915
+ and v.4.0. On the release disk there is a make.exe utility which is very
1916
+ similar to UNIX make (If the package was mailed to you, the make utility
1917
+ will be in uuencoded format - in make.uu - and must be uudecoded first).
1918
+ It is much more powerful than Microsoft's different MAKEs; the latter
1919
+ ones will NOT generate libraries properly if used with the PCcurses
1920
+ makefiles.
1921
+
1922
+ There are three makefiles:
1923
+
1924
+ makefile generic MSC 3.0 makefile
1925
+ makefile.ms MSC 4.0 makefile
1926
+ makefile.tc Turbo C 1.0 makefile
1927
+
1928
+ To make a library with for example Turbo C, make directories to hold
1929
+ .H and .LIB files (these directories are the 'standard places'), edit
1930
+ makefile.tc for this, and type
1931
+
1932
+ make -f makefile.tc all
1933
+
1934
+ and libraries for all memory models will be created in the .LIB
1935
+ directory, while the include files will end up in the .H directory. Also
1936
+ read what is said about installation below!
1937
+
1938
+ ------------------------------------------------------------------------
1939
+
1940
+ PCcurses 1.0 - 1987/08/24
1941
+ =========================
1942
+
1943
+ This is the release notes for the PCcurses v.1.0 cursor/window control
1944
+ package. PCcurses offers the functionality of UNIX curses, plus some
1945
+ extras. Normally it should be possible to port curses-based programs
1946
+ from UNIX curses to PCcurses on the IBM PC without changes. PCcurses is
1947
+ a port/ rewrite of Pavel Curtis' public domain 'ncurses' package. All
1948
+ the code has been re-written - it is not just an edit of ncurses (or
1949
+ UNIX curses). I mention this to clarify any copyright violation claims.
1950
+ The data structures and ideas are very similar to ncurses. As for UNIX
1951
+ curses, I have not even seen any sources for it.
1952
+
1953
+ For an introduction to the use of 'curses' and its derivatives, you
1954
+ should read 'Screen Updating and Cursor Movement Optimization: A Library
1955
+ Package' by Kenneth C. R. C. Arnold, which describes the original
1956
+ Berkeley UNIX version of curses. It is available as part of the UNIX
1957
+ manuals. The other source of information is 'The Ncurses Reference
1958
+ Manual' by Pavel Curtis. The latter is part of Curtis' ncurses package.
1959
+
1960
+ The only other documentation provided is a 'man' page which describes
1961
+ all the included functions in a very terse way. In the sources, each
1962
+ function is preceded by a rather thorough description of what the
1963
+ function does. I didn't have time to write a nice manual/tutorial -
1964
+ sorry.
1965
+
1966
+ PCcurses is released as a number of source files, a man page, and a
1967
+ make file. A uuencoded copy of a 'make' utility, and a manpage for the
1968
+ 'make' is also provided to make it easier to put together PCcurses
1969
+ libraries. Even if you are not interested in PCcurses, it may be
1970
+ worthwhile to grab the make.
1971
+
1972
+ The makefile assumes the presence of the Microsoft C compiler (3.0 or
1973
+ 4.0), Microsoft MASM and LIB, plus some MS-DOS utilities. The reason for
1974
+ supplying MAKE.EXE is that the Microsoft 'MAKE:s' are much inferior to a
1975
+ real UNIX make. The supplied make is a port of a public domain make,
1976
+ published on Usenet. It is almost completely compatible with UNIX make.
1977
+ When generating the curses libraries, the makefile will direct make to
1978
+ do some directory creating and file copying, and then re-invoke itself
1979
+ with new targets. The workings of the makefile are not absolutely
1980
+ crystal clear at first sight... just start it and see what it does.
1981
+
1982
+ For portability, the curses libraries depend on one assembler file for
1983
+ access to the BIOS routines. There is no support for the EGA, but both
1984
+ CGA, MGA, and the HGA can be used. The libraries are originally for
1985
+ Microsoft C, but all C modules should be portable right away. In the
1986
+ assembler file, segment names probably need to be changed, and possibly
1987
+ the parameter passing scheme. I think Turbo C will work right away - as
1988
+ far as I understand, all its conventions are compatible with Microsoft
1989
+ C.
1990
+
1991
+ There are some parts left out between ncurses and PCcurses. One is the
1992
+ support for multiple terminals - not very interesting on a PC anyway.
1993
+ Because we KNOW what terminal we have, there is no need for a termcap or
1994
+ terminfo library. PCcurses also has some things that neither curses nor
1995
+ ncurses have. Compared to the original UNIX curses, PCcurses has lots of
1996
+ extras.
1997
+
1998
+ The BIOS routines are used directly, which gives fast screen updates.
1999
+ PCcurses does not do direct writes to screen RAM - in my opinion it is
2000
+ a bit ugly to rely that much on hardware compatibility. Anyone could fix
2001
+ that, of course...
2002
+
2003
+ One of the more serious problems with PCcurses is the way in which
2004
+ normal, cbreak, and raw input modes are done. All those details are in
2005
+ the 'charget' module - I do raw I/O via the BIOS, and perform any
2006
+ buffering myself. If an application program uses PCcurses, it should do
2007
+ ALL its I/O via PCcurses calls, otherwise the mix of normal and
2008
+ PCcurses I/O may mess up the display. I think my code is reasonable...
2009
+ comments are welcome, provided you express them nicely...
2010
+
2011
+ To install, copy all files to a work directory, edit 'makefile' to
2012
+ define the standard include and library file directory names of your
2013
+ choice (these directories must exist already, and their path names must
2014
+ be relative to the root directory, not to the current one). You must
2015
+ also run uudecode on make.uu, to generate MAKE.EXE. You can do that on
2016
+ your PC, if you have uudecode there, otherwise you can do it under UNIX
2017
+ and do a binary transfer to the PC. When you have MAKE.EXE in your work
2018
+ directory (or in your /bin directory), type make.
2019
+
2020
+ Make will now create 4 sub-directories (one for each memory model),
2021
+ copy some assembler include files into them, copy two include files to
2022
+ your include directory, CHDIR to each sub-directory and re-invoke itself
2023
+ with other make targets to compile and assemble all the source files
2024
+ into the appropriate directories. Then the library manager is run to
2025
+ create the library files in your desired library directory. Presto!
2026
+
2027
+ If you only want to generate a library for one memory model, type
2028
+ 'make small', 'make large', etc. The name of the memory model must be in
2029
+ lower case, like in the makefile.
2030
+
2031
+ I think the package is fairly well debugged - but then again, that's
2032
+ what I always think. It was completed in May-87, and no problems found
2033
+ yet. Now it's your turn... Comments, suggestions and bug reports and
2034
+ fixes (no flames please) to
2035
+
2036
+ -- Bjorn Larsson