mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-24 04:09:15 +01:00
82 lines
1.3 KiB
C
82 lines
1.3 KiB
C
|
|
// Simplified use of sprintf
|
|
#include "fmt.h"
|
|
#include <gccore.h>
|
|
#include <string.h>
|
|
#include <stdarg.h>
|
|
#include <stdio.h>
|
|
#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;
|
|
}
|
|
}
|
|
}
|