Commit 52880afad43651af4cede05fab2df0f49c6a3a8a
1 parent
e8f938a2
Exists in
master
and in
3 other branches
Updating API calls for the new version.
Showing
6 changed files
with
56 additions
and
17 deletions
Show diff stats
src/include/lib3270.h
| @@ -617,7 +617,7 @@ | @@ -617,7 +617,7 @@ | ||
| 617 | * @param h Session handle. | 617 | * @param h Session handle. |
| 618 | * @param s String to input. | 618 | * @param s String to input. |
| 619 | * | 619 | * |
| 620 | - * @return Negative if error or number of processed characters. | 620 | + * @return -1 if error (sets errno) or number of processed characters. |
| 621 | * | 621 | * |
| 622 | */ | 622 | */ |
| 623 | LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str); | 623 | LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str); |
| @@ -625,7 +625,7 @@ | @@ -625,7 +625,7 @@ | ||
| 625 | #define lib3270_set_text_at(h,r,c,t) lib3270_set_string_at(h,r,c,t) | 625 | #define lib3270_set_text_at(h,r,c,t) lib3270_set_string_at(h,r,c,t) |
| 626 | 626 | ||
| 627 | /** | 627 | /** |
| 628 | - * @brief Set string at defined position. | 628 | + * @brief Set string at defined row/column. |
| 629 | * | 629 | * |
| 630 | * @param hSession Session handle. | 630 | * @param hSession Session handle. |
| 631 | * @param row Row for the first character. | 631 | * @param row Row for the first character. |
| @@ -637,6 +637,18 @@ | @@ -637,6 +637,18 @@ | ||
| 637 | */ | 637 | */ |
| 638 | LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, int row, int col, const unsigned char *str); | 638 | LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, int row, int col, const unsigned char *str); |
| 639 | 639 | ||
| 640 | + /** | ||
| 641 | + * @brief Set string at defined adress. | ||
| 642 | + * | ||
| 643 | + * @param hSession Session handle. | ||
| 644 | + * @param baddr Adress for the first character. | ||
| 645 | + * @param str String to set. | ||
| 646 | + * | ||
| 647 | + * @return Negative if error or number of processed characters. | ||
| 648 | + * | ||
| 649 | + */ | ||
| 650 | + LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str); | ||
| 651 | + | ||
| 640 | LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str); | 652 | LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str); |
| 641 | 653 | ||
| 642 | /** | 654 | /** |
| @@ -979,7 +991,7 @@ | @@ -979,7 +991,7 @@ | ||
| 979 | * @return Contents at position if available, or NULL. Release it with lib3270_free() | 991 | * @return Contents at position if available, or NULL. Release it with lib3270_free() |
| 980 | * | 992 | * |
| 981 | */ | 993 | */ |
| 982 | - LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len, char lf); | 994 | + LIB3270_EXPORT char * lib3270_get_string_at_address(H3270 *h, int offset, int len, char lf); |
| 983 | 995 | ||
| 984 | /** | 996 | /** |
| 985 | * @brief Get text at requested position | 997 | * @brief Get text at requested position |
| @@ -993,7 +1005,7 @@ | @@ -993,7 +1005,7 @@ | ||
| 993 | * @return Contents at position if available, or NULL. Release it with lib3270_free() | 1005 | * @return Contents at position if available, or NULL. Release it with lib3270_free() |
| 994 | * | 1006 | * |
| 995 | */ | 1007 | */ |
| 996 | - LIB3270_EXPORT char * lib3270_get_text_at(H3270 *h, int row, int col, int len, char lf); | 1008 | + LIB3270_EXPORT char * lib3270_get_string_at(H3270 *h, int row, int col, int len, char lf); |
| 997 | 1009 | ||
| 998 | /** | 1010 | /** |
| 999 | * @brief Check for text at requested position | 1011 | * @brief Check for text at requested position |
src/lib3270++/local/session.cc
| @@ -117,7 +117,7 @@ | @@ -117,7 +117,7 @@ | ||
| 117 | 117 | ||
| 118 | std::lock_guard<std::mutex> lock(const_cast<Local::Session *>(this)->sync); | 118 | std::lock_guard<std::mutex> lock(const_cast<Local::Session *>(this)->sync); |
| 119 | 119 | ||
| 120 | - char * text = lib3270_get_text(hSession, baddr, len, lf); | 120 | + char * text = lib3270_get_string_at_address(hSession, baddr, len, lf); |
| 121 | 121 | ||
| 122 | if(!text) { | 122 | if(!text) { |
| 123 | throw std::runtime_error( _("Can't get screen contents") ); | 123 | throw std::runtime_error( _("Can't get screen contents") ); |
| @@ -135,7 +135,7 @@ | @@ -135,7 +135,7 @@ | ||
| 135 | 135 | ||
| 136 | std::lock_guard<std::mutex> lock(const_cast<Local::Session *>(this)->sync); | 136 | std::lock_guard<std::mutex> lock(const_cast<Local::Session *>(this)->sync); |
| 137 | 137 | ||
| 138 | - char * text = lib3270_get_text_at(hSession, row, col, sz, lf); | 138 | + char * text = lib3270_get_string_at(hSession, row, col, sz, lf); |
| 139 | 139 | ||
| 140 | if(!text) { | 140 | if(!text) { |
| 141 | throw std::runtime_error( _("Can't get screen contents") ); | 141 | throw std::runtime_error( _("Can't get screen contents") ); |
src/lib3270/macros.c
| @@ -103,7 +103,7 @@ | @@ -103,7 +103,7 @@ | ||
| 103 | switch(argc) | 103 | switch(argc) |
| 104 | { | 104 | { |
| 105 | case 1: // Get entire screen | 105 | case 1: // Get entire screen |
| 106 | - buffer = lib3270_get_text(hSession,0,-1,'\n'); | 106 | + buffer = lib3270_get_string_at_address(hSession,0,-1,'\n'); |
| 107 | break; | 107 | break; |
| 108 | 108 | ||
| 109 | /* | 109 | /* |
src/lib3270/paste.c
| @@ -266,24 +266,51 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, int row, int col, cons | @@ -266,24 +266,51 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, int row, int col, cons | ||
| 266 | return rc; | 266 | return rc; |
| 267 | } | 267 | } |
| 268 | 268 | ||
| 269 | +LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str) | ||
| 270 | +{ | ||
| 271 | + int rc = -1; | ||
| 272 | + | ||
| 273 | + FAIL_IF_NOT_ONLINE(hSession); | ||
| 274 | + | ||
| 275 | + if(hSession->kybdlock) | ||
| 276 | + { | ||
| 277 | + errno = EPERM; | ||
| 278 | + return -1; | ||
| 279 | + } | ||
| 280 | + | ||
| 281 | + if(lib3270_set_cursor_address(hSession,baddr) < 0) | ||
| 282 | + return -1; | ||
| 283 | + | ||
| 284 | + if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) | ||
| 285 | + lib3270_unselect(hSession); | ||
| 286 | + | ||
| 287 | + hSession->cbk.suspend(hSession); | ||
| 288 | + rc = set_string(hSession, str); | ||
| 289 | + hSession->cbk.resume(hSession); | ||
| 290 | + | ||
| 291 | + return rc; | ||
| 292 | +} | ||
| 269 | 293 | ||
| 270 | /** | 294 | /** |
| 271 | - * Set string at cursor position. | 295 | + * @brief Set string at cursor position. |
| 272 | * | 296 | * |
| 273 | * @param hSession Session handle. | 297 | * @param hSession Session handle. |
| 274 | * @param str String to set | 298 | * @param str String to set |
| 275 | * | 299 | * |
| 276 | - * @return Number of characters inserted; <0 in case of error. | 300 | + * @return -1 if error (sets errno) or number of processed characters. |
| 277 | * | 301 | * |
| 278 | */ | 302 | */ |
| 279 | LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str) | 303 | LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str) |
| 280 | { | 304 | { |
| 281 | int rc; | 305 | int rc; |
| 282 | 306 | ||
| 283 | - CHECK_SESSION_HANDLE(hSession); | 307 | + FAIL_IF_NOT_ONLINE(hSession); |
| 284 | 308 | ||
| 285 | if(hSession->kybdlock) | 309 | if(hSession->kybdlock) |
| 286 | - return -EINVAL; | 310 | + { |
| 311 | + errno = EPERM; | ||
| 312 | + return -1; | ||
| 313 | + } | ||
| 287 | 314 | ||
| 288 | hSession->cbk.suspend(hSession); | 315 | hSession->cbk.suspend(hSession); |
| 289 | rc = set_string(hSession, str); | 316 | rc = set_string(hSession, str); |
src/lib3270/screen.c
| @@ -363,7 +363,7 @@ void screen_update(H3270 *session, int bstart, int bend) | @@ -363,7 +363,7 @@ void screen_update(H3270 *session, int bstart, int bend) | ||
| 363 | 363 | ||
| 364 | #ifdef DEBUG | 364 | #ifdef DEBUG |
| 365 | { | 365 | { |
| 366 | - char *text = lib3270_get_text(session,0,-1,'\n'); | 366 | + char *text = lib3270_get_string_at_address(session,0,-1,'\n'); |
| 367 | trace("First screen:\n%s\n",text); | 367 | trace("First screen:\n%s\n",text); |
| 368 | lib3270_free(text); | 368 | lib3270_free(text); |
| 369 | } | 369 | } |
src/lib3270/selection.c
| @@ -473,7 +473,7 @@ LIB3270_EXPORT char * lib3270_get_region(H3270 *h, int start_pos, int end_pos, u | @@ -473,7 +473,7 @@ LIB3270_EXPORT char * lib3270_get_region(H3270 *h, int start_pos, int end_pos, u | ||
| 473 | return lib3270_realloc(text,sz); | 473 | return lib3270_realloc(text,sz); |
| 474 | } | 474 | } |
| 475 | 475 | ||
| 476 | -LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len, char lf) | 476 | +LIB3270_EXPORT char * lib3270_get_string_at_address(H3270 *h, int offset, int len, char lf) |
| 477 | { | 477 | { |
| 478 | char * buffer; | 478 | char * buffer; |
| 479 | int maxlen; | 479 | int maxlen; |
| @@ -528,10 +528,10 @@ LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len, char lf) | @@ -528,10 +528,10 @@ LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len, char lf) | ||
| 528 | return buffer; | 528 | return buffer; |
| 529 | } | 529 | } |
| 530 | 530 | ||
| 531 | -LIB3270_EXPORT char * lib3270_get_text_at(H3270 *h, int row, int col, int len, char lf) | 531 | +LIB3270_EXPORT char * lib3270_get_string_at(H3270 *h, int row, int col, int len, char lf) |
| 532 | { | 532 | { |
| 533 | CHECK_SESSION_HANDLE(h); | 533 | CHECK_SESSION_HANDLE(h); |
| 534 | - return lib3270_get_text(h, ((row-1) * h->cols) + (col-1), len, lf); | 534 | + return lib3270_get_string_at_address(h, ((row-1) * h->cols) + (col-1), len, lf); |
| 535 | } | 535 | } |
| 536 | 536 | ||
| 537 | LIB3270_EXPORT int lib3270_cmp_text_at(H3270 *h, int row, int col, const char *text, char lf) | 537 | LIB3270_EXPORT int lib3270_cmp_text_at(H3270 *h, int row, int col, const char *text, char lf) |
| @@ -540,7 +540,7 @@ LIB3270_EXPORT int lib3270_cmp_text_at(H3270 *h, int row, int col, const char *t | @@ -540,7 +540,7 @@ LIB3270_EXPORT int lib3270_cmp_text_at(H3270 *h, int row, int col, const char *t | ||
| 540 | size_t sz = strlen(text); | 540 | size_t sz = strlen(text); |
| 541 | char * contents; | 541 | char * contents; |
| 542 | 542 | ||
| 543 | - contents = lib3270_get_text_at(h,row,col,sz,lf); | 543 | + contents = lib3270_get_string_at(h,row,col,sz,lf); |
| 544 | if(!contents) | 544 | if(!contents) |
| 545 | return -1; | 545 | return -1; |
| 546 | 546 | ||
| @@ -567,7 +567,7 @@ LIB3270_EXPORT char * lib3270_get_field_text_at(H3270 *session, int baddr) | @@ -567,7 +567,7 @@ LIB3270_EXPORT char * lib3270_get_field_text_at(H3270 *session, int baddr) | ||
| 567 | if(first < 0) | 567 | if(first < 0) |
| 568 | return NULL; | 568 | return NULL; |
| 569 | 569 | ||
| 570 | - return lib3270_get_text(session,first,lib3270_field_length(session,first)+1,0); | 570 | + return lib3270_get_string_at_address(session,first,lib3270_field_length(session,first)+1,0); |
| 571 | } | 571 | } |
| 572 | 572 | ||
| 573 | LIB3270_EXPORT int lib3270_has_selection(H3270 *hSession) | 573 | LIB3270_EXPORT int lib3270_has_selection(H3270 *hSession) |