qsort_tmpl_strcmp-patch
application/octet-stream
Filename: qsort_tmpl_strcmp-patch
Type: application/octet-stream
Part: 0
Message:
Re: A qsort template
diff --git a/src/backend/tsearch/ts_utils.c b/src/backend/tsearch/ts_utils.c
index ed16a2e25a..920fbaafc4 100644
--- a/src/backend/tsearch/ts_utils.c
+++ b/src/backend/tsearch/ts_utils.c
@@ -134,7 +134,16 @@ readstoplist(const char *fname, StopList *s, char *(*wordop) (const char *))
/* Sort to allow binary searching */
if (s->stop && s->len > 0)
- qsort(s->stop, s->len, sizeof(char *), pg_qsort_strcmp);
+ qsort_strcmp(s->stop, s->len, sizeof(char *));
+}
+
+/*
+ * qsort comparator wrapper for strcmp.
+ */
+static int
+strcmp_cmp(const void *a, const void *b)
+{
+ return strcmp(*(const char *const *) a, *(const char *const *) b);
}
bool
@@ -142,5 +151,5 @@ searchstoplist(StopList *s, char *key)
{
return (s->stop && s->len > 0 &&
bsearch(&key, s->stop, s->len,
- sizeof(char *), pg_qsort_strcmp)) ? true : false;
+ sizeof(char *), strcmp_cmp)) ? true : false;
}
diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l
index 7885a169bb..7f0719b64c 100644
--- a/src/backend/utils/misc/guc-file.l
+++ b/src/backend/utils/misc/guc-file.l
@@ -1072,7 +1072,7 @@ ParseConfigDirectory(const char *includedir,
{
int i;
- qsort(filenames, num_filenames, sizeof(char *), pg_qsort_strcmp);
+ qsort_strcmp(filenames, num_filenames, sizeof(char *));
for (i = 0; i < num_filenames; i++)
{
if (!ParseConfigFile(filenames[i], true,
diff --git a/src/include/port.h b/src/include/port.h
index 6486db9fdd..441f0c485d 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -496,9 +496,10 @@ extern int pqGethostbyname(const char *name,
struct hostent **result,
int *herrno);
+/* port/qsort.c */
extern void pg_qsort(void *base, size_t nel, size_t elsize,
int (*cmp) (const void *, const void *));
-extern int pg_qsort_strcmp(const void *a, const void *b);
+extern void qsort_strcmp(void *base, size_t nel, size_t elsize);
#define qsort(a,b,c,d) pg_qsort(a,b,c,d)
diff --git a/src/port/qsort.c b/src/port/qsort.c
index 7879e6cd56..ca30df5bc6 100644
--- a/src/port/qsort.c
+++ b/src/port/qsort.c
@@ -12,11 +12,11 @@
#define ST_DEFINE
#include "lib/sort_template.h"
-/*
- * qsort comparator wrapper for strcmp.
- */
-int
-pg_qsort_strcmp(const void *a, const void *b)
-{
- return strcmp(*(const char *const *) a, *(const char *const *) b);
-}
+#define ST_SORT qsort_strcmp
+#define ST_ELEMENT_TYPE_VOID
+#define ST_COMPARE(a, b) \
+ strcmp(*(const char *const *) (a), *(const char *const *) (b))
+#define ST_SCOPE extern
+#define ST_DECLARE
+#define ST_DEFINE
+#include "lib/sort_template.h"