From ae862a3ab5e11289a213e2c4e8d885fee3214e01 Mon Sep 17 00:00:00 2001 From: curt Date: Mon, 9 Mar 1998 22:11:00 +0000 Subject: [PATCH] Processed through the format-o-matic. --- Main/fg_debug.c | 335 ++++++++++++++++++++++++------------------------ Main/fg_debug.h | 66 +++++----- 2 files changed, 201 insertions(+), 200 deletions(-) diff --git a/Main/fg_debug.c b/Main/fg_debug.c index a6a5ca866..7da257fd5 100644 --- a/Main/fg_debug.c +++ b/Main/fg_debug.c @@ -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 #include #include @@ -31,6 +33,7 @@ #include // Line to command line arguments #include
+ static int fg_DebugSem = 1; fgDebugClass fg_DebugClass = FG_ALL; // Need visibility for fgDebugPriority fg_DebugPriority = FG_INFO; // command line processing. @@ -52,217 +55,213 @@ FILE *fg_DebugOutput = NULL; // Visibility needed for command line processor. /* Used for convienence initialization from env variables. */ static struct { - char *str; - fgDebugClass dbg_class; + char *str; + fgDebugClass dbg_class; } fg_DebugClasses[] = { - { "FG_NONE", 0x00000000 }, - { "FG_TERRAIN", 0x00000001 }, - { "FG_ASTRO", 0x00000002 }, - { "FG_FLIGHT", 0x00000004 }, - { "FG_INPUT", 0x00000008 }, - { "FG_GL", 0x00000010 }, - { "FG_VIEW", 0x00000020 }, - { "FG_COCKPIT", 0x00000040 }, - { "FG_GENERAL", 0x00000080 }, - { "FG_MATH", 0x00000100 }, - { "FG_EVENT", 0x00000200 }, - { "FG_AIRCRAFT",0x00000400 }, - - /* Do not edit below here, last entry should be null */ - { "FG_ALL", 0xFFFFFFFF }, - { NULL, 0 } }; + { "FG_NONE", 0x00000000 }, + { "FG_TERRAIN", 0x00000001 }, + { "FG_ASTRO", 0x00000002 }, + { "FG_FLIGHT", 0x00000004 }, + { "FG_INPUT", 0x00000008 }, + { "FG_GL", 0x00000010 }, + { "FG_VIEW", 0x00000020 }, + { "FG_COCKPIT", 0x00000040 }, + { "FG_GENERAL", 0x00000080 }, + { "FG_MATH", 0x00000100 }, + { "FG_EVENT", 0x00000200 }, + { "FG_AIRCRAFT",0x00000400 }, + + /* Do not edit below here, last entry should be null */ + { "FG_ALL", 0xFFFFFFFF }, + { NULL, 0 } +}; static fgDebugClass fgDebugStrToClass( char *str ); /* fgInitDebug =============================================================*/ -void fgInitDebug( void ) -{ - char *pszClass, *pszPrio, *pszFile; +void fgInitDebug( void ) { + char *pszClass, *pszPrio, *pszFile; - // Support for log file/alt debug output via command line, environment or - // reasonable default. + // 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. + if( strlen( logArgbuf ) > 3) { // First check for command line option + // Assumed that we will append. + fg_DebugOutput = fopen(logArgbuf, "a+" ); } - if( !fg_DebugOutput ) { // If not set on command line, environment? - pszFile = getenv( "FG_DEBUGFILE" ); - if( pszFile ) { // There is such an environmental variable. - fg_DebugOutput = fopen( pszFile, "a+" ); - } + if( !fg_DebugOutput ) { // If not set on command line, environment? + pszFile = getenv( "FG_DEBUGFILE" ); + if( pszFile ) { // There is such an environmental variable. + fg_DebugOutput = fopen( pszFile, "a+" ); + } } - if( !fg_DebugOutput ) { // If neither command line nor environment - fg_DebugOutput = stderr; // then we use the fallback position - } - - FG_GRABDEBUGSEM; - fg_DebugSem = fg_DebugSem; /* shut up GCC */ - - // Test command line option overridge of debug priority. If the value - // is in range (properly optioned) the we will override both defaults - // and the environmental value. - - if ((priorityArgValue >= FG_BULK) && (priorityArgValue <= FG_ABORT)) { - fg_DebugPriority = priorityArgValue; + if( !fg_DebugOutput ) { // If neither command line nor environment + fg_DebugOutput = stderr; // then we use the fallback position } - else { // Either not set or out of range. We will not warn the user. - pszPrio = getenv( "FG_DEBUGPRIORITY" ); - if( pszPrio ) { - fg_DebugPriority = atoi( pszPrio ); - fprintf( stderr, - "fg_debug.c: Environment overrides default debug priority (%d)\n", - fg_DebugPriority ); - } + + FG_GRABDEBUGSEM; + fg_DebugSem = fg_DebugSem; /* shut up GCC */ + + // Test command line option overridge of debug priority. If the value + // is in range (properly optioned) the we will override both defaults + // and the environmental value. + + if ((priorityArgValue >= FG_BULK) && (priorityArgValue <= FG_ABORT)) { + fg_DebugPriority = priorityArgValue; + } else { // Either not set or out of range. We will not warn the user. + pszPrio = getenv( "FG_DEBUGPRIORITY" ); + if( pszPrio ) { + fg_DebugPriority = atoi( pszPrio ); + fprintf( stderr, + "fg_debug.c: Environment overrides default debug priority (%d)\n", + fg_DebugPriority ); + } } - if ((debugArgValue >= FG_ALL) && (debugArgValue < FG_UNDEFD)) { - fg_DebugPriority = priorityArgValue; - } - else { // Either not set or out of range. We will not warn the user. - pszClass = getenv( "FG_DEBUGCLASS" ); - if( pszClass ) { - fg_DebugClass = fgDebugStrToClass( pszClass ); - fprintf( stderr, - "fg_debug.c: Environment overrides default debug class (0x%08X)\n", - fg_DebugClass ); - } + if ((debugArgValue >= FG_ALL) && (debugArgValue < FG_UNDEFD)) { + fg_DebugPriority = priorityArgValue; + } else { // Either not set or out of range. We will not warn the user. + pszClass = getenv( "FG_DEBUGCLASS" ); + if( pszClass ) { + fg_DebugClass = fgDebugStrToClass( pszClass ); + fprintf( stderr, + "fg_debug.c: Environment overrides default debug class (0x%08X)\n", + fg_DebugClass ); + } } - FG_RELEASEDEBUGSEM; + FG_RELEASEDEBUGSEM; } /* fgDebugStrToClass ======================================================*/ -fgDebugClass fgDebugStrToClass( char *str ) -{ - char *hex = "0123456789ABCDEF"; - char *hexl = "0123456789abcdef"; - char *pt, *p, *ph, ps = 1; - unsigned int val = 0, i; +fgDebugClass fgDebugStrToClass( char *str ) { + char *hex = "0123456789ABCDEF"; + char *hexl = "0123456789abcdef"; + char *pt, *p, *ph, ps = 1; + unsigned int val = 0, i; - if( str == NULL ) { - return 0; - } - - /* Check for 0xXXXXXX notation */ - if( (p = strstr( str, "0x")) ) { - p++; p++; - while (*p) { - if( (ph = strchr(hex,*p)) || (ph = strchr(hexl,*p)) ){ - val <<= 4; - val += ph-hex; - p++; - } - else { - /* fprintf( stderr, "Error in hex string '%s'\n", str ); - */ - return FG_NONE; - } + if( str == NULL ) { + return 0; } - } - else { - /* Must be in string format */ - p = str; - ps = 1; - while( ps ) { - while( *p && (*p==' ' || *p=='\t') ) p++; /* remove whitespace */ - pt = p; /* mark token */ - while( *p && (*p!='|') ) p++; /* find OR or EOS */ - ps = *p; /* save value at p so we can attempt to be bounds safe */ - *p++ = 0; /* terminate token */ - /* determine value for token */ - i=0; - while( fg_DebugClasses[i].str && - 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 ); - } else { - val |= fg_DebugClasses[i].dbg_class; - } + + /* Check for 0xXXXXXX notation */ + if( (p = strstr( str, "0x")) ) { + p++; p++; + while (*p) { + if( (ph = strchr(hex,*p)) || (ph = strchr(hexl,*p)) ){ + val <<= 4; + val += ph-hex; + p++; + } else { + // fprintf( stderr, "Error in hex string '%s'\n", str ); + return FG_NONE; + } + } + } else { + /* Must be in string format */ + p = str; + ps = 1; + while( ps ) { + while( *p && (*p==' ' || *p=='\t') ) p++; /* remove whitespace */ + pt = p; /* mark token */ + while( *p && (*p!='|') ) p++; /* find OR or EOS */ + ps = *p; /* save value at p so we can attempt to be bounds safe */ + *p++ = 0; /* terminate token */ + /* determine value for token */ + i=0; + while( fg_DebugClasses[i].str && + 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 ); + } else { + val |= fg_DebugClasses[i].dbg_class; + } + } } - } - return (fgDebugClass)val; + return (fgDebugClass)val; } /* fgSetDebugOutput =======================================================*/ -void fgSetDebugOutput( FILE *out ) -{ - FG_GRABDEBUGSEM; - fflush( fg_DebugOutput ); - fg_DebugOutput = out; - FG_RELEASEDEBUGSEM; +void fgSetDebugOutput( FILE *out ) { + FG_GRABDEBUGSEM; + fflush( fg_DebugOutput ); + fg_DebugOutput = out; + FG_RELEASEDEBUGSEM; } /* fgSetDebugLevels =======================================================*/ -void fgSetDebugLevels( fgDebugClass dbg_class, fgDebugPriority prio ) -{ - FG_GRABDEBUGSEM; - fg_DebugClass = dbg_class; - fg_DebugPriority = prio; - FG_RELEASEDEBUGSEM; +void fgSetDebugLevels( fgDebugClass dbg_class, fgDebugPriority prio ) { + FG_GRABDEBUGSEM; + fg_DebugClass = dbg_class; + fg_DebugPriority = prio; + FG_RELEASEDEBUGSEM; } /* fgRegisterDebugCallback ================================================*/ -fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback ) -{ - fgDebugCallback old; - FG_GRABDEBUGSEM; - old = fg_DebugCallback; - fg_DebugCallback = callback; - FG_RELEASEDEBUGSEM; - return old; +fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback ) { + fgDebugCallback old; + FG_GRABDEBUGSEM; + old = fg_DebugCallback; + fg_DebugCallback = callback; + FG_RELEASEDEBUGSEM; + return old; } /* fgPrintf ===============================================================*/ -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( !(dbg_class & fg_DebugClass) || (prio < fg_DebugPriority) ) { - return ret; // Its zero anyway. But we might think about changing - // it upon some error condition? - } - - FG_GRABDEBUGSEM; - - /* ret = vsprintf( szOut, fmt, (&fmt+1)); (but it didn't work, thus ... */ - va_start (ap, fmt); - ret = vsprintf( szOut, fmt, ap); - va_end (ap); - - if( fg_DebugCallback!=NULL && fg_DebugCallback(dbg_class, prio, szOut) ) { - FG_RELEASEDEBUGSEM; - return ret; - } - else { - fprintf( fg_DebugOutput, szOut ); - FG_RELEASEDEBUGSEM; - if( prio == FG_EXIT ) { - exit(0); +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( !(dbg_class & fg_DebugClass) || (prio < fg_DebugPriority) ) { + // Its zero anyway. But we might think about changing + // it upon some error condition? + return ret; } - else if( prio == FG_ABORT ) { - abort(); + + FG_GRABDEBUGSEM; + + /* ret = vsprintf( szOut, fmt, (&fmt+1)); (but it didn't work, thus ... */ + va_start (ap, fmt); + ret = vsprintf( szOut, fmt, ap); + va_end (ap); + + if( fg_DebugCallback!=NULL && fg_DebugCallback(dbg_class, prio, szOut) ) { + FG_RELEASEDEBUGSEM; + return ret; + } else { + fprintf( fg_DebugOutput, szOut ); + FG_RELEASEDEBUGSEM; + if( prio == FG_EXIT ) { + exit(0); + } else if( prio == FG_ABORT ) { + abort(); + } } - } - return ret; -} + return ret; +} /* $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. + * */ diff --git a/Main/fg_debug.h b/Main/fg_debug.h index 4aa902613..612d77772 100644 --- a/Main/fg_debug.h +++ b/Main/fg_debug.h @@ -1,4 +1,5 @@ -/************************************************************************** +/* -*- Mode: C++ -*- + * * fg_debug.h -- Flight Gear debug utility functions * * Written by Paul Bleisch, started January 1998. @@ -28,43 +29,43 @@ #include -/* 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, - FG_ASTRO = 0x00000002, - FG_FLIGHT = 0x00000004, - FG_INPUT = 0x00000008, - FG_GL = 0x00000010, - FG_VIEW = 0x00000020, - FG_COCKPIT = 0x00000040, - FG_GENERAL = 0x00000080, - FG_MATH = 0x00000100, - FG_EVENT = 0x00000200, - FG_AIRCRAFT= 0x00000400, - FG_UNDEFD = 0x00001000, // For range checking - - FG_ALL = 0xFFFFFFFFL // -1! - } fgDebugClass; - -/* NB: To add a priority, add it here. -*/ +/* 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, + FG_ASTRO = 0x00000002, + FG_FLIGHT = 0x00000004, + FG_INPUT = 0x00000008, + FG_GL = 0x00000010, + FG_VIEW = 0x00000020, + FG_COCKPIT = 0x00000040, + FG_GENERAL = 0x00000080, + FG_MATH = 0x00000100, + FG_EVENT = 0x00000200, + FG_AIRCRAFT= 0x00000400, + FG_UNDEFD = 0x00001000, // For range checking + + FG_ALL = 0xFFFFFFFFL // -1! +} fgDebugClass; + +/* NB: To add a priority, add it here. */ typedef enum { - FG_BULK, /* For frequent messages */ - FG_DEBUG, /* Less frequent debug type messages */ - FG_INFO, /* Informatory messages */ - FG_WARN, /* Possible impending problem */ - FG_ALERT, /* Very possible impending problem */ - FG_EXIT, /* Problem (no core) */ - FG_ABORT /* Abandon ship (core) */ + FG_BULK, /* For frequent messages */ + FG_DEBUG, /* Less frequent debug type messages */ + FG_INFO, /* Informatory messages */ + FG_WARN, /* Possible impending problem */ + FG_ALERT, /* Very possible impending problem */ + FG_EXIT, /* Problem (no core) */ + 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; -- 2.39.2