[leafnode-list] Bug in listgroup?
Matthias Andree
ma at dt.e-technik.uni-dortmund.de
Sun Jan 2 23:53:17 CET 2005
Matthias Andree <ma at dt.e-technik.uni-dortmund.de> writes:
> Turns out we had most utility functions in place and reading a directory
> linearly should not be too expensive, please try this patch for
> LISTGROUP (do not copy & paste, but save the body of this article to a
> file and redirect patch's input) and let me know if it works - seems
> fine for me and is already committed to the DARCS repository (see
> <http://home.pages.de/~mandree/leafnode/beta/darcs/>):
...
On top of the previous patch, you'll need this for compliance with the
upcoming NNTP standard (draft 25 snapshot 5, backwards compatible with
RFC-2980):
Sun Jan 2 23:50:37 CET 2005 Matthias Andree <matthias.andree at gmx.de>
* sort numerically, not lexicographically.
--- leafnode-2-darcs-old/nntpd.c 2005-01-02 23:51:59.000000000 +0100
+++ leafnode-2-darcs-new/nntpd.c 2005-01-02 23:49:38.000000000 +0100
@@ -2012,10 +2012,15 @@ doxover(/*@null@*/ const struct newsgrou
}
}
-static int str_comp(const void *p1, const void *p2) {
+static int strnum_comp(const void *p1, const void *p2) {
char *const *s1 = p1;
char *const *s2 = p2;
- return strcmp(*s1, *s2);
+ unsigned long u1, u2;
+ if (!get_ulong(*s1, &u1)) return 0;
+ if (!get_ulong(*s2, &u2)) return 0;
+ if (u1 == u2) return 0;
+ if (u1 < u2) return -1;
+ return 1;
}
static /*@null@*/ /*@dependent@*/ struct newsgroup *
@@ -2065,7 +2070,7 @@ dolistgroup(/*@null@*/ struct newsgroup
char **t = dirlist(".", DIRLIST_ALLNUM, &ul), **i;
nntpprintf_as("211 Article list for %s follows", g->name);
if (t) {
- qsort(t, ul, sizeof(char *), str_comp);
+ qsort(t, ul, sizeof(char *), strnum_comp);
for (i = t; *i; i++)
nntpprintf_as("%s", *i);
free_dirlist(t);
--
Matthias Andree
More information about the leafnode-list
mailing list