From 8d180b64058791e67b481d28bc57c7f2ed9c1e3d Mon Sep 17 00:00:00 2001 From: hgn Date: Tue, 21 Nov 2023 16:04:14 +0000 Subject: [PATCH] msgdump tool --- src/msgdump.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ vg_loader.h | 2 +- vg_msg.h | 4 ++-- 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 src/msgdump.c 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 \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 1 ) printf( "'}'" ); + if( count > 1 ) printf( " }" ); printf( "\n" ); } } -- 2.25.1