1#ifndef MISBASE_H 2#define MISBASE_H 3 4/* Define the decoration we use to indicate public functions */ 5#if defined(__GNUC__) 6#define MIS_EXPORT extern __attribute__((visibility ("default"))) 7#else 8#define MIS_EXPORT 9#endif 10 11/* Define ssize_t if needed */ 12#if defined(__WIN32__) 13typedef long ssize_t; 14#endif 15 16/* Maximum path length */ 17#if !defined(MAXPATHLEN) 18#if defined(__WIN32__) 19/* 20 * On windows, we handle paths up to length MAX_PATH. However, 21 * we convert paths into UTF8 in a number of places and since 22 * each character in the path can map to up to 4 bytes in UTF8, 23 * we need to account for that. 24 */ 25#define MAXPATHLEN (MAX_PATH * 4) 26#else 27#define MAXPATHLEN 1024 28#endif 29#endif 30 31/* 32 * The crazy CF situation on Windows requires this macro so we can build 33 * against either version 34 * The version of CF used by iTunes uses the system encoding as the file 35 * encoding. However we need paths to be UTF8 when we pass them into 36 * various file system APIs so we use CFStringGetCString instead. I'm 37 * told that the other CF does return UTF8 so if iTunes ever moves to 38 * that we can switch back to CFStringGetFileSystemRepresentation (5513199) 39 */ 40#if defined(__WIN32__) 41#define CFStringGetFileSystemRepresentation(str, buf, len) CFStringGetCString(str, buf, len, kCFStringEncodingUTF8) 42#endif 43 44#endif 45