rem: Xft_Family *fam;
add: Family *fam;
context: listFamilies(WMScreen *scr, WMFontPanel *panel){    FcObjectSet *os = 0;    FcFontSet	*fs;    FcPattern	*pat;    WMHashTable *families;    WMHashEnumerator enumer;    WMArray *array;    int i;    pat = FcPatternCreate();    os = FcObjectSetBuild(FC_FAMILY, FC_STYLE, 0);    fs = FcFontList(0, pat, os);    if (!fs) {        WMRunAlertPanel(scr, panel->win, _("Error"),                        _("Could not init font config library\n"), _("OK"), NULL, NULL);        return;    }    if (pat)        FcPatternDestroy (pat);    families = WMCreateHashTable(WMStringPointerHashCallbacks);    if(fs) {        for (i = 0; i < fs->nfont; i++) {            FcChar8 *family;            FcChar8 *style;            if (FcPatternGetString(fs->fonts[i],FC_FAMILY,0,&family)==FcResultMatch)                if (FcPatternGetString(fs->fonts[i],FC_STYLE,0,&style)==FcResultMatch)                    addFontToXftFamily(families, family, style);        }        FcFontSetDestroy(fs);    }    enumer = WMEnumerateHashTable(families);    while ((array = WMNextHashEnumeratorItem(&enumer))) {        WMArrayIterator i;        Xft_Family *fam;        char buffer[256];        WMListItem *item;        WM_ITERATE_ARRAY(array, fam, i) {            strcpy(buffer, fam->name);            item = WMAddListItem(panel->famLs, buffer);            item->clientData = fam;        }        WMFreeArray(array);    }    WMSortListItems(panel->famLs);    WMFreeHashTable(families);}