Mike/Steve,
The attached patches for cursesterm.c and utility.c will fix a number of
the "non-display" character problems. It doesnt fix them all (by a
long shot) but it works for many of them (at least, on my system)
Perhaps you guys could try them out, and if they're an improvement, add
them to the CVS source?
Thanks...
Scott
On Wed, 26 Apr 2000, Mike Madore wrote:
> Hi Steve,
>
> Thanks for the info. This is part of a more general problem where we
> don't handle non-display characters correctly. I need to come up with a
> more generic approach. Will put this on my to-do list.
>
> Mike
>
> On Wed, 26 Apr 2000 [EMAIL PROTECTED] wrote:
>
> > I am having problems with an assertion failing when DSPF is used on a
> > OS/400 development release, it blows up right away. I contacted the owner
> > of the DSPF command to see what had changed, and below is his response.
> >
> > Thanks!
> >
> > ------------------------------------------------------------------
> > Steve,
> >
> > I think I figured what is causing your emulator to fail. From the trace
> > file it looks like the emulator dies when it tries to read EBCDIC codepoint
> > 0x09. This character is the result of one of the changes that was made to
> > DSPF/EDTF. The program is designed to take all characters less than 0x40
> > and replace them with a 0x09 for the purpose of being displayed to the
> > screen. There is a control character at the end of the each file name, in
> > this case "/dev/qsh-stdin-null", that is being replace with a 0x09.
> > Previously the value was 0x16, but we were having problems with the
> > character being displayed so we changed it to 0x09. It looks like the
> > emulator doesn't know how to handle codepoint 0x09. Hopefully, this is
> > helpful. If you have any more questions let me know.
> > ------------------------------------------------------------------
> >
> > Steve Fox
> > http://w3.rchland.ibm.com/~sjfox (IBM Intranet)
> > http://k-lug.com (Rochester Linux Users Group)
> >
--- utility.orig Wed Apr 26 17:57:01 2000
+++ utility.c Thu Apr 27 00:30:11 2000
@@ -196,20 +196,24 @@
int tn5250_char_map_printable_p(Tn5250CharMap *map, Tn5250Char data)
{
switch (data) {
- case 0x00:
- case 0x0d: /* ? - appears in data submitted by Sean Porterfield */
- case 0x0a: /* ? - ditto */
- case 0x16: /* ? - ditto */
- case 0x1c: /* DUP */
- case 0x1e: /* Field Mark (?) */
- return 1;
-
case 0x0e: /* Ideographic Shift-In. */
case 0x0f: /* Ideographic Shift-Out. */
TN5250_ASSERT(0); /* FIXME: Not implemented. */
- break;
+ return 0;
+ case 0x01: /* These chars "cause an RNQ1251" on an IBM 3179-2 */
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x1d:
+ return 0;
}
- return (data >= 0x1C) && (data <= 0xFF);
+ return 1;
}
/*******/
--- cursesterm.orig Wed Apr 26 17:56:43 2000
+++ cursesterm.c Wed Apr 26 18:01:54 2000
@@ -569,9 +569,14 @@
if (curs_attr == 0x00) { /* NONDISPLAY */
addch(attribute_map[0] | ' ');
} else {
- if ((c < 0x40 && c > 0x00) || c == 0xff) { /* UNPRINTABLE */
+ /* UNPRINTABLE -- print block */
+ if ((c==0x1f) || (c==0x3F)) {
c = ' ';
curs_attr ^= A_REVERSE;
+ }
+ /* UNPRINTABLE -- print blank */
+ else if ((c < 0x40 && c > 0x00) || c == 0xff) {
+ c = ' ';
} else {
c = tn5250_char_map_to_local (tn5250_display_char_map (display), c);
}