Fix typedef clashes on AIX with <sys/types.h>

Bug 523848
This also fixes a compile problem with zero sized arrays
diff --git a/qcmsint.h b/qcmsint.h
index 078ffcb..b2e7bf6 100644
--- a/qcmsint.h
+++ b/qcmsint.h
@@ -60,7 +60,12 @@
 
 struct curveType {
 	uint32_t count;
+/* Using the C99 flexible array member syntax with IBM compiler */
+#if defined (__IBMC__) || defined (__IBMCPP__)
+	uInt16Number data[];
+#else
 	uInt16Number data[0];
+#endif
 };
 
 struct lutType {
diff --git a/qcmstypes.h b/qcmstypes.h
index 25ffa57..6394f90 100644
--- a/qcmstypes.h
+++ b/qcmstypes.h
@@ -10,6 +10,8 @@
 #if defined (__SVR4) && defined (__sun)
 /* int_types.h gets included somehow, so avoid redefining the types differently */
 #include <sys/int_types.h>
+#elif defined (_AIX)
+#include <sys/types.h>
 #else
 typedef PRInt8 int8_t;
 typedef PRUint8 uint8_t;