Commit 260255dac7d783e6133a22fd3622400374aaec9d
1 parent
c8c041d6
Exists in
master
and in
3 other branches
Updating API.
Showing
2 changed files
with
11 additions
and
8 deletions
Show diff stats
src/core/keyboard/kybd.c
... | ... | @@ -926,17 +926,19 @@ static Boolean key_Character(H3270 *hSession, int code, Boolean with_ge, Boolean |
926 | 926 | return True; |
927 | 927 | } |
928 | 928 | |
929 | -LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str) | |
929 | +LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str, int length) | |
930 | 930 | { |
931 | 931 | int rc = 0; |
932 | 932 | |
933 | - FAIL_IF_NOT_ONLINE(hSession); | |
933 | + if(check_online_session(hSession)) | |
934 | + return errno; | |
934 | 935 | |
935 | - while(*str && !rc) | |
936 | - { | |
937 | - rc = key_ACharacter(hSession,(unsigned char)((*str) & 0xff), KT_STD, IA_KEY, NULL); | |
938 | - str++; | |
939 | - } | |
936 | + if(length < 0) | |
937 | + length = strlen((char *) str); | |
938 | + | |
939 | + int pos; | |
940 | + for(pos = 0; pos < length && str[pos] && !rc; pos++) | |
941 | + rc = key_ACharacter(hSession,(str[pos] & 0xff), KT_STD, IA_KEY, NULL); | |
940 | 942 | |
941 | 943 | screen_update(hSession,0,hSession->rows*hSession->cols); |
942 | 944 | ... | ... |
src/include/lib3270.h
... | ... | @@ -729,11 +729,12 @@ |
729 | 729 | * |
730 | 730 | * @param hSession Session handle. |
731 | 731 | * @param str Text to insert. |
732 | + * @param length Length of the string (-1 for auto-detect). | |
732 | 733 | * |
733 | 734 | * @return 0 if success, non zero if failed. |
734 | 735 | * |
735 | 736 | */ |
736 | - LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str); | |
737 | + LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str, int length); | |
737 | 738 | |
738 | 739 | /** |
739 | 740 | * @brief Move cursor to a new position. | ... | ... |