mirror of
https://github.com/SSCLI/sscli_20021101
synced 2026-06-08 12:28:57 +00:00
9fa3874800
Moved the original file to the archive subfolder.
187 lines
3.8 KiB
C++
187 lines
3.8 KiB
C++
// ==++==
|
|
//
|
|
//
|
|
// Copyright (c) 2002 Microsoft Corporation. All rights reserved.
|
|
//
|
|
// The use and distribution terms for this software are contained in the file
|
|
// named license.txt, which can be found in the root of this distribution.
|
|
// By using this software in any fashion, you are agreeing to be bound by the
|
|
// terms of this license.
|
|
//
|
|
// You must not remove this notice, or any other, from this software.
|
|
//
|
|
//
|
|
// ==--==
|
|
// ERROR.C -- error handling functions
|
|
|
|
#include "precomp.h"
|
|
#ifdef _MSC_VER
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#include "verstamp.h"
|
|
|
|
#define FATAL 1 // error levels for
|
|
#define ERROR 2 // systems lanuguages
|
|
#define RESERVED 3 // products
|
|
#define WARNING 4
|
|
|
|
#define NmakeStr "NMAKE"
|
|
|
|
|
|
void __cdecl
|
|
makeError (
|
|
unsigned lineNumber,
|
|
unsigned msg,
|
|
...)
|
|
{
|
|
unsigned exitCode = 2; // general program err
|
|
unsigned level;
|
|
va_list args; // More arguments
|
|
|
|
va_start(args, msg); // Point 'args' at first extra arg
|
|
|
|
if (ON(gFlags,F1_CRYPTIC_OUTPUT) && (msg / 1000) == WARNING) {
|
|
return;
|
|
}
|
|
|
|
displayBanner();
|
|
|
|
if (lineNumber) {
|
|
fprintf(stderr, "%s(%u) : ", fName, lineNumber);
|
|
} else {
|
|
fprintf(stderr, "%s : ", NmakeStr);
|
|
}
|
|
|
|
switch (level = msg / 1000) {
|
|
case FATAL:
|
|
makeMessage(FATAL_ERROR_MESSAGE);
|
|
if (msg == OUT_OF_MEMORY) {
|
|
exitCode = 4;
|
|
}
|
|
break;
|
|
|
|
case ERROR:
|
|
makeMessage(ERROR_MESSAGE);
|
|
break;
|
|
|
|
case WARNING:
|
|
makeMessage(WARNING_MESSAGE);
|
|
break;
|
|
}
|
|
|
|
fprintf(stderr, " U%04d: ",msg); // U for utilities
|
|
vfprintf(stderr, get_err(msg), args);
|
|
putc('\n', stderr);
|
|
fflush(stderr);
|
|
|
|
if (level == FATAL) {
|
|
fprintf(stderr, "Stop.\n");
|
|
delScriptFiles();
|
|
|
|
#if !defined(NDEBUG)
|
|
printStats();
|
|
#endif
|
|
exit(exitCode);
|
|
}
|
|
}
|
|
|
|
|
|
void __cdecl
|
|
makeMessage(
|
|
unsigned msg,
|
|
...)
|
|
{
|
|
va_list args;
|
|
FILE *stream = stdout;
|
|
|
|
va_start(args, msg);
|
|
|
|
if (msg != USER_MESSAGE && ON(gFlags, F1_CRYPTIC_OUTPUT)) {
|
|
return;
|
|
}
|
|
|
|
displayBanner();
|
|
|
|
if (msg >= FATAL_ERROR_MESSAGE && msg <= COPYRIGHT_MESSAGE_2) {
|
|
stream = stderr;
|
|
}
|
|
|
|
if (msg == COPYRIGHT_MESSAGE_1) {
|
|
putc('\n', stream);
|
|
}
|
|
|
|
vfprintf(stream, get_err(msg), args);
|
|
|
|
if ((msg < COMMANDS_MESSAGE || msg > STOP_MESSAGE) && msg != MESG_LAST) {
|
|
putc('\n', stream);
|
|
}
|
|
|
|
fflush(stream);
|
|
}
|
|
|
|
|
|
// displayBanner - display SignOn Banner
|
|
//
|
|
// Scope: Global
|
|
//
|
|
// Purpose: Displays SignOn Banner (Version & Copyright Message)
|
|
//
|
|
// Assumes: If rup is 0 then build version is to be suppressed
|
|
//
|
|
// Modifies Globals:
|
|
// bannerDisplayed -- Set to TRUE
|
|
//
|
|
// Notes:
|
|
// 1> Display Banner to stderr for compatibility with Microsoft C Compiler.
|
|
// 2> rmj, rmm, rup are set by SLM as #define's in VERSION.H
|
|
// 3> szCopyrightYrs is a macro set in this file
|
|
|
|
void
|
|
displayBanner()
|
|
{
|
|
if (bannerDisplayed) {
|
|
return;
|
|
}
|
|
|
|
bannerDisplayed = TRUE;
|
|
|
|
makeMessage(COPYRIGHT_MESSAGE_1, VER_PRODUCTVERSION_STR);
|
|
makeMessage(COPYRIGHT_MESSAGE_2);
|
|
|
|
fflush(stderr);
|
|
}
|
|
|
|
// usage - prints the usage message
|
|
//
|
|
// Scope: Extern
|
|
//
|
|
// Purpose: Prints a usage message
|
|
//
|
|
// Output: to screen
|
|
//
|
|
// Assumes: The usage messages are in order between MESG_FIRST and MESG_LAST in the
|
|
// messages file.
|
|
|
|
|
|
void
|
|
usage(void)
|
|
{
|
|
unsigned mesg;
|
|
|
|
for (mesg = MESG_FIRST; mesg < MESG_A; ++mesg) {
|
|
makeMessage(mesg, "NMAKE");
|
|
}
|
|
|
|
for (mesg = MESG_A; mesg <= MESG_LAST; mesg++) {
|
|
if (mesg == MESG_M) {
|
|
mesg++;
|
|
}
|
|
|
|
if (mesg == MESG_V) {
|
|
mesg++;
|
|
}
|
|
makeMessage(mesg);
|
|
}
|
|
}
|