From 1ddd1e348ac050b94883146ee427960fe5d71fdb Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 18 Aug 1998 20:58:45 +0000 Subject: [PATCH] (tgetst1): Supprt EBCDIC systems. (esctab): Alternate definition if IS_EBCDIC_HOST. --- src/termcap.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/termcap.c b/src/termcap.c index 8537d801b40..c447ce8b4b0 100644 --- a/src/termcap.c +++ b/src/termcap.c @@ -173,6 +173,17 @@ tgetstr (cap, area) return tgetst1 (ptr, area); } +#ifdef IS_EBCDIC_HOST +/* Table, indexed by a character in range 0200 to 0300 with 0200 subtracted, + gives meaning of character following \, or a space if no special meaning. + Sixteen characters per line within the string. */ + +static char esctab[] + = " \057\026 \047\014 \ + \025 \015 \ + \005 \013 \ + "; +#else /* Table, indexed by a character in range 0100 to 0140 with 0100 subtracted, gives meaning of character following \, or a space if no special meaning. Eight characters per line within the string. */ @@ -182,6 +193,7 @@ static char esctab[] \012 \ \015 \011 \013 \ "; +#endif /* PTR points to a string value inside a termcap entry. Copy that value, processing \ and ^ abbreviations, @@ -245,12 +257,21 @@ tgetst1 (ptr, area) p++; } } +#ifdef IS_EBCDIC_HOST + else if (c >= 0200 && c < 0360) + { + c1 = esctab[(c & ~0100) - 0200]; + if (c1 != ' ') + c = c1; + } +#else else if (c >= 0100 && c < 0200) { c1 = esctab[(c & ~040) - 0100]; if (c1 != ' ') c = c1; } +#endif } *r++ = c; } -- 2.39.5