1 /* message.h: extend the standard programming environment a little.  This
2    is included from config.h, which everyone includes. */
3 
4 #ifndef MESSAGE_H
5 #define MESSAGE_H
6 
7 #include "logreport.h"
8 #include "types.h"
9 #include <stdio.h>
10 #include <stdlib.h>
11 
12 /* Define common sorts of messages.  */
13 
14 /* This should be called only after a system call fails.  */
15 #define FATAL_PERROR(s) do { perror (s); exit (errno); } while (0)
16 
17 
18 #define START_FATAL() do { fputs ("fatal: ", stderr); LOG("fatal: ")
19 #define END_FATAL() fputs (".\n", stderr); exit (1); } while (0)
20 
21 #define FATAL(s)							\
22   START_FATAL (); fprintf (stderr, "%s", s); LOG (s); END_FATAL ()
23 #define FATAL1(s, e1)							\
24   START_FATAL (); fprintf (stderr, s, e1); LOG1 (s, e1); END_FATAL ()
25 #define FATAL2(s, e1, e2)						\
26   START_FATAL (); fprintf (stderr, s, e1, e2); LOG2 (s, e1, e2); END_FATAL ()
27 #define FATAL3(s, e1, e2, e3)						\
28   START_FATAL (); fprintf (stderr, s, e1, e2, e3); LOG3 (s, e1, e2, e3); END_FATAL ()
29 #define FATAL4(s, e1, e2, e3, e4)					\
30   START_FATAL (); fprintf (stderr, s, e1, e2, e3, e4); LOG4 (s, e1, e2, e3, e4); END_FATAL ()
31 
32 
33 #define START_WARNING() do { fputs ("warning: ", stderr); LOG ("warning: ")
34 #define END_WARNING() fputs (".\n", stderr); } while (0)
35 
36 #define WARNING(s)							\
37   START_WARNING (); fprintf (stderr, "%s", s); LOG (s); END_WARNING ()
38 #define WARNING1(s, e1)							\
39   START_WARNING (); fprintf (stderr, s, e1); LOG1 (s, e1); END_WARNING ()
40 #define WARNING2(s, e1, e2)						\
41   START_WARNING (); fprintf (stderr, s, e1, e2); LOG2 (s, e1, e2); END_WARNING ()
42 #define WARNING3(s, e1, e2, e3)						\
43   START_WARNING (); fprintf (stderr, s, e1, e2, e3); LOG3 (s, e1, e2, e3); END_WARNING ()
44 #define WARNING4(s, e1, e2, e3, e4)					\
45   START_WARNING (); fprintf (stderr, s, e1, e2, e3, e4); LOG4 (s, e1, e2, e3, e4); END_WARNING ()
46 
47 #endif /* not MESSAGE_H */
48 
49