shithub: fnt

ref: 2296ee3d37775d6cfd87ed27dfee46cb9b85b12b
dir: /unix/otfsys.c/

View raw version
#include "otfsys.h"
#include <stdarg.h>
#include <time.h>

#define ERRMAX 512

static char errstr[ERRMAX];

char *
otferrstr(void)
{
	return errstr;
}

void
werrstr(char *fmt, ...)
{
	va_list a;
	char f[ERRMAX], buf[ERRMAX];
	int n, withr;

	va_start(a, fmt);
	n = snprintf(f, sizeof(f), "%s", fmt);
	if((withr = (n >= 2 && f[n-2] == '%' && f[n-1] == 'r')) != 0)
		f[n-2] = 0;
	n = vsnprintf(buf, sizeof(buf), f, a);
	va_end(a);
	if(withr)
		snprintf(buf+n, sizeof(buf)-n, "%s", errstr);
	snprintf(errstr, sizeof(errstr), "%s", buf);
}

char *
fmttime(long long v)
{
	static char buf[32];
	time_t t = v;
	struct tm *tm;

	buf[0] = 0;
	if((tm = gmtime(&t)) != nil)
		strftime(buf, sizeof(buf), "%c", tm);
	return buf;
}