mirror of
https://github.com/sheumann/hush.git
synced 2025-01-03 00:31:16 +00:00
small optimizations of toupper/tolower
function old new delta in_ib 191 172 -19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
f2cbb03a37
commit
56b3eec162
@ -2031,7 +2031,6 @@ static NOINLINE var *exec_builtin(node *op, var *res)
|
|||||||
{
|
{
|
||||||
#define tspl (G.exec_builtin__tspl)
|
#define tspl (G.exec_builtin__tspl)
|
||||||
|
|
||||||
int (*to_xxx)(int);
|
|
||||||
var *tv;
|
var *tv;
|
||||||
node *an[4];
|
node *an[4];
|
||||||
var *av[4];
|
var *av[4];
|
||||||
@ -2061,7 +2060,8 @@ static NOINLINE var *exec_builtin(node *op, var *res)
|
|||||||
if ((uint32_t)nargs < (info >> 30))
|
if ((uint32_t)nargs < (info >> 30))
|
||||||
syntax_error(EMSG_TOO_FEW_ARGS);
|
syntax_error(EMSG_TOO_FEW_ARGS);
|
||||||
|
|
||||||
switch (info & OPNMASK) {
|
info &= OPNMASK;
|
||||||
|
switch (info) {
|
||||||
|
|
||||||
case B_a2:
|
case B_a2:
|
||||||
#if ENABLE_FEATURE_AWK_LIBM
|
#if ENABLE_FEATURE_AWK_LIBM
|
||||||
@ -2126,15 +2126,12 @@ static NOINLINE var *exec_builtin(node *op, var *res)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case B_lo:
|
case B_lo:
|
||||||
to_xxx = tolower;
|
|
||||||
goto lo_cont;
|
|
||||||
|
|
||||||
case B_up:
|
case B_up:
|
||||||
to_xxx = toupper;
|
|
||||||
lo_cont:
|
|
||||||
s1 = s = xstrdup(as[0]);
|
s1 = s = xstrdup(as[0]);
|
||||||
while (*s1) {
|
while (*s1) {
|
||||||
*s1 = (*to_xxx)(*s1);
|
//*s1 = (info == B_up) ? toupper(*s1) : tolower(*s1);
|
||||||
|
if ((unsigned char)((*s1 | 0x20) - 'a') <= ('z' - 'a'))
|
||||||
|
*s1 = (info == B_up) ? (*s1 & 0xdf) : (*s1 | 0x20);
|
||||||
s1++;
|
s1++;
|
||||||
}
|
}
|
||||||
setvar_p(res, s);
|
setvar_p(res, s);
|
||||||
|
@ -1242,10 +1242,8 @@ int FAST_FUNC in_ib(const char *bufp, struct sockaddr *sap)
|
|||||||
c = *bufp++;
|
c = *bufp++;
|
||||||
if (isdigit(c))
|
if (isdigit(c))
|
||||||
val = c - '0';
|
val = c - '0';
|
||||||
else if (c >= 'a' && c <= 'f')
|
else if ((c|0x20) >= 'a' && (c|0x20) <= 'f')
|
||||||
val = c - 'a' + 10;
|
val = (c|0x20) - ('a' - 10);
|
||||||
else if (c >= 'A' && c <= 'F')
|
|
||||||
val = c - 'A' + 10;
|
|
||||||
else {
|
else {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
@ -1254,17 +1252,15 @@ int FAST_FUNC in_ib(const char *bufp, struct sockaddr *sap)
|
|||||||
c = *bufp;
|
c = *bufp;
|
||||||
if (isdigit(c))
|
if (isdigit(c))
|
||||||
val |= c - '0';
|
val |= c - '0';
|
||||||
else if (c >= 'a' && c <= 'f')
|
else if ((c|0x20) >= 'a' && (c|0x20) <= 'f')
|
||||||
val |= c - 'a' + 10;
|
val |= (c|0x20) - ('a' - 10);
|
||||||
else if (c >= 'A' && c <= 'F')
|
else if (c == ':' || c == '\0')
|
||||||
val |= c - 'A' + 10;
|
|
||||||
else if (c == ':' || c == 0)
|
|
||||||
val >>= 4;
|
val >>= 4;
|
||||||
else {
|
else {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (c != 0)
|
if (c != '\0')
|
||||||
bufp++;
|
bufp++;
|
||||||
*ptr++ = (unsigned char) (val & 0377);
|
*ptr++ = (unsigned char) (val & 0377);
|
||||||
i++;
|
i++;
|
||||||
|
Loading…
Reference in New Issue
Block a user