Commit 51b3ec906969eda9472870bf9aa3c1b770dba8f4

Authored by perry.werneck@gmail.com
1 parent 8bee3b8b

Trabalhando no suporte atk

Showing 2 changed files with 42 additions and 2 deletions   Show diff stats
screen.c
... ... @@ -223,8 +223,15 @@ static unsigned short calc_attrs(H3270 *session, int baddr, int fa_addr, int fa)
223 223 return a;
224 224 }
225 225  
  226 +LIB3270_EXPORT unsigned int lib3270_get_length(H3270 *h)
  227 +{
  228 + CHECK_SESSION_HANDLE(h);
  229 + return h->rows * h->cols;
  230 +}
  231 +
226 232 LIB3270_EXPORT void lib3270_get_screen_size(H3270 *h, int *r, int *c)
227 233 {
  234 + CHECK_SESSION_HANDLE(h);
228 235 *r = h->rows;
229 236 *c = h->cols;
230 237 }
... ...
selection.c
... ... @@ -407,9 +407,38 @@ static char * get_text(H3270 *hSession,unsigned char all)
407 407 return ret;
408 408 }
409 409  
410   -LIB3270_EXPORT char * lib3270_get_text(H3270 *hSession)
  410 +LIB3270_EXPORT char * lib3270_get_text(H3270 *h, int offset, int len)
411 411 {
412   - return get_text(hSession,1);
  412 + char *buffer;
  413 + int col, maxlen;
  414 + char *ptr;
  415 +
  416 + CHECK_SESSION_HANDLE(h);
  417 +
  418 + maxlen = h->rows * (h->cols+1);
  419 +
  420 + if(len < 0)
  421 + len = (maxlen - offset);
  422 + else if(len > maxlen)
  423 + len = maxlen;
  424 +
  425 + buffer = malloc(len+1);
  426 + col = offset%h->cols;
  427 + ptr = buffer;
  428 +
  429 + while(len-- > 0)
  430 + {
  431 + *(ptr++) = h->text[offset++].chr;
  432 + if(col++ >= h->cols && len > 0)
  433 + {
  434 + col = 0;
  435 + *(ptr++) = '\n';
  436 + len--;
  437 + }
  438 + }
  439 + *ptr = 0;
  440 +
  441 + return buffer;
413 442 }
414 443  
415 444 LIB3270_EXPORT char * lib3270_get_selected(H3270 *hSession)
... ... @@ -417,6 +446,10 @@ LIB3270_EXPORT char * lib3270_get_selected(H3270 *hSession)
417 446 if(!hSession->selected || hSession->select.begin == hSession->select.end)
418 447 return NULL;
419 448  
  449 + if(!lib3270_connected(hSession))
  450 + return NULL;
  451 +
  452 +
420 453 return get_text(hSession,0);
421 454 }
422 455  
... ...