--- /dev/null
+#ifndef MISBASE_H
+#define MISBASE_H
+
+/* Define the decoration we use to indicate public functions */
+#if defined(__GNUC__)
+#define MIS_EXPORT extern __attribute__((visibility ("default")))
+#else
+#define MIS_EXPORT
+#endif
+
+/* Define ssize_t if needed */
+#if defined(__WIN32__)
+typedef long ssize_t;
+#endif
+
+/* Maximum path length */
+#if !defined(MAXPATHLEN)
+#if defined(__WIN32__)
+/*
+ * On windows, we handle paths up to length MAX_PATH. However,
+ * we convert paths into UTF8 in a number of places and since
+ * each character in the path can map to up to 4 bytes in UTF8,
+ * we need to account for that.
+ */
+#define MAXPATHLEN (MAX_PATH * 4)
+#else
+#define MAXPATHLEN 1024
+#endif
+#endif
+
+/*
+ * The crazy CF situation on Windows requires this macro so we can build
+ * against either version
+ * The version of CF used by iTunes uses the system encoding as the file
+ * encoding. However we need paths to be UTF8 when we pass them into
+ * various file system APIs so we use CFStringGetCString instead. I'm
+ * told that the other CF does return UTF8 so if iTunes ever moves to
+ * that we can switch back to CFStringGetFileSystemRepresentation (5513199)
+ */
+#if defined(__WIN32__)
+#define CFStringGetFileSystemRepresentation(str, buf, len) CFStringGetCString(str, buf, len, kCFStringEncodingUTF8)
+#endif
+
+#endif