static void example8(void) { printf ("\n\n ******** example8. XML datetime deserialization ********\n"); char xml_dttm[] = "2007-02-13T12:39:14-03:30"; XML_DATETIME dttm; if (ws_deserialize_datetime(xml_dttm, &dttm)) { printf("deserialization failed\n"); return; } printf("XML datetime = %s\n", xml_dttm); printf("deserialed = %u-%u-%uT%u:%u:%u %i\n", dttm.tm.tm_year, dttm.tm.tm_mon, dttm.tm.tm_mday, dttm.tm.tm_hour, dttm.tm.tm_min, dttm.tm.tm_sec, dttm.tz_min); }
void wsman_set_expiretime(WsXmlNodeH node, unsigned long * expire, WsmanFaultCodeType *fault_code) { struct timeval tv; time_t timeout; char *text; XML_DATETIME tmx; gettimeofday(&tv, NULL); text = ws_xml_get_node_text(node); *fault_code = WSMAN_DETAIL_OK; if (text == NULL) { *fault_code = WSEN_INVALID_EXPIRATION_TIME; return; } debug("wsen:Expires = %s", text); if (text[0] == 'P') { // xml duration if (ws_deserialize_duration(text, &timeout)) { *fault_code = WSEN_INVALID_EXPIRATION_TIME; goto DONE; } *expire = tv.tv_sec + timeout; goto DONE; } // timeout is XML datetime type if (ws_deserialize_datetime(text, &tmx)) { *fault_code = WSEN_UNSUPPORTED_EXPIRATION_TYPE; goto DONE; } timeout = mktime(&(tmx.tm)) + 60*tmx.tz_min; *expire = timeout; DONE: return; }