/*********************************************************************** * Microsoft (R) Windows (R) Resource Compiler * * Copyright (c) Microsoft Corporation. All rights reserved. * * File Comments: * * ***********************************************************************/ #include "rc.h" #include "rcmsgs.h" #define MAX_ERRORS 100 /* defines for message types */ #define W_MSG 4000 #define E_MSG 2000 #define F_MSG 1000 void message(int msgtype, int msgnum, va_list arg_list) { SET_MSGV(msgnum, arg_list); static wchar_t mbuff[512]; wchar_t *p = mbuff; wchar_t *pT; const wchar_t *msgname; wchar_t msgnumstr[32]; if (Linenumber > 0 && Filename) { swprintf(p, L"%s(%u) : ", Filename, Linenumber); p += wcslen(p); #if 0 } else { wcscpy(p, L"RC : "); p += wcslen(p); #endif } if (msgtype) { switch (msgtype) { case W_MSG: msgname = L"warning"; break; case E_MSG: msgname = L"error"; break; case F_MSG: msgname = L"fatal error"; break; } wcscpy(p, msgname); p += wcslen(msgname); swprintf(msgnumstr, L" RC%04u: ", msgnum); wcscpy(p, msgnumstr); p += wcslen(msgnumstr); wcscpy(p, Msg_Text); p += wcslen(p); } DoMessageCallback(TRUE, mbuff); } void fatal(int msgnum, ...) { va_list arg_list; va_start(arg_list, msgnum); message(F_MSG, msgnum, arg_list); va_end(arg_list); quit(NULL); } void error(int msgnum, ...) { va_list arg_list; va_start(arg_list, msgnum); message(E_MSG, msgnum, arg_list); va_end(arg_list); if (++Nerrors > MAX_ERRORS) { fatal(1003, MAX_ERRORS); /* die - too many errors */ } } void warning(int msgnum, ...) { va_list arg_list; va_start(arg_list, msgnum); message(W_MSG, msgnum, arg_list); va_end(arg_list); }