projects
/
vg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
input joy sleep wake, revisit string cat code
[vg.git]
/
vg_string.c
diff --git
a/vg_string.c
b/vg_string.c
index 1261f5b9479e79ea77b6989772bbcfaa42501194..ef29ef3be597ef7e84b01ddfbee600b22bf38680 100644
(file)
--- a/
vg_string.c
+++ b/
vg_string.c
@@
-69,37
+69,49
@@
static i32 vg_str_dynamic_grow( vg_str *str )
}
}
}
}
-
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 );
if( str->len == -1 )
max = vg_str_dynamic_grow( str );
- else{
+ else
+ {
str->i = -1;
str->buffer[ max-1 ] = '\0';
return;
}
}
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' )
if( c == '\0' )
+ {
+ str->i --;
return;
return;
-
- str->i ++;
- goto append;
+ }
+ else goto append;
}
void vg_strcatch( vg_str *str, char c )
{
}
void vg_strcatch( vg_str *str, char c )
{
- vg_strcat( str, (char[]){ c, '\0' } );
+ _vg_strcatch( str, c );
+ _vg_strcatch( str, '\x00' );
+ str->i --;
}
/*
}
/*