00001 #include <stdio.h> 00002 #include <stdlib.h> 00003 #include <string.h> 00004 #include <stdarg.h> 00005 #include <grass/gis.h> 00006 #include "G.h" 00007 #include <grass/glocale.h> 00008 00009 00027 static int grass_debug_level = -1; 00028 00029 int G_debug (int level, char *msg,...) 00030 { 00031 #ifdef GDEBUG 00032 char *lstr, *filen; 00033 va_list ap; 00034 FILE *fd; 00035 00036 if (grass_debug_level < 0) { 00037 lstr = G__getenv( "DEBUG" ); 00038 00039 if ( lstr != NULL ) 00040 grass_debug_level = atoi ( lstr ); 00041 else 00042 grass_debug_level = 0; 00043 } 00044 00045 if ( grass_debug_level >= level ) { 00046 va_start(ap, msg); 00047 00048 filen = getenv("GRASS_DEBUG_FILE"); 00049 if ( filen != NULL ) { 00050 fd = fopen (filen,"a"); 00051 if ( !fd ) { 00052 G_warning ( _("Cannot open debug file '%s'"), filen); 00053 return 0; 00054 } 00055 } else { 00056 fd = stderr; 00057 } 00058 00059 fprintf (fd, "D%d/%d: ", level, grass_debug_level); 00060 vfprintf (fd, msg, ap); 00061 fprintf (fd, "\n"); 00062 fflush (fd); 00063 00064 if ( filen != NULL ) fclose ( fd ); 00065 00066 va_end(ap); 00067 } 00068 #endif 00069 00070 return 1; 00071 } 00072 00073 00085 int G_dump(int fd) 00086 { 00087 struct fileinfo *fcb = &G__.fileinfo[fd]; 00088 00089 G_message(_("G_dump: memory allocated to G__")); 00090 G_message(_("Size of cell in fp maps = %d"), G__.fp_nbytes); 00091 G_message(_("type for writing floating maps = %d"), G__.fp_type); 00092 G_message(_("current window = %p"), &G__.window); 00093 G_message(_("Flag: window set? %d"), G__.window_set); 00094 G_message(_("File descriptor for automatic mask %d"), G__.mask_fd); 00095 G_message(_("Flag denoting automatic masking %d"), G__.auto_mask); 00096 G_message(_("CELL mask buffer %p"), G__.mask_buf); 00097 G_message(_("buffer for reading null rows %p"), G__.null_buf); 00098 G_message(_("Pre/post compressed data buffer %p"), G__.compressed_buf); 00099 G_message(_("sizeof compressed_buf %d"), G__.compressed_buf_size); 00100 G_message(_("work data buffer %p"), G__.work_buf); 00101 G_message(_("sizeof work_buf %d"), G__.work_buf_size); 00102 G_message(_("sizeof null_buf %d"), G__.null_buf_size); 00103 G_message(_("sizeof mask_buf %d"), G__.mask_buf_size); 00104 G_message(_("Histogram request %d"), G__.want_histogram); 00105 00106 G_message(_("G_dump: file #%d"), fd); 00107 G_message(_("open mode = %d"), fcb->open_mode); 00108 G_message(_("Cell header %p"),&fcb->cellhd); 00109 G_message(_("Table reclass %p"), &fcb->reclass); 00110 G_message(_("Cell stats %p"), &fcb->statf); 00111 G_message(_("Range structure %p"), &fcb->range); 00112 G_message(_("float Range structure %p"), &fcb->fp_range); 00113 G_message(_("want histogram? %d"), fcb->want_histogram); 00114 G_message(_("Automatic reclass flag %d"), fcb->reclass_flag); 00115 G_message(_("File row addresses %p"), fcb->row_ptr); 00116 G_message(_("Data to window col mapping %p"), fcb->col_map); 00117 G_message(_("Data to window row constants %f,%f"), fcb->C1,fcb->C2); 00118 G_message(_("Current data row in memory %d"), fcb->cur_row); 00119 G_message(_("Current null row in memory %d"), fcb->null_cur_row); 00120 G_message(_("nbytes per cell for current row %d"), fcb->cur_nbytes); 00121 G_message(_("Decompressed data buffer %s"), fcb->data); 00122 G_message(_("bytes per cell %d"), fcb->nbytes); 00123 G_message(_("type: int, float or double map %d"), fcb->map_type); 00124 G_message(_("Temporary name for NEW files %s"), fcb->temp_name); 00125 G_message(_("Temporary name for NEW NULL files %s"), fcb->null_temp_name); 00126 G_message(_("for existing raster maps %d"), fcb->null_file_exists); 00127 G_message(_("Name of open file %s"), fcb->name); 00128 G_message(_("Mapset of open file %s"), fcb->mapset); 00129 G_message(_("io error warning given %d"), fcb->io_error); 00130 G_message(_("xdr stream for reading fp %p"), &fcb->xdrstream); 00131 G_message(_("NULL_ROWS array[%d] = %p"), NULL_ROWS_INMEM, fcb->NULL_ROWS); 00132 G_message(_("data buffer for reading null rows %p"), fcb->null_work_buf); 00133 G_message(_("Minimum row null row number in memory %d"), fcb->min_null_row); 00134 G_message(_("Quant ptr = %p"), &fcb->quant); 00135 G_message(_("G_dump: end")); 00136 00137 return 0; 00138 }