rp@osc.COM (Rich Patterson) (06/14/89)
Hi, I remember a couple of months ago that there is a bug in the curses support under System V/AT ver. 2.4. Does anybody remember what it was ?? Also, if anybody has a fix for it that would be appreciated. Please either post or e-mail directly to me. Thanks, Rich P. rp@osc.com pacbell!osc!rp
rd@tarpit.UUCP (Bob Thrush x210) (06/22/89)
In article <353@osc.COM> rp@osc.COM (Rich Patterson) writes: >Hi, > I remember a couple of months ago that there is a bug in the >curses support under System V/AT ver. 2.4. Does anybody remember what it >was ?? Also, if anybody has a fix for it that would be appreciated. Please >either post or e-mail directly to me. I don't have my earlier posting about this problem handy; however ... tgetstr() is broken. I have attached a copy of a small source module that may be used to workaround the problem. If somebody has a more direct solution, it would be preferable to this workaround. #include <stdio.h> /* The Microport tgetstr function is broken. tgetstr should * have the following prototype: * char *tgetstr(key,tcarea) * char *key, **tcarea; * A proper termcap version should copy the (key) capability string * to tcarea, update the tcarea pointer, and return a pointer * to the desired capability. * The Microport version appears to have something like the * following prototype: * char *tgetstr(key,tcarea) * char *key, *tcarea; * If tcarea is non-NULL, the Microport version copies the capability * to the latter tcarea and returns a pointer to its own internal copy * of the capability. If tcarea is NULL, then it does not do the * above copy; however, it still returns the pointer. * * Since compatible performance is desired, I have written the following * routine to interface to the broken Microport tgetstr. * * To use Tgetstr, define the following macro and function declaration * before tgetstr is used: #define tgetstr(key,tcarea) (Tgetstr(key,tcarea)) char *Tgetstr(); * * Then link this source module with the rest of your package. * */ char *Tgetstr(key,p) char *key, **p; { char *tgetstr(); /* Get termcap capability */ char *strcpy(); char *tmpstr; char *curses_cap_str; curses_cap_str=tgetstr(key,0L); if (curses_cap_str) { tmpstr = *p; (void) strcpy(*p, curses_cap_str); *p += strlen(curses_cap_str); (*p)++; } else tmpstr = NULL; return tmpstr; } > >Thanks, >Rich P. >rp@osc.com >pacbell!osc!rp -- Bob Thrush UUCP: {ucf-cs,rtmvax}!tarpit!rd Automation Intelligence, 1200 W. Colonial Drive, Orlando, Florida 32804