blob: 0d08f48ddcaabbf02079e5eb09846492e984f239 [file] [log] [blame]
#define _XOPEN_SOURCE
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "parse_time.h"
#include "misc.h"
#include "reiserfs_lib.h"
#include <time.h>
#include <stdio.h>
#include <string.h>
time_t parse_time(char *str)
{
struct tm ts;
if (strcmp(str, "now") == 0) {
return (time(NULL));
}
memset(&ts, 0, sizeof(ts));
#ifdef HAVE_STRPTIME
strptime(str, "%Y%m%d%H%M%S", &ts);
#else
sscanf(str, "%4d%2d%2d%2d%2d%2d", &ts.tm_year, &ts.tm_mon,
&ts.tm_mday, &ts.tm_hour, &ts.tm_min, &ts.tm_sec);
ts.tm_year -= 1900;
ts.tm_mon -= 1;
if (ts.tm_year < 0 || ts.tm_mon < 0 || ts.tm_mon > 11 ||
ts.tm_mday < 0 || ts.tm_mday > 31 || ts.tm_hour > 23 ||
ts.tm_min > 59 || ts.tm_sec > 61)
ts.tm_mday = 0;
#endif
if (ts.tm_mday == 0)
reiserfs_warning(stderr, "Couldn't parse date/time "
"specifier: %s", str);
return (mktime(&ts));
}