mirror of
https://github.com/facebook/zstd.git
synced 2025-07-29 11:21:22 +03:00
minor : factor out errorOut()
This commit is contained in:
@ -886,6 +886,11 @@ int optimizeForSize(const char* inFileName, U32 targetSpeed)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void errorOut(const char* msg)
|
||||
{
|
||||
DISPLAY("%s \n", msg); exit(1);
|
||||
}
|
||||
|
||||
/*! readU32FromChar() :
|
||||
* @return : unsigned integer value read from input in `char` format.
|
||||
* allows and interprets K, KB, KiB, M, MB and MiB suffix.
|
||||
@ -893,23 +898,19 @@ int optimizeForSize(const char* inFileName, U32 targetSpeed)
|
||||
* Note : function will exit() program if digit sequence overflows */
|
||||
static unsigned readU32FromChar(const char** stringPtr)
|
||||
{
|
||||
const char errorMsg[] = "error: numeric value too large";
|
||||
unsigned result = 0;
|
||||
while ((**stringPtr >='0') && (**stringPtr <='9')) {
|
||||
unsigned const max = (((unsigned)(-1)) / 10) - 1;
|
||||
if (result > max) {
|
||||
DISPLAY("error: numeric value too large \n");
|
||||
exit(1);
|
||||
}
|
||||
if (result > max) errorOut(errorMsg);
|
||||
result *= 10, result += **stringPtr - '0', (*stringPtr)++ ;
|
||||
}
|
||||
if ((**stringPtr=='K') || (**stringPtr=='M')) {
|
||||
unsigned const maxK = ((unsigned)(-1)) >> 10;
|
||||
if (result > maxK) errorOut(errorMsg);
|
||||
result <<= 10;
|
||||
if (**stringPtr=='M') {
|
||||
if (result > maxK) {
|
||||
DISPLAY("error: numeric value too large \n");
|
||||
exit(1);
|
||||
}
|
||||
if (result > maxK) errorOut(errorMsg);
|
||||
result <<= 10;
|
||||
}
|
||||
(*stringPtr)++; /* skip `K` or `M` */
|
||||
|
Reference in New Issue
Block a user