#include "sfl.h"
#include <assert.h>
#include <ctype.h>

#if SFL_DEBUG
// printfデバッグ用文字列表示
// 普通に fprintf() 使うとマルチスレッドだから表示がおかしくなるよ
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <pspthreadman.h>
void debugMessage(const char *fmt, ...)
{
	SceUID thid = sceKernelGetThreadId();
	SceKernelThreadInfo status;
	status.size = sizeof(SceKernelThreadInfo);
	if(sceKernelReferThreadStatus(thid, &status) < 0)
		assert(0);
	
    char buf[2048];
    va_list ap;
	va_start(ap, fmt);
    vsnprintf(buf, 2048 - 1, fmt, ap);
    va_end(ap);
    buf[2048 - 1] = '\0';

	char outbuf[2080];
	strcpy(outbuf, status.name);
	strcat(outbuf, ": ");
	strcat(outbuf, buf);

	fputs(outbuf, stderr);
}
#endif

/**
 * case insensitive string compare.
 */
int string_compare(const char *lhs, const char *rhs)
{
	while(toupper(*lhs) == toupper(*rhs)) {
		if (*lhs == '\0') {
			break;
		}
		++lhs;
		++rhs;
	}
	return toupper(*lhs) - toupper(*rhs);
}

