1 /*********************************************************************** 2 * * 3 * This software is part of the ast package * 4 * Copyright (c) 1985-2011 AT&T Intellectual Property * 5 * and is licensed under the * 6 * Eclipse Public License, Version 1.0 * 7 * by AT&T Intellectual Property * 8 * * 9 * A copy of the License is available at * 10 * http://www.eclipse.org/org/documents/epl-v10.html * 11 * (with md5 checksum b35adb5213ca9657e911e9befb180842) * 12 * * 13 * Information and Software Systems Research * 14 * AT&T Research * 15 * Florham Park NJ * 16 * * 17 * Glenn Fowler <gsf@research.att.com> * 18 * David Korn <dgk@research.att.com> * 19 * Phong Vo <kpv@research.att.com> * 20 * * 21 ***********************************************************************/ 22 #pragma prototyped 23 /* 24 * fmtmsg interface definitions 25 */ 26 27 #ifndef _FMTMSG_H 28 #define _FMTMSG_H 29 30 #define MM_VERB_ENV "MSGVERB" /* keyword filter env var */ 31 #define MM_SEVERITY_ENV "SEV_LEVEL" /* alternate severity env var */ 32 33 /* max component length */ 34 35 #define MM_LABEL_1_MAX 10 /* label field 1 length */ 36 #define MM_LABEL_2_MAX 14 /* label field 2 length */ 37 38 /* classification type */ 39 40 #define MM_HARD 0x00000001L /* hardware */ 41 #define MM_SOFT 0x00000002L /* software */ 42 #define MM_FIRM 0x00000004L /* firmware */ 43 44 /* classification source */ 45 46 #define MM_APPL 0x00000010L /* application */ 47 #define MM_UTIL 0x00000020L /* utility */ 48 #define MM_OPSYS 0x00000040L /* kernel */ 49 50 /* classification display */ 51 52 #define MM_PRINT 0x00000100L /* stderr */ 53 #define MM_CONSOLE 0x00000200L /* console */ 54 55 /* classification status */ 56 57 #define MM_RECOVER 0x00001000L /* recoverable */ 58 #define MM_NRECOV 0x00002000L /* non-recoverable */ 59 60 /* severity */ 61 62 #define MM_NOSEV 0x0 /* no severity */ 63 #define MM_HALT 0x1 /* severe fault */ 64 #define MM_ERROR 0x2 /* fault */ 65 #define MM_WARNING 0x4 /* could be a problem */ 66 #define MM_INFO 0x8 /* not an error (noise?) */ 67 68 /* fmtmsg return value */ 69 70 #define MM_OK 0 /* succeeded */ 71 #define MM_NOTOK 3 /* failed completely */ 72 #define MM_NOMSG 1 /* stderr message failed */ 73 #define MM_NOCON 2 /* console message failed */ 74 75 /* null argument values -- 0 just doesn't get any respect */ 76 77 #define MM_NULLLBL (char*)0 /* label */ 78 #define MM_NULLSEV 0 /* severity */ 79 #define MM_NULLMC 0L /* class */ 80 #define MM_NULLTXT (char*)0 /* text */ 81 #define MM_NULLACT (char*)0 /* action */ 82 #define MM_NULLTAG (char*)0 /* tag */ 83 84 #ifdef MM_TABLES 85 86 /* encoding support */ 87 88 typedef struct 89 { 90 const char* name; 91 const char* display; 92 unsigned int value; 93 } MM_table_t; 94 95 #define mm_class _mm_class 96 #define mm_severity _mm_severity() 97 #define mm_verb _mm_verb 98 99 #define MM_all 0xff 100 #define MM_action 0x01 101 #define MM_class 0x02 102 #define MM_label 0x04 103 #define MM_severity 0x08 104 #define MM_source 0x10 105 #define MM_status 0x20 106 #define MM_tag 0x40 107 #define MM_text 0x80 108 109 #define MM_default (MM_action|MM_label|MM_severity|MM_tag|MM_text) 110 111 #if _BLD_ast && defined(__EXPORT__) 112 #define extern __EXPORT__ 113 #endif 114 #if !_BLD_ast && defined(__IMPORT__) 115 #define extern extern __IMPORT__ 116 #endif 117 118 extern const MM_table_t mm_class[]; 119 extern const MM_table_t mm_verb[]; 120 121 #undef extern 122 123 #if _BLD_ast && defined(__EXPORT__) 124 #define extern __EXPORT__ 125 #endif 126 127 extern const MM_table_t* mm_severity; 128 129 #undef extern 130 131 #endif 132 133 #if _BLD_ast && defined(__EXPORT__) 134 #define extern __EXPORT__ 135 #endif 136 137 extern int fmtmsg(long, const char*, int, const char*, const char*, const char*); 138 139 #undef extern 140 141 #endif 142