00001 #include <stdio.h>
00002 #include <stdlib.h>
00003 #include <string.h>
00004 #include <stdarg.h>
00005 #include "gis.h"
00006
00024 static int grass_debug_level = -1;
00025
00026 int G_debug (int level, char *msg,...)
00027 {
00028 #ifdef GDEBUG
00029 char *lstr, *filen;
00030 va_list ap;
00031 FILE *fd;
00032
00033 if (grass_debug_level < 0) {
00034 lstr = G__getenv( "DEBUG" );
00035
00036 if ( lstr != NULL )
00037 grass_debug_level = atoi ( lstr );
00038 else
00039 grass_debug_level = 0;
00040 }
00041
00042 if ( grass_debug_level >= level ) {
00043 va_start(ap, msg);
00044
00045 filen = getenv("GRASS_DEBUG_FILE");
00046 if ( filen != NULL ) {
00047 fd = fopen (filen,"a");
00048 if ( !fd ) {
00049 G_warning ( "Cannot open debug file '%s'", filen);
00050 return 0;
00051 }
00052 } else {
00053 fd = stderr;
00054 }
00055
00056 fprintf (fd, "D%d/%d: ", level, grass_debug_level);
00057 vfprintf (fd, msg, ap);
00058 fprintf (fd, "\n");
00059
00060 if ( filen != NULL ) fclose ( fd );
00061
00062 va_end(ap);
00063 }
00064 #endif
00065
00066 return 1;
00067 }
00068