diff options
author | Kurtis Rader <krader@skepticism.us> | 2016-05-18 17:46:13 -0700 |
---|---|---|
committer | Kurtis Rader <krader@skepticism.us> | 2016-05-19 18:42:34 -0700 |
commit | 46be5ac468db923bd3d19c55638b723aa760cd4e (patch) | |
tree | 44726156923b2243b946e11101242e543656de76 /src/fallback.h | |
parent | 30ea7cc3f8a5d56ad30dc749ea374363c15f312a (diff) |
make fish buildable on OS X Snow Leopard
I noticed that the `test_convert()` function was randomly failing when
run on OS X Snow Leopard. I tracked it down to the `mbrtowc()` function on
that OS being broken. Explicitly testing for UTF-8 prefixes that identify
a sequence longer than four bytes (which the Unicode standard made illegal
long ago) keeps us from having encoding errors on those OS's.
This also makes the errors reported by the `test_convert()` function actually
useful and readable.
Lastly, it makes it possible to build fish on OS X Snow Leopard.
Diffstat (limited to 'src/fallback.h')
-rw-r--r-- | src/fallback.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/fallback.h b/src/fallback.h index b28e7b17..a3143f09 100644 --- a/src/fallback.h +++ b/src/fallback.h @@ -62,13 +62,20 @@ char *tparm_solaris_kludge(char *str, ...); /// these functions only exist on 10.7+. /// /// On other platforms, use what's detected at build time. -#if __APPLE__ && __DARWIN_C_LEVEL >= 200809L +#if __APPLE__ +#if __DARWIN_C_LEVEL >= 200809L wchar_t *wcsdup_use_weak(const wchar_t *); int wcscasecmp_use_weak(const wchar_t *, const wchar_t *); int wcsncasecmp_use_weak(const wchar_t *s1, const wchar_t *s2, size_t n); #define wcsdup(a) wcsdup_use_weak((a)) #define wcscasecmp(a, b) wcscasecmp_use_weak((a), (b)) #define wcsncasecmp(a, b, c) wcsncasecmp_use_weak((a), (b), (c)) +#else +wchar_t *wcsdup(const wchar_t *in); +int wcscasecmp(const wchar_t *a, const wchar_t *b); +int wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n); +wchar_t *wcsndup(const wchar_t *in, size_t c); +#endif #endif //__APPLE__ #ifndef HAVE_WCSNDUP |