Print this page
9718 update mandoc to 1.14.4
*** 1,9 ****
! /* $Id: term_ascii.c,v 1.58 2017/06/14 14:24:20 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
! * Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
--- 1,9 ----
! /* $Id: term_ascii.c,v 1.61 2018/05/20 21:37:34 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
! * Copyright (c) 2014, 2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
*** 19,33 ****
--- 19,35 ----
#include <sys/types.h>
#include <assert.h>
#if HAVE_WCHAR
+ #include <langinfo.h>
#include <locale.h>
#endif
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
+ #include <string.h>
#include <unistd.h>
#if HAVE_WCHAR
#include <wchar.h>
#endif
*** 98,108 ****
*/
v = TERMENC_LOCALE == enc ?
setlocale(LC_CTYPE, "") :
setlocale(LC_CTYPE, UTF8_LOCALE);
! if (NULL != v && MB_CUR_MAX > 1) {
p->enc = enc;
p->advance = locale_advance;
p->endline = locale_endline;
p->letter = locale_letter;
p->width = locale_width;
--- 100,120 ----
*/
v = TERMENC_LOCALE == enc ?
setlocale(LC_CTYPE, "") :
setlocale(LC_CTYPE, UTF8_LOCALE);
!
! /*
! * We only support UTF-8,
! * so revert to ASCII for anything else.
! */
!
! if (v != NULL &&
! strcmp(nl_langinfo(CODESET), "UTF-8") != 0)
! v = setlocale(LC_CTYPE, "C");
!
! if (v != NULL && MB_CUR_MAX > 1) {
p->enc = enc;
p->advance = locale_advance;
p->endline = locale_endline;
p->letter = locale_letter;
p->width = locale_width;
*** 119,128 ****
--- 131,142 ----
if (outopts->width)
p->defrmargin = outopts->width;
if (outopts->synopsisonly)
p->synopsisonly = 1;
+ assert(p->defindent < UINT16_MAX);
+ assert(p->defrmargin < UINT16_MAX);
return p;
}
void *
ascii_alloc(const struct manoutput *outopts)
*** 157,166 ****
--- 171,182 ----
p->defrmargin = width ? (size_t)width : p->lastrmargin;
else if (p->defrmargin > (size_t)width)
p->defrmargin -= width;
else
p->defrmargin = 0;
+ if (p->defrmargin > 1000)
+ p->defrmargin = 1000;
p->lastrmargin = p->tcol->rmargin;
p->tcol->rmargin = p->maxrmargin = p->defrmargin;
}
void
*** 225,234 ****
--- 241,251 ----
static void
ascii_advance(struct termp *p, size_t len)
{
size_t i;
+ assert(len < UINT16_MAX);
for (i = 0; i < len; i++)
putchar(' ');
}
static int
*** 292,312 ****
"x", "y", "z", "{", "|", "}", "~", "<DEL>",
"<80>", "<81>", "<82>", "<83>", "<84>", "<85>", "<86>", "<87>",
"<88>", "<89>", "<8A>", "<8B>", "<8C>", "<8D>", "<8E>", "<8F>",
"<90>", "<91>", "<92>", "<93>", "<94>", "<95>", "<96>", "<97>",
"<98>", "<99>", "<9A>", "<9B>", "<9C>", "<9D>", "<9E>", "<9F>",
! nbrsp, "!", "/\bc", "GBP", "o\bx", "=\bY", "|", "<sec>",
"\"", "(C)", "_\ba", "<<", "~", "", "(R)", "-",
! "<deg>","+-", "2", "3", "'", ",\bu", "<par>",".",
! ",", "1", "_\bo", ">>", "1/4", "1/2", "3/4", "?",
"`\bA", "'\bA", "^\bA", "~\bA", "\"\bA","o\bA", "AE", ",\bC",
"`\bE", "'\bE", "^\bE", "\"\bE","`\bI", "'\bI", "^\bI", "\"\bI",
! "-\bD", "~\bN", "`\bO", "'\bO", "^\bO", "~\bO", "\"\bO","x",
"/\bO", "`\bU", "'\bU", "^\bU", "\"\bU","'\bY", "Th", "ss",
"`\ba", "'\ba", "^\ba", "~\ba", "\"\ba","o\ba", "ae", ",\bc",
"`\be", "'\be", "^\be", "\"\be","`\bi", "'\bi", "^\bi", "\"\bi",
! "d", "~\bn", "`\bo", "'\bo", "^\bo", "~\bo", "\"\bo","-:-",
"/\bo", "`\bu", "'\bu", "^\bu", "\"\bu","'\by", "th", "\"\by",
"A", "a", "A", "a", "A", "a", "'\bC", "'\bc",
"^\bC", "^\bc", "C", "c", "C", "c", "D", "d",
"/\bD", "/\bd", "E", "e", "E", "e", "E", "e",
"E", "e", "E", "e", "^\bG", "^\bg", "G", "g",
--- 309,329 ----
"x", "y", "z", "{", "|", "}", "~", "<DEL>",
"<80>", "<81>", "<82>", "<83>", "<84>", "<85>", "<86>", "<87>",
"<88>", "<89>", "<8A>", "<8B>", "<8C>", "<8D>", "<8E>", "<8F>",
"<90>", "<91>", "<92>", "<93>", "<94>", "<95>", "<96>", "<97>",
"<98>", "<99>", "<9A>", "<9B>", "<9C>", "<9D>", "<9E>", "<9F>",
! nbrsp, "!", "/\bc", "GBP", "o\bx", "=\bY", "|", "<section>",
"\"", "(C)", "_\ba", "<<", "~", "", "(R)", "-",
! "<degree>","+-","^2", "^3", "'","<micro>","<paragraph>",".",
! ",", "^1", "_\bo", ">>", "1/4", "1/2", "3/4", "?",
"`\bA", "'\bA", "^\bA", "~\bA", "\"\bA","o\bA", "AE", ",\bC",
"`\bE", "'\bE", "^\bE", "\"\bE","`\bI", "'\bI", "^\bI", "\"\bI",
! "Dh", "~\bN", "`\bO", "'\bO", "^\bO", "~\bO", "\"\bO","x",
"/\bO", "`\bU", "'\bU", "^\bU", "\"\bU","'\bY", "Th", "ss",
"`\ba", "'\ba", "^\ba", "~\ba", "\"\ba","o\ba", "ae", ",\bc",
"`\be", "'\be", "^\be", "\"\be","`\bi", "'\bi", "^\bi", "\"\bi",
! "dh", "~\bn", "`\bo", "'\bo", "^\bo", "~\bo", "\"\bo","/",
"/\bo", "`\bu", "'\bu", "^\bu", "\"\bu","'\by", "th", "\"\by",
"A", "a", "A", "a", "A", "a", "'\bC", "'\bc",
"^\bC", "^\bc", "C", "c", "C", "c", "D", "d",
"/\bD", "/\bd", "E", "e", "E", "e", "E", "e",
"E", "e", "E", "e", "^\bG", "^\bg", "G", "g",
*** 362,371 ****
--- 379,389 ----
static void
locale_advance(struct termp *p, size_t len)
{
size_t i;
+ assert(len < UINT16_MAX);
for (i = 0; i < len; i++)
putwchar(L' ');
}
static void