// Simplified use of sprintf #include "fmt.h" #include #include #include #include #include "memory/mem2.hpp" int currentStr = 0; static char fmt_buffer[MAX_USES][MAX_MSG_SIZE]; char *fmt(const char *format, ...) { va_list va; va_start(va, format); currentStr = (currentStr + 1) % MAX_USES; vsnprintf(fmt_buffer[currentStr], MAX_MSG_SIZE - 1, format, va); fmt_buffer[currentStr][MAX_MSG_SIZE - 1] = '\0'; va_end(va); return fmt_buffer[currentStr]; } char *fmt_malloc(const char *format, ...) { va_list va; va_start(va, format); char *new_buffer = (char*)MEM2_alloc(MAX_MSG_SIZE); if(new_buffer != NULL) { vsnprintf(new_buffer, MAX_MSG_SIZE - 1, format, va); new_buffer[MAX_MSG_SIZE - 1] = '\0'; } va_end(va); return new_buffer; } void Asciify(wchar_t *str) { const wchar_t *ptr = str; wchar_t *ctr = str; while(*ptr != '\0') { switch(*ptr) { case 0x14c: *ctr = 0x4f; break; } *ctr = *ptr; ++ptr; ++ctr; } *ctr = '\0'; } void Asciify2(char *str) { u8 i = 0; for(i = 0; i < strlen(str); ++i) { if(str[i] < 0x20 || str[i] > 0x7F) str[i] = '_'; else switch(str[i]) { case '*': case '\"': case '|': case '<': case '>': case '?': case ':': str[i] = '_'; break; default: break; } } }