Commit 8de44186c475cfc1aef31d4b68600048c68d4ce7

Authored by Perry Werneck
1 parent e815434f

Updating return codes.

src/lib3270/actions.c
... ... @@ -68,6 +68,10 @@
68 68 /**
69 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 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 91 }
88 92  
89 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 42 * @param start return location for start of selection, as a character offset.
43 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 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 52 first = lib3270_field_addr(hSession,baddr);
53 53  
54 54 if(first < 0)
55   - return -1;
  55 + return errno = (errno == 0 ? EINVAL : errno);
56 56  
57 57 first++;
58 58  
... ...
src/lib3270/charset.c
... ... @@ -132,48 +132,6 @@ static const unsigned short asc2ebc0[256] =
132 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 135 static const unsigned short asc2uc[UT_SIZE] =
178 136 {
179 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 241  
284 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 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 430  
480 431 if (iso <= 0xff)
481 432 {
482   -//#if defined(X3270_FT)
483   -// unsigned char aa;
484   -//#endif
485   -
486 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 435 if (ebc > 0x40)
911 436 {
912 437 hSession->charset.ebc2asc[ebc] = iso;
... ... @@ -914,441 +439,9 @@ static void remap_one(H3270 *hSession, unsigned char ebc, KeySym iso, remap_scop
914 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 433 CHECK_SESSION_HANDLE(hSession);
434 434  
435 435 if (!hSession->formatted)
436   - return -1;
  436 + return errno = ENOTCONN;
437 437  
438 438 if(baddr < 0)
439 439 baddr = hSession->cursor_addr;
... ... @@ -459,7 +459,7 @@ LIB3270_EXPORT int lib3270_get_field_len(H3270 *hSession, int baddr)
459 459 CHECK_SESSION_HANDLE(hSession);
460 460  
461 461 if (!hSession->formatted)
462   - return -1;
  462 + return errno = ENOTCONN;
463 463  
464 464 if(baddr < 0)
465 465 baddr = hSession->cursor_addr;
... ... @@ -498,10 +498,7 @@ LIB3270_EXPORT int lib3270_field_addr(H3270 *hSession, int baddr)
498 498 FAIL_IF_NOT_ONLINE(hSession);
499 499  
500 500 if(!hSession->formatted)
501   - {
502   - errno = ENOTCONN;
503   - return -1;
504   - }
  501 + return errno = ENOTCONN;
505 502  
506 503 sbaddr = baddr;
507 504 do
... ... @@ -522,10 +519,7 @@ LIB3270_EXPORT int lib3270_field_attribute(H3270 *hSession, int baddr)
522 519 FAIL_IF_NOT_ONLINE(hSession);
523 520  
524 521 if(!hSession->formatted)
525   - {
526   - errno = ENOTCONN;
527   - return -1;
528   - }
  522 + return errno = ENOTCONN;
529 523  
530 524 sbaddr = baddr;
531 525 do
... ... @@ -571,8 +565,7 @@ int lib3270_field_length(H3270 *hSession, int baddr)
571 565 width++;
572 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 594 FAIL_IF_NOT_ONLINE(hSession);
602 595  
603 596 if(!hSession->formatted)
604   - {
605   - errno = ENOTCONN;
606   - return -1;
607   - }
  597 + return errno = ENOTCONN;
608 598  
609 599 if(baddr0 < 0)
610 600 baddr0 = hSession->cursor_addr;
... ...
src/lib3270/kybd.c
... ... @@ -1751,8 +1751,7 @@ LIB3270_EXPORT int lib3270_enter(H3270 *hSession)
1751 1751  
1752 1752 if (hSession->kybdlock & KL_OIA_MINUS)
1753 1753 {
1754   - errno = EPERM;
1755   - return -1;
  1754 + return errno = EPERM;
1756 1755 }
1757 1756 else if (hSession->kybdlock)
1758 1757 {
... ... @@ -1772,7 +1771,6 @@ LIB3270_EXPORT int lib3270_sysreq(H3270 *hSession)
1772 1771  
1773 1772 if (IN_ANSI)
1774 1773 {
1775   - errno = ENOTCONN;
1776 1774 return 0;
1777 1775 }
1778 1776  
... ... @@ -1848,7 +1846,7 @@ LIB3270_EXPORT int lib3270_eraseeol(H3270 *hSession)
1848 1846 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa)
1849 1847 {
1850 1848 operator_error(hSession,KL_OERR_PROTECTED);
1851   - return -1;
  1849 + return errno = EPERM;
1852 1850 }
1853 1851  
1854 1852 if (hSession->formatted)
... ... @@ -1914,7 +1912,7 @@ LIB3270_EXPORT int lib3270_eraseeof(H3270 *hSession)
1914 1912 fa = get_field_attribute(hSession,baddr);
1915 1913 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
1916 1914 operator_error(hSession,KL_OERR_PROTECTED);
1917   - return -1;
  1915 + return errno = EPERM;
1918 1916 }
1919 1917 if (hSession->formatted)
1920 1918 { /* erase to next field attribute */
... ... @@ -2039,7 +2037,7 @@ LIB3270_EXPORT int lib3270_deleteword(H3270 *hSession)
2039 2037 /* Make sure we're on a modifiable field. */
2040 2038 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
2041 2039 operator_error(hSession,KL_OERR_PROTECTED);
2042   - return -1;
  2040 + return errno = EPERM;
2043 2041 }
2044 2042  
2045 2043 /* Backspace over any spaces to the left of the cursor. */
... ... @@ -2105,7 +2103,7 @@ LIB3270_EXPORT int lib3270_deletefield(H3270 *hSession)
2105 2103 fa = get_field_attribute(hSession,baddr);
2106 2104 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
2107 2105 operator_error(hSession,KL_OERR_PROTECTED);
2108   - return -1;
  2106 + return errno = EPERM;
2109 2107 }
2110 2108 while (!hSession->ea_buf[baddr].fa)
2111 2109 DEC_BA(baddr);
... ... @@ -2153,16 +2151,18 @@ int lib3270_get_field_end(H3270 *hSession, int baddr)
2153 2151  
2154 2152 #if defined(X3270_ANSI) /*[*/
2155 2153 if (IN_ANSI)
2156   - return -1;
  2154 + {
  2155 + return errno = EINVAL;
  2156 + }
2157 2157 #endif /*]*/
2158 2158  
2159 2159 if (!hSession->formatted)
2160   - return -1;
  2160 + return errno = EINVAL;
2161 2161  
2162 2162 faddr = find_field_attribute(hSession,baddr);
2163 2163 fa = hSession->ea_buf[faddr].fa;
2164 2164 if (faddr == baddr || FA_IS_PROTECTED(fa))
2165   - return -1;
  2165 + return errno = EPERM;
2166 2166  
2167 2167 baddr = faddr;
2168 2168 while (True)
... ... @@ -2317,7 +2317,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, const char *s, int len
2317 2317 if (hSession->kybdlock)
2318 2318 {
2319 2319 lib3270_trace_event(hSession," keyboard locked, string dropped\n");
2320   - return -1;
  2320 + return errno = EPERM;
2321 2321 }
2322 2322  
2323 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 290  
291 291 default:
292 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 240  
241 241 // Is Keyboard locked ?
242 242 if(hSession->kybdlock)
243   - {
244   - errno = EPERM;
245   - return -1;
246   - }
  243 + return errno = EPERM;
247 244  
248 245 if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED))
249 246 lib3270_unselect(hSession);
... ... @@ -273,10 +270,7 @@ LIB3270_EXPORT int lib3270_set_string_at_address(H3270 *hSession, int baddr, con
273 270 FAIL_IF_NOT_ONLINE(hSession);
274 271  
275 272 if(hSession->kybdlock)
276   - {
277   - errno = EPERM;
278   - return -1;
279   - }
  273 + return errno = EPERM;
280 274  
281 275 if(lib3270_set_cursor_address(hSession,baddr) < 0)
282 276 return -1;
... ... @@ -307,10 +301,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str)
307 301 FAIL_IF_NOT_ONLINE(hSession);
308 302  
309 303 if(hSession->kybdlock)
310   - {
311   - errno = EPERM;
312   - return -1;
313   - }
  304 + return errno = EPERM;
314 305  
315 306 hSession->cbk.suspend(hSession);
316 307 rc = set_string(hSession, str);
... ...
src/lib3270/properties.c
... ... @@ -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 466 int lib3270_get_int_property(H3270 *hSession, const char *name, int seconds)
484 467 {
485 468 size_t ix;
... ...