Processed through the format-o-matic.
This commit is contained in:
parent
bc841826f0
commit
ae862a3ab5
2 changed files with 195 additions and 194 deletions
|
@ -1,4 +1,5 @@
|
|||
/**************************************************************************
|
||||
/* -*- Mode: C++ -*-
|
||||
*
|
||||
* fg_debug.c -- Flight Gear debug utility functions
|
||||
*
|
||||
* Written by Paul Bleisch, started January 1998.
|
||||
|
@ -23,6 +24,7 @@
|
|||
* (Log is kept at end of this file)
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
@ -31,6 +33,7 @@
|
|||
#include <Include/cmdargs.h> // Line to command line arguments
|
||||
#include <Main/fg_debug.h>
|
||||
|
||||
|
||||
static int fg_DebugSem = 1;
|
||||
fgDebugClass fg_DebugClass = FG_ALL; // Need visibility for
|
||||
fgDebugPriority fg_DebugPriority = FG_INFO; // command line processing.
|
||||
|
@ -70,21 +73,22 @@ static struct {
|
|||
|
||||
/* Do not edit below here, last entry should be null */
|
||||
{ "FG_ALL", 0xFFFFFFFF },
|
||||
{ NULL, 0 } };
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static fgDebugClass fgDebugStrToClass( char *str );
|
||||
|
||||
|
||||
/* fgInitDebug =============================================================*/
|
||||
void fgInitDebug( void )
|
||||
{
|
||||
void fgInitDebug( void ) {
|
||||
char *pszClass, *pszPrio, *pszFile;
|
||||
|
||||
// Support for log file/alt debug output via command line, environment or
|
||||
// reasonable default.
|
||||
|
||||
if( strlen( logArgbuf ) > 3) { // First check for command line option
|
||||
fg_DebugOutput = fopen(logArgbuf, "a+" ); // Assumed that we will append.
|
||||
// Assumed that we will append.
|
||||
fg_DebugOutput = fopen(logArgbuf, "a+" );
|
||||
}
|
||||
|
||||
if( !fg_DebugOutput ) { // If not set on command line, environment?
|
||||
|
@ -107,8 +111,7 @@ void fgInitDebug( void )
|
|||
|
||||
if ((priorityArgValue >= FG_BULK) && (priorityArgValue <= FG_ABORT)) {
|
||||
fg_DebugPriority = priorityArgValue;
|
||||
}
|
||||
else { // Either not set or out of range. We will not warn the user.
|
||||
} else { // Either not set or out of range. We will not warn the user.
|
||||
pszPrio = getenv( "FG_DEBUGPRIORITY" );
|
||||
if( pszPrio ) {
|
||||
fg_DebugPriority = atoi( pszPrio );
|
||||
|
@ -121,8 +124,7 @@ void fgInitDebug( void )
|
|||
|
||||
if ((debugArgValue >= FG_ALL) && (debugArgValue < FG_UNDEFD)) {
|
||||
fg_DebugPriority = priorityArgValue;
|
||||
}
|
||||
else { // Either not set or out of range. We will not warn the user.
|
||||
} else { // Either not set or out of range. We will not warn the user.
|
||||
pszClass = getenv( "FG_DEBUGCLASS" );
|
||||
if( pszClass ) {
|
||||
fg_DebugClass = fgDebugStrToClass( pszClass );
|
||||
|
@ -136,8 +138,7 @@ void fgInitDebug( void )
|
|||
}
|
||||
|
||||
/* fgDebugStrToClass ======================================================*/
|
||||
fgDebugClass fgDebugStrToClass( char *str )
|
||||
{
|
||||
fgDebugClass fgDebugStrToClass( char *str ) {
|
||||
char *hex = "0123456789ABCDEF";
|
||||
char *hexl = "0123456789abcdef";
|
||||
char *pt, *p, *ph, ps = 1;
|
||||
|
@ -155,15 +156,12 @@ fgDebugClass fgDebugStrToClass( char *str )
|
|||
val <<= 4;
|
||||
val += ph-hex;
|
||||
p++;
|
||||
}
|
||||
else {
|
||||
/* fprintf( stderr, "Error in hex string '%s'\n", str );
|
||||
*/
|
||||
} else {
|
||||
// fprintf( stderr, "Error in hex string '%s'\n", str );
|
||||
return FG_NONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
/* Must be in string format */
|
||||
p = str;
|
||||
ps = 1;
|
||||
|
@ -176,9 +174,12 @@ fgDebugClass fgDebugStrToClass( char *str )
|
|||
/* determine value for token */
|
||||
i=0;
|
||||
while( fg_DebugClasses[i].str &&
|
||||
strncmp( fg_DebugClasses[i].str, pt, strlen(fg_DebugClasses[i].str)) ) i++;
|
||||
strncmp( fg_DebugClasses[i].str, pt,
|
||||
strlen(fg_DebugClasses[i].str)) ) i++;
|
||||
if( fg_DebugClasses[i].str == NULL ) {
|
||||
fprintf( stderr, "fg_debug.c: Could not find message class '%s'\n", pt );
|
||||
fprintf( stderr,
|
||||
"fg_debug.c: Could not find message class '%s'\n",
|
||||
pt );
|
||||
} else {
|
||||
val |= fg_DebugClasses[i].dbg_class;
|
||||
}
|
||||
|
@ -189,8 +190,7 @@ fgDebugClass fgDebugStrToClass( char *str )
|
|||
|
||||
|
||||
/* fgSetDebugOutput =======================================================*/
|
||||
void fgSetDebugOutput( FILE *out )
|
||||
{
|
||||
void fgSetDebugOutput( FILE *out ) {
|
||||
FG_GRABDEBUGSEM;
|
||||
fflush( fg_DebugOutput );
|
||||
fg_DebugOutput = out;
|
||||
|
@ -199,8 +199,7 @@ void fgSetDebugOutput( FILE *out )
|
|||
|
||||
|
||||
/* fgSetDebugLevels =======================================================*/
|
||||
void fgSetDebugLevels( fgDebugClass dbg_class, fgDebugPriority prio )
|
||||
{
|
||||
void fgSetDebugLevels( fgDebugClass dbg_class, fgDebugPriority prio ) {
|
||||
FG_GRABDEBUGSEM;
|
||||
fg_DebugClass = dbg_class;
|
||||
fg_DebugPriority = prio;
|
||||
|
@ -209,8 +208,7 @@ void fgSetDebugLevels( fgDebugClass dbg_class, fgDebugPriority prio )
|
|||
|
||||
|
||||
/* fgRegisterDebugCallback ================================================*/
|
||||
fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback )
|
||||
{
|
||||
fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback ) {
|
||||
fgDebugCallback old;
|
||||
FG_GRABDEBUGSEM;
|
||||
old = fg_DebugCallback;
|
||||
|
@ -221,18 +219,18 @@ fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback )
|
|||
|
||||
|
||||
/* fgPrintf ===============================================================*/
|
||||
int fgPrintf( fgDebugClass dbg_class, fgDebugPriority prio, char *fmt, ... )
|
||||
{
|
||||
int fgPrintf( fgDebugClass dbg_class, fgDebugPriority prio, char *fmt, ... ) {
|
||||
char szOut[1024+1];
|
||||
va_list ap;
|
||||
int ret = 0;
|
||||
|
||||
// If no action to take, then don't bother with the semaphore activity
|
||||
// Slight speed benefit.
|
||||
// If no action to take, then don't bother with the semaphore
|
||||
// activity Slight speed benefit.
|
||||
|
||||
if( !(dbg_class & fg_DebugClass) || (prio < fg_DebugPriority) ) {
|
||||
return ret; // Its zero anyway. But we might think about changing
|
||||
// Its zero anyway. But we might think about changing
|
||||
// it upon some error condition?
|
||||
return ret;
|
||||
}
|
||||
|
||||
FG_GRABDEBUGSEM;
|
||||
|
@ -245,14 +243,12 @@ int fgPrintf( fgDebugClass dbg_class, fgDebugPriority prio, char *fmt, ... )
|
|||
if( fg_DebugCallback!=NULL && fg_DebugCallback(dbg_class, prio, szOut) ) {
|
||||
FG_RELEASEDEBUGSEM;
|
||||
return ret;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
fprintf( fg_DebugOutput, szOut );
|
||||
FG_RELEASEDEBUGSEM;
|
||||
if( prio == FG_EXIT ) {
|
||||
exit(0);
|
||||
}
|
||||
else if( prio == FG_ABORT ) {
|
||||
} else if( prio == FG_ABORT ) {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
@ -261,8 +257,11 @@ int fgPrintf( fgDebugClass dbg_class, fgDebugPriority prio, char *fmt, ... )
|
|||
|
||||
|
||||
/* $Log$
|
||||
/* Revision 1.7 1998/02/16 13:39:43 curt
|
||||
/* Miscellaneous weekend tweaks. Fixed? a cache problem that caused whole
|
||||
/* tiles to occasionally be missing.
|
||||
/* Revision 1.8 1998/03/09 22:11:00 curt
|
||||
/* Processed through the format-o-matic.
|
||||
/*
|
||||
* Revision 1.7 1998/02/16 13:39:43 curt
|
||||
* Miscellaneous weekend tweaks. Fixed? a cache problem that caused whole
|
||||
* tiles to occasionally be missing.
|
||||
*
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/**************************************************************************
|
||||
/* -*- Mode: C++ -*-
|
||||
*
|
||||
* fg_debug.h -- Flight Gear debug utility functions
|
||||
*
|
||||
* Written by Paul Bleisch, started January 1998.
|
||||
|
@ -28,10 +29,9 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
/* NB: To add a dbg_class, add it here, and add it to the structure
|
||||
in fg_debug.c
|
||||
*/
|
||||
typedef enum{
|
||||
/* NB: To add a dbg_class, add it here, and add it to the structure in
|
||||
fg_debug.c */
|
||||
typedef enum {
|
||||
FG_NONE = 0x00000000,
|
||||
|
||||
FG_TERRAIN = 0x00000001,
|
||||
|
@ -48,10 +48,9 @@ typedef enum{
|
|||
FG_UNDEFD = 0x00001000, // For range checking
|
||||
|
||||
FG_ALL = 0xFFFFFFFFL // -1!
|
||||
} fgDebugClass;
|
||||
} fgDebugClass;
|
||||
|
||||
/* NB: To add a priority, add it here.
|
||||
*/
|
||||
/* NB: To add a priority, add it here. */
|
||||
typedef enum {
|
||||
FG_BULK, /* For frequent messages */
|
||||
FG_DEBUG, /* Less frequent debug type messages */
|
||||
|
@ -62,9 +61,11 @@ typedef enum {
|
|||
FG_ABORT /* Abandon ship (core) */
|
||||
} fgDebugPriority;
|
||||
|
||||
|
||||
/* Initialize the debuggin stuff. */
|
||||
void fgInitDebug( void );
|
||||
|
||||
|
||||
/* fgPrintf
|
||||
|
||||
Expects:
|
||||
|
@ -130,6 +131,7 @@ void fgSetDebugOutput( FILE *out );
|
|||
typedef int (*fgDebugCallback)( int DebugClass, int DebugPriority, char *outstr);
|
||||
fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback );
|
||||
|
||||
|
||||
// Leave these alone. Access intended for fg_debug and command line processing.
|
||||
//
|
||||
extern fgDebugClass fg_DebugClass;
|
||||
|
|
Loading…
Add table
Reference in a new issue