1 2 /*\ 3 * 4 * COPYRIGHT 1990 5 * DIGITAL EQUIPMENT CORPORATION 6 * MAYNARD, MASSACHUSETTS 7 * ALL RIGHTS RESERVED. 8 * 9 * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND 10 * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. 11 * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE 12 * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED 13 * WARRANTY. 14 * 15 * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT 16 * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN 17 * ADDITION TO THAT SET FORTH ABOVE. 18 * 19 * Permission to use, copy, modify, and distribute this software and its 20 * documentation for any purpose and without fee is hereby granted, provided 21 * that the above copyright notice appear in all copies and that both that 22 * copyright notice and this permission notice appear in supporting 23 * documentation, and that the name of Digital Equipment Corporation not be 24 * used in advertising or publicity pertaining to distribution of the 25 * software without specific, written prior permission. 26 \*/ 27 28#include "utils.h" 29#include <ctype.h> 30#include <stdlib.h> 31 32/***====================================================================***/ 33 34static FILE *errorFile = NULL; 35 36Boolean 37uSetErrorFile(const char *name) 38{ 39 if ((errorFile != NULL) && (errorFile != stderr)) { 40 fprintf(errorFile, "switching to %s\n", name ? name : "stderr"); 41 fclose(errorFile); 42 } 43 if (name != NullString) 44 errorFile = fopen(name, "w"); 45 else 46 errorFile = stderr; 47 if (errorFile == NULL) { 48 errorFile = stderr; 49 return (False); 50 } 51 return (True); 52} 53 54void 55uInformation(const char *s, ...) 56{ 57 va_list ap; 58 59 va_start(ap, s); 60 vfprintf(errorFile, s, ap); 61 fflush(errorFile); 62 va_end(ap); 63 return; 64} 65 66/***====================================================================***/ 67 68void 69uAction(const char *s, ...) 70{ 71 va_list ap; 72 73 va_start(ap, s); 74 fprintf(errorFile, " "); 75 vfprintf(errorFile, s, ap); 76 fflush(errorFile); 77 va_end(ap); 78 return; 79} 80 81/***====================================================================***/ 82 83void 84uWarning(const char *s, ...) 85{ 86 va_list ap; 87 88 va_start(ap, s); 89 fprintf(errorFile, "Warning: "); 90 vfprintf(errorFile, s, ap); 91 fflush(errorFile); 92 va_end(ap); 93 return; 94} 95 96/***====================================================================***/ 97 98void 99uError(const char *s, ...) 100{ 101 va_list ap; 102 103 va_start(ap, s); 104 fprintf(errorFile, "Error: "); 105 vfprintf(errorFile, s, ap); 106 fflush(errorFile); 107 va_end(ap); 108 return; 109} 110 111/***====================================================================***/ 112 113void 114uInternalError(const char *s, ...) 115{ 116 va_list ap; 117 118 va_start(ap, s); 119 fprintf(errorFile, "Internal error: "); 120 vfprintf(errorFile, s, ap); 121 fflush(errorFile); 122 va_end(ap); 123 return; 124} 125 126/***====================================================================***/ 127 128