msgdump tool
[vg.git] / vg_platform.h
index b22f989ee608af389956056ca3c433357e389d96..ef3daed23a9e8ac4278e139fe91860018f2c38ef 100644 (file)
@@ -101,10 +101,21 @@ static void vg_strcat( vg_str *str, const char *append ){
    }
 
    /* 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];
@@ -125,6 +136,24 @@ static void vg_strcati32( vg_str *str, i32 value ){
       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;