pdcurses/instr.c

changeset 97
2d43f05b284c
equal deleted inserted replaced
96:5314ebdcb38d 97:2d43f05b284c
1 /* Public Domain Curses */
2
3 #include <curspriv.h>
4
5 RCSID("$Id: instr.c,v 1.44 2008/07/13 16:08:18 wmcbrine Exp $")
6
7 /*man-start**************************************************************
8
9 Name: instr
10
11 Synopsis:
12 int instr(char *str);
13 int innstr(char *str, int n);
14 int winstr(WINDOW *win, char *str);
15 int winnstr(WINDOW *win, char *str, int n);
16 int mvinstr(int y, int x, char *str);
17 int mvinnstr(int y, int x, char *str, int n);
18 int mvwinstr(WINDOW *win, int y, int x, char *str);
19 int mvwinnstr(WINDOW *win, int y, int x, char *str, int n);
20
21 int inwstr(wchar_t *wstr);
22 int innwstr(wchar_t *wstr, int n);
23 int winwstr(WINDOW *win, wchar_t *wstr);
24 int winnwstr(WINDOW *win, wchar_t *wstr, int n);
25 int mvinwstr(int y, int x, wchar_t *wstr);
26 int mvinnwstr(int y, int x, wchar_t *wstr, int n);
27 int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr);
28 int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n);
29
30 Description:
31 These functions take characters (or wide characters) from the
32 current or specified position in the window, and return them as
33 a string in str (or wstr). Attributes are ignored. The functions
34 with n as the last argument return a string at most n characters
35 long.
36
37 Return Value:
38 Upon successful completion, innstr(), mvinnstr(), mvwinnstr()
39 and winnstr() return the number of characters actually read into
40 the string; instr(), mvinstr(), mvwinstr() and winstr() return
41 OK. Otherwise, all these functions return ERR.
42
43 Portability X/Open BSD SYS V
44 instr Y - 4.0
45 winstr Y - 4.0
46 mvinstr Y - 4.0
47 mvwinstr Y - 4.0
48 innstr Y - 4.0
49 winnstr Y - 4.0
50 mvinnstr Y - 4.0
51 mvwinnstr Y - 4.0
52 inwstr Y
53 winwstr Y
54 mvinwstr Y
55 mvwinwstr Y
56 innwstr Y
57 winnwstr Y
58 mvinnwstr Y
59 mvwinnwstr Y
60
61 **man-end****************************************************************/
62
63 int winnstr(WINDOW *win, char *str, int n)
64 {
65 #ifdef PDC_WIDE
66 wchar_t wstr[513];
67
68 if (n < 0 || n > 512)
69 n = 512;
70
71 if (winnwstr(win, wstr, n) == ERR)
72 return ERR;
73
74 return PDC_wcstombs(str, wstr, n);
75 #else
76 chtype *src;
77 int i;
78
79 PDC_LOG(("winnstr() - called: n %d \n", n));
80
81 if (!win || !str)
82 return ERR;
83
84 if (n < 0 || (win->_curx + n) > win->_maxx)
85 n = win->_maxx - win->_curx;
86
87 src = win->_y[win->_cury] + win->_curx;
88
89 for (i = 0; i < n; i++)
90 str[i] = src[i] & A_CHARTEXT;
91
92 str[i] = '\0';
93
94 return i;
95 #endif
96 }
97
98 int instr(char *str)
99 {
100 PDC_LOG(("instr() - called: string=\"%s\"\n", str));
101
102 return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK;
103 }
104
105 int winstr(WINDOW *win, char *str)
106 {
107 PDC_LOG(("winstr() - called: \n"));
108
109 return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK;
110 }
111
112 int mvinstr(int y, int x, char *str)
113 {
114 PDC_LOG(("mvinstr() - called: y %d x %d \n", y, x));
115
116 if (move(y, x) == ERR)
117 return ERR;
118
119 return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK;
120 }
121
122 int mvwinstr(WINDOW *win, int y, int x, char *str)
123 {
124 PDC_LOG(("mvwinstr() - called: y %d x %d \n", y, x));
125
126 if (wmove(win, y, x) == ERR)
127 return ERR;
128
129 return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK;
130 }
131
132 int innstr(char *str, int n)
133 {
134 PDC_LOG(("innstr() - called: n %d \n", n));
135
136 return winnstr(stdscr, str, n);
137 }
138
139 int mvinnstr(int y, int x, char *str, int n)
140 {
141 PDC_LOG(("mvinnstr() - called: y %d x %d n %d \n", y, x, n));
142
143 if (move(y, x) == ERR)
144 return ERR;
145
146 return winnstr(stdscr, str, n);
147 }
148
149 int mvwinnstr(WINDOW *win, int y, int x, char *str, int n)
150 {
151 PDC_LOG(("mvwinnstr() - called: y %d x %d n %d \n", y, x, n));
152
153 if (wmove(win, y, x) == ERR)
154 return ERR;
155
156 return winnstr(win, str, n);
157 }
158
159 #ifdef PDC_WIDE
160 int winnwstr(WINDOW *win, wchar_t *wstr, int n)
161 {
162 chtype *src;
163 int i;
164
165 PDC_LOG(("winnstr() - called: n %d \n", n));
166
167 if (!win || !wstr)
168 return ERR;
169
170 if (n < 0 || (win->_curx + n) > win->_maxx)
171 n = win->_maxx - win->_curx;
172
173 src = win->_y[win->_cury] + win->_curx;
174
175 for (i = 0; i < n; i++)
176 wstr[i] = src[i] & A_CHARTEXT;
177
178 wstr[i] = L'\0';
179
180 return i;
181 }
182
183 int inwstr(wchar_t *wstr)
184 {
185 PDC_LOG(("inwstr() - called\n"));
186
187 return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK;
188 }
189
190 int winwstr(WINDOW *win, wchar_t *wstr)
191 {
192 PDC_LOG(("winwstr() - called\n"));
193
194 return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK;
195 }
196
197 int mvinwstr(int y, int x, wchar_t *wstr)
198 {
199 PDC_LOG(("mvinwstr() - called\n"));
200
201 if (move(y, x) == ERR)
202 return ERR;
203
204 return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK;
205 }
206
207 int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr)
208 {
209 PDC_LOG(("mvwinstr() - called\n"));
210
211 if (wmove(win, y, x) == ERR)
212 return ERR;
213
214 return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK;
215 }
216
217 int innwstr(wchar_t *wstr, int n)
218 {
219 PDC_LOG(("innwstr() - called\n"));
220
221 return winnwstr(stdscr, wstr, n);
222 }
223
224 int mvinnwstr(int y, int x, wchar_t *wstr, int n)
225 {
226 PDC_LOG(("mvinnstr() - called\n"));
227
228 if (move(y, x) == ERR)
229 return ERR;
230
231 return winnwstr(stdscr, wstr, n);
232 }
233
234 int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n)
235 {
236 PDC_LOG(("mvwinnwstr() - called\n"));
237
238 if (wmove(win, y, x) == ERR)
239 return ERR;
240
241 return winnwstr(win, wstr, n);
242 }
243 #endif

mercurial