diff options
| author | Jeff Smith <whydoubt@gmail.com> | 2017-10-01 23:39:05 -0500 | 
|---|---|---|
| committer | John Keeping <john@keeping.me.uk> | 2017-10-03 19:19:34 +0100 | 
| commit | 70787254b270b1505aa8427813f64131be5df86c (patch) | |
| tree | 5a6d23b8186d4d9d7e2bd5b84d3c3d092edd4e30 /html.c | |
| parent | cache: flush stdio before restoring FDs (diff) | |
| download | cgit-70787254b270b1505aa8427813f64131be5df86c.tar.gz cgit-70787254b270b1505aa8427813f64131be5df86c.tar.bz2 cgit-70787254b270b1505aa8427813f64131be5df86c.zip | |
html: html_ntxt with no ellipsis
For implementing a ui-blame page, there is need for a function that
outputs a selection from a block of text, transformed for HTML output,
but with no further modifications or additions.
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Reviewed-by: John Keeping <john@keeping.me.uk>
Diffstat (limited to '')
| -rw-r--r-- | html.c | 32 | 
1 files changed, 11 insertions, 21 deletions
| @@ -124,29 +124,20 @@ void html_vtxtf(const char *format, va_list ap)  void html_txt(const char *txt)  { -	const char *t = txt; -	while (t && *t) { -		int c = *t; -		if (c == '<' || c == '>' || c == '&') { -			html_raw(txt, t - txt); -			if (c == '>') -				html(">"); -			else if (c == '<') -				html("<"); -			else if (c == '&') -				html("&"); -			txt = t + 1; -		} -		t++; -	} -	if (t != txt) -		html(txt); +	if (txt) +		html_ntxt(txt, strlen(txt));  } -void html_ntxt(int len, const char *txt) +ssize_t html_ntxt(const char *txt, size_t len)  {  	const char *t = txt; -	while (t && *t && len--) { +	ssize_t slen; + +	if (len > SSIZE_MAX) +		return -1; + +	slen = (ssize_t) len; +	while (t && *t && slen--) {  		int c = *t;  		if (c == '<' || c == '>' || c == '&') {  			html_raw(txt, t - txt); @@ -162,8 +153,7 @@ void html_ntxt(int len, const char *txt)  	}  	if (t != txt)  		html_raw(txt, t - txt); -	if (len < 0) -		html("..."); +	return slen;  }  void html_attrf(const char *fmt, ...) | 
