Mercurial > gnulib
annotate lib/qsort_r.c @ 40231:9b3c79fdfe0b
strtod: fix clash with strtold
Problem reported for RHEL 5 by Jesse Caldwell (Bug#34817).
* lib/strtod.c (compute_minus_zero, minus_zero):
Simplify by remving the macro / external variable,
and having just a function. User changed. This avoids
the need for an external variable that might clash.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Mon, 11 Mar 2019 16:40:29 -0700 |
parents | b06060465f09 |
children |
rev | line source |
---|---|
17744
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
1 /* Reentrant sort function. |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
2 |
40057
b06060465f09
maint: Run 'make update-copyright'
Paul Eggert <eggert@cs.ucla.edu>
parents:
19484
diff
changeset
|
3 Copyright 2014-2019 Free Software Foundation, Inc. |
17744
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
4 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
5 This program is free software; you can redistribute it and/or modify |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
6 it under the terms of the GNU General Public License as published by |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
7 the Free Software Foundation; either version 2, or (at your option) |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
8 any later version. |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
9 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
10 This program is distributed in the hope that it will be useful, |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
13 GNU General Public License for more details. |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
14 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
15 You should have received a copy of the GNU General Public License along |
19190 | 16 with this program; if not, see <https://www.gnu.org/licenses/>. */ |
17744
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
17 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
18 /* Written by Paul Eggert. */ |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
19 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
20 #include <config.h> |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
21 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
22 #include <stdlib.h> |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
23 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
24 /* This file is compiled only when the system has a qsort_r that needs |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
25 to be replaced because it has the BSD signature rather than the GNU |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
26 signature. */ |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
27 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
28 struct thunk |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
29 { |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
30 int (*cmp) (void const *, void const *, void *); |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
31 void *arg; |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
32 }; |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
33 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
34 static int |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
35 thunk_cmp (void *thunk, void const *a, void const *b) |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
36 { |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
37 struct thunk *th = thunk; |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
38 return th->cmp (a, b, th->arg); |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
39 } |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
40 |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
41 void |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
42 qsort_r (void *base, size_t nmemb, size_t size, |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
43 int (*cmp) (void const *, void const *, void *), |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
44 void *arg) |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
45 { |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
46 # undef qsort_r |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
47 struct thunk thunk; |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
48 thunk.cmp = cmp; |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
49 thunk.arg = arg; |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
50 qsort_r (base, nmemb, size, &thunk, thunk_cmp); |
9c8d212db038
qsort_r: new module, for GNU-style qsort_r
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff
changeset
|
51 } |