version 1.64, 2018/11/28 14:23:06 |
version 1.68, 2022/08/16 17:45:55 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2014, 2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2014,2015,2017,2018,2020 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 196 terminal_sepline(void *arg) |
|
Line 196 terminal_sepline(void *arg) |
|
static size_t |
static size_t |
ascii_width(const struct termp *p, int c) |
ascii_width(const struct termp *p, int c) |
{ |
{ |
return c != ASCII_BREAK; |
return c != ASCII_BREAK && c != ASCII_NBRZW && c != ASCII_TABREF; |
} |
} |
|
|
void |
void |
Line 232 ascii_endline(struct termp *p) |
|
Line 232 ascii_endline(struct termp *p) |
|
{ |
{ |
|
|
p->line++; |
p->line++; |
p->tcol->offset -= p->ti; |
if ((int)p->tcol->offset > p->ti) |
|
p->tcol->offset -= p->ti; |
|
else |
|
p->tcol->offset = 0; |
p->ti = 0; |
p->ti = 0; |
putchar('\n'); |
putchar('\n'); |
} |
} |
Line 242 ascii_advance(struct termp *p, size_t len) |
|
Line 245 ascii_advance(struct termp *p, size_t len) |
|
{ |
{ |
size_t i; |
size_t i; |
|
|
assert(len < UINT16_MAX); |
/* |
|
* XXX We used to have "assert(len < UINT16_MAX)" here. |
|
* that is not quite right because the input document |
|
* can trigger that by merely providing large input. |
|
* For now, simply truncate. |
|
*/ |
|
if (len > 256) |
|
len = 256; |
for (i = 0; i < len; i++) |
for (i = 0; i < len; i++) |
putchar(' '); |
putchar(' '); |
} |
} |
Line 380 locale_advance(struct termp *p, size_t len) |
|
Line 390 locale_advance(struct termp *p, size_t len) |
|
{ |
{ |
size_t i; |
size_t i; |
|
|
assert(len < UINT16_MAX); |
/* |
|
* XXX We used to have "assert(len < UINT16_MAX)" here. |
|
* that is not quite right because the input document |
|
* can trigger that by merely providing large input. |
|
* For now, simply truncate. |
|
*/ |
|
if (len > 256) |
|
len = 256; |
for (i = 0; i < len; i++) |
for (i = 0; i < len; i++) |
putwchar(L' '); |
putwchar(L' '); |
} |
} |
Line 390 locale_endline(struct termp *p) |
|
Line 407 locale_endline(struct termp *p) |
|
{ |
{ |
|
|
p->line++; |
p->line++; |
p->tcol->offset -= p->ti; |
if ((int)p->tcol->offset > p->ti) |
|
p->tcol->offset -= p->ti; |
|
else |
|
p->tcol->offset = 0; |
p->ti = 0; |
p->ti = 0; |
putwchar(L'\n'); |
putwchar(L'\n'); |
} |
} |