diff options
-rw-r--r-- | src/c.c | 27 | ||||
-rw-r--r-- | src/fpm_filesystem.F90 | 4 |
2 files changed, 29 insertions, 2 deletions
@@ -1,6 +1,11 @@ #include <sys/stat.h> #include <dirent.h> +#ifdef __APPLE__ +DIR * opendir$INODE64( const char * dirName ); +struct dirent * readdir$INODE64( DIR * dir ); +#endif + int c_is_dir(const char *path) { struct stat m; @@ -12,3 +17,25 @@ const char *get_d_name(struct dirent *d) { return (const char *) d->d_name; } + + + +DIR *c_opendir(const char *dirname){ + +#ifdef __APPLE__ + return opendir$INODE64(dirname); +#else + return opendir(dirname); +#endif + +} + +struct dirent *c_readdir(DIR *dirp){ + +#ifdef __APPLE__ + return readdir$INODE64(dirp); +#else + return readdir(dirp); +#endif + +}
\ No newline at end of file diff --git a/src/fpm_filesystem.F90 b/src/fpm_filesystem.F90 index 9ae95cc..2851bfd 100644 --- a/src/fpm_filesystem.F90 +++ b/src/fpm_filesystem.F90 @@ -19,13 +19,13 @@ use,intrinsic :: iso_fortran_env, only : stdin=>input_unit, stdout=>output_unit, #ifndef FPM_BOOTSTRAP interface - function c_opendir(dir) result(r) bind(c, name="opendir") + function c_opendir(dir) result(r) bind(c, name="c_opendir") import c_char, c_ptr character(kind=c_char), intent(in) :: dir(*) type(c_ptr) :: r end function c_opendir - function c_readdir(dir) result(r) bind(c, name="readdir") + function c_readdir(dir) result(r) bind(c, name="c_readdir") import c_ptr type(c_ptr), intent(in), value :: dir type(c_ptr) :: r |