From 0e359a1fba75d014add3b86b20e4328b04ed2a96 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Thu, 1 Jun 2023 23:48:19 -0700 Subject: [PATCH] tuxpaint --listfonts -- sort the results --- src/tuxpaint.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/tuxpaint.c b/src/tuxpaint.c index b7de1a43d..17fe69738 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -2061,7 +2061,10 @@ static void rec_undo_buffer(void); void show_version(int details); void show_usage(int exitcode); + +int compare_font_family(const void *a, const void *b); void show_fonts(void); + static char *progname; static SDL_Cursor *get_cursor(unsigned char *bits, unsigned char *mask_bits, @@ -8118,21 +8121,35 @@ void show_usage(int exitcode) void show_fonts(void) { PangoFontMap *fontmap; PangoFontFamily **families; - int n_families; + int i, n_families; + char * * family_names; fontmap = pango_ft2_font_map_new(); pango_font_map_list_families(fontmap, &families, &n_families); - for (int i = 0; i < n_families; i++) + family_names = (char * *) malloc(sizeof(char *) * n_families); + for (i = 0; i < n_families; i++) { - const char *family_name = pango_font_family_get_name(families[i]); - - printf("%s\n", family_name); + family_names[i] = strdup(pango_font_family_get_name(families[i])); } + qsort(family_names, n_families, sizeof(char*), compare_font_family); + + for (i = 0; i < n_families; i++) + { + printf("%s\n", family_names[i]); + free(family_names[i]); + } + free(family_names); + exit(0); } +int compare_font_family(const void *a, const void *b) +{ + return strcasecmp(*(char * const*) a, *(char * const*) b); +} + /** * Compute default scale factor for stamps. *