xref: /petsc/src/sys/info/ftn-custom/zverboseinfof.c (revision 5975b3b6e3931510e2a64a701673cbe1930c6f42)
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