summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/src/solarisfixes.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/redis-unstable/src/solarisfixes.h')
-rw-r--r--examples/redis-unstable/src/solarisfixes.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/examples/redis-unstable/src/solarisfixes.h b/examples/redis-unstable/src/solarisfixes.h
new file mode 100644
index 0000000..1e75749
--- /dev/null
+++ b/examples/redis-unstable/src/solarisfixes.h
@@ -0,0 +1,34 @@
+/* Solaris specific fixes.
+ *
+ * Copyright (c) 2009-Present, Redis Ltd.
+ * All rights reserved.
+ *
+ * Licensed under your choice of (a) the Redis Source Available License 2.0
+ * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the
+ * GNU Affero General Public License v3 (AGPLv3).
+ */
+
+#if defined(__sun)
+
+#if defined(__GNUC__)
+#include <math.h>
+#undef isnan
+#define isnan(x) \
+ __extension__({ __typeof (x) __x_a = (x); \
+ __builtin_expect(__x_a != __x_a, 0); })
+
+#undef isfinite
+#define isfinite(x) \
+ __extension__ ({ __typeof (x) __x_f = (x); \
+ __builtin_expect(!isnan(__x_f - __x_f), 1); })
+
+#undef isinf
+#define isinf(x) \
+ __extension__ ({ __typeof (x) __x_i = (x); \
+ __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })
+
+#define u_int uint
+#define u_int32_t uint32_t
+#endif /* __GNUC__ */
+
+#endif /* __sun */