From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 6a526772 for ; Fri, 29 Jul 2016 10:30:03 -0500 (EST) Date: Fri, 29 Jul 2016 10:30:03 -0500 (EST) Message-Id: <15148708720367194796.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Sort sections and architectures in the pages table. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Sort sections and architectures in the pages table. Modified Files: -------------- mdocml: dba.c Revision Data ------------- Index: dba.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/dba.c,v retrieving revision 1.2 retrieving revision 1.3 diff -Ldba.c -Ldba.c -u -p -r1.2 -r1.3 --- dba.c +++ dba.c @@ -33,6 +33,7 @@ static void *prepend(const char *, char); static void dba_pages_write(struct dba_array *); static int compare_names(const void *, const void *); +static int compare_strings(const void *, const void *); static void dba_macros_write(struct dba_array *); static void dba_macro_write(struct dba_array *); @@ -243,24 +244,26 @@ prepend(const char *instr, char inbyte) static void dba_pages_write(struct dba_array *pages) { - struct dba_array *page, *names; - void *entry; + struct dba_array *page, *entry; int32_t pos_pages, pos_end; pos_pages = dba_array_writelen(pages, 5); dba_array_FOREACH(pages, page) { dba_array_setpos(page, DBP_NAME, dba_tell()); - names = dba_array_get(page, DBP_NAME); - dba_array_sort(names, compare_names); - dba_array_writelst(names); + entry = dba_array_get(page, DBP_NAME); + dba_array_sort(entry, compare_names); + dba_array_writelst(entry); } dba_array_FOREACH(pages, page) { dba_array_setpos(page, DBP_SECT, dba_tell()); - dba_array_writelst(dba_array_get(page, DBP_SECT)); + entry = dba_array_get(page, DBP_SECT); + dba_array_sort(entry, compare_strings); + dba_array_writelst(entry); } dba_array_FOREACH(pages, page) { if ((entry = dba_array_get(page, DBP_ARCH)) != NULL) { dba_array_setpos(page, DBP_ARCH, dba_tell()); + dba_array_sort(entry, compare_strings); dba_array_writelst(entry); } else dba_array_setpos(page, DBP_ARCH, 0); @@ -292,6 +295,15 @@ compare_names(const void *vp1, const voi strcasecmp(cp1 + 1, cp2 + 1); } +static int +compare_strings(const void *vp1, const void *vp2) +{ + const char *cp1, *cp2; + + cp1 = *(char **)vp1; + cp2 = *(char **)vp2; + return strcmp(cp1, cp2); +} /*** functions for handling macros ************************************/ -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv