From 4ac5d826a7fc322e357b1f87a58616c3ed2a3c5f Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Sat, 30 Apr 2011 22:24:31 +0000 Subject: Make mchars_num2char() return a char like it says. --- chars.c | 22 +++++++++++----------- html.c | 9 ++++----- mandoc.h | 4 ++-- term.c | 9 ++++----- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/chars.c b/chars.c index 2e56f11d..e4f742d9 100644 --- a/chars.c +++ b/chars.c @@ -1,4 +1,4 @@ -/* $Id: chars.c,v 1.38 2011/04/30 22:14:42 kristaps Exp $ */ +/* $Id: chars.c,v 1.39 2011/04/30 22:24:31 kristaps Exp $ */ /* * Copyright (c) 2009, 2010 Kristaps Dzonsons * Copyright (c) 2011 Ingo Schwarze @@ -137,23 +137,23 @@ mchars_res2cp(struct mchars *arg, const char *p, size_t sz) /* - * Numbered character to literal character, - * represented as a null-terminated string for additional safety. + * Numbered character to literal character. */ -const char * +char mchars_num2char(const char *p, size_t sz) { int i; - static char c[2]; if (sz > 3) - return(NULL); + return('\0'); + i = atoi(p); - if (i < 0 || i > 255) - return(NULL); - c[0] = (char)i; - c[1] = '\0'; - return(c); + /* + * FIXME: + * This is wrong. Anything could be written here! + * This should be carefully screened for possible characters. + */ + return(i <= 0 || i > 255 ? '\0' : (char)i); } diff --git a/html.c b/html.c index b6bfe8d2..b1ba0dd2 100644 --- a/html.c +++ b/html.c @@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.136 2011/04/30 22:14:42 kristaps Exp $ */ +/* $Id: html.c,v 1.137 2011/04/30 22:24:31 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2011 Ingo Schwarze @@ -212,11 +212,10 @@ print_gen_head(struct html *h) static void print_num(struct html *h, const char *p, size_t len) { - const char *rhs; + char c; - rhs = mchars_num2char(p, len); - if (rhs) - putchar((int)*rhs); + if ('\0' != (c = mchars_num2char(p, len))) + putchar((int)c); } static void diff --git a/mandoc.h b/mandoc.h index 7c422081..55878b62 100644 --- a/mandoc.h +++ b/mandoc.h @@ -1,4 +1,4 @@ -/* $Id: mandoc.h,v 1.73 2011/04/30 22:14:42 kristaps Exp $ */ +/* $Id: mandoc.h,v 1.74 2011/04/30 22:24:31 kristaps Exp $ */ /* * Copyright (c) 2010, 2011 Kristaps Dzonsons * @@ -328,7 +328,7 @@ void *mandoc_realloc(void *, size_t); enum mandoc_esc mandoc_escape(const char **, const char **, int *); struct mchars *mchars_alloc(void); -const char *mchars_num2char(const char *, size_t); +char mchars_num2char(const char *, size_t); const char *mchars_spec2str(struct mchars *, const char *, size_t, size_t *); int mchars_spec2cp(struct mchars *, const char *, size_t); const char *mchars_res2str(struct mchars *, const char *, size_t, size_t *); diff --git a/term.c b/term.c index b3c8380d..9b158e54 100644 --- a/term.c +++ b/term.c @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.185 2011/04/29 22:18:12 kristaps Exp $ */ +/* $Id: term.c,v 1.186 2011/04/30 22:24:31 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons * Copyright (c) 2010, 2011 Ingo Schwarze @@ -348,11 +348,10 @@ term_vspace(struct termp *p) static void numbered(struct termp *p, const char *word, size_t len) { - const char *rhs; + char c; - rhs = mchars_num2char(word, len); - if (rhs) - encode(p, rhs, 1); + if ('\0' != (c = mchars_num2char(word, len))) + encode(p, &c, 1); } -- cgit v1.2.3-56-ge451