1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 25c6c1daeSBarry Smith 3519f805aSKarl Rupp #if defined(PETSC_HAVE_FORTRAN_CAPS) 45c6c1daeSBarry Smith #define petscinfo_ PETSCINFO 55c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE) 65c6c1daeSBarry Smith #define petscinfo_ petscinfo 75c6c1daeSBarry Smith #endif 85c6c1daeSBarry Smith 95c6c1daeSBarry Smith static PetscErrorCode PetscFixSlashN(const char *in, char **out) 105c6c1daeSBarry Smith { 115c6c1daeSBarry Smith PetscErrorCode ierr; 125c6c1daeSBarry Smith PetscInt i; 135c6c1daeSBarry Smith size_t len; 145c6c1daeSBarry Smith 155c6c1daeSBarry Smith PetscFunctionBegin; 165c6c1daeSBarry Smith ierr = PetscStrallocpy(in,out);CHKERRQ(ierr); 175c6c1daeSBarry Smith ierr = PetscStrlen(*out,&len);CHKERRQ(ierr); 185c6c1daeSBarry Smith for (i=0; i<(int)len-1; i++) { 195c6c1daeSBarry Smith if ((*out)[i] == '\\' && (*out)[i+1] == 'n') {(*out)[i] = ' '; (*out)[i+1] = '\n';} 205c6c1daeSBarry Smith } 215c6c1daeSBarry Smith PetscFunctionReturn(0); 225c6c1daeSBarry Smith } 235c6c1daeSBarry Smith 24e94e781bSJacob Faibussowitsch PETSC_EXTERN void petscinfosetfile_(char* filename, char* mode,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 25e94e781bSJacob Faibussowitsch { 26e94e781bSJacob Faibussowitsch char *t1, *t2; 27e94e781bSJacob Faibussowitsch 28e94e781bSJacob Faibussowitsch FIXCHAR(filename,len1,t1); 29e94e781bSJacob Faibussowitsch FIXCHAR(mode,len2,t2); 30e94e781bSJacob Faibussowitsch *ierr = PetscInfoSetFile(t1,t2); if (*ierr) return; 31e94e781bSJacob Faibussowitsch FREECHAR(filename,t1); 32e94e781bSJacob Faibussowitsch FREECHAR(mode,t2); 33e94e781bSJacob Faibussowitsch } 34e94e781bSJacob Faibussowitsch 35e94e781bSJacob Faibussowitsch PETSC_EXTERN void petscinfogetclass_(char *classname,PetscBool **found,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 36e94e781bSJacob Faibussowitsch { 37e94e781bSJacob Faibussowitsch char *t; 38e94e781bSJacob Faibussowitsch 39e94e781bSJacob Faibussowitsch FIXCHAR(classname,len,t); 40e94e781bSJacob Faibussowitsch *ierr = PetscInfoGetClass(t,*found);if (*ierr) return; 41e94e781bSJacob Faibussowitsch FREECHAR(classname,t); 42e94e781bSJacob Faibussowitsch } 43e94e781bSJacob Faibussowitsch 44e94e781bSJacob Faibussowitsch PETSC_EXTERN void petscinfoprocessclass_(char *classname,PetscInt *numClassID,PetscClassId *classIDs[],PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 45e94e781bSJacob Faibussowitsch { 46e94e781bSJacob Faibussowitsch char *t; 47e94e781bSJacob Faibussowitsch 48e94e781bSJacob Faibussowitsch FIXCHAR(classname,len,t); 49e94e781bSJacob Faibussowitsch *ierr = PetscInfoProcessClass(t,*numClassID,*classIDs); if (*ierr) return; 50e94e781bSJacob Faibussowitsch FREECHAR(classname,t); 51e94e781bSJacob Faibussowitsch } 52e94e781bSJacob Faibussowitsch 5319caf8f3SSatish Balay PETSC_EXTERN void petscinfo_(char* text,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1) 545c6c1daeSBarry Smith { 555c6c1daeSBarry Smith char *c1,*tmp; 565c6c1daeSBarry Smith 575c6c1daeSBarry Smith FIXCHAR(text,len1,c1); 585c6c1daeSBarry Smith *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; 595c6c1daeSBarry Smith FREECHAR(text,c1); 60*7d3de750SJacob Faibussowitsch *ierr = PetscInfo(NULL,"%s",tmp);if (*ierr) return; 618bceffaeSBarry Smith *ierr = PetscFree(tmp); 625c6c1daeSBarry Smith } 63