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