1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * Copyright (c) 1993-2001 by Sun Microsystems, Inc. 24 * All rights reserved. 25 */ 26 27#pragma ident "%Z%%M% %I% %E% SMI" 28 29// XXX - all this either goes away or gets repackaged 30#include <stdio.h> 31#include <stdlib.h> 32#include <stdarg.h> 33 34#include <AudioDebug.h> 35 36// Global debugging level variable 37int Audio_debug; 38 39 40// Get debug level 41int 42GetDebug() 43{ 44 return (Audio_debug); 45} 46 47// Set debug level 48void 49SetDebug( 50 int val) // new level 51{ 52 Audio_debug = val; 53} 54 55// Default error printing routine 56Boolean 57AudioStderrMsg( 58 const Audio* cp, // object pointer 59 AudioError code, // error code 60 AudioSeverity sev, // error severity 61 char *str) // additional message string 62{ 63 int id; 64 char *name; 65 66 id = cp->getid(); 67 switch (sev) { 68 default: 69 name = cp->GetName(); 70 break; 71 case InitMessage: // virtual function table not ready 72 case InitFatal: 73 name = cp->Audio::GetName(); 74 break; 75 } 76 77 switch (sev) { 78 case InitMessage: 79 case Message: 80 if (Audio_debug > 1) 81 (void) fprintf(stderr, _MGET_("%d: %s (%s) %s\n"), 82 id, str, name, code.msg()); 83 return (TRUE); 84 case Warning: 85 (void) fprintf(stderr, _MGET_("Warning: %s: %s %s\n"), 86 name, code.msg(), str); 87 if (Audio_debug > 2) 88 abort(); 89 return (TRUE); 90 case Error: 91 (void) fprintf(stderr, _MGET_("Error: %s: %s %s\n"), 92 name, code.msg(), str); 93 if (Audio_debug > 1) 94 abort(); 95 return (FALSE); 96 case Consistency: 97 (void) fprintf(stderr, 98 _MGET_("Audio Consistency Error: %s: %s %s\n"), 99 name, str, code.msg()); 100 if (Audio_debug > 0) 101 abort(); 102 return (FALSE); 103 case InitFatal: 104 case Fatal: 105 (void) fprintf(stderr, 106 _MGET_("Audio Internal Error: %s: %s %s\n"), 107 name, str, code.msg()); 108 if (Audio_debug > 0) 109 abort(); 110 return (FALSE); 111 } 112 return (TRUE); 113} 114 115#ifdef DEBUG 116void 117AudioDebugMsg( 118 int level, 119 char *fmt, 120 ...) 121{ 122 va_list ap; 123 124 if (Audio_debug >= level) { 125 va_start(ap, fmt); 126 vfprintf(stderr, fmt, ap); 127 va_end(ap); 128 } 129} 130#endif 131