Commit bfd8c56c authored by Nikias Bassen's avatar Nikias Bassen

Use simple sscanf for parsing dates if strptime is not available

parent b82787f1
...@@ -260,6 +260,20 @@ static void node_to_xml(node_t* node, void *xml_struct) ...@@ -260,6 +260,20 @@ static void node_to_xml(node_t* node, void *xml_struct)
return; return;
} }
static void parse_date(const char *strval, struct tm *btime)
{
if (!btime) return;
memset(btime, 0, sizeof(struct tm));
if (!strval) return;
#ifdef strptime
strptime((char*)strval, "%Y-%m-%dT%H:%M:%SZ", btime);
#else
sscanf(strval, "%d-%d-%dT%d:%d:%dZ", &btime->tm_year, &btime->tm_mon, &btime->tm_mday, &btime->tm_hour, &btime->tm_min, &btime->tm_sec);
btime->tm_year-=1900;
btime->tm_mon--;
#endif
}
static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node) static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node)
{ {
xmlNodePtr node = NULL; xmlNodePtr node = NULL;
...@@ -330,8 +344,7 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node) ...@@ -330,8 +344,7 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node)
time_t time = 0; time_t time = 0;
if (strlen(strval) >= 11) { if (strlen(strval) >= 11) {
struct tm btime; struct tm btime;
memset(&btime, 0, sizeof(struct tm)); parse_date((const char*)strval, &btime);
strptime((char*)strval, "%Y-%m-%dT%H:%M:%SZ", &btime);
time = mktime(&btime); time = mktime(&btime);
} }
data->timeval.tv_sec = (long)time; data->timeval.tv_sec = (long)time;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment