shithub: riscv

ref: 2c9e3861a54e22498fb2e3226defe4393b20b202
dir: /sys/src/cmd/upas/common/totm.c/

View raw version
#include <common.h>

static char mtab[] = "JanFebMarAprMayJunJulAugSepOctNovDec";

int
ctimetotm(char *s, Tm *tm)
{
	char buf[32];

	if(strlen(s) < 28)
		return -1;
	snprint(buf, sizeof buf, "%s", s);
	memset(tm, 0, sizeof *tm);
	buf[7] = 0;
	tm->mon = (strstr(mtab, buf+4) - mtab)/3;
	tm->mday = atoi(buf+8);
	tm->hour = atoi(buf+11);
	tm->min = atoi(buf+14);
	tm->sec = atoi(buf+17);
	tm->zone[0] = buf[20];
	tm->zone[1] = buf[21];
	tm->zone[2] = buf[22];
	tm->year = atoi(buf+24) - 1900;
	return 0;
}

int
fromtotm(char *s, Tm *tm)
{
	char buf[256], *f[3];

	snprint(buf, sizeof buf, "%s", s);
	if(getfields(buf, f, nelem(f), 0, " ") != 3)
		return -1;
	return ctimetotm(f[2], tm);
}