]> git.tdb.fi Git - gldbg.git/blobdiff - source/glprint.c
Add gldBreak callback to gldecoder
[gldbg.git] / source / glprint.c
index 9721463eff76a4f552f954886553b4cf8f6c244c..e90c0e3d6eb6445ce88de453e88b615b6aba14c4 100644 (file)
@@ -8,6 +8,7 @@ Distributed under the GPL
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <ctype.h>
 #include "arraysize.h"
 #include "enums.h"
 #include "glprint.h"
@@ -23,6 +24,7 @@ typedef struct sGlPrintData
 static void init_print(GlDecoder *);
 static void glprint_free(void *);
 static void print_gldError(void *, GLenum);
+static void print_unhandled(void *, unsigned short);
 
 GlDecoder *glprint_new(char *buffer, unsigned bufsize)
 {
@@ -44,6 +46,7 @@ GlDecoder *glprint_new(char *buffer, unsigned bufsize)
 
        init_print(dec);
        dec->gldError = print_gldError;
+       dec->unhandled = print_unhandled;
 
        return dec;
 }
@@ -73,6 +76,9 @@ static const char *print_array(const char *fmt, const void *data, unsigned elem_
        char *ptr;
        unsigned i;
 
+       if(!data)
+               return "NULL";
+
        for(cptr=fmt; (type<2 && *cptr); ++cptr)
        {
                if(*cptr=='%')
@@ -125,10 +131,16 @@ static const char *print_data(const void *data, unsigned size)
        }
 }
 
-#include "glprint.funcs"
+#include "gensrc/glprint.funcs"
 
 static void print_gldError(void *user_data, GLenum code)
 {
        GlPrintData *gpd = (GlPrintData *)user_data;
        snprintf(gpd->buffer, gpd->bufsize, "ERROR: %s", describe_enum(code, "ErrorCode"));
 }
+
+static void print_unhandled(void *user_data, unsigned short func)
+{
+       GlPrintData *gpd = (GlPrintData *)user_data;
+       gpd->buffer[0] = 0;
+}