My Project
Loading...
Searching...
No Matches
reporter.cc File Reference
#include "misc/auxiliary.h"
#include "reporter/reporter.h"
#include "resources/feResource.h"
#include "resources/feFopen.h"
#include "omalloc/omalloc.h"
#include <stdlib.h>
#include <stdio.h>
#include "misc/mylimits.h"
#include <stdarg.h>
#include <sys/stat.h>
#include <ctype.h>
#include <unistd.h>

Go to the source code of this file.

Macros

#define fePutChar(c)
#define INITIAL_PRINT_BUFFER   24*1024L
#define MAX_FILE_BUFFER   4*4096
#define warn_str   "// ** "

Functions

void StringAppend (const char *fmt,...)
void StringAppendS (const char *st)
void StringSetS (const char *st)
char * StringEndS ()
void WerrorS_batch (const char *s)
void Werror (const char *fmt,...)
void WarnS (const char *s)
void Warn (const char *fmt,...)
void SPrintStart ()
static void SPrintS (const char *s)
char * SPrintEnd ()
void PrintS (const char *s)
void PrintLn ()
void Print (const char *fmt,...)
void PrintNSpaces (const int n)
const char * eati (const char *s, int *i)
void feStringAppendResources (int warn)

Variables

STATIC_VAR long feBufferLength =0
STATIC_VAR char * feBuffer =NULL
STATIC_VAR long feBufferLength_save [8]
STATIC_VAR char * feBuffer_save [8]
STATIC_VAR int feBuffer_cnt =0
STATIC_VAR char * feBufferStart_save [8]
VAR char * feErrors =NULL
VAR int feErrorsLen =0
VAR BOOLEAN feWarn = TRUE
VAR BOOLEAN feOut = TRUE
const char feNotImplemented [] ="not implemented"
VAR int feProt = FALSE
VAR FILE * feProtFile
STATIC_VAR char * feBufferStart
VAR void(* WarnS_callback )(const char *s) = NULL
STATIC_VAR char * sprint = NULL
STATIC_VAR char * sprint_backup = NULL

Macro Definition Documentation

◆ fePutChar

#define fePutChar ( c)
Value:
fputc((unsigned char)(c),stdout)

Definition at line 30 of file reporter.cc.

◆ INITIAL_PRINT_BUFFER

#define INITIAL_PRINT_BUFFER   24*1024L

Definition at line 34 of file reporter.cc.

◆ MAX_FILE_BUFFER

#define MAX_FILE_BUFFER   4*4096

Definition at line 38 of file reporter.cc.

◆ warn_str

#define warn_str   "// ** "

Function Documentation

◆ eati()

const char * eati ( const char * s,
int * i )

Definition at line 377 of file reporter.cc.

378{
379 int l=0;
380
381 if (*s >= '0' && *s <= '9')
382 {
383 *i = 0;
384 while (*s >= '0' && *s <= '9')
385 {
386 *i *= 10;
387 *i += *s++ - '0';
388 l++;
389 if ((l>=MAX_INT_LEN)||((*i) <0))
390 {
391 s-=l;
392 Werror("`%s` greater than %d(max. integer representation)",
393 s,MAX_INT_VAL);
394 return s;
395 }
396 }
397 }
398 else *i = 1;
399 return s;
400}
int l
Definition cfEzgcd.cc:100
int i
Definition cfEzgcd.cc:132
const CanonicalForm int s
Definition facAbsFact.cc:51
const int MAX_INT_VAL
Definition mylimits.h:12
const int MAX_INT_LEN
Definition mylimits.h:13
void Werror(const char *fmt,...)
Definition reporter.cc:189

◆ feStringAppendResources()

void feStringAppendResources ( int warn)

Definition at line 402 of file reporter.cc.

403{
404 int i = 0;
405 char* r;
406 StringAppend("%-10s:\t%s\n", "argv[0]", feArgv0);
407 while (feResourceConfigs[i].key != NULL)
408 {
409 r = feResource(feResourceConfigs[i].key, warn);
410 StringAppend("%-10s:\t%s\n", feResourceConfigs[i].key,
411 (r != NULL ? r : ""));
412 i++;
413 }
414}
#define StringAppend
Definition emacs.cc:79
VAR char * feArgv0
Definition feResource.cc:19
VAR feResourceConfig_s feResourceConfigs[]
Definition feResource.cc:41
static char * feResource(feResourceConfig config, int warn)
#define NULL
Definition omList.c:12

◆ Print()

void Print ( const char * fmt,
... )

Definition at line 319 of file reporter.cc.

320{
321 if (sprint != NULL)
322 {
323 va_list ap;
324 va_start(ap, fmt);
326 int ls = strlen(fmt);
327 if (fmt != NULL && ls > 0)
328 {
329 char* ns;
330 int l = strlen(sprint);
331 ns = (char*) omAlloc(sizeof(char)*(ls + l + 512));
332 if (l > 0) strcpy(ns, sprint);
333
334#ifdef HAVE_VSNPRINTF
335 l = vsnprintf(&(ns[l]), ls+511, fmt, ap);
336 assume(l != -1);
337#else
338 vsprintf(&(ns[l]), fmt, ap);
339#endif
340 omCheckAddr(ns);
341 omFree(sprint);
342 sprint = ns;
343 }
344 va_end(ap);
345 return;
346 }
347 else if (feOut)
348 {
349 va_list ap;
350 va_start(ap, fmt);
351 int l=0;
352 long ls=strlen(fmt);
353 char *s=(char *)omAlloc0(ls+512);
354#ifdef HAVE_VSNPRINTF
355 l = vsnprintf(s, ls+511, fmt, ap);
356 if ((l==-1)||(s[l]!='\0')||(l!=(int)strlen(s)))
357 {
358 printf("Print problem: l=%d, fmt=>>%s<<\n",l,fmt);
359 }
360#else
361 vsprintf(s, fmt, ap);
362#endif
363 PrintS(s);
364 omFree(s);
365 va_end(ap);
366 }
367}
#define assume(x)
Definition mod2.h:389
Definition ap.h:40
#define omCheckAddr(addr)
#define omAlloc(size)
#define omFree(addr)
#define omAlloc0(size)
void PrintS(const char *s)
Definition reporter.cc:288
STATIC_VAR char * sprint
Definition reporter.cc:248
VAR BOOLEAN feOut
Definition reporter.cc:50

◆ PrintLn()

void PrintLn ( )

Definition at line 314 of file reporter.cc.

315{
316 PrintS("\n");
317}

◆ PrintNSpaces()

void PrintNSpaces ( const int n)

Definition at line 368 of file reporter.cc.

369{
370 int l=n-1;
371 while(l>=0) { PrintS(" "); l--; }
372}

◆ PrintS()

void PrintS ( const char * s)

Definition at line 288 of file reporter.cc.

289{
290 if (sprint != NULL)
291 {
292 SPrintS(s);
293 return;
294 }
295 else if (feOut) /* do not print when option --no-out was given */
296 {
297
299 {
301 }
302 else
303 {
304 fwrite(s,1,strlen(s),stdout);
305 fflush(stdout);
306 if (feProt&SI_PROT_O)
307 {
308 fwrite(s,1,strlen(s),feProtFile);
309 }
310 }
311 }
312}
VAR void(* PrintS_callback)(const char *s)
Definition feFopen.cc:22
VAR int feProt
Definition reporter.cc:56
static void SPrintS(const char *s)
Definition reporter.cc:260
VAR FILE * feProtFile
Definition reporter.cc:57
#define SI_PROT_O
Definition reporter.h:54

◆ SPrintEnd()

char * SPrintEnd ( )

Definition at line 277 of file reporter.cc.

278{
279 char* ns = sprint;
282 omCheckAddr(ns);
283 return ns;
284}
STATIC_VAR char * sprint_backup
Definition reporter.cc:249

◆ SPrintS()

void SPrintS ( const char * s)
inlinestatic

Definition at line 260 of file reporter.cc.

261{
263 if ((s == NULL)||(*s == '\0')) return;
264 int ls = strlen(s);
265
266 char* ns;
267 int l = strlen(sprint);
268 ns = (char*) omAlloc((l + ls + 1)*sizeof(char));
269 if (l > 0) strcpy(ns, sprint);
270
271 strcpy(&(ns[l]), s);
272 omFree(sprint);
273 sprint = ns;
275}

◆ SPrintStart()

void SPrintStart ( )

Definition at line 250 of file reporter.cc.

251{
252 if (sprint!=NULL)
253 {
254 if (sprint_backup!=NULL) WerrorS("internal error: SPrintStart");
256 }
257 sprint = omStrDup("");
258}
void WerrorS(const char *s)
Definition feFopen.cc:24
#define omStrDup(s)

◆ StringAppend()

void StringAppend ( const char * fmt,
... )

Definition at line 61 of file reporter.cc.

62{
63 va_list ap;
64 char *s = feBufferStart; /*feBuffer + strlen(feBuffer);*/
65 int vs;
66 long more;
67 va_start(ap, fmt);
68 if ((more=feBufferStart-feBuffer+strlen(fmt)+100)>feBufferLength)
69 {
70 more = ((more + (8*1024-1))/(8*1024))*(8*1024);
71 int l=s-feBuffer;
73 more);
74#if (!defined(SING_NDEBUG)) && (!defined(OM_NDEBUG))
76#endif
77 feBufferLength=more;
78 s=feBuffer+l;
79#ifndef BSD_SPRINTF
81#endif
82 }
83//#ifdef BSD_SPRINTF
84// vsprintf(s, fmt, ap);
85// while (*s!='\0') s++;
86// feBufferStart =s;
87//#else
88#ifdef HAVE_VSNPRINTF
89 vs = vsnprintf(s, feBufferLength - (feBufferStart - feBuffer), fmt, ap);
90 if (vs == -1)
91 {
92 assume(0);
94 }
95 else
96 {
97 feBufferStart += vs;
98 }
99#else
100 feBufferStart += vsprintf(s, fmt, ap);
101#endif
102//#endif
104 va_end(ap);
105}
#define omReallocSize(addr, o_size, size)
#define omCheckAddrSize(addr, size)
STATIC_VAR char * feBuffer
Definition reporter.cc:40
STATIC_VAR char * feBufferStart
Definition reporter.cc:59
STATIC_VAR long feBufferLength
Definition reporter.cc:39
#define omMarkAsStaticAddr(A)
Definition xalloc.h:245

◆ StringAppendS()

void StringAppendS ( const char * st)

Definition at line 107 of file reporter.cc.

108{
109 if (*st!='\0')
110 {
111 /* feBufferStart is feBuffer + strlen(feBuffer);*/
112 int l=strlen(st);
113 long more;
114 int ll=feBufferStart-feBuffer;
115 if ((more=ll+2+l)>feBufferLength)
116 {
117 more = ((more + (8*1024-1))/(8*1024))*(8*1024);
119 more);
120 feBufferLength=more;
122 }
123 strncat(feBufferStart, st,l);
125 }
126}
#define omreallocSize(addr, o_size, size)

◆ StringEndS()

char * StringEndS ( )

Definition at line 151 of file reporter.cc.

152{
153 char *r=feBuffer;
154 feBuffer_cnt--;
155 assume(feBuffer_cnt >=0);
159 if (strlen(r)<1024)
160 {
161 // if the used buffer is a "small block",
162 // substitute the "large" initial block by a small one
163 char *s=omStrDup(r); omFree(r); r=s;
164 }
165 return r;
166}
STATIC_VAR char * feBufferStart_save[8]
Definition reporter.cc:44
STATIC_VAR char * feBuffer_save[8]
Definition reporter.cc:42
STATIC_VAR long feBufferLength_save[8]
Definition reporter.cc:41
STATIC_VAR int feBuffer_cnt
Definition reporter.cc:43

◆ StringSetS()

void StringSetS ( const char * st)

Definition at line 128 of file reporter.cc.

129{
136 feBuffer_cnt++;
138 int l=strlen(st);
139 long more;
140 if (l>feBufferLength)
141 {
142 more = ((l + (4*1024-1))/(4*1024))*(4*1024);
144 more);
145 feBufferLength=more;
146 }
147 strcpy(feBuffer,st);
149}
void * ADDRESS
Definition auxiliary.h:120
#define INITIAL_PRINT_BUFFER
Definition reporter.cc:34

◆ Warn()

void Warn ( const char * fmt,
... )

Definition at line 231 of file reporter.cc.

232{
233 va_list ap;
234 va_start(ap, fmt);
235 char *s=(char *)omAlloc(256);
236#ifdef HAVE_VSNPRINTF
237 vsnprintf(s, 256, fmt, ap);
238#else
239 vsprintf(s, fmt, ap);
240#endif
241 WarnS(s);
242 omFreeSize(s,256);
243 va_end(ap);
244}
#define WarnS
Definition emacs.cc:78
#define omFreeSize(addr, size)

◆ WarnS()

void WarnS ( const char * s)

Definition at line 206 of file reporter.cc.

207{
208 #define warn_str "// ** "
209 if (feWarn) /* ignore warnings if option --no-warn was given */
210 {
211 if (WarnS_callback==NULL)
212 {
213 fwrite(warn_str,1,6,stdout);
214 fwrite(s,1,strlen(s),stdout);
215 fwrite("\n",1,1,stdout);
216 fflush(stdout);
217 if (feProt&SI_PROT_O)
218 {
219 fwrite(warn_str,1,6,feProtFile);
220 fwrite(s,1,strlen(s),feProtFile);
221 fwrite("\n",1,1,feProtFile);
222 }
223 }
224 else
225 {
227 }
228 }
229}
VAR void(* WarnS_callback)(const char *s)
Definition reporter.cc:204
VAR BOOLEAN feWarn
Definition reporter.cc:49
#define warn_str

◆ Werror()

void Werror ( const char * fmt,
... )

Definition at line 189 of file reporter.cc.

190{
191 va_list ap;
192 va_start(ap, fmt);
193 char *s=(char *)omAlloc(256);
194#ifdef HAVE_VSNPRINTF
195 vsnprintf(s,256, fmt, ap);
196#else
197 vsprintf(s, fmt, ap);
198#endif
199 WerrorS(s);
200 omFreeSize(s,256);
201 va_end(ap);
202}

◆ WerrorS_batch()

void WerrorS_batch ( const char * s)

Definition at line 168 of file reporter.cc.

169{
170 if (feErrors==NULL)
171 {
172 feErrors=(char *)omAlloc(256);
173 feErrorsLen=256;
174 *feErrors = '\0';
175 }
176 else
177 {
178 if (((int)(strlen((char *)s)+ 20 +strlen(feErrors)))>=feErrorsLen)
179 {
181 feErrorsLen+=256;
182 }
183 }
184 strcat(feErrors, "Singular error: ");
185 strcat(feErrors, (char *)s);
187}
#define TRUE
Definition auxiliary.h:101
VAR short errorreported
Definition feFopen.cc:23
VAR int feErrorsLen
Definition reporter.cc:48
VAR char * feErrors
Definition reporter.cc:47

Variable Documentation

◆ feBuffer

STATIC_VAR char* feBuffer =NULL

Definition at line 40 of file reporter.cc.

◆ feBuffer_cnt

STATIC_VAR int feBuffer_cnt =0

Definition at line 43 of file reporter.cc.

◆ feBuffer_save

STATIC_VAR char* feBuffer_save[8]

Definition at line 42 of file reporter.cc.

◆ feBufferLength

STATIC_VAR long feBufferLength =0

Definition at line 39 of file reporter.cc.

◆ feBufferLength_save

STATIC_VAR long feBufferLength_save[8]

Definition at line 41 of file reporter.cc.

◆ feBufferStart

STATIC_VAR char* feBufferStart

Definition at line 59 of file reporter.cc.

◆ feBufferStart_save

STATIC_VAR char* feBufferStart_save[8]

Definition at line 44 of file reporter.cc.

◆ feErrors

VAR char* feErrors =NULL

Definition at line 47 of file reporter.cc.

◆ feErrorsLen

VAR int feErrorsLen =0

Definition at line 48 of file reporter.cc.

◆ feNotImplemented

const char feNotImplemented[] ="not implemented"

Definition at line 54 of file reporter.cc.

◆ feOut

VAR BOOLEAN feOut = TRUE

Definition at line 50 of file reporter.cc.

◆ feProt

VAR int feProt = FALSE

Definition at line 56 of file reporter.cc.

◆ feProtFile

VAR FILE* feProtFile

Definition at line 57 of file reporter.cc.

◆ feWarn

VAR BOOLEAN feWarn = TRUE

Definition at line 49 of file reporter.cc.

◆ sprint

STATIC_VAR char* sprint = NULL

Definition at line 248 of file reporter.cc.

◆ sprint_backup

STATIC_VAR char* sprint_backup = NULL

Definition at line 249 of file reporter.cc.

◆ WarnS_callback

VAR void(* WarnS_callback) (const char *s) ( const char * s) = NULL

Definition at line 204 of file reporter.cc.