1*b45d2f2cSJed 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 1555fcb7f5SSatish Balay EXTERN_C_BEGIN 1655fcb7f5SSatish Balay 17e878f7f2SJed Brown #undef __FUNCT__ 18e878f7f2SJed Brown #define __FUNCT__ "PetscFixSlashN" 191850a936SBarry Smith static PetscErrorCode PetscFixSlashN(const char *in, char **out) 201850a936SBarry Smith { 211850a936SBarry Smith PetscErrorCode ierr; 221850a936SBarry Smith PetscInt i; 231850a936SBarry Smith size_t len; 241850a936SBarry Smith 251850a936SBarry Smith PetscFunctionBegin; 261850a936SBarry Smith ierr = PetscStrallocpy(in,out);CHKERRQ(ierr); 271850a936SBarry Smith ierr = PetscStrlen(*out,&len);CHKERRQ(ierr); 2851c0b0ecSMatthew Knepley for (i=0; i<(int)len-1; i++) { 291850a936SBarry Smith if ((*out)[i] == '\\' && (*out)[i+1] == 'n') {(*out)[i] = ' '; (*out)[i+1] = '\n';} 301850a936SBarry Smith } 311850a936SBarry Smith PetscFunctionReturn(0); 321850a936SBarry Smith } 331850a936SBarry Smith 3455fcb7f5SSatish Balay void PETSC_STDCALL petscfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 3555fcb7f5SSatish Balay { 361850a936SBarry Smith char *c1,*tmp; 3755fcb7f5SSatish Balay 3855fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 391850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 40a542b6e8SBarry Smith *ierr = PetscFPrintf(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*file,tmp);if (*ierr) return; 41503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 4255fcb7f5SSatish Balay FREECHAR(fname,c1); 4355fcb7f5SSatish Balay } 4455fcb7f5SSatish Balay 4555fcb7f5SSatish Balay void PETSC_STDCALL petscprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 4655fcb7f5SSatish Balay { 471850a936SBarry Smith char *c1,*tmp; 4855fcb7f5SSatish Balay 4955fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 501850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 51a542b6e8SBarry Smith *ierr = PetscPrintf(MPI_Comm_f2c(*(MPI_Fint *)&*comm),tmp);if (*ierr) return; 52503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 5355fcb7f5SSatish Balay FREECHAR(fname,c1); 5455fcb7f5SSatish Balay } 5555fcb7f5SSatish Balay 5655fcb7f5SSatish Balay void PETSC_STDCALL petscsynchronizedfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 5755fcb7f5SSatish Balay { 581850a936SBarry Smith char *c1,*tmp; 5955fcb7f5SSatish Balay 6055fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 611850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 62a542b6e8SBarry Smith *ierr = PetscSynchronizedFPrintf(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*file,tmp);if (*ierr) return; 63503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 6455fcb7f5SSatish Balay FREECHAR(fname,c1); 6555fcb7f5SSatish Balay } 6655fcb7f5SSatish Balay 6755fcb7f5SSatish Balay void PETSC_STDCALL petscsynchronizedprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 6855fcb7f5SSatish Balay { 691850a936SBarry Smith char *c1,*tmp; 7055fcb7f5SSatish Balay 7155fcb7f5SSatish Balay FIXCHAR(fname,len1,c1); 721850a936SBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 73a542b6e8SBarry Smith *ierr = PetscSynchronizedPrintf(MPI_Comm_f2c(*(MPI_Fint *)&*comm),tmp);if (*ierr) return; 74503cfb0cSBarry Smith *ierr = PetscFree(tmp);if (*ierr) return; 7555fcb7f5SSatish Balay FREECHAR(fname,c1); 7655fcb7f5SSatish Balay } 7755fcb7f5SSatish Balay 7855fcb7f5SSatish Balay EXTERN_C_END 79