[BACK]Return to tparm.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libterminfo

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libterminfo/tparm.c between version 1.16 and 1.17

version 1.16, 2015/11/25 18:46:59 version 1.17, 2017/05/04 09:42:23
Line 122  ochar(TERMINAL *term, int c)
Line 122  ochar(TERMINAL *term, int c)
 }  }
   
 static size_t  static size_t
 onum(TERMINAL *term, const char *fmt, int num, unsigned int len)  onum(TERMINAL *term, const char *fmt, int num, size_t len)
 {  {
         size_t l;          int l;
           size_t r;
   
         if (len < LONG_STR_MAX)          if (len < LONG_STR_MAX)
                 len = LONG_STR_MAX;                  len = LONG_STR_MAX;
         if (checkbuf(term, len + 2) == NULL)          if (checkbuf(term, len + 2) == NULL)
                 return 0;                  return 0;
         l = snprintf(term->_buf + term->_bufpos, len + 2, fmt, num);          l = snprintf(term->_buf + term->_bufpos, len + 2, fmt, num);
         term->_bufpos += l;          if (l == -1)
         return l;                  return 0;
           r = (size_t)l;
           term->_bufpos += r;
           return r;
 }  }
   
 /*  /*
Line 187  _ti_tiparm(TERMINAL *term, const char *s
Line 191  _ti_tiparm(TERMINAL *term, const char *s
         char c, fmt[64], *fp, *ostr;          char c, fmt[64], *fp, *ostr;
         long val, val2;          long val, val2;
         long dnums[26]; /* dynamic variables a-z, not preserved */          long dnums[26]; /* dynamic variables a-z, not preserved */
         size_t l, max;          size_t l, max, width, precision, olen;
         TPSTACK stack;          TPSTACK stack;
         TPVAR params[TPARM_MAX];          TPVAR params[TPARM_MAX];
         unsigned int done, dot, minus, width, precision, olen;          unsigned int done, dot, minus;
         int piss[TPARM_MAX]; /* Parameter IS String - piss ;) */          int piss[TPARM_MAX]; /* Parameter IS String - piss ;) */
   
         if (str == NULL)          if (str == NULL)
Line 222  _ti_tiparm(TERMINAL *term, const char *s
Line 226  _ti_tiparm(TERMINAL *term, const char *s
         }          }
   
         memset(&piss, 0, sizeof(piss));          memset(&piss, 0, sizeof(piss));
         max = _ti_parm_analyse(str, piss, TPARM_MAX);          max = (size_t)_ti_parm_analyse(str, piss, TPARM_MAX);
   
         /* Put our parameters into variables */          /* Put our parameters into variables */
         memset(&params, 0, sizeof(params));          memset(&params, 0, sizeof(params));
Line 286  _ti_tiparm(TERMINAL *term, const char *s
Line 290  _ti_tiparm(TERMINAL *term, const char *s
                                 *fp++ = c;                                  *fp++ = c;
                                 if (dot == 0) {                                  if (dot == 0) {
                                         dot = 1;                                          dot = 1;
                                         width = val;                                          width = (size_t)val;
                                 } else                                  } else
                                         done = 2;                                          done = 2;
                                 val = 0;                                  val = 0;
Line 320  _ti_tiparm(TERMINAL *term, const char *s
Line 324  _ti_tiparm(TERMINAL *term, const char *s
                         olen = 0;                          olen = 0;
                 } else {                  } else {
                         if (dot == 0)                          if (dot == 0)
                                 width = val;                                  width = (size_t)val;
                         else                          else
                                 precision = val;                                  precision = (size_t)val;
                         olen = MAX(width, precision);                          olen = MAX(width, precision);
                 }                  }
                 *fp++ = '\0';                  *fp++ = '\0';
Line 337  _ti_tiparm(TERMINAL *term, const char *s
Line 341  _ti_tiparm(TERMINAL *term, const char *s
                 case 's':                  case 's':
                         pop(NULL, &ostr, &stack);                          pop(NULL, &ostr, &stack);
                         if (ostr != NULL) {                          if (ostr != NULL) {
                                   int r;
   
                                 l = strlen(ostr);                                  l = strlen(ostr);
                                 if (l < (size_t)olen)                                  if (l < (size_t)olen)
                                         l = olen;                                          l = olen;
                                 if (checkbuf(term, (size_t)(l + 1)) == NULL)                                  if (checkbuf(term, (size_t)(l + 1)) == NULL)
                                         return NULL;                                          return NULL;
                                 l = snprintf(term->_buf + term->_bufpos, l + 1,                                  r = snprintf(term->_buf + term->_bufpos, l + 1,
                                     fmt, ostr);                                      fmt, ostr);
                                 term->_bufpos += l;                                  if (r != -1)
                                           term->_bufpos += (size_t)r;
                         }                          }
                         break;                          break;
                 case 'l':                  case 'l':
Line 371  _ti_tiparm(TERMINAL *term, const char *s
Line 378  _ti_tiparm(TERMINAL *term, const char *s
                 case 'p':                  case 'p':
                         if (*str < '1' || *str > '9')                          if (*str < '1' || *str > '9')
                                 break;                                  break;
                         l = *str++ - '1';                          l = (size_t)(*str++ - '1');
                         if (push(params[l].num, params[l].string, &stack))                          if (push(params[l].num, params[l].string, &stack))
                                 return NULL;                                  return NULL;
                         break;                          break;

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

CVSweb <webmaster@jp.NetBSD.org>