offset>0?"+":"-", dt->offset->hours, dt->offset->minutes);
offset>0?"+":"-", hr, mins);
log_date(int log_level, const char *prefix, ha_time_t *date_time, int flags) {	char *date_s = NULL;	char *time_s = NULL;	char *offset_s = NULL;	ha_time_t *dt = NULL;		if(flags & ha_log_local) {		crm_debug_6("Local version");		dt = date_time;	} else {		dt = date_time->normalized;	}	CRM_DEV_ASSERT(dt != NULL); if(crm_assert_failed) { return; }		if(flags & ha_log_date) {		crm_malloc0(date_s, sizeof(char)*(32));		if(date_s == NULL) {		} else if(flags & ha_date_weeks) {			snprintf(date_s, 31, "%d-W%.2d-%d",				 dt->weekyears, dt->weeks, dt->weekdays);		} else if(flags & ha_date_ordinal) {			snprintf(date_s, 31, "%d-%.3d",dt->years, dt->yeardays);		} else {			snprintf(date_s, 31, "%.4d-%.2d-%.2d",				 dt->years, dt->months, dt->days);		}	}	if(flags & ha_log_time) {		int offset = 0;		crm_malloc0(time_s, sizeof(char)*(32));		if(time_s == NULL) {			return;		} 		snprintf(time_s, 31, "%.2d:%.2d:%.2d",			 dt->hours, dt->minutes, dt->seconds);				if(dt->offset != NULL) {			offset =(dt->offset->hours * 100) + dt->offset->minutes;		}				crm_malloc0(offset_s, sizeof(char)*(32));		if((flags & ha_log_local) == 0 || offset == 0) {			snprintf(offset_s, 31, "Z");		} else {			snprintf(offset_s, 31, " %s%.2d:%.2d",				 offset>0?"+":"-",				 dt->offset->hours, dt->offset->minutes);		}	}	crm_log_maybe(log_level, "%s%s%s%s%s%s",		      prefix?prefix:"", prefix?": ":"",		      date_s?date_s:"", (date_s!=NULL&&time_s!=NULL)?" ":"",		      time_s?time_s:"", offset_s?offset_s:"");	crm_free(date_s);	crm_free(time_s);	crm_free(offset_s);}