#include "usr.h"
#include <sprintf.h>
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
int errno;
static int vfdprintf(int fd, const char *format, va_list arg)
{
char buffer[1024];
int n;
if ((n = vsnprintf(buffer, sizeof buffer, format, arg)) < 0)
return -1;
return write(fd, buffer, n);
}
static int vprintf(const char *format, va_list arg)
{
return vfdprintf(STDOUT_FILENO, format, arg);
}
static int __attribute__ ((format (printf, 2, 3))) fdprintf(int fd, const char *format, ...)
{
va_list arg;
int n;
va_start(arg, format);
n = vfdprintf(fd, format, arg);
va_end(arg);
return n;
}
int __attribute__ ((format (printf, 1, 2))) printf(const char *format, ...)
{
va_list arg;
int n;
va_start(arg, format);
n = vprintf(format, arg);
va_end(arg);
return n;
}
void perror(const char *s)
{
if (s && *s)
fdprintf(STDERR_FILENO, "%s: ", s);
fdprintf(STDERR_FILENO, "failed with code=%d\n", errno);
}