1/*
2 * Copyright 1994-1997 Mark Kilgard, All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * GPL licensing not permitted.
6 *
7 * Authors:
8 *      Mark Kilgard
9 */
10
11
12#include <stdlib.h>
13#include <stdarg.h>
14#include <string.h>
15#include <stdio.h>
16
17#include "glutint.h"
18
19
20/* strdup is actually not a standard ANSI C or POSIX routine
21   so implement a private one for GLUT.  OpenVMS does not have a
22   strdup; Linux's standard libc doesn't declare strdup by default
23   (unless BSD or SVID interfaces are requested). */
24char *
25__glutStrdup(const char *string)
26{
27  char *copy;
28
29  copy = (char*) malloc(strlen(string) + 1);
30  if (copy == NULL)
31    return NULL;
32  strcpy(copy, string);
33  return copy;
34}
35
36void
37__glutWarning(const char *format,...)
38{
39  va_list args;
40
41  va_start(args, format);
42  fprintf(stderr, "GLUT: Warning in %s: ",
43    __glutProgramName ? __glutProgramName : "(unamed)");
44  vfprintf(stderr, format, args);
45  va_end(args);
46  putc('\n', stderr);
47}
48
49/* CENTRY */
50void APIENTRY
51glutReportErrors(void)
52{
53  GLenum error;
54
55  while ((error = glGetError()) != GL_NO_ERROR)
56    __glutWarning("GL error: %s", gluErrorString(error));
57}
58/* ENDCENTRY */
59
60void
61__glutFatalError(const char *format,...)
62{
63  va_list args;
64
65  va_start(args, format);
66  fprintf(stderr, "GLUT: Fatal Error in %s: ",
67    __glutProgramName ? __glutProgramName : "(unamed)");
68  vfprintf(stderr, format, args);
69  va_end(args);
70  putc('\n', stderr);
71  exit(1);
72}
73
74void
75__glutFatalUsage(const char *format,...)
76{
77  va_list args;
78
79  va_start(args, format);
80  fprintf(stderr, "GLUT: Fatal API Usage in %s: ",
81    __glutProgramName ? __glutProgramName : "(unamed)");
82  vfprintf(stderr, format, args);
83  va_end(args);
84  putc('\n', stderr);
85  abort();
86}
87