a2240046384be132c56a21742b551dccd09b0e3b
[haskell-directory.git] / 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_sz_stat()  { return sizeof(struct stat); }
46 HsInt prel_path_max() { return PATH_MAX; }
47 mode_t prel_R_OK() { return R_OK; }
48 mode_t prel_W_OK() { return W_OK; }
49 mode_t prel_X_OK() { return X_OK; }
50
51 mode_t prel_S_IRUSR() { return S_IRUSR; }
52 mode_t prel_S_IWUSR() { return S_IWUSR; }
53 mode_t prel_S_IXUSR() { return S_IXUSR; }
54
55 time_t prel_st_mtime(struct stat* st) { return st->st_mtime; }
56 mode_t prel_st_mode(struct stat* st) { return st->st_mode; }
57
58 HsAddr prel_d_name(struct dirent* d)
59
60 #ifndef mingw32_TARGET_OS
61   return (HsAddr)(&d->d_name);
62 #else
63   return (HsAddr)(d->d_name);
64 #endif
65 }
66
67 HsInt prel_end_of_dir()
68 {
69 #ifndef mingw32_TARGET_OS
70   return 0;
71 #else
72   return ENOENT;
73 #endif  
74 }
75