curses 1.2.6 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +19 -0
  3. data/.github/workflows/ubuntu.yml +26 -0
  4. data/.github/workflows/windows.yml +28 -0
  5. data/.gitmodules +1 -1
  6. data/.travis.yml +6 -3
  7. data/History.md +40 -0
  8. data/README.md +4 -1
  9. data/Rakefile +0 -83
  10. data/curses.gemspec +2 -3
  11. data/ext/curses/curses.c +1271 -151
  12. data/ext/curses/extconf.rb +140 -17
  13. data/lib/curses.rb +5 -12
  14. data/sample/form.rb +52 -0
  15. data/sample/menu.rb +1 -1
  16. data/vendor/PDCurses/.gitignore +47 -0
  17. data/vendor/PDCurses/.travis.yml +49 -0
  18. data/vendor/PDCurses/CMakeLists.txt +68 -0
  19. data/vendor/PDCurses/HISTORY.md +2036 -0
  20. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  21. data/vendor/PDCurses/README.md +77 -0
  22. data/vendor/PDCurses/acs_defs.h +265 -0
  23. data/vendor/PDCurses/appveyor.yml +218 -0
  24. data/vendor/PDCurses/cmake/README.md +71 -0
  25. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  26. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  27. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  28. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  29. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  30. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  31. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  32. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  33. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  34. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  35. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  36. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  37. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  38. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  39. data/vendor/PDCurses/curses.h +1846 -0
  40. data/vendor/PDCurses/curspriv.h +134 -0
  41. data/vendor/PDCurses/demos/README.md +25 -0
  42. data/vendor/PDCurses/demos/firework.c +144 -0
  43. data/vendor/PDCurses/demos/newtest.c +581 -0
  44. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  45. data/vendor/PDCurses/demos/ptest.c +283 -0
  46. data/vendor/PDCurses/demos/rain.c +157 -0
  47. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  48. data/vendor/PDCurses/demos/tui.c +1048 -0
  49. data/vendor/PDCurses/demos/tui.h +65 -0
  50. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  51. data/vendor/PDCurses/demos/version.c +61 -0
  52. data/vendor/PDCurses/demos/worm.c +432 -0
  53. data/vendor/PDCurses/demos/xmas.c +955 -0
  54. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  55. data/vendor/PDCurses/dos/Makefile.bcc +83 -0
  56. data/vendor/PDCurses/dos/Makefile.dmc +257 -0
  57. data/vendor/PDCurses/dos/Makefile.msc +113 -0
  58. data/vendor/PDCurses/dos/Makefile.wcc +107 -0
  59. data/vendor/PDCurses/dos/README.md +51 -0
  60. data/vendor/PDCurses/dos/bccdos.lrf +9 -0
  61. data/vendor/PDCurses/dos/mscdos.lrf +50 -0
  62. data/vendor/PDCurses/dos/pdcclip.c +132 -0
  63. data/vendor/PDCurses/dos/pdcdisp.c +135 -0
  64. data/vendor/PDCurses/dos/pdcdos.h +194 -0
  65. data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
  66. data/vendor/PDCurses/dos/pdckbd.c +513 -0
  67. data/vendor/PDCurses/dos/pdcscrn.c +785 -0
  68. data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
  69. data/vendor/PDCurses/dos/pdcutil.c +212 -0
  70. data/vendor/PDCurses/libobjs.mif +26 -0
  71. data/vendor/PDCurses/makedist.mif +20 -0
  72. data/vendor/PDCurses/man/README.md +21 -0
  73. data/vendor/PDCurses/man/intro.md +361 -0
  74. data/vendor/PDCurses/man/manext.c +119 -0
  75. data/vendor/PDCurses/man/sdl.md +152 -0
  76. data/vendor/PDCurses/man/sdl2.md +58 -0
  77. data/vendor/PDCurses/man/x11.md +407 -0
  78. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  79. data/vendor/PDCurses/ncurses/README.md +26 -0
  80. data/vendor/PDCurses/ncurses/makefile +29 -0
  81. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  82. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  83. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  84. data/vendor/PDCurses/os2/README.md +43 -0
  85. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  86. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  87. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  88. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  89. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  90. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  91. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  92. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  93. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  94. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  95. data/vendor/PDCurses/panel.h +56 -0
  96. data/vendor/PDCurses/pdcurses/README.md +25 -0
  97. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  98. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  99. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  100. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  101. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  102. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  103. data/vendor/PDCurses/pdcurses/border.c +411 -0
  104. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  105. data/vendor/PDCurses/pdcurses/color.c +298 -0
  106. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  107. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  108. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  109. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  110. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  111. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  112. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  113. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  114. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  115. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  116. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  117. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  118. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  119. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  120. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  121. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  122. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  123. data/vendor/PDCurses/pdcurses/move.c +57 -0
  124. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  125. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  126. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  127. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  128. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  129. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  130. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  131. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  132. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  133. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  134. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  135. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  136. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  137. data/vendor/PDCurses/pdcurses/util.c +312 -0
  138. data/vendor/PDCurses/pdcurses/window.c +569 -0
  139. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  140. data/vendor/PDCurses/sdl1/README.md +31 -0
  141. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  142. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  143. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  144. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  145. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  146. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  147. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  148. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  149. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  150. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  151. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  152. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
  153. data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
  154. data/vendor/PDCurses/sdl2/README.md +34 -0
  155. data/vendor/PDCurses/sdl2/deffont.h +385 -0
  156. data/vendor/PDCurses/sdl2/deficon.h +23 -0
  157. data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
  158. data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
  159. data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
  160. data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
  161. data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
  162. data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
  163. data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
  164. data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
  165. data/vendor/PDCurses/sdl2/sdltest.c +81 -0
  166. data/vendor/PDCurses/term.h +48 -0
  167. data/vendor/PDCurses/version.mif +7 -0
  168. data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
  169. data/vendor/PDCurses/vt/Makefile.bcc +111 -0
  170. data/vendor/PDCurses/vt/Makefile.dmc +258 -0
  171. data/vendor/PDCurses/vt/Makefile.vc +144 -0
  172. data/vendor/PDCurses/vt/Makefile.wcc +107 -0
  173. data/vendor/PDCurses/vt/README.md +64 -0
  174. data/vendor/PDCurses/vt/pdcclip.c +20 -0
  175. data/vendor/PDCurses/vt/pdcdisp.c +284 -0
  176. data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
  177. data/vendor/PDCurses/vt/pdckbd.c +394 -0
  178. data/vendor/PDCurses/vt/pdcscrn.c +434 -0
  179. data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
  180. data/vendor/PDCurses/vt/pdcutil.c +43 -0
  181. data/vendor/PDCurses/vt/pdcvt.h +16 -0
  182. data/vendor/PDCurses/watcom.mif +68 -0
  183. data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
  184. data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
  185. data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
  186. data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
  187. data/vendor/PDCurses/wincon/Makefile.mng +176 -0
  188. data/vendor/PDCurses/wincon/Makefile.vc +144 -0
  189. data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
  190. data/vendor/PDCurses/wincon/README.md +85 -0
  191. data/vendor/PDCurses/wincon/pdcclip.c +174 -0
  192. data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
  193. data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
  194. data/vendor/PDCurses/wincon/pdckbd.c +786 -0
  195. data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
  196. data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
  197. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  198. data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
  199. data/vendor/PDCurses/wincon/pdcutil.c +41 -0
  200. data/vendor/PDCurses/wincon/pdcwin.h +31 -0
  201. data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
  202. data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
  203. data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
  204. data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
  205. data/vendor/PDCurses/wingui/Makefile.mng +171 -0
  206. data/vendor/PDCurses/wingui/Makefile.vc +144 -0
  207. data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
  208. data/vendor/PDCurses/wingui/README.md +93 -0
  209. data/vendor/PDCurses/wingui/pdcclip.c +174 -0
  210. data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
  211. data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
  212. data/vendor/PDCurses/wingui/pdckbd.c +143 -0
  213. data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
  214. data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
  215. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  216. data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
  217. data/vendor/PDCurses/wingui/pdcutil.c +61 -0
  218. data/vendor/PDCurses/wingui/pdcwin.h +122 -0
  219. data/vendor/PDCurses/x11/Makefile.in +754 -0
  220. data/vendor/PDCurses/x11/PDCurses.spec +82 -0
  221. data/vendor/PDCurses/x11/README.md +62 -0
  222. data/vendor/PDCurses/x11/ScrollBox.c +319 -0
  223. data/vendor/PDCurses/x11/ScrollBox.h +51 -0
  224. data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
  225. data/vendor/PDCurses/x11/aclocal.m4 +994 -0
  226. data/vendor/PDCurses/x11/big_icon.xbm +46 -0
  227. data/vendor/PDCurses/x11/compose.h +201 -0
  228. data/vendor/PDCurses/x11/config.guess +1500 -0
  229. data/vendor/PDCurses/x11/config.h.in +100 -0
  230. data/vendor/PDCurses/x11/config.sub +1616 -0
  231. data/vendor/PDCurses/x11/configure +6700 -0
  232. data/vendor/PDCurses/x11/configure.ac +295 -0
  233. data/vendor/PDCurses/x11/debian/changelog +6 -0
  234. data/vendor/PDCurses/x11/debian/compat +1 -0
  235. data/vendor/PDCurses/x11/debian/control +11 -0
  236. data/vendor/PDCurses/x11/debian/copyright +27 -0
  237. data/vendor/PDCurses/x11/debian/rules +98 -0
  238. data/vendor/PDCurses/x11/install-sh +253 -0
  239. data/vendor/PDCurses/x11/little_icon.xbm +14 -0
  240. data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
  241. data/vendor/PDCurses/x11/pdcclip.c +173 -0
  242. data/vendor/PDCurses/x11/pdcdisp.c +85 -0
  243. data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
  244. data/vendor/PDCurses/x11/pdckbd.c +104 -0
  245. data/vendor/PDCurses/x11/pdcscrn.c +258 -0
  246. data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
  247. data/vendor/PDCurses/x11/pdcutil.c +52 -0
  248. data/vendor/PDCurses/x11/pdcx11.c +316 -0
  249. data/vendor/PDCurses/x11/pdcx11.h +191 -0
  250. data/vendor/PDCurses/x11/sb.c +155 -0
  251. data/vendor/PDCurses/x11/x11.c +3686 -0
  252. data/vendor/PDCurses/x11/xcurses-config.in +81 -0
  253. metadata +255 -21
@@ -0,0 +1,271 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include <curspriv.h>
4
+
5
+ /*man-start**************************************************************
6
+
7
+ insch
8
+ -----
9
+
10
+ ### Synopsis
11
+
12
+ int insch(chtype ch);
13
+ int winsch(WINDOW *win, chtype ch);
14
+ int mvinsch(int y, int x, chtype ch);
15
+ int mvwinsch(WINDOW *win, int y, int x, chtype ch);
16
+
17
+ int insrawch(chtype ch);
18
+ int winsrawch(WINDOW *win, chtype ch);
19
+ int mvinsrawch(int y, int x, chtype ch);
20
+ int mvwinsrawch(WINDOW *win, int y, int x, chtype ch);
21
+
22
+ int ins_wch(const cchar_t *wch);
23
+ int wins_wch(WINDOW *win, const cchar_t *wch);
24
+ int mvins_wch(int y, int x, const cchar_t *wch);
25
+ int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch);
26
+
27
+ ### Description
28
+
29
+ The insch() functions insert a chtype into the window at the
30
+ current or specified cursor position. The cursor is NOT
31
+ advanced. A newline is equivalent to clrtoeol(); tabs are
32
+ expanded; other control characters are converted as with
33
+ unctrl().
34
+
35
+ The ins_wch() functions are the wide-character
36
+ equivalents, taking cchar_t pointers rather than chtypes.
37
+
38
+ Video attributes can be combined with a character by ORing
39
+ them into the parameter. Text, including attributes, can be
40
+ copied from one place to another using inch() and insch().
41
+
42
+ insrawch() etc. are PDCurses-specific wrappers for insch() etc.
43
+ that disable the translation of control characters.
44
+
45
+ ### Return Value
46
+
47
+ All functions return OK on success and ERR on error.
48
+
49
+ ### Portability
50
+ X/Open BSD SYS V
51
+ insch Y Y Y
52
+ winsch Y Y Y
53
+ mvinsch Y Y Y
54
+ mvwinsch Y Y Y
55
+ insrawch - - -
56
+ winsrawch - - -
57
+ ins_wch Y
58
+ wins_wch Y
59
+ mvins_wch Y
60
+ mvwins_wch Y
61
+
62
+ **man-end****************************************************************/
63
+
64
+ #include <string.h>
65
+
66
+ int winsch(WINDOW *win, chtype ch)
67
+ {
68
+ int x, y;
69
+ chtype attr;
70
+ bool xlat;
71
+
72
+ PDC_LOG(("winsch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
73
+ win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
74
+
75
+ if (!win)
76
+ return ERR;
77
+
78
+ x = win->_curx;
79
+ y = win->_cury;
80
+
81
+ if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
82
+ return ERR;
83
+
84
+ xlat = !SP->raw_out && !(ch & A_ALTCHARSET);
85
+ attr = ch & A_ATTRIBUTES;
86
+ ch &= A_CHARTEXT;
87
+
88
+ if (xlat && (ch < ' ' || ch == 0x7f))
89
+ {
90
+ int x2;
91
+
92
+ switch ((int)ch)
93
+ {
94
+ case '\t':
95
+ for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++)
96
+ {
97
+ if (winsch(win, attr | ' ') == ERR)
98
+ return ERR;
99
+ }
100
+ return OK;
101
+
102
+ case '\n':
103
+ wclrtoeol(win);
104
+ break;
105
+
106
+ case 0x7f:
107
+ if (winsch(win, attr | '?') == ERR)
108
+ return ERR;
109
+
110
+ return winsch(win, attr | '^');
111
+
112
+ default:
113
+ /* handle control chars */
114
+
115
+ if (winsch(win, attr | (ch + '@')) == ERR)
116
+ return ERR;
117
+
118
+ return winsch(win, attr | '^');
119
+ }
120
+ }
121
+ else
122
+ {
123
+ int maxx;
124
+ chtype *temp;
125
+
126
+ /* If the incoming character doesn't have its own attribute,
127
+ then use the current attributes for the window. If it has
128
+ attributes but not a color component, OR the attributes to
129
+ the current attributes for the window. If it has a color
130
+ component, use the attributes solely from the incoming
131
+ character. */
132
+
133
+ if (!(attr & A_COLOR))
134
+ attr |= win->_attrs;
135
+
136
+ /* wrs (4/10/93): Apply the same sort of logic for the window
137
+ background, in that it only takes precedence if other color
138
+ attributes are not there and that the background character
139
+ will only print if the printing character is blank. */
140
+
141
+ if (!(attr & A_COLOR))
142
+ attr |= win->_bkgd & A_ATTRIBUTES;
143
+ else
144
+ attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
145
+
146
+ if (ch == ' ')
147
+ ch = win->_bkgd & A_CHARTEXT;
148
+
149
+ /* Add the attribute back into the character. */
150
+
151
+ ch |= attr;
152
+
153
+ maxx = win->_maxx;
154
+ temp = &win->_y[y][x];
155
+
156
+ memmove(temp + 1, temp, (maxx - x - 1) * sizeof(chtype));
157
+
158
+ win->_lastch[y] = maxx - 1;
159
+
160
+ if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
161
+ win->_firstch[y] = x;
162
+
163
+ *temp = ch;
164
+ }
165
+
166
+ PDC_sync(win);
167
+
168
+ return OK;
169
+ }
170
+
171
+ int insch(chtype ch)
172
+ {
173
+ PDC_LOG(("insch() - called\n"));
174
+
175
+ return winsch(stdscr, ch);
176
+ }
177
+
178
+ int mvinsch(int y, int x, chtype ch)
179
+ {
180
+ PDC_LOG(("mvinsch() - called\n"));
181
+
182
+ if (move(y, x) == ERR)
183
+ return ERR;
184
+
185
+ return winsch(stdscr, ch);
186
+ }
187
+
188
+ int mvwinsch(WINDOW *win, int y, int x, chtype ch)
189
+ {
190
+ PDC_LOG(("mvwinsch() - called\n"));
191
+
192
+ if (wmove(win, y, x) == ERR)
193
+ return ERR;
194
+
195
+ return winsch(win, ch);
196
+ }
197
+
198
+ int winsrawch(WINDOW *win, chtype ch)
199
+ {
200
+ PDC_LOG(("winsrawch() - called: win=%p ch=%x "
201
+ "(char=%c attr=0x%x)\n", win, ch,
202
+ ch & A_CHARTEXT, ch & A_ATTRIBUTES));
203
+
204
+ if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f)
205
+ ch |= A_ALTCHARSET;
206
+
207
+ return winsch(win, ch);
208
+ }
209
+
210
+ int insrawch(chtype ch)
211
+ {
212
+ PDC_LOG(("insrawch() - called\n"));
213
+
214
+ return winsrawch(stdscr, ch);
215
+ }
216
+
217
+ int mvinsrawch(int y, int x, chtype ch)
218
+ {
219
+ PDC_LOG(("mvinsrawch() - called\n"));
220
+
221
+ if (move(y, x) == ERR)
222
+ return ERR;
223
+
224
+ return winsrawch(stdscr, ch);
225
+ }
226
+
227
+ int mvwinsrawch(WINDOW *win, int y, int x, chtype ch)
228
+ {
229
+ PDC_LOG(("mvwinsrawch() - called\n"));
230
+
231
+ if (wmove(win, y, x) == ERR)
232
+ return ERR;
233
+
234
+ return winsrawch(win, ch);
235
+ }
236
+
237
+ #ifdef PDC_WIDE
238
+ int wins_wch(WINDOW *win, const cchar_t *wch)
239
+ {
240
+ PDC_LOG(("wins_wch() - called\n"));
241
+
242
+ return wch ? winsch(win, *wch) : ERR;
243
+ }
244
+
245
+ int ins_wch(const cchar_t *wch)
246
+ {
247
+ PDC_LOG(("ins_wch() - called\n"));
248
+
249
+ return wins_wch(stdscr, wch);
250
+ }
251
+
252
+ int mvins_wch(int y, int x, const cchar_t *wch)
253
+ {
254
+ PDC_LOG(("mvins_wch() - called\n"));
255
+
256
+ if (move(y, x) == ERR)
257
+ return ERR;
258
+
259
+ return wins_wch(stdscr, wch);
260
+ }
261
+
262
+ int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch)
263
+ {
264
+ PDC_LOG(("mvwins_wch() - called\n"));
265
+
266
+ if (wmove(win, y, x) == ERR)
267
+ return ERR;
268
+
269
+ return wins_wch(win, wch);
270
+ }
271
+ #endif
@@ -0,0 +1,264 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include <curspriv.h>
4
+
5
+ /*man-start**************************************************************
6
+
7
+ insstr
8
+ ------
9
+
10
+ ### Synopsis
11
+
12
+ int insstr(const char *str);
13
+ int insnstr(const char *str, int n);
14
+ int winsstr(WINDOW *win, const char *str);
15
+ int winsnstr(WINDOW *win, const char *str, int n);
16
+ int mvinsstr(int y, int x, const char *str);
17
+ int mvinsnstr(int y, int x, const char *str, int n);
18
+ int mvwinsstr(WINDOW *win, int y, int x, const char *str);
19
+ int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n);
20
+
21
+ int ins_wstr(const wchar_t *wstr);
22
+ int ins_nwstr(const wchar_t *wstr, int n);
23
+ int wins_wstr(WINDOW *win, const wchar_t *wstr);
24
+ int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n);
25
+ int mvins_wstr(int y, int x, const wchar_t *wstr);
26
+ int mvins_nwstr(int y, int x, const wchar_t *wstr, int n);
27
+ int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr);
28
+ int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
29
+
30
+ ### Description
31
+
32
+ The insstr() functions insert a character string into a window
33
+ at the current cursor position, by repeatedly calling winsch().
34
+ When PDCurses is built with wide-character support enabled, the
35
+ narrow-character functions treat the string as a multibyte
36
+ string in the current locale, and convert it first. All
37
+ characters to the right of the cursor are moved to the right,
38
+ with the possibility of the rightmost characters on the line
39
+ being lost. The cursor position does not change (after moving
40
+ to y, x, if specified). The routines with n as the last
41
+ argument insert at most n characters; if n is negative, then the
42
+ entire string is inserted.
43
+
44
+ ### Return Value
45
+
46
+ All functions return OK on success and ERR on error.
47
+
48
+ ### Portability
49
+ X/Open BSD SYS V
50
+ insstr Y - 4.0
51
+ winsstr Y - 4.0
52
+ mvinsstr Y - 4.0
53
+ mvwinsstr Y - 4.0
54
+ insnstr Y - 4.0
55
+ winsnstr Y - 4.0
56
+ mvinsnstr Y - 4.0
57
+ mvwinsnstr Y - 4.0
58
+ ins_wstr Y
59
+ wins_wstr Y
60
+ mvins_wstr Y
61
+ mvwins_wstr Y
62
+ ins_nwstr Y
63
+ wins_nwstr Y
64
+ mvins_nwstr Y
65
+ mvwins_nwstr Y
66
+
67
+ **man-end****************************************************************/
68
+
69
+ #include <string.h>
70
+
71
+ int winsnstr(WINDOW *win, const char *str, int n)
72
+ {
73
+ #ifdef PDC_WIDE
74
+ wchar_t wstr[513], *p;
75
+ int i;
76
+ #endif
77
+ int len;
78
+
79
+ PDC_LOG(("winsnstr() - called: string=\"%s\" n %d \n", str, n));
80
+
81
+ if (!win || !str)
82
+ return ERR;
83
+
84
+ len = (int)strlen(str);
85
+
86
+ if (n < 0 || n < len)
87
+ n = len;
88
+
89
+ #ifdef PDC_WIDE
90
+ if (n > 512)
91
+ n = 512;
92
+
93
+ p = wstr;
94
+ i = 0;
95
+
96
+ while (str[i] && i < n)
97
+ {
98
+ int retval = PDC_mbtowc(p, str + i, n - i);
99
+
100
+ if (retval <= 0)
101
+ break;
102
+ p++;
103
+ i += retval;
104
+ }
105
+
106
+ while (p > wstr)
107
+ if (winsch(win, *--p) == ERR)
108
+ #else
109
+ while (n)
110
+ if (winsch(win, (unsigned char)(str[--n])) == ERR)
111
+ #endif
112
+ return ERR;
113
+
114
+ return OK;
115
+ }
116
+
117
+ int insstr(const char *str)
118
+ {
119
+ PDC_LOG(("insstr() - called: string=\"%s\"\n", str));
120
+
121
+ return winsnstr(stdscr, str, -1);
122
+ }
123
+
124
+ int winsstr(WINDOW *win, const char *str)
125
+ {
126
+ PDC_LOG(("winsstr() - called: string=\"%s\"\n", str));
127
+
128
+ return winsnstr(win, str, -1);
129
+ }
130
+
131
+ int mvinsstr(int y, int x, const char *str)
132
+ {
133
+ PDC_LOG(("mvinsstr() - called: y %d x %d string=\"%s\"\n", y, x, str));
134
+
135
+ if (move(y, x) == ERR)
136
+ return ERR;
137
+
138
+ return winsnstr(stdscr, str, -1);
139
+ }
140
+
141
+ int mvwinsstr(WINDOW *win, int y, int x, const char *str)
142
+ {
143
+ PDC_LOG(("mvwinsstr() - called: string=\"%s\"\n", str));
144
+
145
+ if (wmove(win, y, x) == ERR)
146
+ return ERR;
147
+
148
+ return winsnstr(win, str, -1);
149
+ }
150
+
151
+ int insnstr(const char *str, int n)
152
+ {
153
+ PDC_LOG(("insnstr() - called: string=\"%s\" n %d \n", str, n));
154
+
155
+ return winsnstr(stdscr, str, n);
156
+ }
157
+
158
+ int mvinsnstr(int y, int x, const char *str, int n)
159
+ {
160
+ PDC_LOG(("mvinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
161
+ y, x, str, n));
162
+
163
+ if (move(y, x) == ERR)
164
+ return ERR;
165
+
166
+ return winsnstr(stdscr, str, n);
167
+ }
168
+
169
+ int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n)
170
+ {
171
+ PDC_LOG(("mvwinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
172
+ y, x, str, n));
173
+
174
+ if (wmove(win, y, x) == ERR)
175
+ return ERR;
176
+
177
+ return winsnstr(win, str, n);
178
+ }
179
+
180
+ #ifdef PDC_WIDE
181
+ int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
182
+ {
183
+ const wchar_t *p;
184
+ int len;
185
+
186
+ PDC_LOG(("wins_nwstr() - called\n"));
187
+
188
+ if (!win || !wstr)
189
+ return ERR;
190
+
191
+ for (len = 0, p = wstr; *p; p++)
192
+ len++;
193
+
194
+ if (n < 0 || n < len)
195
+ n = len;
196
+
197
+ while (n)
198
+ if (winsch(win, wstr[--n]) == ERR)
199
+ return ERR;
200
+
201
+ return OK;
202
+ }
203
+
204
+ int ins_wstr(const wchar_t *wstr)
205
+ {
206
+ PDC_LOG(("ins_wstr() - called\n"));
207
+
208
+ return wins_nwstr(stdscr, wstr, -1);
209
+ }
210
+
211
+ int wins_wstr(WINDOW *win, const wchar_t *wstr)
212
+ {
213
+ PDC_LOG(("wins_wstr() - called\n"));
214
+
215
+ return wins_nwstr(win, wstr, -1);
216
+ }
217
+
218
+ int mvins_wstr(int y, int x, const wchar_t *wstr)
219
+ {
220
+ PDC_LOG(("mvins_wstr() - called\n"));
221
+
222
+ if (move(y, x) == ERR)
223
+ return ERR;
224
+
225
+ return wins_nwstr(stdscr, wstr, -1);
226
+ }
227
+
228
+ int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr)
229
+ {
230
+ PDC_LOG(("mvwinsstr() - called\n"));
231
+
232
+ if (wmove(win, y, x) == ERR)
233
+ return ERR;
234
+
235
+ return wins_nwstr(win, wstr, -1);
236
+ }
237
+
238
+ int ins_nwstr(const wchar_t *wstr, int n)
239
+ {
240
+ PDC_LOG(("ins_nwstr() - called\n"));
241
+
242
+ return wins_nwstr(stdscr, wstr, n);
243
+ }
244
+
245
+ int mvins_nwstr(int y, int x, const wchar_t *wstr, int n)
246
+ {
247
+ PDC_LOG(("mvinsnstr() - called\n"));
248
+
249
+ if (move(y, x) == ERR)
250
+ return ERR;
251
+
252
+ return wins_nwstr(stdscr, wstr, n);
253
+ }
254
+
255
+ int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n)
256
+ {
257
+ PDC_LOG(("mvwinsnstr() - called\n"));
258
+
259
+ if (wmove(win, y, x) == ERR)
260
+ return ERR;
261
+
262
+ return wins_nwstr(win, wstr, n);
263
+ }
264
+ #endif