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; | ... | ... |