git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/3] compat: add qsort_s()

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 1, 2016, 20:14 UTC
Message-ID
<xmqq7f7j9zkd.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20161201193556.j2odwy3sepaxxq5a@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 7 quoted lines
> To make matters more fun, apparently[1] there are multiple variants of
> qsort_r with different argument orders. _And_ apparently Microsoft
> defines qsort_s, but it's not quite the same thing. But all of that can
> be dealt with by having more specific flags (HAVE_GNU_QSORT_R, etc).
>
> It just seems like we should be able to do a better job of using the
> system qsort in many cases.

If we were to go that route, perhaps we shouldn't have HAVE_QSORT_S so that Microsoft folks won't define it by mistake (instead perhaps call it HAVE_ISO_QSORT_S or something).

I like your suggestion in general. The body of git_qsort_s() on systems without ISO_QSORT_S can do

 - GNU qsort_r() without any change in the parameters, 
 - Microsoft qsort_s() with parameter reordered, or 
 - Apple/BSD qsort_r() with parameter reordered.
and that would cover the major platforms.

Eh, wait. BSD and Microsoft have paramters reordered in the callback comparison function. I suspect that would not fly very well.

Previous: Jeff KingNext: Jeff King
Message 5 of 16 in “string-list: make string_list_sort() reentrant”
  1. 0/3 string-list: make string_list_sort() reentrantRené Scharfe, Dec 1, 2016
  2. 1/3 compat: add qsort_s()René Scharfe, Dec 1, 2016
  3. René ScharfeDec 1, 2016
  4. Jeff KingDec 1, 2016
  5. Junio C HamanoDec 1, 2016
  6. Jeff KingDec 1, 2016
  7. Junio C HamanoDec 1, 2016
  8. René ScharfeDec 1, 2016
  9. Junio C HamanoDec 1, 2016
  10. Junio C HamanoDec 1, 2016
  11. Jeff KingDec 1, 2016
  12. René ScharfeDec 12, 2016
  13. Jeff KingDec 12, 2016
  14. René ScharfeDec 21, 2016
  15. 2/3 add QSORT_SRené Scharfe, Dec 1, 2016
  16. 3/3 string-list: use QSORT_S in string_list_sort()René Scharfe, Dec 1, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.