Commit 9e14881bc2555401514a0b787ea26da2edbdf630
1 parent
dd36c196
Exists in
master
and in
3 other branches
Updating documentation, adjusting return codes.
Showing
7 changed files
with
83 additions
and
95 deletions
Show diff stats
Makefile.in
... | ... | @@ -64,6 +64,7 @@ GENMARSHAL=@GENMARSHAL@ |
64 | 64 | CONVERT=@CONVERT@ |
65 | 65 | OPTIPNG=@OPTIPNG@ |
66 | 66 | ZIP=@ZIP@ |
67 | +DOXYGEN=@DOXYGEN@ | |
67 | 68 | |
68 | 69 | #---[ Paths ]---------------------------------------------------------------------------- |
69 | 70 | |
... | ... | @@ -351,6 +352,8 @@ $(POTDIR)/lib3270.pot: \ |
351 | 352 | locale: \ |
352 | 353 | $(POTDIR)/lib3270.pot |
353 | 354 | |
355 | +doc: | |
356 | + @$(DOXYGEN) ./doxygen/doxyfile | |
354 | 357 | |
355 | 358 | #---[ Debug Targets ]-------------------------------------------------------------------- |
356 | 359 | ... | ... |
src/core/keyboard/kybd.c
... | ... | @@ -940,6 +940,9 @@ LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *st |
940 | 940 | if(length < 0) |
941 | 941 | length = strlen((char *) str); |
942 | 942 | |
943 | + if(hSession->kybdlock) | |
944 | + return (errno = EPERM); | |
945 | + | |
943 | 946 | int pos; |
944 | 947 | for(pos = 0; pos < length && str[pos] && !rc; pos++) |
945 | 948 | rc = key_ACharacter(hSession,(str[pos] & 0xff), KT_STD, IA_KEY, NULL); | ... | ... |
src/core/paste.c
... | ... | @@ -248,15 +248,14 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, unsigned int row, unsi |
248 | 248 | row--; |
249 | 249 | col--; |
250 | 250 | |
251 | - if(row <= hSession->rows && col <= hSession->cols) | |
252 | - { | |
253 | - hSession->cbk.suspend(hSession); | |
251 | + if(row > hSession->rows || col > hSession->cols) | |
252 | + return - (errno = EOVERFLOW); | |
254 | 253 | |
255 | - hSession->cursor_addr = (row * hSession->cols) + col; | |
256 | - rc += set_string(hSession, str, length); | |
254 | + hSession->cbk.suspend(hSession); | |
257 | 255 | |
258 | - hSession->cbk.resume(hSession); | |
259 | - } | |
256 | + hSession->cursor_addr = (row * hSession->cols) + col; | |
257 | + rc = set_string(hSession, str, length); | |
258 | + hSession->cbk.resume(hSession); | |
260 | 259 | |
261 | 260 | trace("%s rc=%d",__FUNCTION__,rc); |
262 | 261 | |
... | ... | @@ -279,8 +278,12 @@ LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, con |
279 | 278 | if(hSession->kybdlock) |
280 | 279 | return - (errno = EPERM); |
281 | 280 | |
282 | - if(baddr >= 0 && lib3270_set_cursor_address(hSession,baddr) < 0) | |
283 | - return -1; | |
281 | + if(baddr >= 0) | |
282 | + { | |
283 | + rc = lib3270_set_cursor_address(hSession,baddr); | |
284 | + if(rc < 0) | |
285 | + return rc; | |
286 | + } | |
284 | 287 | |
285 | 288 | if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) |
286 | 289 | lib3270_unselect(hSession); |
... | ... | @@ -306,6 +309,9 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str, |
306 | 309 | if(hSession->kybdlock) |
307 | 310 | return - (errno = EPERM); |
308 | 311 | |
312 | + if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) | |
313 | + lib3270_unselect(hSession); | |
314 | + | |
309 | 315 | hSession->cbk.suspend(hSession); |
310 | 316 | rc = set_string(hSession, str, length); |
311 | 317 | hSession->cbk.resume(hSession); | ... | ... |
src/core/screen.c
... | ... | @@ -431,27 +431,12 @@ LIB3270_EXPORT int lib3270_translate_to_address(H3270 *hSession, unsigned int ro |
431 | 431 | col--; |
432 | 432 | |
433 | 433 | if(row > hSession->rows || col > hSession->cols) |
434 | - { | |
435 | - // Invalid coordinates | |
436 | - errno = EINVAL; | |
437 | - return -1; | |
438 | - } | |
434 | + return - (errno = EOVERFLOW); | |
439 | 435 | |
440 | 436 | return (row * hSession->cols) + col; |
441 | 437 | } |
442 | 438 | |
443 | 439 | |
444 | -/** | |
445 | - * @brief Move cursor to a new position. | |
446 | - * | |
447 | - * @see lib3270_set_cursor_position | |
448 | - * | |
449 | - * @param hSession TN3270 session. | |
450 | - * @param baddr New cursor position. | |
451 | - * | |
452 | - * @return Old cursor address or -1 in case of error (sets errno). | |
453 | - * | |
454 | - */ | |
455 | 440 | LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int baddr) |
456 | 441 | { |
457 | 442 | FAIL_IF_NOT_ONLINE(hSession); |
... | ... | @@ -459,10 +444,7 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int badd |
459 | 444 | trace("%s(%d)",__FUNCTION__,baddr); |
460 | 445 | |
461 | 446 | if(baddr > (hSession->rows * hSession->cols)) |
462 | - { | |
463 | - errno = EINVAL; | |
464 | - return -1; | |
465 | - } | |
447 | + return - (errno = EOVERFLOW); | |
466 | 448 | |
467 | 449 | if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) |
468 | 450 | lib3270_unselect(hSession); |
... | ... | @@ -470,46 +452,13 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int badd |
470 | 452 | return cursor_move(hSession,baddr); |
471 | 453 | } |
472 | 454 | |
473 | -/** | |
474 | - * @brief Move cursor to a new position. | |
475 | - * | |
476 | - * @see lib3270_set_cursor_position | |
477 | - * | |
478 | - * @param hSession TN3270 session. | |
479 | - * @param row New cursor row. | |
480 | - * @parma col New cursor column. | |
481 | - * | |
482 | - * @return Old cursor address or -1 in case of error (sets errno). | |
483 | - * | |
484 | - */ | |
485 | 455 | LIB3270_EXPORT int lib3270_set_cursor_position(H3270 *hSession, unsigned int row, unsigned int col) |
486 | 456 | { |
487 | - return lib3270_set_cursor_address(hSession,lib3270_translate_to_address(hSession, row, col)); | |
488 | - | |
489 | - /* | |
490 | - int baddr = -1; | |
491 | - | |
492 | - CHECK_SESSION_HANDLE(h); | |
493 | - | |
494 | - if(h->selected && !lib3270_get_toggle(h,LIB3270_TOGGLE_KEEP_SELECTED)) | |
495 | - lib3270_unselect(h); | |
496 | - | |
497 | - row--; | |
498 | - col--; | |
499 | - | |
500 | - if(row >= 0 && col >= 0 && row <= h->rows && col <= h->cols) | |
501 | - { | |
502 | - baddr = (row * h->cols) + col; | |
457 | + int baddr = lib3270_translate_to_address(hSession, row, col); | |
458 | + if(baddr < 0) | |
459 | + return -errno; | |
503 | 460 | |
504 | - if(baddr != h->cursor_addr) | |
505 | - { | |
506 | - h->cursor_addr = baddr; | |
507 | - h->cbk.update_cursor(h,(unsigned short) row,(unsigned short) col,h->text[baddr].chr,h->text[baddr].attr); | |
508 | - } | |
509 | - } | |
510 | - | |
511 | - return baddr; | |
512 | - */ | |
461 | + return lib3270_set_cursor_address(hSession,baddr); | |
513 | 462 | } |
514 | 463 | |
515 | 464 | /** |
... | ... | @@ -527,10 +476,7 @@ int cursor_move(H3270 *hSession, int baddr) |
527 | 476 | { |
528 | 477 | int ret = hSession->cursor_addr; |
529 | 478 | |
530 | - if(ret == baddr) | |
531 | - return ret; | |
532 | - | |
533 | - if(baddr >= 0) | |
479 | + if(ret != baddr && baddr >= 0) | |
534 | 480 | { |
535 | 481 | hSession->cursor_addr = baddr; |
536 | 482 | hSession->cbk.update_cursor( |
... | ... | @@ -545,15 +491,13 @@ int cursor_move(H3270 *hSession, int baddr) |
545 | 491 | return ret; |
546 | 492 | } |
547 | 493 | |
548 | -/* Status line stuff. */ | |
549 | - | |
494 | +/** | |
495 | + * @brief Status line stuff. | |
496 | + */ | |
550 | 497 | void set_status(H3270 *session, LIB3270_FLAG id, Boolean on) |
551 | 498 | { |
552 | - CHECK_SESSION_HANDLE(session); | |
553 | - | |
554 | 499 | session->oia.flag[id] = (on != 0); |
555 | 500 | session->cbk.update_oia(session,id,session->oia.flag[id]); |
556 | - | |
557 | 501 | } |
558 | 502 | |
559 | 503 | void status_ctlr_done(H3270 *session) | ... | ... |
src/include/lib3270.h
... | ... | @@ -685,7 +685,9 @@ |
685 | 685 | * @param row Row inside the screen. |
686 | 686 | * @param col Col inside the screen. |
687 | 687 | * |
688 | - * @return Current address or -1 if invalid (sets errno). | |
688 | + * @return Current address or negative if invalid (sets errno). | |
689 | + * | |
690 | + * @retval -EOVERFLOW The coordinates are out of the screen. | |
689 | 691 | * |
690 | 692 | */ |
691 | 693 | LIB3270_EXPORT int lib3270_translate_to_address(H3270 *hSession, unsigned int row, unsigned int col); |
... | ... | @@ -710,13 +712,19 @@ |
710 | 712 | /** |
711 | 713 | * @brief Set string at defined row/column. |
712 | 714 | * |
715 | + * Set the string in the defined row/column; returns number of processed caracter if succeeds or negative value if not. | |
716 | + * | |
713 | 717 | * @param hSession Session handle. |
714 | 718 | * @param row Row for the first character. |
715 | 719 | * @param col Col for the first character. |
716 | 720 | * @param str String to set. |
717 | 721 | * @param length Length of the string (-1 for auto-detect). |
718 | 722 | * |
719 | - * @return Negative if error or number of processed characters. | |
723 | + * @return Negative if error or number (sets errno) of processed characters. | |
724 | + * | |
725 | + * @retval -EPERM The keyboard is locked. | |
726 | + * @retval -EOVERFLOW The row or col is bigger than the screen size. | |
727 | + * @retval -ENOTCONN Disconnected from host. | |
720 | 728 | * |
721 | 729 | */ |
722 | 730 | LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, unsigned int row, unsigned int col, const unsigned char *str, int length); |
... | ... | @@ -731,6 +739,10 @@ |
731 | 739 | * |
732 | 740 | * @return Negative if error or number of processed characters. |
733 | 741 | * |
742 | + * @retval -EPERM The keyboard is locked. | |
743 | + * @retval -EOVERFLOW The address is beyond the screen length. | |
744 | + * @retval -ENOTCONN Disconnected from host. | |
745 | + * | |
734 | 746 | */ |
735 | 747 | LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str, int length); |
736 | 748 | |
... | ... | @@ -741,7 +753,10 @@ |
741 | 753 | * @param str Text to insert. |
742 | 754 | * @param length Length of the string (-1 for auto-detect). |
743 | 755 | * |
744 | - * @return 0 if success, non zero if failed. | |
756 | + * @return 0 if success, non zero if failed (sets errno). | |
757 | + * | |
758 | + * @retval EPERM The keyboard is locked. | |
759 | + * @retval ENOTCONN Disconnected from host. | |
745 | 760 | * |
746 | 761 | */ |
747 | 762 | LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str, int length); |
... | ... | @@ -754,7 +769,11 @@ |
754 | 769 | * @param hSession TN3270 session. |
755 | 770 | * @param baddr New cursor position. |
756 | 771 | * |
757 | - * @return Old cursor address or -1 in case of error (sets errno). | |
772 | + * @return Old cursor address or negative in case of error (sets errno). | |
773 | + * | |
774 | + * @retval -EOVERFLOW The address is beyond the screen length. | |
775 | + * @retval -ENOTCONN Disconnected from host. | |
776 | + * | |
758 | 777 | */ |
759 | 778 | LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int baddr); |
760 | 779 | |
... | ... | @@ -765,8 +784,10 @@ |
765 | 784 | * @param row New cursor row. |
766 | 785 | * @param col New cursor col. |
767 | 786 | * |
768 | - * @return last cursor address or -1 if invalid (sets errno). | |
787 | + * @return Old cursor address or negative in case of error (sets errno). | |
769 | 788 | * |
789 | + * @retval -EOVERFLOW The address is beyond the screen length. | |
790 | + * @retval -ENOTCONN Disconnected from host. | |
770 | 791 | */ |
771 | 792 | LIB3270_EXPORT int lib3270_set_cursor_position(H3270 *h, unsigned int row, unsigned int col); |
772 | 793 | ... | ... |
src/include/statusc.h
1 | 1 | /* |
2 | - * Copyright 1999, 2000, 2002 by Paul Mattes. | |
3 | - * Permission to use, copy, modify, and distribute this software and its | |
4 | - * documentation for any purpose and without fee is hereby granted, | |
5 | - * provided that the above copyright notice appear in all copies and that | |
6 | - * both that copyright notice and this permission notice appear in | |
7 | - * supporting documentation. | |
8 | - * | |
9 | - * c3270 is distributed in the hope that it will be useful, but WITHOUT ANY | |
10 | - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
11 | - * FOR A PARTICULAR PURPOSE. See the file LICENSE for more details. | |
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270. | |
5 | + * | |
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
7 | + * | |
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
10 | + * Free Software Foundation. | |
11 | + * | |
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
15 | + * obter mais detalhes. | |
16 | + * | |
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
20 | + * | |
21 | + * Este programa está nomeado como host.c e possui 1078 linhas de código. | |
22 | + * | |
23 | + * Contatos: | |
24 | + * | |
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
27 | + * | |
12 | 28 | */ |
13 | 29 | |
14 | -/* c3270 verson of statusc.h */ | |
15 | - | |
16 | -// #include "api.h" | |
17 | - | |
18 | 30 | LIB3270_INTERNAL void status_compose(int on, unsigned char c, enum keytype keytype); |
19 | 31 | LIB3270_INTERNAL void status_ctlr_done(H3270 *session); |
20 | 32 | ... | ... |