#include <stdarg.h>

void puts(char*);
int vsprintf(char*,const char*,va_list);

int printf(const char *fmt, ...)
{
	char buf[10000];
	va_list ap;
	int r;
	
	va_start(ap,fmt);
	r = vsprintf(buf,fmt,ap);
	va_end(ap);
	puts(buf);

	return r;
}

char *strerror()
{
	return "Unknown error";
}

void perror(char *msg)
{
	printf("Error: %s\n", msg);
}

int ffs(int x)
{
	int r = 1;

	if (!x)
		return 0;
	if (!(x & 0xffff)) {
		x >>= 16;
		r += 16;
	}
	if (!(x & 0xff)) {
		x >>= 8;
		r += 8;
	}
	if (!(x & 0xf)) {
		x >>= 4;
		r += 4;
	}
	if (!(x & 3)) {
		x >>= 2;
		r += 2;
	}
	if (!(x & 1)) {
		x >>= 1;
		r += 1;
	}
	return r;
}
