Commit f731fcdfbab33937bc642f420c426eaab99e18df

Authored by Perry Werneck
1 parent df26bc3c

Incluindo opção para definir o delimitador de linha ao carregar o conteúdo da tela.

android/jni/main.cpp
... ... @@ -78,7 +78,7 @@ static void changed(H3270 *session, int offset, int len)
78 78 trace("%s: offset=%d len=%d",__FUNCTION__,offset,len);
79 79  
80 80 {
81   - char *text = lib3270_get_text(PW3270_SESSION,0,-1);
  81 + char *text = lib3270_get_text(PW3270_SESSION,0,-1,'\n');
82 82 if(text)
83 83 {
84 84 char *strtok_r(char *str, const char *delim, char **saveptr);
... ...
android/jni/text.cpp
... ... @@ -76,7 +76,7 @@ JNIEXPORT jbyteArray JNICALL Java_br_com_bb_pw3270_lib3270_getText(JNIEnv *env,
76 76  
77 77 // trace("%s starts",__FUNCTION__);
78 78  
79   - char *text = lib3270_get_text(PW3270_SESSION,0,-1);
  79 + char *text = lib3270_get_text(PW3270_SESSION,0,-1,'\n');
80 80  
81 81 if(text)
82 82 {
... ...
src/include/lib3270.h
... ... @@ -907,11 +907,12 @@
907 907 * @param h Session Handle.
908 908 * @param offset Start position.
909 909 * @param len Text length or -1 to all text.
  910 + * @param lf Line break char (0 to disable line breaks).
910 911 *
911 912 * @return Contents at position if available, or NULL. Release it with lib3270_free()
912 913 *
913 914 */
914   - LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len);
  915 + LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len, char lf);
915 916  
916 917 /**
917 918 * Get text at requested position
... ...
src/lib3270/macros.c
... ... @@ -103,7 +103,7 @@
103 103 switch(argc)
104 104 {
105 105 case 1: // Get entire screen
106   - buffer = lib3270_get_text(hSession,0,-1);
  106 + buffer = lib3270_get_text(hSession,0,-1,'\n');
107 107 break;
108 108  
109 109 /*
... ...
src/lib3270/screen.c
... ... @@ -374,7 +374,7 @@ void screen_update(H3270 *session, int bstart, int bend)
374 374  
375 375 #ifdef DEBUG
376 376 {
377   - char *text = lib3270_get_text(session,0,-1);
  377 + char *text = lib3270_get_text(session,0,-1,'\n');
378 378 trace("First screen:\n%s\n",text);
379 379 lib3270_free(text);
380 380 }
... ...
src/lib3270/selection.c
... ... @@ -475,7 +475,7 @@ LIB3270_EXPORT char * lib3270_get_region(H3270 *h, int start_pos, int end_pos, u
475 475 return lib3270_realloc(text,sz);
476 476 }
477 477  
478   -LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len)
  478 +LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len, char lf)
479 479 {
480 480 char * buffer;
481 481 int maxlen;
... ... @@ -517,9 +517,9 @@ LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len)
517 517 offset++;
518 518 len--;
519 519  
520   - if((offset%h->cols) == 0 && len > 0)
  520 + if(lf && (offset%h->cols) == 0 && len > 0)
521 521 {
522   - *(ptr++) = '\n';
  522 + *(ptr++) = lf;
523 523 len--;
524 524 }
525 525 }
... ... @@ -533,7 +533,7 @@ LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len)
533 533 LIB3270_EXPORT char * lib3270_get_text_at(H3270 *h, int row, int col, int len)
534 534 {
535 535 CHECK_SESSION_HANDLE(h);
536   - return lib3270_get_text(h, ((row-1) * h->cols) + (col-1), len);
  536 + return lib3270_get_text(h, ((row-1) * h->cols) + (col-1), len, '\n');
537 537 }
538 538  
539 539 LIB3270_EXPORT int lib3270_cmp_text_at(H3270 *h, int row, int col, const char *text)
... ... @@ -569,7 +569,7 @@ LIB3270_EXPORT char * lib3270_get_field_at(H3270 *session, int baddr)
569 569 if(first < 0)
570 570 return NULL;
571 571  
572   - return lib3270_get_text(session,first,lib3270_field_length(session,first)+1);
  572 + return lib3270_get_text(session,first,lib3270_field_length(session,first)+1,0);
573 573 }
574 574  
575 575 LIB3270_EXPORT int lib3270_has_selection(H3270 *hSession)
... ...
src/libpw3270cpp/local.cc
... ... @@ -137,7 +137,7 @@
137 137 int (*_pfkey)(H3270 *hSession, int key);
138 138 int (*_pakey)(H3270 *hSession, int key);
139 139 int (*_wait_for_ready)(H3270 *hSession, int seconds);
140   - char * (*_get_text)(H3270 *h, int offset, int len);
  140 + char * (*_get_text)(H3270 *h, int offset, int len, char lf);
141 141 char * (*_get_text_at)(H3270 *h, int row, int col, int len);
142 142 int (*_cmp_text_at)(H3270 *h, int row, int col, const char *text);
143 143 int (*_set_text_at)(H3270 *h, int row, int col, const unsigned char *str);
... ... @@ -380,7 +380,7 @@
380 380 string get_text(int offset, size_t len)
381 381 {
382 382 string rc;
383   - char * ptr = _get_text(hSession,offset,len);
  383 + char * ptr = _get_text(hSession,offset,len,'\n');
384 384  
385 385 if(ptr)
386 386 {
... ...
src/plugins/dbus3270/gobject.c
... ... @@ -230,7 +230,7 @@ void pw3270_dbus_get_screen_contents(PW3270Dbus *object, DBusGMethodInvocation *
230 230 if(pw3270_dbus_check_valid_state(object,context))
231 231 return;
232 232  
233   - text = lib3270_get_text(hSession,0,-1);
  233 + text = lib3270_get_text(hSession,0,-1,'\n');
234 234  
235 235 utftext = g_convert_with_fallback(text,-1,"UTF-8",lib3270_get_display_charset(hSession),"?",NULL,NULL,NULL);
236 236  
... ... @@ -323,7 +323,7 @@ void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBus
323 323 if(pw3270_dbus_check_valid_state(object,context))
324 324 return;
325 325  
326   - text = lib3270_get_text(hSession,offset,len);
  326 + text = lib3270_get_text(hSession,offset,len,'\n');
327 327 if(!text)
328 328 {
329 329 GError *error = pw3270_dbus_get_error_from_errno(errno);
... ...
src/pw3270/v3270/accessible.c
... ... @@ -185,7 +185,7 @@ static gunichar v3270_accessible_get_character_at_offset(AtkText *atk_text, gint
185 185 if(widget == NULL)
186 186 {
187 187 H3270 * host = v3270_get_session(widget);
188   - gchar * text = lib3270_get_text(host,offset,1);
  188 + gchar * text = lib3270_get_text(host,offset,1,'\n');
189 189  
190 190 if(text)
191 191 {
... ... @@ -346,7 +346,7 @@ static gchar * v3270_accessible_get_text_at_offset(AtkText *atk_text, gint offse
346 346 case ATK_TEXT_BOUNDARY_CHAR: // Boundary is the boundary between characters
347 347 // (including non-printing characters)
348 348  
349   - text = lib3270_get_text(host,offset,1);
  349 + text = lib3270_get_text(host,offset,1,'\n');
350 350 break;
351 351  
352 352 case ATK_TEXT_BOUNDARY_WORD_START: // Boundary is the start (i.e. first character) of a word.
... ... @@ -373,7 +373,7 @@ static gchar * v3270_accessible_get_text_at_offset(AtkText *atk_text, gint offse
373 373 pos = (offset/cols)*cols;
374 374 if(pos == offset)
375 375 offset++;
376   - text = lib3270_get_text(host,pos,(offset-pos));
  376 + text = lib3270_get_text(host,pos,(offset-pos),'\n');
377 377 break;
378 378  
379 379  
... ... @@ -426,7 +426,7 @@ static gchar * v3270_accessible_get_text(AtkText *atk_text, gint start_pos, gint
426 426 if(!lib3270_connected(host))
427 427 return g_strdup( "" );
428 428  
429   - text = lib3270_get_text(host,start_pos,end_pos < start_pos ? -1 : (end_pos - start_pos));
  429 + text = lib3270_get_text(host,start_pos,end_pos < start_pos ? -1 : (end_pos - start_pos),'\n');
430 430  
431 431 if(text)
432 432 {
... ...
src/pw3270/v3270/selection.c
... ... @@ -99,7 +99,7 @@ gchar * v3270_get_text(GtkWidget *widget, int offset, int len)
99 99  
100 100 terminal = GTK_V3270(widget);
101 101  
102   - str = lib3270_get_text(terminal->host, offset, len);
  102 + str = lib3270_get_text(terminal->host, offset, len, '\n');
103 103  
104 104 if(!str)
105 105 return NULL;
... ...
src/pw3270/v3270/widget.c
... ... @@ -826,7 +826,7 @@ static void changed(H3270 *session, int offset, int len)
826 826 {
827 827 // Get new text, notify atk
828 828 gsize bytes_written = 0;
829   - char * text = lib3270_get_text(session,offset,len);
  829 + char * text = lib3270_get_text(session,offset,len,'\n');
830 830  
831 831 if(text)
832 832 {
... ...