Commit 51b3ec906969eda9472870bf9aa3c1b770dba8f4
1 parent
8bee3b8b
Exists in
master
and in
3 other branches
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 | ... | ... |