From 272e57235cd60a2e65ac8258d96a02eb3939b687 Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 25 Mar 2011 10:41:05 +0000 Subject: git update until 25 Mar 2011 xserver fontconfig glproto libXau libXft libXmu libfontenc libxcb mesa mkfontscale pixman randrproto xkeyboard-config xtrans xwininfo updated following packages: xproto-7.0.21 xineramaproto-1.2.1 libXt-1.1.1 libxkbfile-1.0.7 libXpm-3.5.9 libXfont-1.4.3 libXaw-1.0.9 bdftopcf-1.0.3 encodings-1.0.4 fixesproto-5.0 font-adobe-100dpi-1.0.3 font-adobe-75dpi-1.0.3 font-adobe-utopia-100dpi-1.0.4 font-adobe-utopia-75dpi-1.0.4 font-adobe-utopia-type1-1.0.4 font-alias-1.0.3 font-arabic-misc-1.0.3 font-bh-100dpi-1.0.3 font-bh-75dpi-1.0.3 font-bh-lucidatypewriter-100dpi-1.0.3 font-bh-lucidatypewriter-75dpi-1.0.3 font-bh-ttf-1.0.3 font-bh-type1-1.0.3 font-bitstream-100dpi-1.0.3 font-bitstream-75dpi-1.0.3 font-bitstream-speedo-1.0.2 font-bitstream-type1-1.0.3 font-cronyx-cyrillic-1.0.3 font-cursor-misc-1.0.3 font-daewoo-misc-1.0.3 font-dec-misc-1.0.3 font-ibm-type1-1.0.3 font-isas-misc-1.0.3 font-jis-misc-1.0.3 font-micro-misc-1.0.3 font-misc-cyrillic-1.0.3 font-misc-ethiopic-1.0.3 font-misc-meltho-1.0.3 font-misc-misc-1.1.2 font-mutt-misc-1.0.3 font-schumacher-misc-1.1.2 font-screen-cyrillic-1.0.4 font-sony-misc-1.0.3 font-sun-misc-1.0.3 font-util-1.2.0 font-winitzki-cyrillic-1.0.3 font-xfree86-type1-1.0.4 --- mkfontscale/list.c | 45 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) (limited to 'mkfontscale/list.c') diff --git a/mkfontscale/list.c b/mkfontscale/list.c index 2f5bc2b8c..a10b5ed4c 100644 --- a/mkfontscale/list.c +++ b/mkfontscale/list.c @@ -19,7 +19,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/programs/mkfontscale/list.c,v 1.5 2003/07/04 16:24:30 eich Exp $ */ #include #include @@ -27,12 +26,6 @@ #include #include "list.h" -#ifdef NEED_SNPRINTF -#undef SCOPE -#define SCOPE static -#include "snprintf.c" -#endif - int listMember(char *elt, ListPtr list) { @@ -195,8 +188,10 @@ makeList(char **a, int n, ListPtr old, int begin) current = first; for(i = 1; i < n; i++) { next = malloc(sizeof(ListRec)); - if(!next) + if(!next) { + destroyList(first); return NULL; + } next->value = a[i]; next->next = NULL; @@ -224,6 +219,40 @@ reverseList(ListPtr old) return new; } +/* qsort helper for sorting list entries */ +static int +compareListEntries(const void *a, const void *b) +{ + const ListPtr lista = *(const ListPtr *) a; + const ListPtr listb = *(const ListPtr *) b; + + return strcmp(lista->value, listb->value); +} + +ListPtr +sortList(ListPtr old) +{ + int i; + int l = listLength(old); + ListPtr n; + ListPtr *sorted = malloc(l * sizeof(ListPtr)); + + if (sorted == NULL) + return old; + + for (n = old, i = 0; n != NULL; n = n->next) { + sorted[i++] = n; + } + qsort(sorted, i, sizeof(ListPtr), compareListEntries); + n = sorted[0]; + for (i = 0; i < (l - 1); i++) { + sorted[i]->next = sorted[i+1]; + } + sorted[i]->next = NULL; + free(sorted); + return n; +} + void destroyList(ListPtr old) { -- cgit v1.2.3