How to implement qsort_r

Corinna Vinschen vinschen@redhat.com
Thu Dec 4 09:28:00 GMT 2014


On Dec  3 20:53, Yaakov Selkowitz wrote:
> I would like to add qsort_r to newlib.  However, there are two distinct
> signatures for this function on different platforms.
> 
> The BSDs and OS X provide:
> 
> void qsort_r(void *base, size_t nmemb, size_t size, void *thunk, int
> (*compar)(void *, const void *, const void *));
> 
> http://www.freebsd.org/cgi/man.cgi?format=html&query=qsort%283%29
> 
> Where glibc provides:
> 
> void qsort_r(void *base, size_t nmemb, size_t size, int (*compar)(const void
> *, const void *, void *), void *arg);
> 
> http://man7.org/linux/man-pages/man3/qsort.3.html
> 
> (Personally, I think *neither* of these make sense; the BSD signature with
> the glibc compar typedef would be more consistent in terms of argument
> ordering, but nobody asked my opinion on the matter. :-)
> 
> In any case, the natural place for this is in newlib, but that means we
> either have to choose one (namely glibc, since that is what more software
> will be expecting) or handle this like we do strerror_r.  Any thoughts
> before I spend more time on this?

The implementation is pretty simple either way, so, yes, we could
implement both and let the header provide both as well along the lines
of strerror_r.

Alternatively, are there any known efforts to standarize the API?
Eric, any word from the Austin group in terms of qsort_r?


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20141204/60fd9804/attachment.sig>


More information about the Newlib mailing list