2 * (c) The GRASP/AQUA Project, Glasgow University, 1994-
4 * Directory Runtime Support
8 #if defined(mingw32_TARGET_OS)
23 prel_mkdir(HsAddr pathName, HsInt mode)
25 #if defined(mingw32_TARGET_OS)
26 return mkdir(pathName);
28 return mkdir(pathName,mode);
33 prel_lstat(HsAddr fname, HsAddr st)
36 return lstat((const char*)fname, (struct stat*)st);
38 return stat((const char*)fname, (struct stat*)st);
42 HsInt prel_s_ISDIR(mode_t m) {return S_ISDIR(m);}
43 HsInt prel_s_ISREG(mode_t m) {return S_ISREG(m);}
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; }
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; }
54 HsAddr prel_d_name(struct dirent* d)
56 #ifndef mingw32_TARGET_OS
57 return (HsAddr)(&d->d_name);
59 return (HsAddr)(d->d_name);
63 HsInt prel_end_of_dir()
65 #ifndef mingw32_TARGET_OS
73 * read an entry from the directory stream; opt for the
74 * re-entrant friendly way of doing this, if available.
77 prel_readdir(HsAddr dirPtr, HsAddr pDirEnt)
83 static unsigned int nm_max = -1;
85 if ((struct dirent**)pDirEnt == NULL) {
93 nm_max = pathconf(res, _PC_NAME_MAX);
94 if (nm_max == -1) { nm_max = 256; }
97 p = (struct dirent*)malloc(sizeof(struct dirent) + nm_max);
98 res = readdir_r((DIR*)dirPtr, p, (struct dirent**)pDirEnt);
105 struct dirent **pDirE = (struct dirent**)pDirEnt;
111 *pDirE = readdir((DIR*)dirPtr);
112 if (*pDirE == NULL) {
121 prel_free_dirent(HsAddr dEnt)