CHECK_SPACE(2 + strlen(font_data->name));
parse_omit_name(oc, font_data, pattern)    XOC		oc;    FontData	font_data;    char	*pattern;{    char	*font_name = (char *) NULL;    char	*last = (char *) NULL;    char	*base_name;    char	buf[BUFSIZE];    int		length = 0;    int		num_fields;    if(is_match_charset(font_data, pattern) == True) {	strcpy(buf, pattern);	length = strlen(pattern);	if (font_name = get_font_name(oc, buf)) {	    font_data->xlfd_name = (char *)Xmalloc(strlen(font_name) + 1);	    if(font_data->xlfd_name == NULL) {		Xfree(font_name);		return (-1);	    }	    strcpy(font_data->xlfd_name, font_name);	    Xfree(font_name);	    return True;	}    }    strcpy(buf, pattern);    length = strlen(pattern);    last = buf + length - 1;    /*      * Plug in the charset/encoding specified in the XLC_LOCALE file     * into the *right* place in the XLFD name.     */    for (num_fields = 0, base_name = buf; *base_name != '\0'; base_name++)	if (*base_name == '-') num_fields++;    switch (num_fields) {    case 12:	/* this is the best way to have specifed the fontset */	*++last = '-';	break;    case 13:	/* got the charset, not the encoding, zap the charset */	last = strrchr (buf, '-');	num_fields = 12;	break;    case 14:	/* got the charset and the encoding, zap 'em */	last = strrchr (buf, '-');	*last = '\0';	last = strrchr (buf, '-');	num_fields = 12;	break;    default:	/* punt */	if (length > 1 && *last == '*' && *(last - 1) == '-') {	    if (length > 3 && *(last - 2) == '*' && *(last - 3) == '-')		last -= 3;	    else		last--;	} else {	    *++last = '-';	}	break;    }    last++;    strcpy(last, font_data->name);    if (font_name = get_font_name(oc, buf)) {	font_data->xlfd_name = (char *)Xmalloc(strlen(font_name) + 1);	if(font_data->xlfd_name == NULL) {	    Xfree(font_name);	    return (-1);	}	strcpy(font_data->xlfd_name, font_name);	Xfree(font_name);	return True;    }    while (num_fields < 12) {	*last = '*';	*(last + 1) = '-';	strcpy(last + 2, font_data->name);	num_fields++; 	last+=2;	if (font_name = get_font_name(oc, buf)) {	    font_data->xlfd_name = (char *)Xmalloc(strlen(font_name) + 1);	    if(font_data->xlfd_name == NULL) {		Xfree(font_name);		return (-1);	    }	    strcpy(font_data->xlfd_name, font_name);	    Xfree(font_name);	    return True;	}    }    return False;}