From: hgn <hgodden00@gmail.com>
Date: Tue, 21 Nov 2023 16:04:14 +0000 (+0000)
Subject: msgdump tool
X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=8d180b64058791e67b481d28bc57c7f2ed9c1e3d;p=vg.git

msgdump tool
---

diff --git a/src/msgdump.c b/src/msgdump.c
new file mode 100644
index 0000000..2532338
--- /dev/null
+++ b/src/msgdump.c
@@ -0,0 +1,55 @@
+// Copyright (C) 2021-2023 Harry Godden (hgn) - All Rights Reserved
+
+#define VG_TOOLS
+#include "vg/vg.h"
+#include "vg/vg_msg.h"
+
+#define CHUNK_SIZE 4096
+
+int main( int argc, char *argv[] ){
+   assert(argc);
+
+	if( argc < 2 ){
+		vg_error( "Usage: %s <file>\n", argv[0] );
+		return 0;
+	}
+
+   FILE *f = fopen( argv[1], "rb" );
+	if( !f ){
+      vg_error( "vg_disk_open_read: %s\n", strerror(errno) );
+   }
+
+   void *buffer = NULL;
+   u64 current = 0;
+
+   /* read in chunks */
+   for( u32 i=0; 1; i++ ){
+      buffer = realloc( buffer, current + CHUNK_SIZE );
+      u64 l = fread( buffer + current, 1, CHUNK_SIZE, f );
+      current += l;
+
+      if( l != CHUNK_SIZE ){
+         if( feof( f ) ){
+            break;
+         }
+         else{
+            if( ferror( f ) ){
+               fclose(f);
+               vg_fatal_error( "read error" );
+            }
+            else{
+               fclose(f);
+               vg_fatal_error( "unknown error codition" );
+            }
+         }
+      }
+   }
+
+   fclose( f );
+
+   vg_msg msg;
+   vg_msg_init( &msg, buffer, current );
+   vg_msg_print( &msg, current );
+
+   free( buffer );
+}
diff --git a/vg_loader.h b/vg_loader.h
index cdd29eb..fcae755 100644
--- a/vg_loader.h
+++ b/vg_loader.h
@@ -219,7 +219,7 @@ static void vg_loader_start( void(*pfn)(void *data), void *data )
    SDL_SemWait( vg.sem_loader );
 
    vg.thread_data = data;
-   SDL_CreateThread( _vg_loader_thread, "Loader thread", pfn );
+   SDL_CreateThread( _vg_loader_thread, "vg: loader", pfn );
 }
 
 /*
diff --git a/vg_msg.h b/vg_msg.h
index a41b24c..13f15dd 100644
--- a/vg_msg.h
+++ b/vg_msg.h
@@ -634,7 +634,7 @@ static void vg_msg_print( vg_msg *msg, u32 len ){
 
             printf( "'%s': ", cmd.key );
 
-            if( count > 1 ) printf( "'{' " );
+            if( count > 1 ) printf( "{ " );
 
             for( u32 i=0; i<count; i++ ){
                const void *p = cmd.value + size*i;
@@ -663,7 +663,7 @@ static void vg_msg_print( vg_msg *msg, u32 len ){
                if( i+1<count ) printf(", ");
             }
 
-            if( count > 1 ) printf( "'}'" );
+            if( count > 1 ) printf( " }" );
             printf( "\n" );
          }
       }