54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// Copyright 2022 Takeshi Ishii (@mtei)
 | 
						|
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
						|
 | 
						|
#include "pseudo_sprintf.h"
 | 
						|
 | 
						|
static char *sprint_decimal(char *buf, int data) {
 | 
						|
    if (data > 9) {
 | 
						|
        buf = sprint_decimal(buf, data/10);
 | 
						|
    }
 | 
						|
    *buf++ = "0123456789"[data%10];
 | 
						|
    *buf = '\0';
 | 
						|
    return buf;
 | 
						|
}
 | 
						|
 | 
						|
static char *sprint_hex(char *buf, uint32_t data) {
 | 
						|
    if (data > 0xf) {
 | 
						|
        buf = sprint_hex(buf, data/0x10);
 | 
						|
    }
 | 
						|
    *buf++ = "0123456789abcdef"[data & 0xf];
 | 
						|
    *buf = '\0';
 | 
						|
    return buf;
 | 
						|
}
 | 
						|
 | 
						|
char *sprints(char *buf, char *src) {
 | 
						|
    while (*src) {
 | 
						|
        *buf++ = *src++;
 | 
						|
    }
 | 
						|
    *buf = '\0';
 | 
						|
    return buf;
 | 
						|
}
 | 
						|
 | 
						|
char *sprintx(char *buf, char *leadstr, uint32_t data) {
 | 
						|
    buf = sprints(buf, leadstr);
 | 
						|
    buf = sprint_hex(buf, data);
 | 
						|
    return buf;
 | 
						|
}
 | 
						|
 | 
						|
char *sprintd(char *buf, char *leadstr, int data) {
 | 
						|
    buf = sprints(buf, leadstr);
 | 
						|
    buf = sprint_decimal(buf, data);
 | 
						|
    return buf;
 | 
						|
}
 | 
						|
 | 
						|
char *sprint2d(char *buf, char *leadstr, int data) {
 | 
						|
    buf = sprints(buf, leadstr);
 | 
						|
    if (data > 99) {
 | 
						|
        return sprint_decimal(buf, data);
 | 
						|
    }
 | 
						|
    if (data < 10) {
 | 
						|
        *buf++ = ' ';
 | 
						|
    }
 | 
						|
    return sprint_decimal(buf, data);
 | 
						|
}
 |