print (minor): add spaces around operator for readability
This commit is contained in:
parent
e7f93bfeab
commit
c7cb5b0f55
94
lib/print.c
94
lib/print.c
|
@ -56,11 +56,11 @@ static void print_printed(size_t* length, size_t printed)
|
|||
static size_t print_char(char** str, size_t* size, char c)
|
||||
{
|
||||
size_t length = 1; // remember how many characters have been printed or should have been added on string (normally just one)
|
||||
if (0==c) { // don't print string termination character
|
||||
if (0 == c) { // don't print string termination character
|
||||
length = 0; // remember we didn't print anything
|
||||
} else if (NULL==str || NULL==*str || NULL==size) { // character should not be saved on string
|
||||
} else if (NULL == str || NULL == *str || NULL == size) { // character should not be saved on string
|
||||
length = putc(c); // print on user define output
|
||||
} else if (*size>1) { // there is enough space in the string to store the character
|
||||
} else if (*size > 1) { // there is enough space in the string to store the character
|
||||
**str = c; // add provided character to string
|
||||
*str += 1; // go to next character on string
|
||||
*size -= 1; // remember we used one character on string
|
||||
|
@ -98,9 +98,9 @@ static size_t print_unsigned(char** str, size_t* size, uint64_t u, uint32_t padd
|
|||
uint8_t digits = 0; // to count the number of digits
|
||||
size_t length = 0; // number of characters printed
|
||||
do {
|
||||
number[digits++] = '0'+(u%10); // store digit
|
||||
number[digits++] = '0'+(u % 10); // store digit
|
||||
u /= 10; // go to next digit
|
||||
} while (u>0);
|
||||
} while (u > 0);
|
||||
if (sign) { // print sign
|
||||
print_printed(&length, print_char(str, size, '+')); // we only have positive numbers
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ static size_t print_unsigned(char** str, size_t* size, uint64_t u, uint32_t padd
|
|||
print_printed(&length, print_char(str, size, '0')); // print 0
|
||||
}
|
||||
for (uint8_t digit = 0; digit < digits; digit++) { // go through all digits
|
||||
print_printed(&length, print_char(str, size, number[digits-digit-1])); // print digit (in reverse order)
|
||||
print_printed(&length, print_char(str, size, number[digits - digit - 1])); // print digit (in reverse order)
|
||||
}
|
||||
return length; // return number of characters printed
|
||||
}
|
||||
|
@ -161,15 +161,15 @@ static size_t print_float(char** str, size_t* size, double f, uint32_t padding,
|
|||
double f_abs = fabs(f); // only work using the absolute value now that the sign is printed
|
||||
// get the exponent
|
||||
int8_t exponent = 0; // exponent min/max for double is 37
|
||||
if (f_abs<1.0) {
|
||||
while (f_abs<pow(10.0, exponent-1)) { // find negative exponent, base 10
|
||||
if (f_abs < 1.0) {
|
||||
while (f_abs < pow(10.0, exponent - 1)) { // find negative exponent, base 10
|
||||
exponent -= 1; // decrement in deci
|
||||
}
|
||||
if (padding) { // respect padding wish
|
||||
exponent -= padding;
|
||||
}
|
||||
} else {
|
||||
while (f_abs>=pow(10.0, exponent)) { // find the positive exponent, base 10
|
||||
while (f_abs >= pow(10.0, exponent)) { // find the positive exponent, base 10
|
||||
exponent += 3; // increment in kilo
|
||||
}
|
||||
if (padding) { // respect padding wish
|
||||
|
@ -185,7 +185,7 @@ static size_t print_float(char** str, size_t* size, double f, uint32_t padding,
|
|||
if (fractional) {
|
||||
print_printed(&length, print_char(str, size, '.')); // print decimal point
|
||||
f_abs -= (uint64_t)f_abs; // remove integer part
|
||||
for (uint32_t frac=0; frac<fractional; frac++) { // print fractional parts
|
||||
for (uint32_t frac = 0; frac < fractional; frac++) { // print fractional parts
|
||||
f_abs *= 10.0;
|
||||
print_printed(&length, print_unsigned(str, size, f_abs, 0, false));
|
||||
f_abs -= (uint64_t)f_abs;
|
||||
|
@ -198,7 +198,7 @@ static size_t print_float(char** str, size_t* size, double f, uint32_t padding,
|
|||
}
|
||||
} else { // f=0
|
||||
// print sign
|
||||
if (f<0) {
|
||||
if (f < 0) {
|
||||
print_printed(&length, print_char(str, size, '-')); // print sign
|
||||
} else if (sign) {
|
||||
print_printed(&length, print_char(str, size, '+')); // print sign
|
||||
|
@ -222,12 +222,12 @@ static size_t print_float(char** str, size_t* size, double f, uint32_t padding,
|
|||
static size_t print_nibble(char** str, size_t* size, uint8_t nibble, bool upcase) {
|
||||
size_t length = 0; // number of characters printed
|
||||
nibble &= 0x0f; // ensure we only have a nibble
|
||||
if (nibble<10) {
|
||||
print_printed(&length, print_char(str, size, '0'+nibble));
|
||||
if (nibble < 10) {
|
||||
print_printed(&length, print_char(str, size, '0' + nibble));
|
||||
} else if (upcase) {
|
||||
print_printed(&length, print_char(str, size, 'A'+nibble-10));
|
||||
print_printed(&length, print_char(str, size, 'A' + nibble - 10));
|
||||
} else {
|
||||
print_printed(&length, print_char(str, size, 'a'+nibble-10));
|
||||
print_printed(&length, print_char(str, size, 'a' + nibble - 10));
|
||||
}
|
||||
return length; // return number of characters printed
|
||||
}
|
||||
|
@ -249,28 +249,28 @@ static size_t print_hex(char** str, size_t* size, uint64_t hex, uint32_t padding
|
|||
}
|
||||
uint8_t digits = 0; // number of digits to print
|
||||
// figure out number of digits to print
|
||||
if (hex>0xffffffffffffffUL) {
|
||||
if (hex > 0xffffffffffffffUL) {
|
||||
digits = 16;
|
||||
} else if (hex>0xffffffffffffUL) {
|
||||
} else if (hex > 0xffffffffffffUL) {
|
||||
digits = 14;
|
||||
} else if (hex>0xffffffffffUL) {
|
||||
} else if (hex > 0xffffffffffUL) {
|
||||
digits = 12;
|
||||
} else if (hex>0xffffffffUL) {
|
||||
} else if (hex > 0xffffffffUL) {
|
||||
digits = 10;
|
||||
} else if (hex>0xffffffUL) {
|
||||
} else if (hex > 0xffffffUL) {
|
||||
digits = 8;
|
||||
} else if (hex>0xffffUL) {
|
||||
} else if (hex > 0xffffUL) {
|
||||
digits = 6;
|
||||
} else if (hex>0xffUL) {
|
||||
} else if (hex > 0xffUL) {
|
||||
digits = 4;
|
||||
} else {
|
||||
digits = 2;
|
||||
}
|
||||
for (uint32_t zeros = digits; zeros<padding; zeros++) { // print padding 0's
|
||||
for (uint32_t zeros = digits; zeros < padding; zeros++) { // print padding 0's
|
||||
print_printed(&length, print_char(str, size, '0')); // print 0
|
||||
}
|
||||
for (uint8_t digit = 0; digit < digits; digit++) { // go through all digits
|
||||
print_printed(&length, print_nibble(str, size, hex>>((digits-digit-1)*4), upcase)); // print nibble (in reverse order)
|
||||
print_printed(&length, print_nibble(str, size, hex >> ((digits - digit - 1) * 4), upcase)); // print nibble (in reverse order)
|
||||
}
|
||||
return length; // return number of characters printed
|
||||
}
|
||||
|
@ -288,10 +288,10 @@ static size_t print_bits(char** str, size_t* size, uint64_t u, uint32_t padding,
|
|||
uint8_t digits = 0; // to count the number of digits
|
||||
size_t length = 0; // number of characters printed
|
||||
do {
|
||||
bits[digits++] = '0'+(u&0x1); // store bit
|
||||
bits[digits++] = '0' + (u & 0x1); // store bit
|
||||
u >>= 1; // go to next bit
|
||||
} while (u>0);
|
||||
if (digits>sizeof(bits)) { // prevent buffer underflow
|
||||
} while (u > 0);
|
||||
if (digits > sizeof(bits)) { // prevent buffer underflow
|
||||
return 0;
|
||||
}
|
||||
if (prefix) { // print prefix
|
||||
|
@ -302,7 +302,7 @@ static size_t print_bits(char** str, size_t* size, uint64_t u, uint32_t padding,
|
|||
print_printed(&length, print_char(str, size, '0')); // print 0
|
||||
}
|
||||
for (uint8_t digit = 0; digit < digits; digit++) { // go through all bits
|
||||
print_printed(&length, print_char(str, size, bits[digits-digit-1])); // print bit (in reverse order)
|
||||
print_printed(&length, print_char(str, size, bits[digits - digit - 1])); // print bit (in reverse order)
|
||||
}
|
||||
return length; // return number of characters printed
|
||||
}
|
||||
|
@ -323,63 +323,63 @@ static size_t vsnprintf(char** str, size_t* size, const char *format, va_list va
|
|||
while (*format) { // go through format string
|
||||
padding = 0; // reset padding
|
||||
sign = false; // reset sign
|
||||
if ('%'!=*format) { // check for format specifier prefix
|
||||
if ('%' != *format) { // check for format specifier prefix
|
||||
print_printed(&length, print_char(str, size, *format++)); // print character (no interpretation needed)
|
||||
} else {
|
||||
format++; // go to format specifier
|
||||
if (0==*format) { // end of string detected
|
||||
if (0 == *format) { // end of string detected
|
||||
print_error |= PRINT_ERROR_MALFORMED; // set error
|
||||
goto end;
|
||||
}
|
||||
// check if sign need to be printed
|
||||
if ('+'==*format) { // sign required
|
||||
if ('+' == *format) { // sign required
|
||||
sign = true; // remember sign is required
|
||||
format++; // go to padding number
|
||||
if (0==*format) { // end of string detected
|
||||
if (0 == *format) { // end of string detected
|
||||
print_error |= PRINT_ERROR_MALFORMED; // set error
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
// check padding
|
||||
if ('0'==*format) { // padding required
|
||||
if ('0' == *format) { // padding required
|
||||
padding = 0; // reset padding
|
||||
format++; // go to padding number
|
||||
while (*format>='0' && *format<='9') {
|
||||
if (padding>UINT32_MAX/10) { // check for overflow
|
||||
while (*format >= '0' && *format <= '9') {
|
||||
if (padding > UINT32_MAX / 10) { // check for overflow
|
||||
print_error |= PRINT_ERROR_UNSUPPORTED; // set error
|
||||
goto end;
|
||||
}
|
||||
padding *= 10; // go to next magnitude
|
||||
if (padding>UINT32_MAX-(*format-'0')) { // check for overflow
|
||||
if (padding > UINT32_MAX - (*format - '0')) { // check for overflow
|
||||
print_error |= PRINT_ERROR_UNSUPPORTED; // set error
|
||||
goto end;
|
||||
}
|
||||
padding += *format-'0'; // save digit
|
||||
padding += *format - '0'; // save digit
|
||||
format++; // go to next character
|
||||
}
|
||||
if (0==*format) { // end of string detected
|
||||
if (0 == *format) { // end of string detected
|
||||
print_error |= PRINT_ERROR_MALFORMED; // set error
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
// check fractional
|
||||
if ('.'==*format) { // fractional required
|
||||
if ('.' == *format) { // fractional required
|
||||
fractional = 0; // reset fractional
|
||||
format++; // go to fractional number
|
||||
while (*format>='0' && *format<='9') {
|
||||
if (fractional>UINT32_MAX/10) { // check for overflow
|
||||
while (*format >= '0' && *format <= '9') {
|
||||
if (fractional > UINT32_MAX / 10) { // check for overflow
|
||||
print_error |= PRINT_ERROR_UNSUPPORTED; // set error
|
||||
goto end;
|
||||
}
|
||||
fractional *= 10; // go to next magnitude
|
||||
if (fractional>UINT32_MAX-(*format-'0')) { // check for overflow
|
||||
if (fractional > UINT32_MAX - (*format - '0')) { // check for overflow
|
||||
print_error |= PRINT_ERROR_UNSUPPORTED; // set error
|
||||
goto end;
|
||||
}
|
||||
fractional += *format-'0'; // save digit
|
||||
fractional += *format - '0'; // save digit
|
||||
format++; // go to next character
|
||||
}
|
||||
if (0==*format) { // end of string detected
|
||||
if (0 == *format) { // end of string detected
|
||||
print_error |= PRINT_ERROR_MALFORMED; // set error
|
||||
goto end;
|
||||
}
|
||||
|
@ -435,9 +435,9 @@ static size_t vsnprintf(char** str, size_t* size, const char *format, va_list va
|
|||
}
|
||||
}
|
||||
end:
|
||||
if (NULL!=str && NULL!=*str && NULL!=size) { // when working on a string
|
||||
**str='\0'; // enforce null termination
|
||||
if (*size>0) {
|
||||
if (NULL != str && NULL != *str && NULL != size) { // when working on a string
|
||||
**str = '\0'; // enforce null termination
|
||||
if (*size > 0) {
|
||||
*size -= 1; // remember we used memory
|
||||
} else {
|
||||
print_error |= PRINT_ERROR_TRUNCATED; // indicate we truncated the string
|
||||
|
|
Loading…
Reference in New Issue