summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorTom Lane2017-09-22 15:00:58 +0000
committerTom Lane2017-09-22 15:00:58 +0000
commit85feb77aa09cda9ff3e12cf95c757c499dc25343 (patch)
tree313b8bb0eb9cf4cff63a92dd5345d9d5c51b3b3a /src/include
parente6023ee7fa73a2d9a2d7524f63584844b2291def (diff)
Assume wcstombs(), towlower(), and sibling functions are always present.
These functions are required by SUS v2, which is our minimum baseline for Unix platforms, and are present on all interesting Windows versions as well. Even our oldest buildfarm members have them. Thus, we were not testing the "!USE_WIDE_UPPER_LOWER" code paths, which explains why the bug fixed in commit e6023ee7f escaped detection. Per discussion, there seems to be no more real-world value in maintaining this option. Hence, remove the configure-time tests for wcstombs() and towlower(), remove the USE_WIDE_UPPER_LOWER symbol, and remove all the !USE_WIDE_UPPER_LOWER code. There's not actually all that much of the latter, but simplifying the #if nests is a win in itself. Discussion: https://postgr.es/m/20170921052928.GA188913@rfd.leadboat.com
Diffstat (limited to 'src/include')
-rw-r--r--src/include/c.h8
-rw-r--r--src/include/pg_config.h.in6
-rw-r--r--src/include/pg_config.h.win326
-rw-r--r--src/include/tsearch/ts_locale.h20
-rw-r--r--src/include/utils/pg_locale.h2
5 files changed, 4 insertions, 38 deletions
diff --git a/src/include/c.h b/src/include/c.h
index fd53010e249..b6a969787ac 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -1095,14 +1095,6 @@ extern int fdatasync(int fildes);
#define HAVE_STRTOULL 1
#endif
-/*
- * We assume if we have these two functions, we have their friends too, and
- * can use the wide-character functions.
- */
-#if defined(HAVE_WCSTOMBS) && defined(HAVE_TOWLOWER)
-#define USE_WIDE_UPPER_LOWER
-#endif
-
/* EXEC_BACKEND defines */
#ifdef EXEC_BACKEND
#define NON_EXEC_STATIC
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index 85deb29d831..2a4e9f60500 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -593,9 +593,6 @@
`HAVE_STRUCT_TM_TM_ZONE' instead. */
#undef HAVE_TM_ZONE
-/* Define to 1 if you have the `towlower' function. */
-#undef HAVE_TOWLOWER
-
/* Define to 1 if your compiler understands `typeof' or something similar. */
#undef HAVE_TYPEOF
@@ -659,9 +656,6 @@
/* Define to 1 if you have the <wchar.h> header file. */
#undef HAVE_WCHAR_H
-/* Define to 1 if you have the `wcstombs' function. */
-#undef HAVE_WCSTOMBS
-
/* Define to 1 if you have the `wcstombs_l' function. */
#undef HAVE_WCSTOMBS_L
diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32
index 27aab21be77..b6808d581b9 100644
--- a/src/include/pg_config.h.win32
+++ b/src/include/pg_config.h.win32
@@ -442,9 +442,6 @@
`HAVE_STRUCT_TM_TM_ZONE' instead. */
/* #undef HAVE_TM_ZONE */
-/* Define to 1 if you have the `towlower' function. */
-#define HAVE_TOWLOWER 1
-
/* Define to 1 if your compiler understands `typeof' or something similar. */
/* #undef HAVE_TYPEOF */
@@ -484,9 +481,6 @@
/* Define to 1 if you have the <wchar.h> header file. */
#define HAVE_WCHAR_H 1
-/* Define to 1 if you have the `wcstombs' function. */
-#define HAVE_WCSTOMBS 1
-
/* Define to 1 if you have the `wcstombs_l' function. */
#define HAVE_WCSTOMBS_L 1
diff --git a/src/include/tsearch/ts_locale.h b/src/include/tsearch/ts_locale.h
index c32f0743aa6..3ec276fc05d 100644
--- a/src/include/tsearch/ts_locale.h
+++ b/src/include/tsearch/ts_locale.h
@@ -41,27 +41,15 @@ typedef struct
#define TOUCHAR(x) (*((const unsigned char *) (x)))
-#ifdef USE_WIDE_UPPER_LOWER
-
-extern int t_isdigit(const char *ptr);
-extern int t_isspace(const char *ptr);
-extern int t_isalpha(const char *ptr);
-extern int t_isprint(const char *ptr);
-
/* The second argument of t_iseq() must be a plain ASCII character */
#define t_iseq(x,c) (TOUCHAR(x) == (unsigned char) (c))
#define COPYCHAR(d,s) memcpy(d, s, pg_mblen(s))
-#else /* not USE_WIDE_UPPER_LOWER */
-#define t_isdigit(x) isdigit(TOUCHAR(x))
-#define t_isspace(x) isspace(TOUCHAR(x))
-#define t_isalpha(x) isalpha(TOUCHAR(x))
-#define t_isprint(x) isprint(TOUCHAR(x))
-#define t_iseq(x,c) (TOUCHAR(x) == (unsigned char) (c))
-
-#define COPYCHAR(d,s) (*((unsigned char *) (d)) = TOUCHAR(s))
-#endif /* USE_WIDE_UPPER_LOWER */
+extern int t_isdigit(const char *ptr);
+extern int t_isspace(const char *ptr);
+extern int t_isalpha(const char *ptr);
+extern int t_isprint(const char *ptr);
extern char *lowerstr(const char *str);
extern char *lowerstr_with_len(const char *str, int len);
diff --git a/src/include/utils/pg_locale.h b/src/include/utils/pg_locale.h
index f3e04d4d8ce..b633511a7a5 100644
--- a/src/include/utils/pg_locale.h
+++ b/src/include/utils/pg_locale.h
@@ -110,11 +110,9 @@ extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t le
#endif
/* These functions convert from/to libc's wchar_t, *not* pg_wchar_t */
-#ifdef USE_WIDE_UPPER_LOWER
extern size_t wchar2char(char *to, const wchar_t *from, size_t tolen,
pg_locale_t locale);
extern size_t char2wchar(wchar_t *to, size_t tolen,
const char *from, size_t fromlen, pg_locale_t locale);
-#endif
#endif /* _PG_LOCALE_ */