version 1.281, 2019/06/03 20:23:41 |
version 1.282, 2020/09/02 16:40:36 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010-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 38 static void bufferc(struct termp *, char); |
|
Line 38 static void bufferc(struct termp *, char); |
|
static void encode(struct termp *, const char *, size_t); |
static void encode(struct termp *, const char *, size_t); |
static void encode1(struct termp *, int); |
static void encode1(struct termp *, int); |
static void endline(struct termp *); |
static void endline(struct termp *); |
static void term_field(struct termp *, size_t, size_t, |
static void term_field(struct termp *, size_t, size_t); |
size_t, size_t); |
|
static void term_fill(struct termp *, size_t *, size_t *, |
static void term_fill(struct termp *, size_t *, size_t *, |
size_t); |
size_t); |
|
|
Line 127 term_flushln(struct termp *p) |
|
Line 126 term_flushln(struct termp *p) |
|
* and with the BRNEVER flag, never break it at all. |
* and with the BRNEVER flag, never break it at all. |
*/ |
*/ |
|
|
vtarget = p->flags & TERMP_BRNEVER ? SIZE_MAX : |
vtarget = (p->flags & TERMP_NOBREAK) == 0 ? vfield : |
(p->flags & TERMP_NOBREAK) == 0 ? vfield : |
|
p->maxrmargin > p->viscol + vbl ? |
p->maxrmargin > p->viscol + vbl ? |
p->maxrmargin - p->viscol - vbl : 0; |
p->maxrmargin - p->viscol - vbl : 0; |
|
|
Line 137 term_flushln(struct termp *p) |
|
Line 135 term_flushln(struct termp *p) |
|
* If there is whitespace only, print nothing. |
* If there is whitespace only, print nothing. |
*/ |
*/ |
|
|
term_fill(p, &nbr, &vbr, vtarget); |
term_fill(p, &nbr, &vbr, |
|
p->flags & TERMP_BRNEVER ? SIZE_MAX : vtarget); |
if (nbr == 0) |
if (nbr == 0) |
break; |
break; |
|
|
Line 156 term_flushln(struct termp *p) |
|
Line 155 term_flushln(struct termp *p) |
|
|
|
/* Finally, print the field content. */ |
/* Finally, print the field content. */ |
|
|
term_field(p, vbl, nbr, vbr, vtarget); |
term_field(p, vbl, nbr); |
|
|
/* |
/* |
* If there is no text left in the field, exit the loop. |
* If there is no text left in the field, exit the loop. |
Line 345 term_fill(struct termp *p, size_t *nbr, size_t *vbr, s |
|
Line 344 term_fill(struct termp *p, size_t *nbr, size_t *vbr, s |
|
/* |
/* |
* Print the contents of one field |
* Print the contents of one field |
* with an indentation of vbl visual columns, |
* with an indentation of vbl visual columns, |
* an input string length of nbr characters, |
* and an input string length of nbr characters. |
* an output width of vbr visual columns, |
|
* and a desired field width of vtarget visual columns. |
|
*/ |
*/ |
static void |
static void |
term_field(struct termp *p, size_t vbl, size_t nbr, size_t vbr, size_t vtarget) |
term_field(struct termp *p, size_t vbl, size_t nbr) |
{ |
{ |
size_t ic; /* Character position in the input buffer. */ |
size_t ic; /* Character position in the input buffer. */ |
size_t vis; /* Visual position of the current character. */ |
size_t vis; /* Visual position of the current character. */ |