}
/* overflow */
- str->buffer[ str->i ] = '\0';
+ str->buffer[ str->len-1 ] = '\0';
str->i = -1;
}
+static void vg_strcatch( vg_str *str, char c ){
+ if( str->i == -1 ) return;
+ if( (str->i + 2) > str->len ){
+ str->i = -1;
+ return;
+ }
+ str->buffer[ str->i ++ ] = c;
+ str->buffer[ str->i ] = '\0';
+}
+
+/* FIXME: Negative numbers */
static void vg_strcati32( vg_str *str, i32 value ){
if( value ){
char temp[32];
vg_strcat( str, "0" );
}
+static void vg_strcati32r( vg_str *str, i32 value, i32 n, char alt ){
+ char temp[32];
+ i32 i=0;
+ while( value ){
+ if( i>=n )
+ break;
+
+ temp[ n-1 - (i ++) ] = '0' + (value % 10);
+ value /= 10;
+ }
+
+ for( ;i<n; i ++ )
+ temp[ n-1 - i ] = alt;
+
+ temp[n]='\0';
+ vg_strcat( str, temp );
+}
+
static int vg_strgood( vg_str *str ){
if( str->i == -1 ) return 0;
else return 1;