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 | ... | ... |