Commit 9e14881bc2555401514a0b787ea26da2edbdf630

Authored by Perry Werneck
1 parent dd36c196

Updating documentation, adjusting return codes.

@@ -64,6 +64,7 @@ GENMARSHAL=@GENMARSHAL@ @@ -64,6 +64,7 @@ GENMARSHAL=@GENMARSHAL@
64 CONVERT=@CONVERT@ 64 CONVERT=@CONVERT@
65 OPTIPNG=@OPTIPNG@ 65 OPTIPNG=@OPTIPNG@
66 ZIP=@ZIP@ 66 ZIP=@ZIP@
  67 +DOXYGEN=@DOXYGEN@
67 68
68 #---[ Paths ]---------------------------------------------------------------------------- 69 #---[ Paths ]----------------------------------------------------------------------------
69 70
@@ -351,6 +352,8 @@ $(POTDIR)/lib3270.pot: \ @@ -351,6 +352,8 @@ $(POTDIR)/lib3270.pot: \
351 locale: \ 352 locale: \
352 $(POTDIR)/lib3270.pot 353 $(POTDIR)/lib3270.pot
353 354
  355 +doc:
  356 + @$(DOXYGEN) ./doxygen/doxyfile
354 357
355 #---[ Debug Targets ]-------------------------------------------------------------------- 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,6 +940,9 @@ LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *st
940 if(length < 0) 940 if(length < 0)
941 length = strlen((char *) str); 941 length = strlen((char *) str);
942 942
  943 + if(hSession->kybdlock)
  944 + return (errno = EPERM);
  945 +
943 int pos; 946 int pos;
944 for(pos = 0; pos < length && str[pos] && !rc; pos++) 947 for(pos = 0; pos < length && str[pos] && !rc; pos++)
945 rc = key_ACharacter(hSession,(str[pos] & 0xff), KT_STD, IA_KEY, NULL); 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,15 +248,14 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, unsigned int row, unsi
248 row--; 248 row--;
249 col--; 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 trace("%s rc=%d",__FUNCTION__,rc); 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,8 +278,12 @@ LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, con
279 if(hSession->kybdlock) 278 if(hSession->kybdlock)
280 return - (errno = EPERM); 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 if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) 288 if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED))
286 lib3270_unselect(hSession); 289 lib3270_unselect(hSession);
@@ -306,6 +309,9 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str, @@ -306,6 +309,9 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str,
306 if(hSession->kybdlock) 309 if(hSession->kybdlock)
307 return - (errno = EPERM); 310 return - (errno = EPERM);
308 311
  312 + if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED))
  313 + lib3270_unselect(hSession);
  314 +
309 hSession->cbk.suspend(hSession); 315 hSession->cbk.suspend(hSession);
310 rc = set_string(hSession, str, length); 316 rc = set_string(hSession, str, length);
311 hSession->cbk.resume(hSession); 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,27 +431,12 @@ LIB3270_EXPORT int lib3270_translate_to_address(H3270 *hSession, unsigned int ro
431 col--; 431 col--;
432 432
433 if(row > hSession->rows || col > hSession->cols) 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 return (row * hSession->cols) + col; 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 LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int baddr) 440 LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int baddr)
456 { 441 {
457 FAIL_IF_NOT_ONLINE(hSession); 442 FAIL_IF_NOT_ONLINE(hSession);
@@ -459,10 +444,7 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int badd @@ -459,10 +444,7 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int badd
459 trace("%s(%d)",__FUNCTION__,baddr); 444 trace("%s(%d)",__FUNCTION__,baddr);
460 445
461 if(baddr > (hSession->rows * hSession->cols)) 446 if(baddr > (hSession->rows * hSession->cols))
462 - {  
463 - errno = EINVAL;  
464 - return -1;  
465 - } 447 + return - (errno = EOVERFLOW);
466 448
467 if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) 449 if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED))
468 lib3270_unselect(hSession); 450 lib3270_unselect(hSession);
@@ -470,46 +452,13 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int badd @@ -470,46 +452,13 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int badd
470 return cursor_move(hSession,baddr); 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 LIB3270_EXPORT int lib3270_set_cursor_position(H3270 *hSession, unsigned int row, unsigned int col) 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,10 +476,7 @@ int cursor_move(H3270 *hSession, int baddr)
527 { 476 {
528 int ret = hSession->cursor_addr; 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 hSession->cursor_addr = baddr; 481 hSession->cursor_addr = baddr;
536 hSession->cbk.update_cursor( 482 hSession->cbk.update_cursor(
@@ -545,15 +491,13 @@ int cursor_move(H3270 *hSession, int baddr) @@ -545,15 +491,13 @@ int cursor_move(H3270 *hSession, int baddr)
545 return ret; 491 return ret;
546 } 492 }
547 493
548 -/* Status line stuff. */  
549 - 494 +/**
  495 + * @brief Status line stuff.
  496 + */
550 void set_status(H3270 *session, LIB3270_FLAG id, Boolean on) 497 void set_status(H3270 *session, LIB3270_FLAG id, Boolean on)
551 { 498 {
552 - CHECK_SESSION_HANDLE(session);  
553 -  
554 session->oia.flag[id] = (on != 0); 499 session->oia.flag[id] = (on != 0);
555 session->cbk.update_oia(session,id,session->oia.flag[id]); 500 session->cbk.update_oia(session,id,session->oia.flag[id]);
556 -  
557 } 501 }
558 502
559 void status_ctlr_done(H3270 *session) 503 void status_ctlr_done(H3270 *session)
src/include/lib3270.h
@@ -685,7 +685,9 @@ @@ -685,7 +685,9 @@
685 * @param row Row inside the screen. 685 * @param row Row inside the screen.
686 * @param col Col inside the screen. 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 LIB3270_EXPORT int lib3270_translate_to_address(H3270 *hSession, unsigned int row, unsigned int col); 693 LIB3270_EXPORT int lib3270_translate_to_address(H3270 *hSession, unsigned int row, unsigned int col);
@@ -710,13 +712,19 @@ @@ -710,13 +712,19 @@
710 /** 712 /**
711 * @brief Set string at defined row/column. 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 * @param hSession Session handle. 717 * @param hSession Session handle.
714 * @param row Row for the first character. 718 * @param row Row for the first character.
715 * @param col Col for the first character. 719 * @param col Col for the first character.
716 * @param str String to set. 720 * @param str String to set.
717 * @param length Length of the string (-1 for auto-detect). 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 LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, unsigned int row, unsigned int col, const unsigned char *str, int length); 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,6 +739,10 @@
731 * 739 *
732 * @return Negative if error or number of processed characters. 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 LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, const unsigned char *str, int length); 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,7 +753,10 @@
741 * @param str Text to insert. 753 * @param str Text to insert.
742 * @param length Length of the string (-1 for auto-detect). 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 LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str, int length); 762 LIB3270_EXPORT int lib3270_input_string(H3270 *hSession, const unsigned char *str, int length);
@@ -754,7 +769,11 @@ @@ -754,7 +769,11 @@
754 * @param hSession TN3270 session. 769 * @param hSession TN3270 session.
755 * @param baddr New cursor position. 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 LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int baddr); 778 LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, unsigned int baddr);
760 779
@@ -765,8 +784,10 @@ @@ -765,8 +784,10 @@
765 * @param row New cursor row. 784 * @param row New cursor row.
766 * @param col New cursor col. 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 LIB3270_EXPORT int lib3270_set_cursor_position(H3270 *h, unsigned int row, unsigned int col); 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 LIB3270_INTERNAL void status_compose(int on, unsigned char c, enum keytype keytype); 30 LIB3270_INTERNAL void status_compose(int on, unsigned char c, enum keytype keytype);
19 LIB3270_INTERNAL void status_ctlr_done(H3270 *session); 31 LIB3270_INTERNAL void status_ctlr_done(H3270 *session);
20 32
src/selection/get.c
@@ -182,7 +182,6 @@ LIB3270_EXPORT lib3270_selection * lib3270_get_selection(H3270 *hSession, int cu @@ -182,7 +182,6 @@ LIB3270_EXPORT lib3270_selection * lib3270_get_selection(H3270 *hSession, int cu
182 182
183 if(baddr < 0) 183 if(baddr < 0)
184 { 184 {
185 - errno = EINVAL;  
186 lib3270_free(selection); 185 lib3270_free(selection);
187 return NULL; 186 return NULL;
188 } 187 }