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