X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fcaptoinfo.c;h=4959edc72a1efde65303afb716088963149aca19;hp=e02e622b0de3ee94ec710d9f08df26708656f6ce;hb=90d42867e1296bc79021006a92032c76e59068b6;hpb=938680fa3bc29d2a086031a2f648dfd6cadcb51e diff --git a/ncurses/tinfo/captoinfo.c b/ncurses/tinfo/captoinfo.c index e02e622b..4959edc7 100644 --- a/ncurses/tinfo/captoinfo.c +++ b/ncurses/tinfo/captoinfo.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. * + * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -93,7 +93,7 @@ #include #include -MODULE_ID("$Id: captoinfo.c,v 1.77 2012/12/30 00:50:40 tom Exp $") +MODULE_ID("$Id: captoinfo.c,v 1.79 2017/02/11 20:08:49 tom Exp $") #define MAX_PUSHED 16 /* max # args we can push onto the stack */ @@ -239,7 +239,7 @@ getparm(int parm, int n) parm = 1; } - while (n--) { + while (n-- > 0) { dp = save_string(dp, "%p"); dp = save_char(dp, '0' + parm); } @@ -248,7 +248,7 @@ getparm(int parm, int n) if (n > 1) { _nc_warning("string may not be optimal"); dp = save_string(dp, "%Pa"); - while (n--) { + while (n-- > 0) { dp = save_string(dp, "%ga"); } } @@ -525,13 +525,13 @@ bcd_expression(const char *str) static char * save_tc_char(char *bufptr, int c1) { - char temp[80]; - if (is7bits(c1) && isprint(c1)) { if (c1 == ':' || c1 == '\\') bufptr = save_char(bufptr, '\\'); bufptr = save_char(bufptr, c1); } else { + char temp[80]; + if (c1 == (c1 & 0x1f)) { /* iscntrl() returns T on 255 */ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%.20s", unctrl((chtype) c1)); @@ -625,13 +625,15 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz } else if (str[1] == ',') { bufptr = save_char(bufptr, *++str); } else { - int xx1, xx2; + int xx1; bufptr = save_char(bufptr, *str++); xx1 = *str; if (_nc_strict_bsd) { + if (isdigit(UChar(xx1))) { int pad = 0; + int xx2; if (!isdigit(UChar(str[1]))) pad = 2;