int h_offset = now_tm->tm_gmtoff / (3600); int m_offset = (now_tm->tm_gmtoff - (3600 * h_offset)) / (60);
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') {			} else if((*offset_str)[0] == '+'		  || (*offset_str)[0] == '-'		  || isdigit((*offset_str)[0])) {		gboolean negate = FALSE;		if((*offset_str)[0] == '-') {			negate = TRUE;		}		parse_time(offset_str, new_time, FALSE);		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;	}	return new_time;}