Пример #1
0
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);
}
Пример #2
0
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;
}