if (!XmStringInitContext (&context, str)) {
/* compound strings from GetValues still need to be freed! */
XmStringFree (str);
XtWarning ("Can't convert compound string.");
return;
}
/* p keeps a running pointer thru buf as text is read */
p = buf;
while (XmStringGetNextSegment (context, &text, &tag,
&direction, &separator)) {
/* copy text into p and advance to the end of the string */
p += (strlen (strcpy (p, text)));
if (separator == True) { /* if there's a separator ... */
*p++ = '0;
*p = 0; /* add newline and null−terminate */
}
XtFree (text); /* we're done with the text; free it */
}
XmStringFreeContext (context);
XmStringFree (str);
printf ("Compound string:0s0, buf);
}
20.4 Working With Font Lists
As we have demonstrated, font lists can be set in a resource file. If your application is robust enough to handle any
particular font that the user may specify, you are encouraged to use fallback resources and the application defaults
files for all font list specifications. This technique simplifies maintenance for your application, as you do not have to
open fonts, maintain handles to them, and free them. If you are writing an internationalized application, you should
only specify font lists in resource files so that you can specify different fonts and/or font sets in the resource files for
different locales.
However, if you specifically don't want the user to override your font specifications, you can hard−code fonts within
the application using various Motif routines to create a font ...