1010cdda0Smrg
2010cdda0Smrg  /*\
3010cdda0Smrg   *
4b4485a66Smrg   *                          COPYRIGHT 1990
5b4485a66Smrg   *                    DIGITAL EQUIPMENT CORPORATION
6b4485a66Smrg   *                       MAYNARD, MASSACHUSETTS
7b4485a66Smrg   *                        ALL RIGHTS RESERVED.
8010cdda0Smrg   *
9010cdda0Smrg   * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
10010cdda0Smrg   * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
11010cdda0Smrg   * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
12010cdda0Smrg   * FOR ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
13010cdda0Smrg   * WARRANTY.
14010cdda0Smrg   *
15010cdda0Smrg   * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
16010cdda0Smrg   * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
17010cdda0Smrg   * ADDITION TO THAT SET FORTH ABOVE.
18010cdda0Smrg   *
19010cdda0Smrg   * Permission to use, copy, modify, and distribute this software and its
20010cdda0Smrg   * documentation for any purpose and without fee is hereby granted, provided
21010cdda0Smrg   * that the above copyright notice appear in all copies and that both that
22010cdda0Smrg   * copyright notice and this permission notice appear in supporting
23010cdda0Smrg   * documentation, and that the name of Digital Equipment Corporation not be
24010cdda0Smrg   * used in advertising or publicity pertaining to distribution of the
25010cdda0Smrg   * software without specific, written prior permission.
26010cdda0Smrg  \*/
27010cdda0Smrg
28010cdda0Smrg#include 	"utils.h"
29010cdda0Smrg#include	<ctype.h>
30010cdda0Smrg#include	<stdlib.h>
31010cdda0Smrg
32010cdda0Smrg/***====================================================================***/
33010cdda0Smrg/***			PRINT FUNCTIONS					***/
34010cdda0Smrg/***====================================================================***/
35010cdda0Smrg
36affd2f3fSmrg#define errorFile stderr
37010cdda0Smrg
38010cdda0Smrgvoid
39b4485a66SmrguInformation(const char *s, ...)
40010cdda0Smrg{
41010cdda0Smrg    va_list ap;
42010cdda0Smrg
43010cdda0Smrg    va_start(ap, s);
44b4485a66Smrg    vfprintf(errorFile, s, ap);
45010cdda0Smrg    fflush(errorFile);
46010cdda0Smrg    va_end(ap);
47010cdda0Smrg    return;
48010cdda0Smrg}
49010cdda0Smrg
50010cdda0Smrg/***====================================================================***/
51010cdda0Smrg
52010cdda0Smrgvoid
53b4485a66SmrguAction(const char *s, ...)
54010cdda0Smrg{
55010cdda0Smrg    va_list ap;
56010cdda0Smrg
57010cdda0Smrg    va_start(ap, s);
58b4485a66Smrg    fprintf(errorFile, "                  ");
59b4485a66Smrg    vfprintf(errorFile, s, ap);
60010cdda0Smrg    fflush(errorFile);
61010cdda0Smrg    va_end(ap);
62010cdda0Smrg    return;
63010cdda0Smrg}
64010cdda0Smrg
65010cdda0Smrg/***====================================================================***/
66010cdda0Smrg
67010cdda0Smrgvoid
68b4485a66SmrguWarning(const char *s, ...)
69010cdda0Smrg{
70010cdda0Smrg    va_list ap;
71010cdda0Smrg
72010cdda0Smrg    va_start(ap, s);
73b4485a66Smrg    fprintf(errorFile, "Warning:          ");
74b4485a66Smrg    vfprintf(errorFile, s, ap);
75010cdda0Smrg    fflush(errorFile);
76010cdda0Smrg    va_end(ap);
77010cdda0Smrg    return;
78010cdda0Smrg}
79010cdda0Smrg
80010cdda0Smrg/***====================================================================***/
81010cdda0Smrg
82010cdda0Smrgvoid
83b4485a66SmrguError(const char *s, ...)
84010cdda0Smrg{
85010cdda0Smrg    va_list ap;
86010cdda0Smrg
87010cdda0Smrg    va_start(ap, s);
88b4485a66Smrg    fprintf(errorFile, "Error:            ");
89b4485a66Smrg    vfprintf(errorFile, s, ap);
90010cdda0Smrg    fflush(errorFile);
91010cdda0Smrg    va_end(ap);
92010cdda0Smrg    return;
93010cdda0Smrg}
94010cdda0Smrg
95010cdda0Smrg/***====================================================================***/
96010cdda0Smrg
97010cdda0Smrgvoid
98b4485a66SmrguFatalError(const char *s, ...)
99010cdda0Smrg{
100010cdda0Smrg    va_list ap;
101010cdda0Smrg
102010cdda0Smrg    va_start(ap, s);
103b4485a66Smrg    fprintf(errorFile, "Fatal Error:      ");
104b4485a66Smrg    vfprintf(errorFile, s, ap);
105b4485a66Smrg    fprintf(errorFile, "                  Exiting\n");
106010cdda0Smrg    fflush(errorFile);
107010cdda0Smrg    va_end(ap);
108010cdda0Smrg    exit(1);
109010cdda0Smrg    /* NOTREACHED */
110010cdda0Smrg}
111010cdda0Smrg
112010cdda0Smrg/***====================================================================***/
113010cdda0Smrg
114010cdda0Smrgvoid
115b4485a66SmrguInternalError(const char *s, ...)
116010cdda0Smrg{
117010cdda0Smrg    va_list ap;
118010cdda0Smrg
119010cdda0Smrg    va_start(ap, s);
120b4485a66Smrg    fprintf(errorFile, "Internal error:   ");
121b4485a66Smrg    vfprintf(errorFile, s, ap);
122010cdda0Smrg    fflush(errorFile);
123010cdda0Smrg    va_end(ap);
124010cdda0Smrg    return;
125010cdda0Smrg}
126010cdda0Smrg
127010cdda0Smrg/***====================================================================***/
128010cdda0Smrg
129010cdda0Smrg#ifndef HAVE_STRCASECMP
130010cdda0Smrgint
131b4485a66SmrguStrCaseCmp(const char *str1, const char *str2)
132010cdda0Smrg{
133b4485a66Smrg    char buf1[512], buf2[512];
134010cdda0Smrg    char c, *s;
135b4485a66Smrg
136010cdda0Smrg    register int n;
137010cdda0Smrg
138b4485a66Smrg    for (n = 0, s = buf1; (c = *str1++); n++) {
139b4485a66Smrg        if (isupper(c))
140b4485a66Smrg            c = tolower(c);
141b4485a66Smrg        if (n > 510)
142b4485a66Smrg            break;
143b4485a66Smrg        *s++ = c;
144010cdda0Smrg    }
145010cdda0Smrg    *s = '\0';
146b4485a66Smrg    for (n = 0, s = buf2; (c = *str2++); n++) {
147b4485a66Smrg        if (isupper(c))
148b4485a66Smrg            c = tolower(c);
149b4485a66Smrg        if (n > 510)
150b4485a66Smrg            break;
151b4485a66Smrg        *s++ = c;
152010cdda0Smrg    }
153010cdda0Smrg    *s = '\0';
154010cdda0Smrg    return (strcmp(buf1, buf2));
155010cdda0Smrg}
156010cdda0Smrg#endif
157