diff options
author | Brad Richardson <everythingfunctional@protonmail.com> | 2020-10-26 17:16:44 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-26 17:16:44 -0500 |
commit | 4443986b3d5690ce4ee8bbc348834caa2040be23 (patch) | |
tree | 0553b054c43c89edab17a3d6959f7adb84648a61 /example_packages/with_c/src | |
parent | e92d9c9c406aff61d404d2afe71c416ed019beb0 (diff) | |
parent | 488bdd06ab78cec3085aa86b6dbe36a98f58eb86 (diff) | |
download | fpm-4443986b3d5690ce4ee8bbc348834caa2040be23.tar.gz fpm-4443986b3d5690ce4ee8bbc348834caa2040be23.zip |
Merge pull request #213 from everythingfunctional/bootstrap_submodule_support
Bootstrap submodule support
Diffstat (limited to 'example_packages/with_c/src')
-rw-r--r-- | example_packages/with_c/src/c_code.c | 10 | ||||
-rw-r--r-- | example_packages/with_c/src/with_c.f90 | 26 |
2 files changed, 36 insertions, 0 deletions
diff --git a/example_packages/with_c/src/c_code.c b/example_packages/with_c/src/c_code.c new file mode 100644 index 0000000..44604f0 --- /dev/null +++ b/example_packages/with_c/src/c_code.c @@ -0,0 +1,10 @@ +#include <sys/stat.h> +/* + * Decides whether a given file name is a directory. + * return 1 if file exists and is a directory + * Source (Public domain): https://github.com/urbanjost/M_system + */ +int my_isdir (const char *path) { + struct stat sb; + return stat(path, &sb) == 0 && S_ISDIR (sb.st_mode); +}
\ No newline at end of file diff --git a/example_packages/with_c/src/with_c.f90 b/example_packages/with_c/src/with_c.f90 new file mode 100644 index 0000000..edd839e --- /dev/null +++ b/example_packages/with_c/src/with_c.f90 @@ -0,0 +1,26 @@ +module with_c + use iso_c_binding, only: c_char, c_int, c_null_char + implicit none + +contains + + function system_isdir(dirname) + ! Source (Public domain): https://github.com/urbanjost/M_system + ! + implicit none + character(len=*),intent(in) :: dirname + logical :: system_isdir + + interface + function c_isdir(dirname) bind (C,name="my_isdir") result (c_ierr) + import c_char,c_int + character(kind=c_char,len=1),intent(in) :: dirname(*) + integer(kind=c_int) :: c_ierr + end function c_isdir + end interface + + system_isdir= c_isdir(trim(dirname)//c_null_char) == 1 + + end function system_isdir + +end module with_c
\ No newline at end of file |