1 /* -----------------------------------------------------------------------------
3 * (c) The University of Glasgow 2001-2004
5 * Definitions for package `directory' which are visible in Haskell land.
7 * ---------------------------------------------------------------------------*/
9 #ifndef __HSDIRECTORY_H__
10 #define __HSDIRECTORY_H__
12 #include "HsDirectoryConfig.h"
15 #include <sys/types.h>
26 #if defined(__MINGW32__)
30 #if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)
31 extern int __hscore_getFolderPath(HWND hwndOwner,
38 /* -----------------------------------------------------------------------------
41 These functions are given as inlines here for when compiling via C,
42 but we also generate static versions into the cbits library for
43 when compiling to native code.
44 -------------------------------------------------------------------------- */
47 # if defined(_MSC_VER)
48 # define INLINE extern __inline
50 # define INLINE static inline
54 /* A size that will contain many path names, but not necessarily all
55 * (PATH_MAX is not defined on systems with unlimited path length,
58 INLINE HsInt __hscore_long_path_size() {
66 #ifdef __GLASGOW_HASKELL__
67 INLINE int __hscore_R_OK() { return R_OK; }
68 INLINE int __hscore_W_OK() { return W_OK; }
69 INLINE int __hscore_X_OK() { return X_OK; }
71 INLINE mode_t __hscore_S_IRUSR() { return S_IRUSR; }
72 INLINE mode_t __hscore_S_IWUSR() { return S_IWUSR; }
73 INLINE mode_t __hscore_S_IXUSR() { return S_IXUSR; }
76 #if defined(__MINGW32__)
78 /* Make sure we've got the reqd CSIDL_ constants in scope;
79 * w32api header files are lagging a bit in defining the full set.
81 #if !defined(CSIDL_APPDATA)
82 #define CSIDL_APPDATA 0x001a
84 #if !defined(CSIDL_PERSONAL)
85 #define CSIDL_PERSONAL 0x0005
87 #if !defined(CSIDL_PROFILE)
88 #define CSIDL_PROFILE 0x0028
90 #if !defined(CSIDL_WINDOWS)
91 #define CSIDL_WINDOWS 0x0024
94 INLINE int __hscore_CSIDL_PROFILE() { return CSIDL_PROFILE; }
95 INLINE int __hscore_CSIDL_APPDATA() { return CSIDL_APPDATA; }
96 INLINE int __hscore_CSIDL_WINDOWS() { return CSIDL_WINDOWS; }
97 INLINE int __hscore_CSIDL_PERSONAL() { return CSIDL_PERSONAL; }
100 #endif /* __HSDIRECTORY_H__ */