|
|
1.1 ! root 1: /*++ ! 2: ! 3: Copyright (c) 1991 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: mc.h ! 8: ! 9: Abstract: ! 10: ! 11: This is the main include file for the Win32 Message Compiler (MC) ! 12: ! 13: Author: ! 14: ! 15: Steve Wood (stevewo) 21-Aug-1991 ! 16: ! 17: Revision History: ! 18: ! 19: --*/ ! 20: ! 21: #if 0 ! 22: #include <nt.h> ! 23: #include <ntrtl.h> ! 24: #include <nturtl.h> ! 25: #endif ! 26: ! 27: #include <process.h> ! 28: #include <stdio.h> ! 29: #include <stddef.h> ! 30: #include <stdlib.h> ! 31: #include <stdarg.h> ! 32: #include <limits.h> ! 33: #include <malloc.h> ! 34: #include <errno.h> ! 35: #include <ctype.h> ! 36: #include <signal.h> ! 37: #include <string.h> ! 38: #include <time.h> ! 39: #include <io.h> ! 40: #include <fcntl.h> ! 41: #include <conio.h> ! 42: #include <sys\types.h> ! 43: #include <sys\stat.h> ! 44: ! 45: #ifdef TOOL ! 46: ! 47: #define MAX_PATH 265 ! 48: ! 49: #else ! 50: ! 51: #include <windows.h> ! 52: ! 53: #endif ! 54: ! 55: // ! 56: // Global constants ! 57: // ! 58: ! 59: #define MCCHAR_END_OF_LINE_COMMENT ';' ! 60: ! 61: #define MCTOK_END_OF_FILE 0x00 ! 62: ! 63: #define MCTOK_NUMBER 0x01 ! 64: #define MCTOK_NAME 0x02 ! 65: #define MCTOK_EQUAL 0x03 ! 66: #define MCTOK_LEFT_PAREN 0x04 ! 67: #define MCTOK_RIGHT_PAREN 0x05 ! 68: #define MCTOK_COLON 0x06 ! 69: #define MCTOK_PLUS 0x07 ! 70: #define MCTOK_END_OF_LINE_COMMENT 0x08 ! 71: ! 72: #define MCTOK_MSGIDTYPE_KEYWORD 0x11 ! 73: #define MCTOK_SEVNAMES_KEYWORD 0x12 ! 74: #define MCTOK_FACILITYNAMES_KEYWORD 0x13 ! 75: #define MCTOK_LANGNAMES_KEYWORD 0x14 ! 76: #define MCTOK_MESSAGEID_KEYWORD 0x15 ! 77: #define MCTOK_SEVERITY_KEYWORD 0x16 ! 78: #define MCTOK_FACILITY_KEYWORD 0x17 ! 79: #define MCTOK_SYMBOLNAME_KEYWORD 0x18 ! 80: #define MCTOK_LANGUAGE_KEYWORD 0x19 ! 81: ! 82: ! 83: // ! 84: // Global data types ! 85: // ! 86: ! 87: typedef struct _LANGUAGE_INFO { ! 88: struct _LANGUAGE_INFO *Next; ! 89: ULONG Id; ! 90: ULONG Length; ! 91: PCHAR Text; ! 92: } LANGUAGE_INFO, *PLANGUAGE_INFO; ! 93: ! 94: typedef struct _MESSAGE_INFO { ! 95: struct _MESSAGE_INFO *Next; ! 96: ULONG Id; ! 97: ULONG Method; ! 98: PCHAR SymbolicName; ! 99: PCHAR EndOfLineComment; ! 100: PLANGUAGE_INFO MessageText; ! 101: } MESSAGE_INFO, *PMESSAGE_INFO; ! 102: ! 103: #define MSG_PLUS_ONE 0 ! 104: #define MSG_PLUS_VALUE 1 ! 105: #define MSG_ABSOLUTE 2 ! 106: ! 107: typedef struct _MESSAGE_BLOCK { ! 108: struct _MESSAGE_BLOCK *Next; ! 109: ULONG LowId; ! 110: ULONG HighId; ! 111: ULONG InfoLength; ! 112: PMESSAGE_INFO LowInfo; ! 113: } MESSAGE_BLOCK, *PMESSAGE_BLOCK; ! 114: ! 115: typedef struct _NAME_INFO { ! 116: struct _NAME_INFO *Next; ! 117: ULONG LastId; ! 118: ULONG Id; ! 119: PVOID Value; ! 120: BOOLEAN Used; ! 121: char Name[ 1 ]; ! 122: } NAME_INFO, *PNAME_INFO; ! 123: ! 124: // ! 125: // These mirror the NT header types ! 126: // ! 127: // ! 128: // Code Review ! 129: // ! 130: typedef struct _MESSAGE_RESOURCE_ENTRY { ! 131: USHORT Length; ! 132: USHORT Flags; ! 133: UCHAR Text[ 1 ]; ! 134: } MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY; ! 135: ! 136: #define MESSAGE_RESOURCE_UNICODE 0x0001 ! 137: ! 138: typedef struct _MESSAGE_RESOURCE_BLOCK { ! 139: ULONG LowId; ! 140: ULONG HighId; ! 141: ULONG OffsetToEntries; ! 142: } MESSAGE_RESOURCE_BLOCK, *PMESSAGE_RESOURCE_BLOCK; ! 143: ! 144: typedef struct _MESSAGE_RESOURCE_DATA { ! 145: ULONG NumberOfBlocks; ! 146: MESSAGE_RESOURCE_BLOCK Blocks[ 1 ]; ! 147: } MESSAGE_RESOURCE_DATA, *PMESSAGE_RESOURCE_DATA; ! 148: ! 149: ! 150: ! 151: ! 152: // ! 153: // Global variables ! 154: // ! 155: ! 156: int VerboseOutput; ! 157: int WarnOs2Compatible; ! 158: int InsertSymbolicName; ! 159: int GenerateDecimalValues; ! 160: int ResultCode; ! 161: ULONG CustomerMsgIdBit; ! 162: ! 163: FILE *MessageFile; ! 164: char MessageFileName[ MAX_PATH ]; ! 165: unsigned int MessageFileLineNumber; ! 166: unsigned int Token; ! 167: char TokenCharValue[ 256 ]; ! 168: ULONG TokenNumericValue; ! 169: PNAME_INFO TokenKeyword; ! 170: ! 171: FILE *HeaderFile; ! 172: char HeaderFileName[ MAX_PATH ]; ! 173: FILE *RcInclFile; ! 174: char RcInclFileName[ MAX_PATH ]; ! 175: FILE *BinaryMessageFile; ! 176: char BinaryMessageFileName[ MAX_PATH ]; ! 177: ! 178: char *MessageIdTypeName; ! 179: ! 180: PNAME_INFO FacilityNames; ! 181: PNAME_INFO CurrentFacilityName; ! 182: PNAME_INFO SeverityNames; ! 183: PNAME_INFO CurrentSeverityName; ! 184: PNAME_INFO LanguageNames; ! 185: PNAME_INFO CurrentLanguageName; ! 186: ! 187: PMESSAGE_INFO Messages; ! 188: PMESSAGE_INFO CurrentMessage; ! 189: ! 190: // ! 191: // Functions defined in mc.c ! 192: // ! 193: ! 194: void ! 195: McPrintUsage( void ); ! 196: ! 197: ! 198: // ! 199: // Functions defined in mcparse.c ! 200: // ! 201: ! 202: BOOLEAN ! 203: McParseFile( void ); ! 204: ! 205: BOOLEAN ! 206: McParseMessageDefinition( void ); ! 207: ! 208: BOOLEAN ! 209: McParseMessageText( ! 210: PMESSAGE_INFO MessageInfo ! 211: ); ! 212: ! 213: BOOLEAN ! 214: McParseNameList( ! 215: PNAME_INFO *NameListHead, ! 216: BOOLEAN ValueRequired, ! 217: ULONG MaximumValue ! 218: ); ! 219: ! 220: BOOLEAN ! 221: McParseName( ! 222: PNAME_INFO NameListHead, ! 223: PNAME_INFO *Result ! 224: ); ! 225: ! 226: ! 227: // ! 228: // Functions defined in mcout.c ! 229: // ! 230: ! 231: BOOLEAN ! 232: McBlockMessages( void ); ! 233: ! 234: ! 235: BOOLEAN ! 236: McWriteBinaryFiles( void ); ! 237: ! 238: ! 239: ! 240: // ! 241: // Functions defined in mclex.c ! 242: // ! 243: ! 244: BOOLEAN ! 245: McInitLexer( void ); ! 246: ! 247: BOOLEAN ! 248: McOpenInputFile( void ); ! 249: ! 250: void ! 251: McFlushComments( void ); ! 252: ! 253: void ! 254: McCloseInputFile( void ); ! 255: ! 256: void ! 257: McCloseOutputFiles( void ); ! 258: ! 259: void ! 260: McInputError( ! 261: char *Message, ! 262: BOOLEAN Error, ! 263: PVOID Argument ! 264: ); ! 265: ! 266: char * ! 267: McGetLine( void ); ! 268: ! 269: void ! 270: McSkipLine( void ); ! 271: ! 272: char ! 273: McGetChar( ! 274: BOOLEAN SkipWhiteSpace ! 275: ); ! 276: ! 277: void ! 278: McUnGetChar( ! 279: char c ! 280: ); ! 281: ! 282: unsigned int ! 283: McGetToken( ! 284: BOOLEAN KeywordExpected ! 285: ); ! 286: ! 287: void ! 288: McUnGetToken( void ); ! 289: ! 290: char * ! 291: McSkipWhiteSpace( ! 292: char *s ! 293: ); ! 294: ! 295: // ! 296: // Functions defined in mcutil.c ! 297: // ! 298: ! 299: PNAME_INFO ! 300: McAddName( ! 301: PNAME_INFO *NameListHead, ! 302: char *Name, ! 303: ULONG Id, ! 304: PVOID Value ! 305: ); ! 306: ! 307: ! 308: PNAME_INFO ! 309: McFindName( ! 310: PNAME_INFO NameListHead, ! 311: char *Name ! 312: ); ! 313: ! 314: ! 315: BOOLEAN ! 316: McCharToInteger( ! 317: PCHAR String, ! 318: int Base, ! 319: PULONG Value ! 320: ); ! 321: ! 322: char * ! 323: McMakeString( ! 324: char *String ! 325: );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.