1b45d2f2cSJed Brown #include <petsc-private/fortranimpl.h> 255fcb7f5SSatish Balay 355fcb7f5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 455fcb7f5SSatish Balay #define petscfprintf_ PETSCFPRINTF 555fcb7f5SSatish Balay #define petscprintf_ PETSCPRINTF 655fcb7f5SSatish Balay #define petscsynchronizedfprintf_ PETSCSYNCHRONIZEDFPRINTF 755fcb7f5SSatish Balay #define petscsynchronizedprintf_ PETSCSYNCHRONIZEDPRINTF 8*0ec8b6e3SBarry Smith #define petscsynchronizedflush_ PETSCSYNCHRONIZEDFLUSH 955fcb7f5SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 1055fcb7f5SSatish Balay #define petscfprintf_ petscfprintf 1155fcb7f5SSatish Balay #define petscprintf_ petscprintf 1255fcb7f5SSatish Balay #define petscsynchronizedfprintf_ petscsynchronizedfprintf 1355fcb7f5SSatish Balay #define petscsynchronizedprintf_ petscsynchronizedprintf 14*0ec8b6e3SBarry Smith #define petscsynchronizedflush_ petscsynchronizedflush 1555fcb7f5SSatish Balay #endif 1655fcb7f5SSatish Balay 17*0ec8b6e3SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscsynchronizedflush_(MPI_Fint * comm, FILE **file,int *ierr) 18*0ec8b6e3SBarry Smith { 19*0ec8b6e3SBarry Smith *ierr = PetscSynchronizedFlush(MPI_Comm_f2c( *(comm) ),*file); 20*0ec8b6e3SBarry Smith } 21*0ec8b6e3SBarry Smith 22e878f7f2SJed Brown #undef __FUNCT__ 23e878f7f2SJed Brown #define __FUNCT__ "PetscFixSlashN" 241850a936SBarry Smith static PetscErrorCode PetscFixSlashN(const char *in, char **out) 251850a936SBarry Smith { 261850a936SBarry Smith PetscErrorCode ierr; 271850a936SBarry Smith PetscInt i; 281850a936SBarry Smith size_t len; 291850a936SBarry Smith 301850a936SBarry Smith PetscFunctionBegin; 311850a936SBarry Smith ierr = PetscStrallocpy(in,out);CHKERRQ(ierr); 321850a936SBarry Smith ierr = PetscStrlen(*out,&len);CHKERRQ(ierr); 3351c0b0ecSMatthew Knepley for (i=0; i<(int)len-1; i++) { 341850a936SBarry Smith if ((*out)[i] == '\\' && (*out)[i+1] == 'n') {(*out)[i] = ' '; (*out)[i+1] = '\n';} 351850a936SBarry Smith } 361850a936SBarry Smith PetscFunctionReturn(0); 371850a936SBarry Smith } 381850a936SBarry Smith 398cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 4055fcb7f5SSatish Balay { 411850a936SBarry Smith char *c1,*tmp; 4255fcb7f5SSatish Balay 4355fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 441850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 45a542b6e8SBarry Smith *ierr = PetscFPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),*file,tmp);if (*ierr) return; 46503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 4755fcb7f5SSatish Balay FREECHAR(fname,c1); 4855fcb7f5SSatish Balay } 4955fcb7f5SSatish Balay 508cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 5155fcb7f5SSatish Balay { 521850a936SBarry Smith char *c1,*tmp; 5355fcb7f5SSatish Balay 5455fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 551850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 56a542b6e8SBarry Smith *ierr = PetscPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),tmp);if (*ierr) return; 57503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 5855fcb7f5SSatish Balay FREECHAR(fname,c1); 5955fcb7f5SSatish Balay } 6055fcb7f5SSatish Balay 618cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscsynchronizedfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 6255fcb7f5SSatish Balay { 631850a936SBarry Smith char *c1,*tmp; 6455fcb7f5SSatish Balay 6555fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 661850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 67a542b6e8SBarry Smith *ierr = PetscSynchronizedFPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),*file,tmp);if (*ierr) return; 68503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 6955fcb7f5SSatish Balay FREECHAR(fname,c1); 7055fcb7f5SSatish Balay } 7155fcb7f5SSatish Balay 728cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscsynchronizedprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 7355fcb7f5SSatish Balay { 741850a936SBarry Smith char *c1,*tmp; 7555fcb7f5SSatish Balay 7655fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 771850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 78a542b6e8SBarry Smith *ierr = PetscSynchronizedPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),tmp);if (*ierr) return; 79503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 8055fcb7f5SSatish Balay FREECHAR(fname,c1); 8155fcb7f5SSatish Balay } 8255fcb7f5SSatish Balay 83