/*
* Internal prototypes.
*/
+static unsigned long *resizeline(unsigned long *, int);
+static unsigned long *lineptr(Terminal *, int, int);
static void do_paint(Terminal *, Context, int);
static void erase_lots(Terminal *, int, int, int);
static void swap_screen(Terminal *, int, int, int);
/*
* Resize a line to make it `cols' columns wide.
*/
-unsigned long *resizeline(unsigned long *line, int cols)
+static unsigned long *resizeline(unsigned long *line, int cols)
{
int i, oldlen;
unsigned long lineattrs;
* whether the y coordinate is non-negative or negative
* (respectively).
*/
-unsigned long *lineptr(Terminal *term, int y, int lineno)
+static unsigned long *lineptr(Terminal *term, int y, int lineno)
{
unsigned long *line, *newline;
tree234 *whichtree;
else if(term->sco_acs &&
(c!='\033' && c!='\012' && c!='\015' && c!='\b'))
{
- if (term->sco_acs == 2) c ^= 0x80;
+ if (term->sco_acs == 2) c |= 0x80;
c |= ATTR_SCOACS;
} else {
switch (term->cset_attr[term->cset]) {
term->logctx)
logtraffic(term->logctx, (unsigned char) c, LGTYP_ASCII);
{
- extern int wcwidth(wchar_t ucs);
int width = 0;
if (DIRECT_CHAR(c))
width = 1;
compatibility(SCOANSI);
if (term->cfg->no_remote_charset) break;
term->sco_acs = 1; break;
- case 12: /* SCO acs on flipped */
+ case 12: /* SCO acs on, |0x80 */
compatibility(SCOANSI);
if (term->cfg->no_remote_charset) break;
term->sco_acs = 2; break;
int rv;
if (is_dbcs_leadbyte(font_codepage, (BYTE) c)) {
buf[0] = c;
- buf[1] = ldata[top.x + 1];
+ buf[1] = (char) (0xFF & ldata[top.x + 1]);
rv = mb_to_wc(font_codepage, 0, buf, 2, wbuf, 4);
top.x++;
} else {