curses 1.4.4 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +6 -0
  3. data/.github/workflows/macos.yml +1 -1
  4. data/.github/workflows/push_gem.yml +48 -0
  5. data/.github/workflows/ubuntu.yml +2 -2
  6. data/.github/workflows/windows.yml +2 -2
  7. data/History.md +23 -0
  8. data/README.md +7 -0
  9. data/curses.gemspec +1 -1
  10. data/ext/curses/curses.c +7 -7
  11. data/sample/colors.rb +6 -1
  12. data/sample/form.rb +1 -1
  13. data/sample/menu.rb +2 -0
  14. metadata +9 -251
  15. data/vendor/PDCurses/.gitignore +0 -47
  16. data/vendor/PDCurses/.travis.yml +0 -49
  17. data/vendor/PDCurses/CMakeLists.txt +0 -68
  18. data/vendor/PDCurses/HISTORY.md +0 -2036
  19. data/vendor/PDCurses/IMPLEMNT.md +0 -327
  20. data/vendor/PDCurses/Makefile +0 -27
  21. data/vendor/PDCurses/README.md +0 -77
  22. data/vendor/PDCurses/acs_defs.h +0 -265
  23. data/vendor/PDCurses/appveyor.yml +0 -218
  24. data/vendor/PDCurses/cmake/README.md +0 -71
  25. data/vendor/PDCurses/cmake/build_dependencies.cmake +0 -178
  26. data/vendor/PDCurses/cmake/build_options.cmake +0 -25
  27. data/vendor/PDCurses/cmake/dll_version.cmake +0 -26
  28. data/vendor/PDCurses/cmake/gen_config_header.cmake +0 -43
  29. data/vendor/PDCurses/cmake/get_version.cmake +0 -17
  30. data/vendor/PDCurses/cmake/make_uninstall.cmake +0 -19
  31. data/vendor/PDCurses/cmake/project_common.cmake +0 -121
  32. data/vendor/PDCurses/cmake/resource.in.cmake +0 -52
  33. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +0 -83
  34. data/vendor/PDCurses/cmake/target_arch.cmake +0 -36
  35. data/vendor/PDCurses/cmake/version.in.cmake +0 -73
  36. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +0 -96
  37. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +0 -106
  38. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +0 -105
  39. data/vendor/PDCurses/curses.h +0 -1846
  40. data/vendor/PDCurses/curspriv.h +0 -134
  41. data/vendor/PDCurses/demos/README.md +0 -25
  42. data/vendor/PDCurses/demos/firework.c +0 -144
  43. data/vendor/PDCurses/demos/newtest.c +0 -581
  44. data/vendor/PDCurses/demos/ozdemo.c +0 -447
  45. data/vendor/PDCurses/demos/ptest.c +0 -283
  46. data/vendor/PDCurses/demos/rain.c +0 -157
  47. data/vendor/PDCurses/demos/testcurs.c +0 -1607
  48. data/vendor/PDCurses/demos/tui.c +0 -1048
  49. data/vendor/PDCurses/demos/tui.h +0 -65
  50. data/vendor/PDCurses/demos/tuidemo.c +0 -233
  51. data/vendor/PDCurses/demos/version.c +0 -61
  52. data/vendor/PDCurses/demos/worm.c +0 -432
  53. data/vendor/PDCurses/demos/xmas.c +0 -955
  54. data/vendor/PDCurses/dos/CMakeLists.txt +0 -47
  55. data/vendor/PDCurses/dos/Makefile +0 -105
  56. data/vendor/PDCurses/dos/Makefile.bcc +0 -83
  57. data/vendor/PDCurses/dos/Makefile.dmc +0 -257
  58. data/vendor/PDCurses/dos/Makefile.msc +0 -113
  59. data/vendor/PDCurses/dos/Makefile.wcc +0 -107
  60. data/vendor/PDCurses/dos/README.md +0 -51
  61. data/vendor/PDCurses/dos/bccdos.lrf +0 -9
  62. data/vendor/PDCurses/dos/mscdos.lrf +0 -50
  63. data/vendor/PDCurses/dos/pdcclip.c +0 -132
  64. data/vendor/PDCurses/dos/pdcdisp.c +0 -135
  65. data/vendor/PDCurses/dos/pdcdos.h +0 -194
  66. data/vendor/PDCurses/dos/pdcgetsc.c +0 -98
  67. data/vendor/PDCurses/dos/pdckbd.c +0 -513
  68. data/vendor/PDCurses/dos/pdcscrn.c +0 -785
  69. data/vendor/PDCurses/dos/pdcsetsc.c +0 -101
  70. data/vendor/PDCurses/dos/pdcutil.c +0 -212
  71. data/vendor/PDCurses/libobjs.mif +0 -26
  72. data/vendor/PDCurses/makedist.mif +0 -20
  73. data/vendor/PDCurses/man/Makefile +0 -37
  74. data/vendor/PDCurses/man/README.md +0 -21
  75. data/vendor/PDCurses/man/intro.md +0 -361
  76. data/vendor/PDCurses/man/manext.c +0 -119
  77. data/vendor/PDCurses/man/sdl.md +0 -152
  78. data/vendor/PDCurses/man/sdl2.md +0 -58
  79. data/vendor/PDCurses/man/x11.md +0 -407
  80. data/vendor/PDCurses/ncurses/CMakeLists.txt +0 -66
  81. data/vendor/PDCurses/ncurses/README.md +0 -26
  82. data/vendor/PDCurses/ncurses/makefile +0 -29
  83. data/vendor/PDCurses/os2/CMakeLists.txt +0 -41
  84. data/vendor/PDCurses/os2/Makefile +0 -132
  85. data/vendor/PDCurses/os2/Makefile.bcc +0 -90
  86. data/vendor/PDCurses/os2/Makefile.wcc +0 -43
  87. data/vendor/PDCurses/os2/README.md +0 -43
  88. data/vendor/PDCurses/os2/iccos2.lrf +0 -50
  89. data/vendor/PDCurses/os2/iccos2.mak +0 -256
  90. data/vendor/PDCurses/os2/pdcclip.c +0 -188
  91. data/vendor/PDCurses/os2/pdcdisp.c +0 -93
  92. data/vendor/PDCurses/os2/pdcgetsc.c +0 -89
  93. data/vendor/PDCurses/os2/pdckbd.c +0 -521
  94. data/vendor/PDCurses/os2/pdcos2.h +0 -55
  95. data/vendor/PDCurses/os2/pdcscrn.c +0 -449
  96. data/vendor/PDCurses/os2/pdcsetsc.c +0 -112
  97. data/vendor/PDCurses/os2/pdcutil.c +0 -52
  98. data/vendor/PDCurses/panel.h +0 -56
  99. data/vendor/PDCurses/pdcurses/README.md +0 -25
  100. data/vendor/PDCurses/pdcurses/addch.c +0 -693
  101. data/vendor/PDCurses/pdcurses/addchstr.c +0 -245
  102. data/vendor/PDCurses/pdcurses/addstr.c +0 -240
  103. data/vendor/PDCurses/pdcurses/attr.c +0 -359
  104. data/vendor/PDCurses/pdcurses/beep.c +0 -68
  105. data/vendor/PDCurses/pdcurses/bkgd.c +0 -223
  106. data/vendor/PDCurses/pdcurses/border.c +0 -411
  107. data/vendor/PDCurses/pdcurses/clear.c +0 -159
  108. data/vendor/PDCurses/pdcurses/color.c +0 -298
  109. data/vendor/PDCurses/pdcurses/debug.c +0 -109
  110. data/vendor/PDCurses/pdcurses/delch.c +0 -96
  111. data/vendor/PDCurses/pdcurses/deleteln.c +0 -211
  112. data/vendor/PDCurses/pdcurses/deprec.c +0 -27
  113. data/vendor/PDCurses/pdcurses/getch.c +0 -417
  114. data/vendor/PDCurses/pdcurses/getstr.c +0 -474
  115. data/vendor/PDCurses/pdcurses/getyx.c +0 -139
  116. data/vendor/PDCurses/pdcurses/inch.c +0 -127
  117. data/vendor/PDCurses/pdcurses/inchstr.c +0 -214
  118. data/vendor/PDCurses/pdcurses/initscr.c +0 -367
  119. data/vendor/PDCurses/pdcurses/inopts.c +0 -324
  120. data/vendor/PDCurses/pdcurses/insch.c +0 -271
  121. data/vendor/PDCurses/pdcurses/insstr.c +0 -264
  122. data/vendor/PDCurses/pdcurses/instr.c +0 -246
  123. data/vendor/PDCurses/pdcurses/kernel.c +0 -259
  124. data/vendor/PDCurses/pdcurses/keyname.c +0 -157
  125. data/vendor/PDCurses/pdcurses/mouse.c +0 -438
  126. data/vendor/PDCurses/pdcurses/move.c +0 -57
  127. data/vendor/PDCurses/pdcurses/outopts.c +0 -159
  128. data/vendor/PDCurses/pdcurses/overlay.c +0 -214
  129. data/vendor/PDCurses/pdcurses/pad.c +0 -260
  130. data/vendor/PDCurses/pdcurses/panel.c +0 -633
  131. data/vendor/PDCurses/pdcurses/printw.c +0 -126
  132. data/vendor/PDCurses/pdcurses/refresh.c +0 -279
  133. data/vendor/PDCurses/pdcurses/scanw.c +0 -578
  134. data/vendor/PDCurses/pdcurses/scr_dump.c +0 -213
  135. data/vendor/PDCurses/pdcurses/scroll.c +0 -101
  136. data/vendor/PDCurses/pdcurses/slk.c +0 -591
  137. data/vendor/PDCurses/pdcurses/termattr.c +0 -182
  138. data/vendor/PDCurses/pdcurses/terminfo.c +0 -217
  139. data/vendor/PDCurses/pdcurses/touch.c +0 -163
  140. data/vendor/PDCurses/pdcurses/util.c +0 -312
  141. data/vendor/PDCurses/pdcurses/window.c +0 -569
  142. data/vendor/PDCurses/sdl1/Makefile +0 -129
  143. data/vendor/PDCurses/sdl1/Makefile.mng +0 -110
  144. data/vendor/PDCurses/sdl1/README.md +0 -31
  145. data/vendor/PDCurses/sdl1/deffont.h +0 -385
  146. data/vendor/PDCurses/sdl1/deficon.h +0 -23
  147. data/vendor/PDCurses/sdl1/pdcclip.c +0 -131
  148. data/vendor/PDCurses/sdl1/pdcdisp.c +0 -373
  149. data/vendor/PDCurses/sdl1/pdcgetsc.c +0 -30
  150. data/vendor/PDCurses/sdl1/pdckbd.c +0 -405
  151. data/vendor/PDCurses/sdl1/pdcscrn.c +0 -414
  152. data/vendor/PDCurses/sdl1/pdcsdl.h +0 -31
  153. data/vendor/PDCurses/sdl1/pdcsetsc.c +0 -64
  154. data/vendor/PDCurses/sdl1/pdcutil.c +0 -40
  155. data/vendor/PDCurses/sdl1/sdltest.c +0 -79
  156. data/vendor/PDCurses/sdl2/CMakeLists.txt +0 -76
  157. data/vendor/PDCurses/sdl2/Makefile +0 -135
  158. data/vendor/PDCurses/sdl2/Makefile.vc +0 -164
  159. data/vendor/PDCurses/sdl2/README.md +0 -34
  160. data/vendor/PDCurses/sdl2/deffont.h +0 -385
  161. data/vendor/PDCurses/sdl2/deficon.h +0 -23
  162. data/vendor/PDCurses/sdl2/pdcclip.c +0 -93
  163. data/vendor/PDCurses/sdl2/pdcdisp.c +0 -534
  164. data/vendor/PDCurses/sdl2/pdcgetsc.c +0 -30
  165. data/vendor/PDCurses/sdl2/pdckbd.c +0 -480
  166. data/vendor/PDCurses/sdl2/pdcscrn.c +0 -443
  167. data/vendor/PDCurses/sdl2/pdcsdl.h +0 -33
  168. data/vendor/PDCurses/sdl2/pdcsetsc.c +0 -67
  169. data/vendor/PDCurses/sdl2/pdcutil.c +0 -39
  170. data/vendor/PDCurses/sdl2/sdltest.c +0 -81
  171. data/vendor/PDCurses/term.h +0 -48
  172. data/vendor/PDCurses/version.mif +0 -7
  173. data/vendor/PDCurses/vt/CMakeLists.txt +0 -28
  174. data/vendor/PDCurses/vt/Makefile +0 -135
  175. data/vendor/PDCurses/vt/Makefile.bcc +0 -111
  176. data/vendor/PDCurses/vt/Makefile.dmc +0 -258
  177. data/vendor/PDCurses/vt/Makefile.vc +0 -144
  178. data/vendor/PDCurses/vt/Makefile.wcc +0 -107
  179. data/vendor/PDCurses/vt/README.md +0 -64
  180. data/vendor/PDCurses/vt/pdcclip.c +0 -20
  181. data/vendor/PDCurses/vt/pdcdisp.c +0 -284
  182. data/vendor/PDCurses/vt/pdcgetsc.c +0 -27
  183. data/vendor/PDCurses/vt/pdckbd.c +0 -394
  184. data/vendor/PDCurses/vt/pdcscrn.c +0 -434
  185. data/vendor/PDCurses/vt/pdcsetsc.c +0 -45
  186. data/vendor/PDCurses/vt/pdcutil.c +0 -43
  187. data/vendor/PDCurses/vt/pdcvt.h +0 -16
  188. data/vendor/PDCurses/watcom.mif +0 -68
  189. data/vendor/PDCurses/wincon/CMakeLists.txt +0 -27
  190. data/vendor/PDCurses/wincon/Makefile.bcc +0 -88
  191. data/vendor/PDCurses/wincon/Makefile.dmc +0 -256
  192. data/vendor/PDCurses/wincon/Makefile.lcc +0 -273
  193. data/vendor/PDCurses/wincon/Makefile.mng +0 -176
  194. data/vendor/PDCurses/wincon/Makefile.vc +0 -144
  195. data/vendor/PDCurses/wincon/Makefile.wcc +0 -51
  196. data/vendor/PDCurses/wincon/README.md +0 -85
  197. data/vendor/PDCurses/wincon/pdcclip.c +0 -174
  198. data/vendor/PDCurses/wincon/pdcdisp.c +0 -143
  199. data/vendor/PDCurses/wincon/pdcgetsc.c +0 -55
  200. data/vendor/PDCurses/wincon/pdckbd.c +0 -786
  201. data/vendor/PDCurses/wincon/pdcscrn.c +0 -717
  202. data/vendor/PDCurses/wincon/pdcsetsc.c +0 -91
  203. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  204. data/vendor/PDCurses/wincon/pdcurses.rc +0 -28
  205. data/vendor/PDCurses/wincon/pdcutil.c +0 -41
  206. data/vendor/PDCurses/wincon/pdcwin.h +0 -31
  207. data/vendor/PDCurses/wingui/CMakeLists.txt +0 -27
  208. data/vendor/PDCurses/wingui/Makefile.bcc +0 -85
  209. data/vendor/PDCurses/wingui/Makefile.dmc +0 -259
  210. data/vendor/PDCurses/wingui/Makefile.lcc +0 -273
  211. data/vendor/PDCurses/wingui/Makefile.mng +0 -171
  212. data/vendor/PDCurses/wingui/Makefile.vc +0 -144
  213. data/vendor/PDCurses/wingui/Makefile.wcc +0 -51
  214. data/vendor/PDCurses/wingui/README.md +0 -93
  215. data/vendor/PDCurses/wingui/pdcclip.c +0 -174
  216. data/vendor/PDCurses/wingui/pdcdisp.c +0 -718
  217. data/vendor/PDCurses/wingui/pdcgetsc.c +0 -30
  218. data/vendor/PDCurses/wingui/pdckbd.c +0 -143
  219. data/vendor/PDCurses/wingui/pdcscrn.c +0 -2797
  220. data/vendor/PDCurses/wingui/pdcsetsc.c +0 -89
  221. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  222. data/vendor/PDCurses/wingui/pdcurses.rc +0 -28
  223. data/vendor/PDCurses/wingui/pdcutil.c +0 -61
  224. data/vendor/PDCurses/wingui/pdcwin.h +0 -122
  225. data/vendor/PDCurses/x11/Makefile.in +0 -754
  226. data/vendor/PDCurses/x11/PDCurses.spec +0 -82
  227. data/vendor/PDCurses/x11/README.md +0 -62
  228. data/vendor/PDCurses/x11/ScrollBox.c +0 -319
  229. data/vendor/PDCurses/x11/ScrollBox.h +0 -51
  230. data/vendor/PDCurses/x11/ScrollBoxP.h +0 -70
  231. data/vendor/PDCurses/x11/aclocal.m4 +0 -994
  232. data/vendor/PDCurses/x11/big_icon.xbm +0 -46
  233. data/vendor/PDCurses/x11/compose.h +0 -201
  234. data/vendor/PDCurses/x11/config.guess +0 -1500
  235. data/vendor/PDCurses/x11/config.h.in +0 -100
  236. data/vendor/PDCurses/x11/config.sub +0 -1616
  237. data/vendor/PDCurses/x11/configure +0 -6700
  238. data/vendor/PDCurses/x11/configure.ac +0 -295
  239. data/vendor/PDCurses/x11/debian/changelog +0 -6
  240. data/vendor/PDCurses/x11/debian/compat +0 -1
  241. data/vendor/PDCurses/x11/debian/control +0 -11
  242. data/vendor/PDCurses/x11/debian/copyright +0 -27
  243. data/vendor/PDCurses/x11/debian/rules +0 -98
  244. data/vendor/PDCurses/x11/install-sh +0 -253
  245. data/vendor/PDCurses/x11/little_icon.xbm +0 -14
  246. data/vendor/PDCurses/x11/ncurses_cfg.h +0 -45
  247. data/vendor/PDCurses/x11/pdcclip.c +0 -173
  248. data/vendor/PDCurses/x11/pdcdisp.c +0 -85
  249. data/vendor/PDCurses/x11/pdcgetsc.c +0 -28
  250. data/vendor/PDCurses/x11/pdckbd.c +0 -104
  251. data/vendor/PDCurses/x11/pdcscrn.c +0 -258
  252. data/vendor/PDCurses/x11/pdcsetsc.c +0 -95
  253. data/vendor/PDCurses/x11/pdcutil.c +0 -52
  254. data/vendor/PDCurses/x11/pdcx11.c +0 -316
  255. data/vendor/PDCurses/x11/pdcx11.h +0 -191
  256. data/vendor/PDCurses/x11/sb.c +0 -155
  257. data/vendor/PDCurses/x11/x11.c +0 -3686
  258. data/vendor/PDCurses/x11/xcurses-config.in +0 -81
@@ -1,95 +0,0 @@
1
- /* Public Domain Curses */
2
-
3
- #include "pdcx11.h"
4
-
5
- #include <string.h>
6
-
7
- /*man-start**************************************************************
8
-
9
- pdcsetsc
10
- --------
11
-
12
- ### Synopsis
13
-
14
- int PDC_set_blink(bool blinkon);
15
- void PDC_set_title(const char *title);
16
-
17
- ### Description
18
-
19
- PDC_set_blink() toggles whether the A_BLINK attribute sets an
20
- actual blink mode (TRUE), or sets the background color to high
21
- intensity (FALSE). The default is platform-dependent (FALSE in
22
- most cases). It returns OK if it could set the state to match
23
- the given parameter, ERR otherwise. Current platforms also
24
- adjust the value of COLORS according to this function -- 16 for
25
- FALSE, and 8 for TRUE.
26
-
27
- PDC_set_title() sets the title of the window in which the curses
28
- program is running. This function may not do anything on some
29
- platforms. (Currently it only works in Win32 and X11.)
30
-
31
- ### Portability
32
- X/Open BSD SYS V
33
- PDC_set_blink - - -
34
- PDC_set_title - - -
35
-
36
- **man-end****************************************************************/
37
-
38
- int PDC_curs_set(int visibility)
39
- {
40
- int ret_vis = SP->visibility;
41
-
42
- PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
43
-
44
- if (visibility != -1)
45
- SP->visibility = visibility;
46
-
47
- PDC_display_cursor(SP->cursrow, SP->curscol, SP->cursrow,
48
- SP->curscol, visibility);
49
-
50
- return ret_vis;
51
- }
52
-
53
- void PDC_set_title(const char *title)
54
- {
55
- int len;
56
-
57
- PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
58
-
59
- len = strlen(title) + 1; /* write nul character */
60
-
61
- XCursesInstruct(CURSES_TITLE);
62
-
63
- if (XC_write_display_socket_int(len) >= 0)
64
- if (XC_write_socket(xc_display_sock, title, len) >= 0)
65
- return;
66
-
67
- XCursesExitCursesProcess(1, "exiting from PDC_set_title");
68
- }
69
-
70
- /* If PDC_really_blinking is TRUE, then text with the A_BLINK */
71
- /* attribute will actually blink. Otherwise, such text will */
72
- /* be shown with higher color intensity (the R, G, and B values */
73
- /* are averaged with pure white). See pdcdisp.c for details of */
74
- /* how this is done. */
75
- /* Unlike on other PDCurses platforms, this doesn't require */
76
- /* decreasing the number of colors by half. Also, the choice */
77
- /* indicated by 'blinkon' will actually be respected, so OK is */
78
- /* always returned (most platforms don't actually support */
79
- /* blinking). */
80
- /* The default behavior is to not show A_BLINK text as */
81
- /* blinking, i.e., PDC_really_blinking = FALSE. Blinking text */
82
- /* can be pretty annoying to some people. You should probably */
83
- /* call PDC_set_blink( TRUE) only if there is something to which */
84
- /* the user _must_ pay attention; say, "the nuclear reactor */
85
- /* is about to melt down". Otherwise, the bolder, brighter */
86
- /* text should be attention-getting enough. */
87
-
88
- int PDC_set_blink(bool blinkon)
89
- {
90
- if (pdc_color_started) /* We've got 256 colors in this version */
91
- COLORS = 256;
92
-
93
- XCursesInstruct( blinkon ? CURSES_BLINK_ON : CURSES_BLINK_OFF);
94
- return OK;
95
- }
@@ -1,52 +0,0 @@
1
- /* Public Domain Curses */
2
-
3
- #include "pdcx11.h"
4
-
5
- #if defined(HAVE_POLL) && !defined(HAVE_USLEEP)
6
- # include <poll.h>
7
- #endif
8
-
9
- void PDC_beep(void)
10
- {
11
- PDC_LOG(("PDC_beep() - called\n"));
12
-
13
- XCursesInstruct(CURSES_BELL);
14
- }
15
-
16
- void PDC_napms(int ms)
17
- {
18
- PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
19
-
20
- #if defined(HAVE_USLEEP)
21
-
22
- usleep(1000 * ms);
23
-
24
- #elif defined(HAVE_POLL)
25
- {
26
- struct pollfd fd;
27
- fd.fd = -1;
28
- fd.events = 0;
29
- poll(&fd, 1, ms);
30
- }
31
- #endif
32
- }
33
-
34
- const char *PDC_sysname(void)
35
- {
36
- return "X11";
37
- }
38
-
39
- PDC_version_info PDC_version = { PDC_PORT_WINGUI,
40
- PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE,
41
- sizeof( chtype),
42
- #ifdef PDC_WIDE
43
- TRUE,
44
- #else
45
- FALSE,
46
- #endif
47
- #ifdef PDC_FORCE_UTF8
48
- TRUE,
49
- #else
50
- FALSE,
51
- #endif
52
- };
@@ -1,316 +0,0 @@
1
- /* Public Domain Curses */
2
-
3
- #include "pdcx11.h"
4
-
5
- #include <errno.h>
6
- #include <stdlib.h>
7
-
8
- /*** Functions that are called by both processes ***/
9
-
10
- unsigned char *Xcurscr;
11
-
12
- int XCursesProcess = 1;
13
- int shmidSP;
14
- int shmid_Xcurscr;
15
- int shmkeySP;
16
- int shmkey_Xcurscr;
17
- int xc_otherpid;
18
- int XCursesLINES = 24;
19
- int XCursesCOLS = 80;
20
- int xc_display_sock;
21
- int xc_key_sock;
22
- int xc_display_sockets[2];
23
- int xc_key_sockets[2];
24
- int xc_exit_sock;
25
-
26
- fd_set xc_readfds;
27
-
28
- static void _dummy_function(void)
29
- {
30
- PDC_napms( 1);
31
- }
32
-
33
- void XC_get_line_lock(int row)
34
- {
35
- /* loop until we can write to the line -- Patch by:
36
- Georg Fuchs, georg.fuchs@rz.uni-regensburg.de */
37
-
38
- while (*(Xcurscr + XCURSCR_FLAG_OFF + row))
39
- _dummy_function();
40
-
41
- *(Xcurscr + XCURSCR_FLAG_OFF + row) = 1;
42
- }
43
-
44
- void XC_release_line_lock(int row)
45
- {
46
- *(Xcurscr + XCURSCR_FLAG_OFF + row) = 0;
47
- }
48
-
49
- int XC_write_socket(int sock_num, const void *buf, int len)
50
- {
51
- int start = 0, rc;
52
-
53
- PDC_LOG(("%s:XC_write_socket called: sock_num %d len %d\n",
54
- XCLOGMSG, sock_num, len));
55
-
56
- #ifdef MOUSE_DEBUG
57
- if (sock_num == xc_key_sock)
58
- printf("%s:XC_write_socket(key) len: %d\n", XCLOGMSG, len);
59
- #endif
60
- while (1)
61
- {
62
- rc = write(sock_num, (const char *)buf + start, len);
63
-
64
- if (rc < 0 || rc == len)
65
- return rc;
66
-
67
- len -= rc;
68
- start = rc;
69
- }
70
- }
71
-
72
- int XC_read_socket(int sock_num, void *buf, int len)
73
- {
74
- int start = 0, length = len, rc;
75
-
76
- PDC_LOG(("%s:XC_read_socket called: sock_num %d len %d\n",
77
- XCLOGMSG, sock_num, len));
78
-
79
- while (1)
80
- {
81
- rc = read(sock_num, (char *)buf + start, length);
82
-
83
- #ifdef MOUSE_DEBUG
84
- if (sock_num == xc_key_sock)
85
- printf("%s:XC_read_socket(key) rc %d errno %d "
86
- "resized: %d\n", XCLOGMSG, rc, errno, SP->resized);
87
- #endif
88
- if (rc < 0 && sock_num == xc_key_sock && errno == EINTR
89
- && SP->resized != FALSE)
90
- {
91
- MOUSE_LOG(("%s:continuing\n", XCLOGMSG));
92
-
93
- rc = 0;
94
-
95
- if (SP->resized > 1)
96
- SP->resized = TRUE;
97
- else
98
- SP->resized = FALSE;
99
-
100
- memcpy(buf, &rc, sizeof(int));
101
-
102
- return 0;
103
- }
104
-
105
- if (rc <= 0 || rc == length)
106
- return rc;
107
-
108
- length -= rc;
109
- start = rc;
110
- }
111
- }
112
-
113
- int XC_write_display_socket_int(int x)
114
- {
115
- return XC_write_socket(xc_display_sock, &x, sizeof(int));
116
- }
117
-
118
- #ifdef PDCDEBUG
119
- void XC_say(const char *msg)
120
- {
121
- PDC_LOG(("%s:%s", XCLOGMSG, msg));
122
- }
123
- #endif
124
-
125
- /*** Functions that are called by the "curses" process ***/
126
-
127
- int XCursesInstruct(int flag)
128
- {
129
- PDC_LOG(("%s:XCursesInstruct() - called flag %d\n", XCLOGMSG, flag));
130
-
131
- /* Send a request to X */
132
-
133
- if (XC_write_display_socket_int(flag) < 0)
134
- XCursesExitCursesProcess(4, "exiting from XCursesInstruct");
135
-
136
- return OK;
137
- }
138
-
139
- int XCursesInstructAndWait(int flag)
140
- {
141
- int result;
142
-
143
- XC_LOG(("XCursesInstructAndWait() - called\n"));
144
-
145
- /* tell X we want to do something */
146
-
147
- XCursesInstruct(flag);
148
-
149
- /* wait for X to say the refresh has occurred*/
150
-
151
- if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0)
152
- XCursesExitCursesProcess(5, "exiting from XCursesInstructAndWait");
153
-
154
- if (result != CURSES_CONTINUE)
155
- XCursesExitCursesProcess(6, "exiting from XCursesInstructAndWait"
156
- " - synchronization error");
157
-
158
- return OK;
159
- }
160
-
161
- static int _setup_curses(void)
162
- {
163
- int wait_value;
164
-
165
- XC_LOG(("_setup_curses called\n"));
166
-
167
- close(xc_display_sockets[1]);
168
- close(xc_key_sockets[1]);
169
-
170
- xc_display_sock = xc_display_sockets[0];
171
- xc_key_sock = xc_key_sockets[0];
172
-
173
- FD_ZERO(&xc_readfds);
174
-
175
- XC_read_socket(xc_display_sock, &wait_value, sizeof(int));
176
-
177
- if (wait_value != CURSES_CHILD)
178
- return ERR;
179
-
180
- /* Set LINES and COLS now so that the size of the shared memory
181
- segment can be allocated */
182
-
183
- if ((shmidSP = shmget(shmkeySP, sizeof(SCREEN) + XCURSESSHMMIN, 0700)) < 0)
184
- {
185
- perror("Cannot allocate shared memory for SCREEN");
186
- kill(xc_otherpid, SIGKILL);
187
- return ERR;
188
- }
189
-
190
- SP = (SCREEN*)shmat(shmidSP, 0, 0);
191
-
192
- XCursesLINES = SP->lines;
193
- LINES = XCursesLINES - SP->linesrippedoff - SP->slklines;
194
- XCursesCOLS = COLS = SP->cols;
195
-
196
- if ((shmid_Xcurscr = shmget(shmkey_Xcurscr,
197
- SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0)
198
- {
199
- perror("Cannot allocate shared memory for curscr");
200
- kill(xc_otherpid, SIGKILL);
201
- return ERR;
202
- }
203
-
204
- PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d LINES %d COLS %d\n",
205
- XCLOGMSG, shmid_Xcurscr, shmkey_Xcurscr, LINES, COLS));
206
-
207
- Xcurscr = (unsigned char *)shmat(shmid_Xcurscr, 0, 0);
208
- xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
209
-
210
- XC_LOG(("cursesprocess exiting from Xinitscr\n"));
211
-
212
- /* Always trap SIGWINCH if the C library supports SIGWINCH */
213
-
214
- XCursesSetSignal(SIGWINCH, XCursesSigwinchHandler);
215
-
216
- atexit(XCursesExit);
217
-
218
- return OK;
219
- }
220
-
221
- int XCursesInitscr(int argc, char *argv[])
222
- {
223
- int pid, rc;
224
-
225
- XC_LOG(("XCursesInitscr() - called\n"));
226
-
227
- shmkeySP = getpid();
228
-
229
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_display_sockets) < 0)
230
- {
231
- fprintf(stderr, "ERROR: cannot create display socketpair\n");
232
- return ERR;
233
- }
234
-
235
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_key_sockets) < 0)
236
- {
237
- fprintf(stderr, "ERROR: cannot create key socketpair\n");
238
- return ERR;
239
- }
240
-
241
- pid = fork();
242
-
243
- switch(pid)
244
- {
245
- case -1:
246
- fprintf(stderr, "ERROR: cannot fork()\n");
247
- return ERR;
248
- break;
249
-
250
- case 0: /* child */
251
- shmkey_Xcurscr = getpid();
252
- #ifdef XISPARENT
253
- XCursesProcess = 0;
254
- rc = _setup_curses();
255
- #else
256
- XCursesProcess = 1;
257
- xc_otherpid = getppid();
258
- rc = XCursesSetupX(argc, argv);
259
- #endif
260
- break;
261
-
262
- default: /* parent */
263
- shmkey_Xcurscr = pid;
264
- #ifdef XISPARENT
265
- XCursesProcess = 1;
266
- xc_otherpid = pid;
267
- rc = XCursesSetupX(argc, argv);
268
- #else
269
- XCursesProcess = 0;
270
- rc = _setup_curses();
271
- #endif
272
- }
273
-
274
- return rc;
275
- }
276
-
277
- static void _cleanup_curses_process(int rc)
278
- {
279
- PDC_LOG(("%s:_cleanup_curses_process() - called: %d\n", XCLOGMSG, rc));
280
-
281
- shutdown(xc_display_sock, 2);
282
- close(xc_display_sock);
283
-
284
- shutdown(xc_key_sock, 2);
285
- close(xc_key_sock);
286
-
287
- shmdt((char *)SP);
288
- shmdt((char *)Xcurscr);
289
-
290
- if (rc)
291
- _exit(rc);
292
- }
293
-
294
- void XCursesExitCursesProcess(int rc, char *msg)
295
- {
296
- PDC_LOG(("%s:XCursesExitCursesProcess() - called: %d %s\n",
297
- XCLOGMSG, rc, msg));
298
-
299
- endwin();
300
- _cleanup_curses_process(rc);
301
- }
302
-
303
- void XCursesExit(void)
304
- {
305
- static bool called = FALSE;
306
-
307
- XC_LOG(("XCursesExit() - called\n"));
308
-
309
- if (FALSE == called)
310
- {
311
- XCursesInstruct(CURSES_EXIT);
312
- _cleanup_curses_process(0);
313
-
314
- called = TRUE;
315
- }
316
- }
@@ -1,191 +0,0 @@
1
- /* Public Domain Curses */
2
-
3
- #ifdef HAVE_CONFIG_H
4
- # include "config.h"
5
- #endif
6
-
7
- #include <curspriv.h>
8
-
9
- #ifdef HAVE_UNISTD_H
10
- # include <unistd.h>
11
- #endif
12
-
13
- #include <signal.h>
14
- #include <ctype.h>
15
- #include <pwd.h>
16
-
17
- #include <sys/types.h>
18
- #include <sys/socket.h>
19
- #ifdef HAVE_FCNTL_H
20
- # include <fcntl.h>
21
- #endif
22
- #ifdef HAVE_SYS_SELECT_H
23
- # include <sys/select.h> /* AIX needs this for FD_ZERO etc macros */
24
- #endif
25
- #include <sys/ipc.h>
26
- #include <sys/shm.h>
27
-
28
- #ifdef TIME_WITH_SYS_TIME
29
- # include <sys/time.h>
30
- # include <time.h>
31
- #else
32
- # ifdef HAVE_SYS_TIME_H
33
- # include <sys/time.h>
34
- # else
35
- # include <time.h>
36
- # endif
37
- #endif
38
-
39
- #include <Intrinsic.h>
40
- #include <StringDefs.h>
41
- #include <Shell.h>
42
-
43
- #ifdef USE_XAW3D
44
- # include <Xaw3d/Box.h>
45
- # include <Xaw3d/Scrollbar.h>
46
- #elif defined(USE_NEXTAW)
47
- # include <neXtaw/Box.h>
48
- # include <neXtaw/Scrollbar.h>
49
- #else
50
- # include <Xaw/Box.h>
51
- # include <Xaw/Scrollbar.h>
52
- #endif
53
- #include "x11/ScrollBox.h"
54
-
55
- #include "Xmu/StdSel.h"
56
- #include "Xmu/Atoms.h"
57
-
58
- #include <keysym.h>
59
- #include <Xatom.h>
60
-
61
- #define XCURSCR_Y_SIZE (XCursesLINES * XCursesCOLS * sizeof(chtype))
62
- #define XCURSCR_FLAG_SIZE (XCursesLINES * sizeof(int))
63
- #define XCURSCR_START_SIZE (XCursesLINES * sizeof(int))
64
- #define XCURSCR_LENGTH_SIZE (XCursesLINES * sizeof(int))
65
- #define XCURSCR_ATRTAB_SIZE (PDC_COLOR_PAIRS * 2 * sizeof(short))
66
- #define XCURSCR_SIZE (XCURSCR_FLAG_SIZE + XCURSCR_START_SIZE + \
67
- XCURSCR_LENGTH_SIZE + XCURSCR_Y_SIZE + XCURSCR_ATRTAB_SIZE + \
68
- sizeof(XColor))
69
-
70
- #define XCURSCR_Y_OFF(y) ((y) * XCursesCOLS * sizeof(chtype))
71
- #define XCURSCR_FLAG_OFF (XCURSCR_Y_OFF(0) + XCURSCR_Y_SIZE)
72
- #define XCURSCR_START_OFF (XCURSCR_FLAG_OFF + XCURSCR_FLAG_SIZE)
73
- #define XCURSCR_LENGTH_OFF (XCURSCR_START_OFF + XCURSCR_START_SIZE)
74
- #define XCURSCR_ATRTAB_OFF (XCURSCR_LENGTH_OFF + XCURSCR_LENGTH_SIZE)
75
- #define XCURSCR_XCOLOR_OFF (XCURSCR_ATRTAB_OFF + XCURSCR_ATRTAB_SIZE)
76
-
77
- typedef struct
78
- {
79
- int lines;
80
- int cols;
81
- Pixel cursorColor;
82
- Pixel colorBlack;
83
- Pixel colorRed;
84
- Pixel colorGreen;
85
- Pixel colorYellow;
86
- Pixel colorBlue;
87
- Pixel colorMagenta;
88
- Pixel colorCyan;
89
- Pixel colorWhite;
90
- Pixel colorBoldBlack;
91
- Pixel colorBoldRed;
92
- Pixel colorBoldGreen;
93
- Pixel colorBoldYellow;
94
- Pixel colorBoldBlue;
95
- Pixel colorBoldMagenta;
96
- Pixel colorBoldCyan;
97
- Pixel colorBoldWhite;
98
- Pixel pointerForeColor;
99
- Pixel pointerBackColor;
100
- XFontStruct *normalFont;
101
- XFontStruct *italicFont;
102
- XFontStruct *boldFont;
103
- char *bitmap;
104
- #ifdef HAVE_XPM_H
105
- char *pixmap;
106
- #endif
107
- char *composeKey;
108
- Cursor pointer;
109
- int shmmin;
110
- int borderWidth;
111
- int borderColor;
112
- int clickPeriod;
113
- int doubleClickPeriod;
114
- int scrollbarWidth;
115
- int cursorBlinkRate;
116
- char *textCursor;
117
- } XCursesAppData;
118
-
119
- extern XCursesAppData xc_app_data;
120
-
121
- #define XCURSESSHMMIN xc_app_data.shmmin
122
-
123
- #define XCLOGMSG (XCursesProcess ? " X" : "CURSES")
124
-
125
- void XC_get_line_lock(int);
126
- void XC_release_line_lock(int);
127
-
128
- int PDC_display_cursor(int, int, int, int, int);
129
-
130
- void XCursesExitCursesProcess(int, char *);
131
- int XCursesInstruct(int);
132
- int XCursesInstructAndWait(int);
133
- int XCursesInitscr(int, char **);
134
-
135
- int XC_write_socket(int, const void *, int);
136
- int XC_read_socket(int, void *, int);
137
- int XC_write_display_socket_int(int);
138
-
139
- int XCursesSetupX(int argc, char *argv[]);
140
- RETSIGTYPE XCursesSigwinchHandler(int signo);
141
-
142
- #ifdef _HPUX_SOURCE
143
- # define FD_SET_CAST int *
144
- #else
145
- # define FD_SET_CAST fd_set *
146
- #endif
147
-
148
- extern fd_set xc_readfds;
149
-
150
- extern unsigned char *Xcurscr;
151
- extern int XCursesProcess;
152
- extern int shmidSP;
153
- extern int shmid_Xcurscr;
154
- extern int shmkeySP;
155
- extern int shmkey_Xcurscr;
156
- extern int xc_otherpid;
157
- extern int XCursesLINES;
158
- extern int XCursesCOLS;
159
- extern int xc_display_sock;
160
- extern int xc_key_sock;
161
- extern int xc_display_sockets[2];
162
- extern int xc_key_sockets[2];
163
- extern int xc_exit_sock;
164
-
165
- typedef RETSIGTYPE (*signal_handler)();
166
-
167
- signal_handler XCursesSetSignal(int, signal_handler);
168
-
169
- #ifdef PDCDEBUG
170
- void XC_say(const char *msg);
171
- # define XC_LOG(x) XC_say x
172
- #else
173
- # define XC_LOG(x)
174
- #endif
175
-
176
- #ifdef MOUSE_DEBUG
177
- # define MOUSE_LOG(x) printf x
178
- #else
179
- # define MOUSE_LOG(x)
180
- #endif
181
-
182
- enum
183
- {
184
- CURSES_CLEAR_SELECTION, CURSES_DISPLAY_CURSOR, CURSES_SET_SELECTION,
185
- CURSES_GET_SELECTION, CURSES_TITLE, CURSES_REFRESH_SCROLLBAR,
186
- CURSES_RESIZE, CURSES_BELL, CURSES_CONTINUE, CURSES_CURSOR,
187
- CURSES_CHILD, CURSES_REFRESH, CURSES_GET_COLOR, CURSES_SET_COLOR,
188
- CURSES_BLINK_ON, CURSES_BLINK_OFF, CURSES_EXIT
189
- };
190
-
191
- extern short *xc_atrtab;