X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fcomp_expand.c;h=5841baa656f1fb1267845de6ea038a3350cb3316;hp=840240088949acb7d9a46ef2c257ba41ea720716;hb=8b06e371ed1bce3dd6f37138e6becb5e1a562fe0;hpb=c120fddebe9e9c1e2b29dbd744a6b1d03652bf8b diff --git a/ncurses/tinfo/comp_expand.c b/ncurses/tinfo/comp_expand.c index 84024008..5841baa6 100644 --- a/ncurses/tinfo/comp_expand.c +++ b/ncurses/tinfo/comp_expand.c @@ -35,7 +35,7 @@ #include #include -MODULE_ID("$Id: comp_expand.c,v 1.22 2011/05/21 18:55:07 tom Exp $") +MODULE_ID("$Id: comp_expand.c,v 1.24 2012/02/22 22:40:24 tom Exp $") static int trailing_spaces(const char *src) @@ -49,6 +49,8 @@ trailing_spaces(const char *src) #define REALCTL(s) (UChar(*(s)) < 127 && iscntrl(UChar(*(s)))) #define REALPRINT(s) (UChar(*(s)) < 127 && isprint(UChar(*(s)))) +#define P_LIMIT(p) (length - (size_t)(p)) + NCURSES_EXPORT(char *) _nc_tic_expand(const char *srcp, bool tic_format, int numbers) { @@ -90,7 +92,8 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers) && str[1] != '\\' && REALPRINT(str + 1) && str[2] == S_QUOTE) { - sprintf(buffer + bufp, "{%d}", str[1]); + _nc_SPRINTF(buffer + bufp, _nc_SLIMIT(P_LIMIT(bufp)) + "{%d}", str[1]); bufp += (int) strlen(buffer + bufp); str += 2; } else { @@ -177,10 +180,12 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers) #define UnCtl(c) ((c) + '@') else if (REALCTL(str) && ch != '\\' && (!islong || isdigit(UChar(str[1])))) { - (void) sprintf(&buffer[bufp], "^%c", UnCtl(ch)); + _nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp)) + "^%c", UnCtl(ch)); bufp += 2; } else { - (void) sprintf(&buffer[bufp], "\\%03o", ch); + _nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp)) + "\\%03o", ch); bufp += 4; }