}
}
-void vg_strcat( vg_str *str, const char *append )
+static void _vg_strcatch( vg_str *str, char c )
{
- if( !append || (str->i == -1) ) return;
-
- i32 max = vg_str_storage( str ),
- i = 0;
+ if( str->i == -1 ) return;
-append:
- if( str->i == max ){
+ i32 max = vg_str_storage( str );
+ if( str->i == max )
+ {
if( str->len == -1 )
max = vg_str_dynamic_grow( str );
- else{
+ else
+ {
str->i = -1;
str->buffer[ max-1 ] = '\0';
return;
}
}
- char c = append[ i ++ ];
- str->buffer[ str->i ] = c;
+ str->buffer[ str->i ++ ] = c;
+}
+
+void vg_strcat( vg_str *str, const char *append )
+{
+ if( !append || (str->i == -1) ) return;
+
+ i32 i = 0;
+
+append:;
+ char c = append[ i ++ ];
+ _vg_strcatch( str, c );
if( c == '\0' )
+ {
+ str->i --;
return;
-
- str->i ++;
- goto append;
+ }
+ else goto append;
}
void vg_strcatch( vg_str *str, char c )
{
- vg_strcat( str, (char[]){ c, '\0' } );
+ _vg_strcatch( str, c );
+ _vg_strcatch( str, '\x00' );
+ str->i --;
}
/*