3076b83a680125c8ecb01c19cbc137390eb4b241
[ghc-hetmet.git] / ghc / lib / std / cbits / dirUtils.c
1 /* 
2  * (c) The GRASP/AQUA Project, Glasgow University, 1994-
3  *
4  * Directory Runtime Support
5  */
6 #include "dirUtils.h"
7
8 #if defined(mingw32_TARGET_OS)
9 #include <windows.h>
10 #endif
11
12 #ifdef HAVE_STDLIB_H
13 # include <stdlib.h>
14 #endif
15 #ifdef HAVE_STDDEF_H
16 # include <stddef.h>
17 #endif
18 #ifdef HAVE_ERRNO_H
19 # include <errno.h>
20 #endif
21
22 HsInt
23 prel_mkdir(HsAddr pathName, HsInt mode)
24 {
25 #if defined(mingw32_TARGET_OS)
26   return mkdir(pathName);
27 #else
28   return mkdir(pathName,mode);
29 #endif
30 }
31
32 HsInt
33 prel_lstat(HsAddr fname, HsAddr st)
34 {
35 #ifdef HAVE_LSTAT
36   return lstat((const char*)fname, (struct stat*)st);
37 #else
38   return stat((const char*)fname, (struct stat*)st);
39 #endif
40 }
41
42 HsInt prel_s_ISDIR(mode_t m) {return S_ISDIR(m);}
43 HsInt prel_s_ISREG(mode_t m) {return S_ISREG(m);}
44
45 HsInt prel_path_max() { return PATH_MAX; }
46 mode_t prel_R_OK() { return R_OK; }
47 mode_t prel_W_OK() { return W_OK; }
48 mode_t prel_X_OK() { return X_OK; }
49
50 mode_t prel_S_IRUSR() { return S_IRUSR; }
51 mode_t prel_S_IWUSR() { return S_IWUSR; }
52 mode_t prel_S_IXUSR() { return S_IXUSR; }
53
54 HsAddr prel_d_name(struct dirent* d)
55
56 #ifndef mingw32_TARGET_OS
57   return (HsAddr)(&d->d_name);
58 #else
59   return (HsAddr)(d->d_name);
60 #endif
61 }
62
63 HsInt prel_end_of_dir()
64 {
65 #ifndef mingw32_TARGET_OS
66   return 0;
67 #else
68   return ENOENT;
69 #endif  
70 }
71