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 PetscInt i; 125c6c1daeSBarry Smith size_t len; 135c6c1daeSBarry Smith 145c6c1daeSBarry Smith PetscFunctionBegin; 159566063dSJacob Faibussowitsch PetscCall(PetscStrallocpy(in, out)); 169566063dSJacob Faibussowitsch PetscCall(PetscStrlen(*out, &len)); 175c6c1daeSBarry Smith for (i = 0; i < (int)len - 1; i++) { 18*5975b3b6SBarry Smith if ((*out)[i] == '\\' && (*out)[i + 1] == 'n') { 19*5975b3b6SBarry Smith (*out)[i] = ' '; 20*5975b3b6SBarry Smith (*out)[i + 1] = '\n'; 21*5975b3b6SBarry Smith } 225c6c1daeSBarry Smith } 233ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 245c6c1daeSBarry Smith } 255c6c1daeSBarry Smith 26e94e781bSJacob Faibussowitsch PETSC_EXTERN void petscinfosetfile_(char *filename, char *mode, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2) 27e94e781bSJacob Faibussowitsch { 28e94e781bSJacob Faibussowitsch char *t1, *t2; 29e94e781bSJacob Faibussowitsch 30e94e781bSJacob Faibussowitsch FIXCHAR(filename, len1, t1); 31e94e781bSJacob Faibussowitsch FIXCHAR(mode, len2, t2); 32*5975b3b6SBarry Smith *ierr = PetscInfoSetFile(t1, t2); 33*5975b3b6SBarry Smith if (*ierr) return; 34e94e781bSJacob Faibussowitsch FREECHAR(filename, t1); 35e94e781bSJacob Faibussowitsch FREECHAR(mode, t2); 36e94e781bSJacob Faibussowitsch } 37e94e781bSJacob Faibussowitsch 38e94e781bSJacob Faibussowitsch PETSC_EXTERN void petscinfogetclass_(char *classname, PetscBool **found, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 39e94e781bSJacob Faibussowitsch { 40e94e781bSJacob Faibussowitsch char *t; 41e94e781bSJacob Faibussowitsch 42e94e781bSJacob Faibussowitsch FIXCHAR(classname, len, t); 43*5975b3b6SBarry Smith *ierr = PetscInfoGetClass(t, *found); 44*5975b3b6SBarry Smith if (*ierr) return; 45e94e781bSJacob Faibussowitsch FREECHAR(classname, t); 46e94e781bSJacob Faibussowitsch } 47e94e781bSJacob Faibussowitsch 48e94e781bSJacob Faibussowitsch PETSC_EXTERN void petscinfoprocessclass_(char *classname, PetscInt *numClassID, PetscClassId *classIDs[], PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 49e94e781bSJacob Faibussowitsch { 50e94e781bSJacob Faibussowitsch char *t; 51e94e781bSJacob Faibussowitsch 52e94e781bSJacob Faibussowitsch FIXCHAR(classname, len, t); 53*5975b3b6SBarry Smith *ierr = PetscInfoProcessClass(t, *numClassID, *classIDs); 54*5975b3b6SBarry Smith if (*ierr) return; 55e94e781bSJacob Faibussowitsch FREECHAR(classname, t); 56e94e781bSJacob Faibussowitsch } 57e94e781bSJacob Faibussowitsch 5819caf8f3SSatish Balay PETSC_EXTERN void petscinfo_(char *text, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1) 595c6c1daeSBarry Smith { 605c6c1daeSBarry Smith char *c1, *tmp; 615c6c1daeSBarry Smith 625c6c1daeSBarry Smith FIXCHAR(text, len1, c1); 63*5975b3b6SBarry Smith *ierr = PetscFixSlashN(c1, &tmp); 64*5975b3b6SBarry Smith if (*ierr) return; 655c6c1daeSBarry Smith FREECHAR(text, c1); 66*5975b3b6SBarry Smith *ierr = PetscInfo(NULL, "%s", tmp); 67*5975b3b6SBarry Smith if (*ierr) return; 688bceffaeSBarry Smith *ierr = PetscFree(tmp); 695c6c1daeSBarry Smith } 70