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 855fcb7f5SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 955fcb7f5SSatish Balay #define petscfprintf_ petscfprintf 1055fcb7f5SSatish Balay #define petscprintf_ petscprintf 1155fcb7f5SSatish Balay #define petscsynchronizedfprintf_ petscsynchronizedfprintf 1255fcb7f5SSatish Balay #define petscsynchronizedprintf_ petscsynchronizedprintf 1355fcb7f5SSatish Balay #endif 1455fcb7f5SSatish Balay 15e878f7f2SJed Brown #undef __FUNCT__ 16e878f7f2SJed Brown #define __FUNCT__ "PetscFixSlashN" 171850a936SBarry Smith static PetscErrorCode PetscFixSlashN(const char *in, char **out) 181850a936SBarry Smith { 191850a936SBarry Smith PetscErrorCode ierr; 201850a936SBarry Smith PetscInt i; 211850a936SBarry Smith size_t len; 221850a936SBarry Smith 231850a936SBarry Smith PetscFunctionBegin; 241850a936SBarry Smith ierr = PetscStrallocpy(in,out);CHKERRQ(ierr); 251850a936SBarry Smith ierr = PetscStrlen(*out,&len);CHKERRQ(ierr); 2651c0b0ecSMatthew Knepley for (i=0; i<(int)len-1; i++) { 271850a936SBarry Smith if ((*out)[i] == '\\' && (*out)[i+1] == 'n') {(*out)[i] = ' '; (*out)[i+1] = '\n';} 281850a936SBarry Smith } 291850a936SBarry Smith PetscFunctionReturn(0); 301850a936SBarry Smith } 311850a936SBarry Smith 32*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 3355fcb7f5SSatish Balay { 341850a936SBarry Smith char *c1,*tmp; 3555fcb7f5SSatish Balay 3655fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 371850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 38a542b6e8SBarry Smith *ierr = PetscFPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),*file,tmp);if (*ierr) return; 39503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 4055fcb7f5SSatish Balay FREECHAR(fname,c1); 4155fcb7f5SSatish Balay } 4255fcb7f5SSatish Balay 43*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 4455fcb7f5SSatish Balay { 451850a936SBarry Smith char *c1,*tmp; 4655fcb7f5SSatish Balay 4755fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 481850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 49a542b6e8SBarry Smith *ierr = PetscPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),tmp);if (*ierr) return; 50503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 5155fcb7f5SSatish Balay FREECHAR(fname,c1); 5255fcb7f5SSatish Balay } 5355fcb7f5SSatish Balay 54*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscsynchronizedfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 5555fcb7f5SSatish Balay { 561850a936SBarry Smith char *c1,*tmp; 5755fcb7f5SSatish Balay 5855fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 591850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 60a542b6e8SBarry Smith *ierr = PetscSynchronizedFPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),*file,tmp);if (*ierr) return; 61503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 6255fcb7f5SSatish Balay FREECHAR(fname,c1); 6355fcb7f5SSatish Balay } 6455fcb7f5SSatish Balay 65*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscsynchronizedprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 6655fcb7f5SSatish Balay { 671850a936SBarry Smith char *c1,*tmp; 6855fcb7f5SSatish Balay 6955fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 701850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 71a542b6e8SBarry Smith *ierr = PetscSynchronizedPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),tmp);if (*ierr) return; 72503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 7355fcb7f5SSatish Balay FREECHAR(fname,c1); 7455fcb7f5SSatish Balay } 7555fcb7f5SSatish Balay 76