static int print_itoa(char **buffer, size_t bufsize, unsigned long value, unsigned short base, bool upper) { const char zeichen[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; char c; int i, len; if(base <= 2 || base > 16) return 0; len = i = print_intlen(value, base); /* Don't print to buffer if bufsize is not enough. */ if (len > bufsize) return 0; do { c = zeichen[value % base]; if (upper) c = toupper(c); (*buffer)[--i] = c; value /= base; } while(value); *buffer += len; return 1; }
static int print_fill(char **buffer, char *sizec, unsigned long size, unsigned short int base, char c, int optlen) { int i, sizei, len; sizei = strtoul(sizec, NULL, 10); len = print_intlen(size, base) + optlen; if(sizei > len) { for(i = 0; i < (sizei - len); i++) { **buffer = c; *buffer += 1; } } return 0; }