53 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 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);
 | |
| }
 | 
