Commit 6d6dd3a396a5d33404301c4ee21f11f8cd8f5e75
1 parent
597257dd
Exists in
master
and in
3 other branches
Small changes in the paste methods.
Showing
2 changed files
with
14 additions
and
10 deletions
Show diff stats
src/include/lib3270.h
... | ... | @@ -717,11 +717,12 @@ |
717 | 717 | * @param hSession Session handle. |
718 | 718 | * @param baddr Adress for the first character. |
719 | 719 | * @param str String to set. |
720 | + * @param length Length of the string (-1 for auto-detect). | |
720 | 721 | * |
721 | 722 | * @return Negative if error or number of processed characters. |
722 | 723 | * |
723 | 724 | */ |
724 | - LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str); | |
725 | + LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str, int length); | |
725 | 726 | |
726 | 727 | /** |
727 | 728 | * @brief Insert string at current cursor position. | ... | ... |
src/lib3270/paste.c
... | ... | @@ -24,9 +24,6 @@ |
24 | 24 | * |
25 | 25 | * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) |
26 | 26 | * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) |
27 | - * licinio@bb.com.br (Licínio Luis Branco) | |
28 | - * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | |
29 | - * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda) | |
30 | 27 | * |
31 | 28 | */ |
32 | 29 | |
... | ... | @@ -164,17 +161,22 @@ |
164 | 161 | return c; |
165 | 162 | } |
166 | 163 | |
167 | -static int set_string(H3270 *hSession, const unsigned char *str) | |
164 | +static int set_string(H3270 *hSession, const unsigned char *str, int length) | |
168 | 165 | { |
169 | 166 | PASTE_DATA data; |
170 | 167 | unsigned char last = 1; |
168 | + int ix; | |
171 | 169 | |
172 | 170 | memset(&data,0,sizeof(data)); |
173 | 171 | data.row = BA_TO_ROW(hSession->cursor_addr); |
174 | 172 | data.orig_addr = hSession->cursor_addr; |
175 | 173 | data.orig_col = BA_TO_COL(hSession->cursor_addr); |
176 | 174 | |
177 | - while(*str && last && !hSession->kybdlock && hSession->cursor_addr >= data.orig_addr) | |
175 | + if(length < 0) | |
176 | + length = (int) strlen((const char *) str); | |
177 | + | |
178 | +// while(*str && last && !hSession->kybdlock && hSession->cursor_addr >= data.orig_addr) | |
179 | + for(ix = 0; ix < length && *str && last && !hSession->kybdlock && hSession->cursor_addr >= data.orig_addr; ix++) | |
178 | 180 | { |
179 | 181 | switch(*str) |
180 | 182 | { |
... | ... | @@ -207,6 +209,7 @@ static int set_string(H3270 *hSession, const unsigned char *str) |
207 | 209 | last = paste_char(hSession,&data, *str); |
208 | 210 | |
209 | 211 | } |
212 | + | |
210 | 213 | str++; |
211 | 214 | |
212 | 215 | if(IN_3270 && lib3270_get_toggle(hSession,LIB3270_TOGGLE_MARGINED_PASTE) && BA_TO_COL(hSession->cursor_addr) < ((unsigned int) data.orig_col)) |
... | ... | @@ -254,7 +257,7 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, unsigned int row, unsi |
254 | 257 | hSession->cbk.suspend(hSession); |
255 | 258 | |
256 | 259 | hSession->cursor_addr = (row * hSession->cols) + col; |
257 | - rc += set_string(hSession, str); | |
260 | + rc += set_string(hSession, str, -1); | |
258 | 261 | |
259 | 262 | hSession->cbk.resume(hSession); |
260 | 263 | } |
... | ... | @@ -264,7 +267,7 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, unsigned int row, unsi |
264 | 267 | return rc; |
265 | 268 | } |
266 | 269 | |
267 | -LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str) | |
270 | +LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str, int length) | |
268 | 271 | { |
269 | 272 | int rc = -1; |
270 | 273 | |
... | ... | @@ -280,7 +283,7 @@ LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, con |
280 | 283 | lib3270_unselect(hSession); |
281 | 284 | |
282 | 285 | hSession->cbk.suspend(hSession); |
283 | - rc = set_string(hSession, str); | |
286 | + rc = set_string(hSession, str, length); | |
284 | 287 | hSession->cbk.resume(hSession); |
285 | 288 | |
286 | 289 | return rc; |
... | ... | @@ -305,7 +308,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str) |
305 | 308 | return errno = EPERM; |
306 | 309 | |
307 | 310 | hSession->cbk.suspend(hSession); |
308 | - rc = set_string(hSession, str); | |
311 | + rc = set_string(hSession, str, -1); | |
309 | 312 | hSession->cbk.resume(hSession); |
310 | 313 | |
311 | 314 | return rc; | ... | ... |