Commit 8de44186c475cfc1aef31d4b68600048c68d4ce7

Authored by Perry Werneck
1 parent e815434f

Updating return codes.

src/lib3270/actions.c
@@ -68,6 +68,10 @@ @@ -68,6 +68,10 @@
68 /** 68 /**
69 * @brief Launch an action by name. 69 * @brief Launch an action by name.
70 * 70 *
  71 + * @param name Name of the action to launch.
  72 + *
  73 + * @return 0 if ok, error code if not (sets errno).
  74 + *
71 */ 75 */
72 LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name) 76 LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name)
73 { 77 {
@@ -87,7 +91,6 @@ LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name) @@ -87,7 +91,6 @@ LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name)
87 } 91 }
88 92
89 lib3270_trace_event(hSession,"Unknown action %s\n",name); 93 lib3270_trace_event(hSession,"Unknown action %s\n",name);
90 - errno = ENOENT;  
91 - return -1; 94 + return errno = ENOENT;
92 95
93 } 96 }
src/lib3270/bounds.c
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 * @param start return location for start of selection, as a character offset. 42 * @param start return location for start of selection, as a character offset.
43 * @param end return location for end of selection, as a character offset. 43 * @param end return location for end of selection, as a character offset.
44 * 44 *
45 - * @return -1 if invalid or not connected (sets errno). 45 + * @return Non zero if invalid or not connected (sets errno).
46 * 46 *
47 */ 47 */
48 LIB3270_EXPORT int lib3270_get_field_bounds(H3270 *hSession, int baddr, int *start, int *end) 48 LIB3270_EXPORT int lib3270_get_field_bounds(H3270 *hSession, int baddr, int *start, int *end)
@@ -52,7 +52,7 @@ LIB3270_EXPORT int lib3270_get_field_bounds(H3270 *hSession, int baddr, int *sta @@ -52,7 +52,7 @@ LIB3270_EXPORT int lib3270_get_field_bounds(H3270 *hSession, int baddr, int *sta
52 first = lib3270_field_addr(hSession,baddr); 52 first = lib3270_field_addr(hSession,baddr);
53 53
54 if(first < 0) 54 if(first < 0)
55 - return -1; 55 + return errno = (errno == 0 ? EINVAL : errno);
56 56
57 first++; 57 first++;
58 58
src/lib3270/charset.c
@@ -132,48 +132,6 @@ static const unsigned short asc2ebc0[256] = @@ -132,48 +132,6 @@ static const unsigned short asc2ebc0[256] =
132 /*f8*/ 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf 132 /*f8*/ 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf
133 }; 133 };
134 134
135 -/*  
136 -static const unsigned short ft2asc[256] =  
137 -{  
138 - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,  
139 - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,  
140 - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,  
141 - 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,  
142 - 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,  
143 - 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0xa2,0x5c,0x7c,0xac,0x5f,  
144 - 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,  
145 - 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0xa6,0x7d,0x7e,0x7f,  
146 - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,  
147 - 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0xf7,  
148 - 0xa0,0xe2,0xe4,0xe0,0xe1,0xe3,0xe5,0xe7,0xf1,0xe9,0xea,0xeb,0xe8,0xed,0xee,0xef,  
149 - 0xec,0xdf,0xc2,0xc4,0xc0,0xc1,0xc3,0xc5,0xc7,0xd1,0xf8,0xc9,0xca,0xcb,0xc8,0xcd,  
150 - 0xce,0xcf,0xcc,0xd8,0xab,0xbb,0xf0,0xfd,0xfe,0xb1,0xb0,0xaa,0xba,0xe6,0xb8,0xc6,  
151 - 0xa4,0xb5,0xa1,0xbf,0xd0,0xdd,0xde,0xae,0x5e,0xa3,0xa5,0xb7,0xa9,0xa7,0xb6,0xbc,  
152 - 0xbd,0xbe,0x5b,0x5d,0xaf,0xa8,0xb4,0xd7,0xad,0xf4,0xf6,0xf2,0xf3,0xf5,0xb9,0xfb,  
153 - 0xfc,0xf9,0xfa,0xff,0xb2,0xd4,0xd6,0xd2,0xd3,0xd5,0xb3,0xdb,0xdc,0xd9,0xda,0xff  
154 -};  
155 -  
156 -const unsigned short asc2ft[256] =  
157 -{  
158 - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,  
159 - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,  
160 - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,  
161 - 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,  
162 - 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,  
163 - 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0xe2,0x5c,0xe3,0xd8,0x5f,  
164 - 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,  
165 - 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x5d,0x7d,0x7e,0x7f,  
166 - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,  
167 - 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x00,  
168 - 0xa0,0xd2,0x5b,0xd9,0xd0,0xda,0x7c,0xdd,0xe5,0xdc,0xcb,0xc4,0x5e,0xe8,0xd7,0xe4,  
169 - 0xca,0xc9,0xf4,0xfa,0xe6,0xd1,0xde,0xdb,0xce,0xee,0xcc,0xc5,0xdf,0xe0,0xe1,0xd3,  
170 - 0xb4,0xb5,0xb2,0xb6,0xb3,0xb7,0xcf,0xb8,0xbe,0xbb,0xbc,0xbd,0xc2,0xbf,0xc0,0xc1,  
171 - 0xd4,0xb9,0xf7,0xf8,0xf5,0xf9,0xf6,0xe7,0xc3,0xfd,0xfe,0xfb,0xfc,0xd5,0xd6,0xb1,  
172 - 0xa3,0xa4,0xa1,0xa5,0xa2,0xa6,0xcd,0xa7,0xac,0xa9,0xaa,0xab,0xb0,0xad,0xae,0xaf,  
173 - 0xc6,0xa8,0xeb,0xec,0xe9,0xed,0xea,0x9f,0xba,0xf1,0xf2,0xef,0xf0,0xc7,0xc8,0xf3  
174 -};  
175 -*/  
176 -  
177 static const unsigned short asc2uc[UT_SIZE] = 135 static const unsigned short asc2uc[UT_SIZE] =
178 { 136 {
179 /*40*/ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 137 /*40*/ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
@@ -283,13 +241,6 @@ LIB3270_EXPORT void lib3270_reset_charset(H3270 *hSession, const char * host, co @@ -283,13 +241,6 @@ LIB3270_EXPORT void lib3270_reset_charset(H3270 *hSession, const char * host, co
283 241
284 copy_charset(asc2uc,hSession->charset.asc2uc); 242 copy_charset(asc2uc,hSession->charset.asc2uc);
285 243
286 -/*  
287 -#if defined(X3270_FT)  
288 - memcpy(hSession->charset.ft2asc, ft2asc, sizeof(hSession->charset.ft2asc));  
289 - memcpy(hSession->charset.asc2ft, asc2ft, sizeof(hSession->charset.asc2ft));  
290 -#endif  
291 -*/  
292 -  
293 } 244 }
294 245
295 LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) 246 LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name)
@@ -479,434 +430,8 @@ LIB3270_EXPORT void lib3270_remap_char(H3270 *hSession, unsigned short ebc, unsi @@ -479,434 +430,8 @@ LIB3270_EXPORT void lib3270_remap_char(H3270 *hSession, unsigned short ebc, unsi
479 430
480 if (iso <= 0xff) 431 if (iso <= 0xff)
481 { 432 {
482 -//#if defined(X3270_FT)  
483 -// unsigned char aa;  
484 -//#endif  
485 -  
486 if (scope == BOTH || scope == CS_ONLY) 433 if (scope == BOTH || scope == CS_ONLY)
487 { 434 {
488 - /*  
489 - if (iso <= 0xff)  
490 - {  
491 - cg = hSession->charset.asc2cg[iso];  
492 -  
493 - if (hSession->charset.cg2asc[cg] == iso || iso == 0)  
494 - {  
495 - // well-defined  
496 - hSession->charset.ebc2cg[ebc] = cg;  
497 - if (!one_way)  
498 - hSession->charset.cg2ebc[cg] = ebc;  
499 - }  
500 - else  
501 - {  
502 - // into a hole  
503 - hSession->charset.ebc2cg[ebc] = CG_boxsolid;  
504 - }  
505 - }  
506 - */  
507 -  
508 - if (ebc > 0x40)  
509 - {  
510 - hSession->charset.ebc2asc[ebc] = iso;  
511 - if (!one_way)  
512 - hSession->charset.asc2ebc[iso] = ebc;  
513 - }  
514 - }  
515 -  
516 -/*  
517 -#if defined(X3270_FT)  
518 - if (iso <= 0xff && ebc > 0x40)  
519 - {  
520 - // Change the file transfer translation table.  
521 - if (scope == BOTH)  
522 - {  
523 - //  
524 - // We have an alternate mapping of an EBCDIC  
525 - // code to an ASCII code. Modify the existing  
526 - // ASCII(ft)-to-ASCII(desired) maps.  
527 - //  
528 - // This is done by figuring out which ASCII  
529 - // code the host usually translates the given  
530 - // EBCDIC code to (asc2ft0[ebc2asc0[ebc]]).  
531 - // Now we want to translate that code to the  
532 - // given ISO code, and vice-versa.  
533 - //  
534 - aa = asc2ft[ebc2asc0[ebc]];  
535 - if (aa != ' ')  
536 - {  
537 - hSession->charset.ft2asc[aa] = iso;  
538 - hSession->charset.asc2ft[iso] = aa;  
539 - }  
540 - }  
541 - else if (scope == FT_ONLY)  
542 - {  
543 - //  
544 - // We have a map of how the host translates  
545 - // the given EBCDIC code to an ASCII code.  
546 - // Generate the translation between that code  
547 - // and the ISO code that we would normally  
548 - // use to display that EBCDIC code.  
549 - //  
550 - hSession->charset.ft2asc[iso] = hSession->charset.ebc2asc[ebc];  
551 - hSession->charset.asc2ft[hSession->charset.ebc2asc[ebc]] = iso;  
552 - }  
553 - }  
554 -#endif  
555 -*/  
556 - }  
557 -}  
558 -  
559 -  
560 -/*ISO-8859-1  
561 -  
562 -#include "resources.h"  
563 -// #include "appres.h"  
564 -#include "cg.h"  
565 -  
566 -#include "charsetc.h"  
567 -#include "kybdc.h"  
568 -#include "popupsc.h"  
569 -  
570 -#ifndef ANDROID  
571 - #include <stdlib.h>  
572 -#endif // !ANDROID  
573 -  
574 -#include "tablesc.h"  
575 -#include "utf8c.h"  
576 -#include "utilc.h"  
577 -#include "widec.h"  
578 -#include "X11keysym.h"  
579 -  
580 -#include <errno.h>  
581 -  
582 -#define EURO_SUFFIX "-euro"  
583 -#define ES_SIZE (sizeof(EURO_SUFFIX) - 1)  
584 -  
585 -// Globals.  
586 -const char *default_display_charset = "3270cg-1a,3270cg-1,iso8859-1";  
587 -  
588 -// Statics.  
589 -static enum cs_result resource_charset(H3270 *hSession, const char *csname, char *cs, char *ftcs);  
590 -  
591 -typedef enum { CS_ONLY, FT_ONLY, BOTH } remap_scope;  
592 -  
593 -static enum cs_result remap_chars(H3270 *hSession, const char *csname, char *spec, remap_scope scope, int *ne);  
594 -static void remap_one(H3270 *hSession, unsigned char ebc, KeySym iso, remap_scope scope,Boolean one_way);  
595 -  
596 -#if defined(DEBUG_CHARSET)  
597 -static enum cs_result check_charset(void);  
598 -static char *char_if_ascii7(unsigned long l);  
599 -#endif  
600 -  
601 -static void set_cgcsgids(H3270 *hSession, const char *spec);  
602 -static int set_cgcsgid(char *spec, unsigned long *idp);  
603 -  
604 -static KeySym StringToKeysym(char *s);  
605 -  
606 -struct charset_buffer  
607 -{  
608 - unsigned char ebc2cg[256];  
609 - unsigned char cg2ebc[256];  
610 - unsigned char ebc2asc[256];  
611 - unsigned char asc2ebc[256];  
612 -  
613 - #if defined(X3270_FT)  
614 - unsigned char ft2asc[256];  
615 - unsigned char asc2ft[256];  
616 - #endif  
617 -};  
618 -  
619 -  
620 -static void save_charset(H3270 *hSession, struct charset_buffer *save)  
621 -{  
622 - (void) memcpy((char *)save->ebc2cg, (char *) hSession->charset.ebc2cg, 256);  
623 - (void) memcpy((char *)save->cg2ebc, (char *) hSession->charset.cg2ebc, 256);  
624 - (void) memcpy((char *)save->ebc2asc, (char *) hSession->charset.ebc2asc, 256);  
625 - (void) memcpy((char *)save->asc2ebc, (char *) hSession->charset.asc2ebc, 256);  
626 -#if defined(X3270_FT)  
627 - (void) memcpy((char *)save->ft2asc, (char *) hSession->charset.ft2asc, 256);  
628 - (void) memcpy((char *)save->asc2ft, (char *) hSession->charset.asc2ft, 256);  
629 -#endif  
630 -}  
631 -  
632 -static void restore_charset(H3270 *hSession, struct charset_buffer *save)  
633 -{  
634 - (void) memcpy((char *)hSession->charset.ebc2cg, (char *)save->ebc2cg, 256);  
635 - (void) memcpy((char *)hSession->charset.cg2ebc, (char *)save->cg2ebc, 256);  
636 - (void) memcpy((char *)hSession->charset.ebc2asc, (char *)save->ebc2asc, 256);  
637 - (void) memcpy((char *)hSession->charset.asc2ebc, (char *)save->asc2ebc, 256);  
638 -#if defined(X3270_FT)  
639 - (void) memcpy((char *)hSession->charset.ft2asc, (char *)save->ft2asc, 256);  
640 - (void) memcpy((char *)hSession->charset.asc2ft, (char *)save->asc2ft, 256);  
641 -#endif  
642 -}  
643 -  
644 -//  
645 -// Change character sets.  
646 -//  
647 -enum cs_result charset_init(H3270 *hSession, const char *csname)  
648 -{  
649 - enum cs_result rc;  
650 - char *ccs, *cftcs;  
651 - const char *ak;  
652 - struct charset_buffer save;  
653 -  
654 - // Do nothing, successfully.  
655 - if (csname == CN || !strcasecmp(csname, "us"))  
656 - {  
657 - charset_defaults(hSession);  
658 - set_cgcsgids(hSession,CN);  
659 - set_display_charset(hSession, "ISO-8859-1");  
660 - return CS_OKAY;  
661 - }  
662 -  
663 - // Figure out if it's already in a resource or in a file.  
664 -#ifdef ANDROID  
665 - ccs = strdup("0xad: [ \n 0xba: Yacute \n0xbd: ] \n 0xbb: diaeresis \n");  
666 -#else  
667 - ccs = lib3270_get_resource_string(hSession,"charset", csname, NULL);  
668 -#endif  
669 - if (!ccs)  
670 - return CS_NOTFOUND;  
671 -  
672 - // Grab the File Transfer character set.  
673 - cftcs = lib3270_get_resource_string(hSession,"ftCharset",csname,NULL);  
674 -  
675 - // Save the current definitions, and start over with the defaults.  
676 - save_charset(hSession,&save);  
677 - charset_defaults(hSession);  
678 -  
679 - // Check for auto-keymap.  
680 - ak = lib3270_get_resource_string(hSession,"autoKeymap", csname, NULL);  
681 - if (ak != NULL)  
682 - hSession->auto_keymap = strcasecmp(ak, "true") ? 0 : 1;  
683 - else  
684 - hSession->auto_keymap = 0;  
685 -  
686 - // Interpret them.  
687 - rc = resource_charset(hSession,csname, ccs, cftcs);  
688 -  
689 - // Free them.  
690 - lib3270_free(ccs);  
691 - lib3270_free(cftcs);  
692 -  
693 -#if defined(DEBUG_CHARSET)  
694 - if (rc == CS_OKAY)  
695 - rc = check_charset();  
696 -#endif  
697 -  
698 - if (rc != CS_OKAY)  
699 - restore_charset(hSession,&save);  
700 -  
701 - return rc;  
702 -}  
703 -  
704 -//  
705 -// Set a CGCSGID. Return 0 for success, -1 for failure.  
706 -//  
707 -static int set_cgcsgid(char *spec, unsigned long *r)  
708 -{  
709 - unsigned long cp;  
710 - char *ptr;  
711 -  
712 - if (spec != CN &&  
713 - (cp = strtoul(spec, &ptr, 0)) &&  
714 - ptr != spec &&  
715 - *ptr == '\0') {  
716 - if (!(cp & ~0xffffL))  
717 - *r = LIB3270_DEFAULT_CGEN | cp;  
718 - else  
719 - *r = cp;  
720 - return 0;  
721 - } else  
722 - return -1;  
723 -}  
724 -  
725 -// Set the CGCSGIDs.  
726 -static void set_cgcsgids(H3270 *hSession, const char *spec)  
727 -{  
728 - int n_ids = 0;  
729 - char *spec_copy;  
730 - char *buf;  
731 - char *token;  
732 -  
733 - if (spec != CN) {  
734 - buf = spec_copy = NewString(spec);  
735 - while (n_ids >= 0 && (token = strtok(buf, "+")) != CN) {  
736 - unsigned long *idp = NULL;  
737 -  
738 - buf = CN;  
739 - switch (n_ids) {  
740 - case 0:  
741 - idp = &hSession->cgcsgid;  
742 - break;  
743 -#if defined(X3270_DBCS)  
744 - case 1:  
745 - idp = &hSession->cgcsgid_dbcs;  
746 - break;  
747 -#endif  
748 - default:  
749 - popup_an_error(hSession,_( "Extra CGCSGID(s), ignoring" ));  
750 - break;  
751 - }  
752 - if (idp == NULL)  
753 - break;  
754 - if (set_cgcsgid(token, idp) < 0) {  
755 - popup_an_error(hSession,_( "Invalid CGCSGID '%s', ignoring" ),token);  
756 - n_ids = -1;  
757 - break;  
758 - }  
759 - n_ids++;  
760 - }  
761 - lib3270_free(spec_copy);  
762 - if (n_ids > 0)  
763 - return;  
764 - }  
765 -  
766 - hSession->cgcsgid = LIB3270_DEFAULT_CGEN | LIB3270_DEFAULT_CSET;  
767 -#if defined(X3270_DBCS)  
768 - hSession->cgcsgid_dbcs = 0L;  
769 -#endif  
770 -}  
771 -  
772 -// Define a charset from resources.  
773 -static enum cs_result resource_charset(H3270 *hSession, const char *csname, char *cs, char *ftcs)  
774 -{  
775 - enum cs_result rc;  
776 - int ne = 0;  
777 - char * rcs = CN;  
778 - int n_rcs = 0;  
779 - char * dcs;  
780 -  
781 - // Interpret the spec.  
782 - rc = remap_chars(hSession, csname, cs, (ftcs == NULL)? BOTH: CS_ONLY, &ne);  
783 - if (rc != CS_OKAY)  
784 - return rc;  
785 - if (ftcs != NULL) {  
786 - rc = remap_chars(hSession, csname, ftcs, FT_ONLY, &ne);  
787 - if (rc != CS_OKAY)  
788 - return rc;  
789 - }  
790 -  
791 - rcs = lib3270_get_resource_string(hSession,"displayCharset", csname, NULL);  
792 -  
793 - // Isolate the pieces.  
794 - if (rcs != CN)  
795 - {  
796 - char *buf, *token;  
797 -  
798 - buf = rcs;  
799 - while ((token = strtok(buf, "+")) != CN)  
800 - {  
801 - buf = CN;  
802 - switch (n_rcs)  
803 - {  
804 - case 0:  
805 -#if defined(X3270_DBCS)  
806 - case 1:  
807 -#endif  
808 - break;  
809 - default:  
810 - popup_an_error(NULL,"Extra value(s) in displayCharset.%s, ignoring", csname);  
811 - break;  
812 - }  
813 - n_rcs++;  
814 - }  
815 - }  
816 -  
817 - lib3270_free(rcs);  
818 -  
819 - // Set up the cgcsgid.  
820 -// set_cgcsgids(get_fresource("%s.%s", "codepage", csname));  
821 - {  
822 - char *ptr = lib3270_get_resource_string(hSession,"codepage", csname, NULL);  
823 - set_cgcsgids(hSession,ptr);  
824 - lib3270_free(ptr);  
825 - }  
826 -  
827 -// dcs = get_fresource("%s.%s", "displayCharset", csname);  
828 - dcs = lib3270_get_resource_string(hSession,"displayCharset", csname, NULL);  
829 -  
830 - if (dcs != NULL)  
831 - set_display_charset(hSession,dcs);  
832 - else  
833 - set_display_charset(hSession,"ISO-8859-1");  
834 -  
835 - lib3270_free(dcs);  
836 -  
837 - // Set up the character set name.  
838 -// set_charset_name(csname);  
839 -  
840 - return CS_OKAY;  
841 -}  
842 -  
843 -//  
844 -// Map a keysym name or literal string into a character.  
845 -//Returns NoSymbol if there is a problem.  
846 -//  
847 -static KeySym  
848 -parse_keysym(char *s, Boolean extended)  
849 -{  
850 - KeySym k;  
851 -  
852 - k = StringToKeysym(s);  
853 - if (k == NoSymbol) {  
854 - if (strlen(s) == 1)  
855 - k = *s & 0xff;  
856 - else if (s[0] == '0' && s[1] == 'x') {  
857 - unsigned long l;  
858 - char *ptr;  
859 -  
860 - l = strtoul(s, &ptr, 16);  
861 - if (*ptr != '\0' || (l & ~0xffff))  
862 - return NoSymbol;  
863 - return (KeySym)l;  
864 - } else  
865 - return NoSymbol;  
866 - }  
867 - if (k < ' ' || (!extended && k > 0xff))  
868 - return NoSymbol;  
869 - else  
870 - return k;  
871 -}  
872 -  
873 -// Process a single character definition.  
874 -static void remap_one(H3270 *hSession, unsigned char ebc, KeySym iso, remap_scope scope, Boolean one_way)  
875 -{  
876 - unsigned char cg;  
877 -  
878 - // Ignore mappings of EBCDIC control codes and the space character.  
879 - if (ebc <= 0x40)  
880 - return;  
881 -  
882 - // If they want to map to a NULL or a blank, make it a one-way blank.  
883 - if (iso == 0x0)  
884 - iso = 0x20;  
885 - if (iso == 0x20)  
886 - one_way = True;  
887 -  
888 - if (!hSession->auto_keymap || iso <= 0xff) {  
889 -#if defined(X3270_FT)  
890 - unsigned char aa;  
891 -#endif  
892 -  
893 - if (scope == BOTH || scope == CS_ONLY) {  
894 - if (iso <= 0xff) {  
895 - cg = hSession->charset.asc2cg[iso];  
896 -  
897 - if (hSession->charset.cg2asc[cg] == iso || iso == 0)  
898 - {  
899 - // well-defined  
900 - hSession->charset.ebc2cg[ebc] = cg;  
901 - if (!one_way)  
902 - hSession->charset.cg2ebc[cg] = ebc;  
903 - }  
904 - else  
905 - {  
906 - // into a hole  
907 - hSession->charset.ebc2cg[ebc] = CG_boxsolid;  
908 - }  
909 - }  
910 if (ebc > 0x40) 435 if (ebc > 0x40)
911 { 436 {
912 hSession->charset.ebc2asc[ebc] = iso; 437 hSession->charset.ebc2asc[ebc] = iso;
@@ -914,441 +439,9 @@ static void remap_one(H3270 *hSession, unsigned char ebc, KeySym iso, remap_scop @@ -914,441 +439,9 @@ static void remap_one(H3270 *hSession, unsigned char ebc, KeySym iso, remap_scop
914 hSession->charset.asc2ebc[iso] = ebc; 439 hSession->charset.asc2ebc[iso] = ebc;
915 } 440 }
916 } 441 }
917 -#if defined(X3270_FT)  
918 - if (iso <= 0xff && ebc > 0x40) {  
919 - // Change the file transfer translation table.  
920 - if (scope == BOTH) {  
921 - //  
922 - // We have an alternate mapping of an EBCDIC  
923 - // code to an ASCII code. Modify the existing  
924 - // ASCII(ft)-to-ASCII(desired) maps.  
925 - //  
926 - // This is done by figuring out which ASCII  
927 - // code the host usually translates the given  
928 - // EBCDIC code to (asc2ft0[ebc2asc0[ebc]]).  
929 - // Now we want to translate that code to the  
930 - // given ISO code, and vice-versa.  
931 - //  
932 - aa = asc2ft0[ebc2asc0[ebc]];  
933 - if (aa != ' ') {  
934 - hSession->charset.ft2asc[aa] = iso;  
935 - hSession->charset.asc2ft[iso] = aa;  
936 - }  
937 - } else if (scope == FT_ONLY) {  
938 - //  
939 - // We have a map of how the host translates  
940 - // the given EBCDIC code to an ASCII code.  
941 - // Generate the translation between that code  
942 - // and the ISO code that we would normally  
943 - // use to display that EBCDIC code.  
944 - //  
945 - hSession->charset.ft2asc[iso] = hSession->charset.ebc2asc[ebc];  
946 - hSession->charset.asc2ft[hSession->charset.ebc2asc[ebc]] = iso;  
947 - }  
948 - }  
949 -#endif  
950 - } else {  
951 - // Auto-keymap.  
952 - add_xk(iso, (KeySym)hSession->charset.ebc2asc[ebc]);  
953 - }  
954 -}  
955 -  
956 -//  
957 -// Parse an EBCDIC character set map, a series of pairs of numeric EBCDIC codes and keysyms.  
958 -//  
959 -// If the keysym is in the range 1..255, it is a remapping of the EBCDIC code  
960 -// for a standard Latin-1 graphic, and the CG-to-EBCDIC map will be modified  
961 -// to match.  
962 -//  
963 -// Otherwise (keysym > 255), it is a definition for the EBCDIC code to use for  
964 -// a multibyte keysym. This is intended for 8-bit fonts that with special  
965 -// characters that replace certain standard Latin-1 graphics. The keysym  
966 -// will be entered into the extended keysym translation table.  
967 -//  
968 -static enum cs_result remap_chars(H3270 *hSession, const char *csname, char *spec, remap_scope scope, int *ne)  
969 -{  
970 - char *s;  
971 - char *ebcs, *isos;  
972 - unsigned char ebc;  
973 - KeySym iso;  
974 - int ns;  
975 - enum cs_result rc = CS_OKAY;  
976 - Boolean is_table = False;  
977 - Boolean one_way = False;  
978 -  
979 - // Pick apart a copy of the spec.  
980 - s = spec = NewString(spec);  
981 - while (isspace(*s)) {  
982 - s++;  
983 - }  
984 - if (!strncmp(s, "#table", 6)) {  
985 - is_table = True;  
986 - s += 6;  
987 - }  
988 -  
989 - if (is_table) {  
990 - int ebc = 0;  
991 - char *tok;  
992 - char *ptr;  
993 -  
994 - while ((tok = strtok(s, " \t\n")) != CN) {  
995 - if (ebc >= 256) {  
996 - popup_an_error(hSession,_( "Charset has more than 256 entries" ));  
997 - rc = CS_BAD;  
998 - break;  
999 - }  
1000 - if (tok[0] == '*') {  
1001 - one_way = True;  
1002 - tok++;  
1003 - } else  
1004 - one_way = False;  
1005 - iso = strtoul(tok, &ptr, 0);  
1006 - if (ptr == tok || *ptr != '\0' || iso > 256L) {  
1007 - if (strlen(tok) == 1)  
1008 - iso = tok[0] & 0xff;  
1009 - else {  
1010 - popup_an_error(hSession,_( "Invalid charset entry '%s' (#%d)" ),tok, ebc);  
1011 - rc = CS_BAD;  
1012 - break;  
1013 - }  
1014 - }  
1015 - remap_one(hSession, ebc, iso, scope, one_way);  
1016 -  
1017 - ebc++;  
1018 - s = CN;  
1019 - }  
1020 - if (ebc != 256) {  
1021 - popup_an_error(NULL,_( "Charset has %d entries, need 256" ), ebc);  
1022 - rc = CS_BAD;  
1023 - } else {  
1024 - //  
1025 - // The entire EBCDIC-to-ASCII mapping has been defined.  
1026 - // Make sure that any printable ASCII character that  
1027 - // doesn't now map back onto itself is mapped onto an  
1028 - // EBCDIC NUL.  
1029 - //  
1030 - int i;  
1031 -  
1032 - for (i = 0; i < 256; i++) {  
1033 - if ((i & 0x7f) > 0x20 && i != 0x7f &&  
1034 - hSession->charset.asc2ebc[i] != 0 &&  
1035 - hSession->charset.ebc2asc[hSession->charset.asc2ebc[i]] != i) {  
1036 - hSession->charset.asc2ebc[i] = 0;  
1037 - }  
1038 - }  
1039 - }  
1040 - } else {  
1041 - while ((ns = split_dresource(&s, &ebcs, &isos))) {  
1042 - char *ptr;  
1043 -  
1044 - (*ne)++;  
1045 - if (ebcs[0] == '*') {  
1046 - one_way = True;  
1047 - ebcs++;  
1048 - } else  
1049 - one_way = False;  
1050 - if (ns < 0 ||  
1051 - ((ebc = strtoul(ebcs, &ptr, 0)),  
1052 - ptr == ebcs || *ptr != '\0') ||  
1053 - (iso = parse_keysym(isos, True)) == NoSymbol) {  
1054 - popup_an_error(hSession,_( "Cannot parse %s \"%s\", entry %d" ), "charset", csname, *ne);  
1055 - rc = CS_BAD;  
1056 - break;  
1057 - }  
1058 - remap_one(hSession, ebc, iso, scope, one_way);  
1059 - }  
1060 - }  
1061 - lib3270_free(spec);  
1062 - return rc;  
1063 -}  
1064 -  
1065 -#if defined(DEBUG_CHARSET)  
1066 -static char *  
1067 -char_if_ascii7(unsigned long l)  
1068 -{  
1069 - static char buf[6];  
1070 442
1071 - if (((l & 0x7f) > ' ' && (l & 0x7f) < 0x7f) || l == 0xff) {  
1072 - (void) sprintf(buf, " ('%c')", (char)l);  
1073 - return buf;  
1074 - } else  
1075 - return "";  
1076 -}  
1077 -#endif  
1078 -  
1079 -  
1080 -#if defined(DEBUG_CHARSET)  
1081 -//  
1082 -// Verify that a character set is not ambiguous.  
1083 -// (All this checks is that multiple EBCDIC codes map onto the same ISO code.  
1084 -// Hmm. God, I find the CG stuff confusing.)  
1085 -//  
1086 -static enum cs_result  
1087 -check_charset(void)  
1088 -{  
1089 - unsigned long iso;  
1090 - unsigned char ebc;  
1091 - enum cs_result rc = CS_OKAY;  
1092 -  
1093 - for (iso = 1; iso <= 255; iso++) {  
1094 - unsigned char multi[256];  
1095 - int n_multi = 0;  
1096 -  
1097 - if (iso == ' ')  
1098 - continue;  
1099 -  
1100 - for (ebc = 0x41; ebc < 0xff; ebc++) {  
1101 - if (cg2asc[ebc2cg[ebc]] == iso) {  
1102 - multi[n_multi] = ebc;  
1103 - n_multi++;  
1104 - }  
1105 - }  
1106 - if (n_multi > 1) {  
1107 - xs_warning("Display character 0x%02x%s has multiple "  
1108 - "EBCDIC definitions: X'%02X', X'%02X'%s",  
1109 - iso, char_if_ascii7(iso),  
1110 - multi[0], multi[1], (n_multi > 2)? ", ...": "");  
1111 - rc = CS_BAD;  
1112 - }  
1113 } 443 }
1114 - return rc;  
1115 } 444 }
1116 -#endif  
1117 445
1118 -void set_display_charset(H3270 *session, const char *dcs)  
1119 -{  
1120 - session->charset.display = strdup(dcs);  
1121 -}  
1122 -  
1123 -static KeySym StringToKeysym(char *s)  
1124 -{  
1125 - static struct  
1126 - {  
1127 - const char *name;  
1128 - KeySym keysym;  
1129 - } latin1[] =  
1130 - {  
1131 - { "space", XK_space },  
1132 - { "exclam", XK_exclam },  
1133 - { "quotedbl", XK_quotedbl },  
1134 - { "numbersign", XK_numbersign },  
1135 - { "dollar", XK_dollar },  
1136 - { "percent", XK_percent },  
1137 - { "ampersand", XK_ampersand },  
1138 - { "apostrophe", XK_apostrophe },  
1139 - { "quoteright", XK_quoteright },  
1140 - { "parenleft", XK_parenleft },  
1141 - { "parenright", XK_parenright },  
1142 - { "asterisk", XK_asterisk },  
1143 - { "plus", XK_plus },  
1144 - { "comma", XK_comma },  
1145 - { "minus", XK_minus },  
1146 - { "period", XK_period },  
1147 - { "slash", XK_slash },  
1148 - { "0", XK_0 },  
1149 - { "1", XK_1 },  
1150 - { "2", XK_2 },  
1151 - { "3", XK_3 },  
1152 - { "4", XK_4 },  
1153 - { "5", XK_5 },  
1154 - { "6", XK_6 },  
1155 - { "7", XK_7 },  
1156 - { "8", XK_8 },  
1157 - { "9", XK_9 },  
1158 - { "colon", XK_colon },  
1159 - { "semicolon", XK_semicolon },  
1160 - { "less", XK_less },  
1161 - { "equal", XK_equal },  
1162 - { "greater", XK_greater },  
1163 - { "question", XK_question },  
1164 - { "at", XK_at },  
1165 - { "A", XK_A },  
1166 - { "B", XK_B },  
1167 - { "C", XK_C },  
1168 - { "D", XK_D },  
1169 - { "E", XK_E },  
1170 - { "F", XK_F },  
1171 - { "G", XK_G },  
1172 - { "H", XK_H },  
1173 - { "I", XK_I },  
1174 - { "J", XK_J },  
1175 - { "K", XK_K },  
1176 - { "L", XK_L },  
1177 - { "M", XK_M },  
1178 - { "N", XK_N },  
1179 - { "O", XK_O },  
1180 - { "P", XK_P },  
1181 - { "Q", XK_Q },  
1182 - { "R", XK_R },  
1183 - { "S", XK_S },  
1184 - { "T", XK_T },  
1185 - { "U", XK_U },  
1186 - { "V", XK_V },  
1187 - { "W", XK_W },  
1188 - { "X", XK_X },  
1189 - { "Y", XK_Y },  
1190 - { "Z", XK_Z },  
1191 - { "bracketleft", XK_bracketleft },  
1192 - { "backslash", XK_backslash },  
1193 - { "bracketright", XK_bracketright },  
1194 - { "asciicircum", XK_asciicircum },  
1195 - { "underscore", XK_underscore },  
1196 - { "grave", XK_grave },  
1197 - { "quoteleft", XK_quoteleft },  
1198 - { "a", XK_a },  
1199 - { "b", XK_b },  
1200 - { "c", XK_c },  
1201 - { "d", XK_d },  
1202 - { "e", XK_e },  
1203 - { "f", XK_f },  
1204 - { "g", XK_g },  
1205 - { "h", XK_h },  
1206 - { "i", XK_i },  
1207 - { "j", XK_j },  
1208 - { "k", XK_k },  
1209 - { "l", XK_l },  
1210 - { "m", XK_m },  
1211 - { "n", XK_n },  
1212 - { "o", XK_o },  
1213 - { "p", XK_p },  
1214 - { "q", XK_q },  
1215 - { "r", XK_r },  
1216 - { "s", XK_s },  
1217 - { "t", XK_t },  
1218 - { "u", XK_u },  
1219 - { "v", XK_v },  
1220 - { "w", XK_w },  
1221 - { "x", XK_x },  
1222 - { "y", XK_y },  
1223 - { "z", XK_z },  
1224 - { "braceleft", XK_braceleft },  
1225 - { "bar", XK_bar },  
1226 - { "braceright", XK_braceright },  
1227 - { "asciitilde", XK_asciitilde },  
1228 - { "nobreakspace", XK_nobreakspace },  
1229 - { "exclamdown", XK_exclamdown },  
1230 - { "cent", XK_cent },  
1231 - { "sterling", XK_sterling },  
1232 - { "currency", XK_currency },  
1233 - { "yen", XK_yen },  
1234 - { "brokenbar", XK_brokenbar },  
1235 - { "section", XK_section },  
1236 - { "diaeresis", XK_diaeresis },  
1237 - { "copyright", XK_copyright },  
1238 - { "ordfeminine", XK_ordfeminine },  
1239 - { "guillemotleft", XK_guillemotleft },  
1240 - { "notsign", XK_notsign },  
1241 - { "hyphen", XK_hyphen },  
1242 - { "registered", XK_registered },  
1243 - { "macron", XK_macron },  
1244 - { "degree", XK_degree },  
1245 - { "plusminus", XK_plusminus },  
1246 - { "twosuperior", XK_twosuperior },  
1247 - { "threesuperior", XK_threesuperior },  
1248 - { "acute", XK_acute },  
1249 - { "mu", XK_mu },  
1250 - { "paragraph", XK_paragraph },  
1251 - { "periodcentered", XK_periodcentered },  
1252 - { "cedilla", XK_cedilla },  
1253 - { "onesuperior", XK_onesuperior },  
1254 - { "masculine", XK_masculine },  
1255 - { "guillemotright", XK_guillemotright },  
1256 - { "onequarter", XK_onequarter },  
1257 - { "onehalf", XK_onehalf },  
1258 - { "threequarters", XK_threequarters },  
1259 - { "questiondown", XK_questiondown },  
1260 - { "Agrave", XK_Agrave },  
1261 - { "Aacute", XK_Aacute },  
1262 - { "Acircumflex", XK_Acircumflex },  
1263 - { "Atilde", XK_Atilde },  
1264 - { "Adiaeresis", XK_Adiaeresis },  
1265 - { "Aring", XK_Aring },  
1266 - { "AE", XK_AE },  
1267 - { "Ccedilla", XK_Ccedilla },  
1268 - { "Egrave", XK_Egrave },  
1269 - { "Eacute", XK_Eacute },  
1270 - { "Ecircumflex", XK_Ecircumflex },  
1271 - { "Ediaeresis", XK_Ediaeresis },  
1272 - { "Igrave", XK_Igrave },  
1273 - { "Iacute", XK_Iacute },  
1274 - { "Icircumflex", XK_Icircumflex },  
1275 - { "Idiaeresis", XK_Idiaeresis },  
1276 - { "ETH", XK_ETH },  
1277 - { "Eth", XK_Eth },  
1278 - { "Ntilde", XK_Ntilde },  
1279 - { "Ograve", XK_Ograve },  
1280 - { "Oacute", XK_Oacute },  
1281 - { "Ocircumflex", XK_Ocircumflex },  
1282 - { "Otilde", XK_Otilde },  
1283 - { "Odiaeresis", XK_Odiaeresis },  
1284 - { "multiply", XK_multiply },  
1285 - { "Ooblique", XK_Ooblique },  
1286 - { "Ugrave", XK_Ugrave },  
1287 - { "Uacute", XK_Uacute },  
1288 - { "Ucircumflex", XK_Ucircumflex },  
1289 - { "Udiaeresis", XK_Udiaeresis },  
1290 - { "Yacute", XK_Yacute },  
1291 - { "THORN", XK_THORN },  
1292 - { "Thorn", XK_Thorn },  
1293 - { "ssharp", XK_ssharp },  
1294 - { "agrave", XK_agrave },  
1295 - { "aacute", XK_aacute },  
1296 - { "acircumflex", XK_acircumflex },  
1297 - { "atilde", XK_atilde },  
1298 - { "adiaeresis", XK_adiaeresis },  
1299 - { "aring", XK_aring },  
1300 - { "ae", XK_ae },  
1301 - { "ccedilla", XK_ccedilla },  
1302 - { "egrave", XK_egrave },  
1303 - { "eacute", XK_eacute },  
1304 - { "ecircumflex", XK_ecircumflex },  
1305 - { "ediaeresis", XK_ediaeresis },  
1306 - { "igrave", XK_igrave },  
1307 - { "iacute", XK_iacute },  
1308 - { "icircumflex", XK_icircumflex },  
1309 - { "idiaeresis", XK_idiaeresis },  
1310 - { "eth", XK_eth },  
1311 - { "ntilde", XK_ntilde },  
1312 - { "ograve", XK_ograve },  
1313 - { "oacute", XK_oacute },  
1314 - { "ocircumflex", XK_ocircumflex },  
1315 - { "otilde", XK_otilde },  
1316 - { "odiaeresis", XK_odiaeresis },  
1317 - { "division", XK_division },  
1318 - { "oslash", XK_oslash },  
1319 - { "ugrave", XK_ugrave },  
1320 - { "uacute", XK_uacute },  
1321 - { "ucircumflex", XK_ucircumflex },  
1322 - { "udiaeresis", XK_udiaeresis },  
1323 - { "yacute", XK_yacute },  
1324 - { "thorn", XK_thorn },  
1325 - { "ydiaeresis", XK_ydiaeresis },  
1326 -  
1327 - // The following are, umm, hacks to allow symbolic names for  
1328 - // control codes.  
1329 - #if !defined(_WIN32)  
1330 - { "BackSpace", 0x08 },  
1331 - { "Tab", 0x09 },  
1332 - { "Linefeed", 0x0a },  
1333 - { "Return", 0x0d },  
1334 - { "Escape", 0x1b },  
1335 - { "Delete", 0x7f },  
1336 - #endif  
1337 -  
1338 - { (char *)NULL, NoSymbol }  
1339 - };  
1340 -  
1341 - int i;  
1342 -  
1343 - if (strlen(s) == 1 && (*(unsigned char *)s & 0x7f) > ' ')  
1344 - return (KeySym)*(unsigned char *)s;  
1345 - for (i = 0; latin1[i].name != (char *)NULL; i++) {  
1346 - if (!strcmp(s, latin1[i].name))  
1347 - return latin1[i].keysym;  
1348 - }  
1349 - return NoSymbol;  
1350 -}  
1351 -  
1352 -*/  
1353 446
1354 447
src/lib3270/ctlr.c
@@ -433,7 +433,7 @@ LIB3270_EXPORT int lib3270_get_field_start(H3270 *hSession, int baddr) @@ -433,7 +433,7 @@ LIB3270_EXPORT int lib3270_get_field_start(H3270 *hSession, int baddr)
433 CHECK_SESSION_HANDLE(hSession); 433 CHECK_SESSION_HANDLE(hSession);
434 434
435 if (!hSession->formatted) 435 if (!hSession->formatted)
436 - return -1; 436 + return errno = ENOTCONN;
437 437
438 if(baddr < 0) 438 if(baddr < 0)
439 baddr = hSession->cursor_addr; 439 baddr = hSession->cursor_addr;
@@ -459,7 +459,7 @@ LIB3270_EXPORT int lib3270_get_field_len(H3270 *hSession, int baddr) @@ -459,7 +459,7 @@ LIB3270_EXPORT int lib3270_get_field_len(H3270 *hSession, int baddr)
459 CHECK_SESSION_HANDLE(hSession); 459 CHECK_SESSION_HANDLE(hSession);
460 460
461 if (!hSession->formatted) 461 if (!hSession->formatted)
462 - return -1; 462 + return errno = ENOTCONN;
463 463
464 if(baddr < 0) 464 if(baddr < 0)
465 baddr = hSession->cursor_addr; 465 baddr = hSession->cursor_addr;
@@ -498,10 +498,7 @@ LIB3270_EXPORT int lib3270_field_addr(H3270 *hSession, int baddr) @@ -498,10 +498,7 @@ LIB3270_EXPORT int lib3270_field_addr(H3270 *hSession, int baddr)
498 FAIL_IF_NOT_ONLINE(hSession); 498 FAIL_IF_NOT_ONLINE(hSession);
499 499
500 if(!hSession->formatted) 500 if(!hSession->formatted)
501 - {  
502 - errno = ENOTCONN;  
503 - return -1;  
504 - } 501 + return errno = ENOTCONN;
505 502
506 sbaddr = baddr; 503 sbaddr = baddr;
507 do 504 do
@@ -522,10 +519,7 @@ LIB3270_EXPORT int lib3270_field_attribute(H3270 *hSession, int baddr) @@ -522,10 +519,7 @@ LIB3270_EXPORT int lib3270_field_attribute(H3270 *hSession, int baddr)
522 FAIL_IF_NOT_ONLINE(hSession); 519 FAIL_IF_NOT_ONLINE(hSession);
523 520
524 if(!hSession->formatted) 521 if(!hSession->formatted)
525 - {  
526 - errno = ENOTCONN;  
527 - return -1;  
528 - } 522 + return errno = ENOTCONN;
529 523
530 sbaddr = baddr; 524 sbaddr = baddr;
531 do 525 do
@@ -571,8 +565,7 @@ int lib3270_field_length(H3270 *hSession, int baddr) @@ -571,8 +565,7 @@ int lib3270_field_length(H3270 *hSession, int baddr)
571 width++; 565 width++;
572 } while (addr != saddr); 566 } while (addr != saddr);
573 567
574 - errno = EINVAL;  
575 - return -1; 568 + return errno = EINVAL;
576 569
577 } 570 }
578 571
@@ -601,10 +594,7 @@ LIB3270_EXPORT int lib3270_get_next_unprotected(H3270 *hSession, int baddr0) @@ -601,10 +594,7 @@ LIB3270_EXPORT int lib3270_get_next_unprotected(H3270 *hSession, int baddr0)
601 FAIL_IF_NOT_ONLINE(hSession); 594 FAIL_IF_NOT_ONLINE(hSession);
602 595
603 if(!hSession->formatted) 596 if(!hSession->formatted)
604 - {  
605 - errno = ENOTCONN;  
606 - return -1;  
607 - } 597 + return errno = ENOTCONN;
608 598
609 if(baddr0 < 0) 599 if(baddr0 < 0)
610 baddr0 = hSession->cursor_addr; 600 baddr0 = hSession->cursor_addr;
src/lib3270/kybd.c
@@ -1751,8 +1751,7 @@ LIB3270_EXPORT int lib3270_enter(H3270 *hSession) @@ -1751,8 +1751,7 @@ LIB3270_EXPORT int lib3270_enter(H3270 *hSession)
1751 1751
1752 if (hSession->kybdlock & KL_OIA_MINUS) 1752 if (hSession->kybdlock & KL_OIA_MINUS)
1753 { 1753 {
1754 - errno = EPERM;  
1755 - return -1; 1754 + return errno = EPERM;
1756 } 1755 }
1757 else if (hSession->kybdlock) 1756 else if (hSession->kybdlock)
1758 { 1757 {
@@ -1772,7 +1771,6 @@ LIB3270_EXPORT int lib3270_sysreq(H3270 *hSession) @@ -1772,7 +1771,6 @@ LIB3270_EXPORT int lib3270_sysreq(H3270 *hSession)
1772 1771
1773 if (IN_ANSI) 1772 if (IN_ANSI)
1774 { 1773 {
1775 - errno = ENOTCONN;  
1776 return 0; 1774 return 0;
1777 } 1775 }
1778 1776
@@ -1848,7 +1846,7 @@ LIB3270_EXPORT int lib3270_eraseeol(H3270 *hSession) @@ -1848,7 +1846,7 @@ LIB3270_EXPORT int lib3270_eraseeol(H3270 *hSession)
1848 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) 1846 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa)
1849 { 1847 {
1850 operator_error(hSession,KL_OERR_PROTECTED); 1848 operator_error(hSession,KL_OERR_PROTECTED);
1851 - return -1; 1849 + return errno = EPERM;
1852 } 1850 }
1853 1851
1854 if (hSession->formatted) 1852 if (hSession->formatted)
@@ -1914,7 +1912,7 @@ LIB3270_EXPORT int lib3270_eraseeof(H3270 *hSession) @@ -1914,7 +1912,7 @@ LIB3270_EXPORT int lib3270_eraseeof(H3270 *hSession)
1914 fa = get_field_attribute(hSession,baddr); 1912 fa = get_field_attribute(hSession,baddr);
1915 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) { 1913 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
1916 operator_error(hSession,KL_OERR_PROTECTED); 1914 operator_error(hSession,KL_OERR_PROTECTED);
1917 - return -1; 1915 + return errno = EPERM;
1918 } 1916 }
1919 if (hSession->formatted) 1917 if (hSession->formatted)
1920 { /* erase to next field attribute */ 1918 { /* erase to next field attribute */
@@ -2039,7 +2037,7 @@ LIB3270_EXPORT int lib3270_deleteword(H3270 *hSession) @@ -2039,7 +2037,7 @@ LIB3270_EXPORT int lib3270_deleteword(H3270 *hSession)
2039 /* Make sure we're on a modifiable field. */ 2037 /* Make sure we're on a modifiable field. */
2040 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) { 2038 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
2041 operator_error(hSession,KL_OERR_PROTECTED); 2039 operator_error(hSession,KL_OERR_PROTECTED);
2042 - return -1; 2040 + return errno = EPERM;
2043 } 2041 }
2044 2042
2045 /* Backspace over any spaces to the left of the cursor. */ 2043 /* Backspace over any spaces to the left of the cursor. */
@@ -2105,7 +2103,7 @@ LIB3270_EXPORT int lib3270_deletefield(H3270 *hSession) @@ -2105,7 +2103,7 @@ LIB3270_EXPORT int lib3270_deletefield(H3270 *hSession)
2105 fa = get_field_attribute(hSession,baddr); 2103 fa = get_field_attribute(hSession,baddr);
2106 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) { 2104 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
2107 operator_error(hSession,KL_OERR_PROTECTED); 2105 operator_error(hSession,KL_OERR_PROTECTED);
2108 - return -1; 2106 + return errno = EPERM;
2109 } 2107 }
2110 while (!hSession->ea_buf[baddr].fa) 2108 while (!hSession->ea_buf[baddr].fa)
2111 DEC_BA(baddr); 2109 DEC_BA(baddr);
@@ -2153,16 +2151,18 @@ int lib3270_get_field_end(H3270 *hSession, int baddr) @@ -2153,16 +2151,18 @@ int lib3270_get_field_end(H3270 *hSession, int baddr)
2153 2151
2154 #if defined(X3270_ANSI) /*[*/ 2152 #if defined(X3270_ANSI) /*[*/
2155 if (IN_ANSI) 2153 if (IN_ANSI)
2156 - return -1; 2154 + {
  2155 + return errno = EINVAL;
  2156 + }
2157 #endif /*]*/ 2157 #endif /*]*/
2158 2158
2159 if (!hSession->formatted) 2159 if (!hSession->formatted)
2160 - return -1; 2160 + return errno = EINVAL;
2161 2161
2162 faddr = find_field_attribute(hSession,baddr); 2162 faddr = find_field_attribute(hSession,baddr);
2163 fa = hSession->ea_buf[faddr].fa; 2163 fa = hSession->ea_buf[faddr].fa;
2164 if (faddr == baddr || FA_IS_PROTECTED(fa)) 2164 if (faddr == baddr || FA_IS_PROTECTED(fa))
2165 - return -1; 2165 + return errno = EPERM;
2166 2166
2167 baddr = faddr; 2167 baddr = faddr;
2168 while (True) 2168 while (True)
@@ -2317,7 +2317,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, const char *s, int len @@ -2317,7 +2317,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, const char *s, int len
2317 if (hSession->kybdlock) 2317 if (hSession->kybdlock)
2318 { 2318 {
2319 lib3270_trace_event(hSession," keyboard locked, string dropped\n"); 2319 lib3270_trace_event(hSession," keyboard locked, string dropped\n");
2320 - return -1; 2320 + return errno = EPERM;
2321 } 2321 }
2322 2322
2323 if (pasting && IN_3270) 2323 if (pasting && IN_3270)
src/lib3270/linux/connect.c
@@ -290,8 +290,7 @@ static void net_connected(H3270 *hSession, int fd unused, LIB3270_IO_FLAG flag u @@ -290,8 +290,7 @@ static void net_connected(H3270 *hSession, int fd unused, LIB3270_IO_FLAG flag u
290 290
291 default: 291 default:
292 lib3270_write_log(hSession,"connect", "%s: State changed to unexpected state %d",__FUNCTION__,hSession->cstate); 292 lib3270_write_log(hSession,"connect", "%s: State changed to unexpected state %d",__FUNCTION__,hSession->cstate);
293 - errno = EINVAL;  
294 - return -1; 293 + return errno = EINVAL;
295 } 294 }
296 295
297 } 296 }
src/lib3270/paste.c
@@ -240,10 +240,7 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, int row, int col, cons @@ -240,10 +240,7 @@ LIB3270_EXPORT int lib3270_set_string_at(H3270 *hSession, int row, int col, cons
240 240
241 // Is Keyboard locked ? 241 // Is Keyboard locked ?
242 if(hSession->kybdlock) 242 if(hSession->kybdlock)
243 - {  
244 - errno = EPERM;  
245 - return -1;  
246 - } 243 + return errno = EPERM;
247 244
248 if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) 245 if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED))
249 lib3270_unselect(hSession); 246 lib3270_unselect(hSession);
@@ -273,10 +270,7 @@ LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, con @@ -273,10 +270,7 @@ LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, con
273 FAIL_IF_NOT_ONLINE(hSession); 270 FAIL_IF_NOT_ONLINE(hSession);
274 271
275 if(hSession->kybdlock) 272 if(hSession->kybdlock)
276 - {  
277 - errno = EPERM;  
278 - return -1;  
279 - } 273 + return errno = EPERM;
280 274
281 if(lib3270_set_cursor_address(hSession,baddr) < 0) 275 if(lib3270_set_cursor_address(hSession,baddr) < 0)
282 return -1; 276 return -1;
@@ -307,10 +301,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str) @@ -307,10 +301,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str)
307 FAIL_IF_NOT_ONLINE(hSession); 301 FAIL_IF_NOT_ONLINE(hSession);
308 302
309 if(hSession->kybdlock) 303 if(hSession->kybdlock)
310 - {  
311 - errno = EPERM;  
312 - return -1;  
313 - } 304 + return errno = EPERM;
314 305
315 hSession->cbk.suspend(hSession); 306 hSession->cbk.suspend(hSession);
316 rc = set_string(hSession, str); 307 rc = set_string(hSession, str);
src/lib3270/properties.c
@@ -463,23 +463,6 @@ @@ -463,23 +463,6 @@
463 463
464 } 464 }
465 465
466 - /*  
467 - int lib3270_set_connected(H3270 *hSession, int state) {  
468 -  
469 - if(state) {  
470 -  
471 - if(lib3270_reconnect(hSession,120))  
472 - return -1;  
473 -  
474 - } else {  
475 -  
476 - return lib3270_disconnect(hSession);  
477 - }  
478 -  
479 - return 0;  
480 - }  
481 - */  
482 -  
483 int lib3270_get_int_property(H3270 *hSession, const char *name, int seconds) 466 int lib3270_get_int_property(H3270 *hSession, const char *name, int seconds)
484 { 467 {
485 size_t ix; 468 size_t ix;