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