From: hgn Date: Thu, 19 Jun 2025 00:03:12 +0000 (+0100) Subject: errrrrrm X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=62014a8dd5cf7a3b453d8382649a78f6e50d9418;p=vg.git errrrrrm --- diff --git a/vg_console.c b/vg_console.c index 2e803b1..cd744df 100644 --- a/vg_console.c +++ b/vg_console.c @@ -116,39 +116,62 @@ static void _vg_console_free(void) */ static int vg_console_tokenize( const char *src, char *dst, const char *args[32] ) { - int arg_count = 0, - in_token = 0; + int arg_count = 0; + bool in_token = 0, in_string = 0; for( int i=0;; i ++ ) { - if( src[i] ) + char c = src[i]; + dst[i] = c; + + if( c == '\0' ) + break; + + if( c == '"' ) { - if( src[i] == ' ' || src[i] == '\t' ) + if( in_string ) { if( in_token ) + { dst[i] = '\0'; + in_token = 0; + } - in_token = 0; - - if( arg_count == 32 ) - break; - } - else + in_string = 0; + } + else + in_string = 1; + } + else + { + if( !in_string && (c == ' ' || c == '\t') ) { - dst[i] = src[i]; - - if( !in_token ) + if( in_token ) { - args[ arg_count ++ ] = &dst[i]; - in_token = 1; - } - } - } - else - { - dst[i] = '\0'; - break; - } + dst[i] = '\0'; + in_token = 0; + } + else + dst[i] = '\0'; + } + else + { + if( in_token ) {} + else + { + if( arg_count == 32 ) + { + vg_error( "Console input exceeded maximum command tokens (>32)\n" ); + break; + } + else + { + args[ arg_count ++ ] = &dst[i]; + in_token = 1; + } + } + } + } } return arg_count; diff --git a/vg_string.c b/vg_string.c index 2c0d24e..8fec7c4 100644 --- a/vg_string.c +++ b/vg_string.c @@ -123,7 +123,8 @@ void vg_strcatch( vg_str *str, char c ) /* * FIXME: Negative numbers */ -void vg_strcati32( vg_str *str, i32 value ) +void vg_strcati32( vg_str *str, i32 value ){ vg_strcatu64( str, (u64)value ); } +void vg_strcatu64( vg_str *str, u64 value ) { if( value ) { @@ -139,7 +140,6 @@ void vg_strcati32( vg_str *str, i32 value ) for( int j=0; j