static int decodeNumber(EcCompiler *cp, int radix, int length) { char buf[16]; int i, c, lowerc; for (i = 0; i < length; i++) { c = getNextChar(cp->stream); if (c == 0) { break; } if (radix <= 10) { if (!isdigit((uchar) c)) { break; } } else if (radix == 16) { lowerc = tolower((uchar) c); if (!isdigit((uchar) lowerc) && !('a' <= lowerc && lowerc <= 'f')) { break; } } buf[i] = c; } if (i < length) { putBackChar(cp->stream, c); } buf[i] = '\0'; return (int) stoiradix(buf, radix, NULL); }
static int parseDigestNonce(char *nonce, cchar **secret, cchar **realm, MprTime *when) { char *tok, *decoded, *whenStr; if ((decoded = mprDecode64(nonce)) == 0) { return MPR_ERR_CANT_READ; } *secret = stok(decoded, ":", &tok); *realm = stok(NULL, ":", &tok); whenStr = stok(NULL, ":", &tok); *when = (MprTime) stoiradix(whenStr, 16, NULL); return 0; }
int64 stoi(cchar *str) { return stoiradix(str, 10, NULL); }