if(negate) { new_time->hours = 0 - new_time->hours; new_time->minutes = 0 - new_time->minutes; new_time->seconds = 0 - new_time->seconds; }  } else { time_t now = time(NULL); struct tm *now_tm = localtime(&now); int h_offset = now_tm->tm_gmtoff / (3600); int m_offset = (now_tm->tm_gmtoff - (3600 * h_offset)) / (60); if(h_offset < 0 && m_offset < 0) { m_offset = 0 - m_offset; } new_time->hours = h_offset; new_time->minutes = m_offset; new_time->has->hours = TRUE; new_time->has->minutes = TRUE;
parse_time_offset(char **offset_str){	ha_time_t *new_time = NULL;	crm_malloc0(new_time, sizeof(ha_time_t));	crm_malloc0(new_time->has, sizeof(ha_has_time_t));	if((*offset_str)[0] != 'Z') {		parse_time(offset_str, new_time, FALSE);	}	return new_time;}