1 #include <petsc/private/ftnimpl.h> 2 3 #if defined(PETSC_HAVE_FORTRAN_CAPS) 4 #define petscfopen_ PETSCFOPEN 5 #define petscfclose_ PETSCFCLOSE 6 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 7 #define petscfopen_ petscfopen 8 #define petscfclose_ petscfclose 9 #endif 10 11 #if defined(__cplusplus) 12 extern "C" { 13 #endif 14 15 PETSC_EXTERN void petscfopen_(MPI_Comm *comm, char *fname, char *fmode, FILE **file, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2) 16 { 17 char *c1, *c2; 18 19 FIXCHAR(fname, len1, c1); 20 FIXCHAR(fmode, len2, c2); 21 *ierr = PetscFOpen(MPI_Comm_f2c(*(MPI_Fint *)&*comm), c1, c2, file); 22 if (*ierr) return; 23 FREECHAR(fname, c1); 24 FREECHAR(fmode, c2); 25 } 26 27 PETSC_EXTERN void petscfclose_(MPI_Comm *comm, FILE **file, PetscErrorCode *ierr) 28 { 29 *ierr = PetscFClose(MPI_Comm_f2c(*(MPI_Fint *)&*comm), *file); 30 } 31 32 #if defined(__cplusplus) 33 } 34 #endif 35