msg api, mem api
[vg.git] / vg_msg.c
index db7380a91bfacd0f4292a043a1868e3b4fce89b7..65d8ebda49bc0c9a317f33c7b60c7886ddfb8e5c 100644 (file)
--- a/vg_msg.c
+++ b/vg_msg.c
@@ -1,5 +1,8 @@
 #include "vg_msg.h"
 #include "vg_platform.h"
+#include "vg_string.h"
+#include <string.h>
+#include <stdio.h>
 
 /* write a buffer from msg, rang checked. */
 void vg_msg_wbuf( vg_msg *msg, u8 *buf, u32 len )
@@ -383,7 +386,8 @@ int vg_msg_getkvcmd( vg_msg *msg, const char *key, vg_msg_cmd *cmd )
  * Read a integral KV out to dst, and perform conversion if needed
  * dst is always defined, if its not found its set to 0
  */
-int vg_msg_getkvintg( vg_msg *msg, const char *key, u8 type, void *dst )
+int vg_msg_getkvintg( vg_msg *msg, const char *key, u8 type, void *dst, 
+                      void *default_value )
 {
    vg_msg_cmd cmd;
    if( vg_msg_getkvcmd( msg, key, &cmd ) )
@@ -393,7 +397,11 @@ int vg_msg_getkvintg( vg_msg *msg, const char *key, u8 type, void *dst )
    }
    else 
    {
-      memset( dst, 0, vg_msg_cmd_bytecount(type) );
+      if( default_value )
+         memcpy( dst, default_value, vg_msg_cmd_bytecount(type) );
+      else
+         memset( dst, 0, vg_msg_cmd_bytecount(type) );
+
       return 0;
    }
 }