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(¶ms, 0, sizeof(params)); |
memset(¶ms, 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; |