vdf_node **nodes;
vdf_kv *pairs;
+
+ u32 user;
};
vdf_node *vdf_next( vdf_node *node, const char *name, int *it )
for( int i = it? *it: 0; i < csr_sb_count( node->nodes ); i ++ )
{
- if( !strcmp( name, node->nodes[i]->name ))
+ if( !name || !strcmp( name, node->nodes[i]->name ))
{
if( it ) *it = i+1;
return node->nodes[i];
}
}
-vdf_node *vdf_open_file( const char *fn )
-{
+int vdf_load_into( const char *fn, vdf_node *node )
+{
char *text_src = csr_textasset_read( fn );
if( !text_src )
{
fprintf( stderr, "vdf open failed\n" );
- return NULL;
+ return 0;
}
vdf_ctx ctx = {0};
- ctx.root = ctx.st.pnode = vdf_create_node( NULL, NULL );
+ ctx.root = ctx.st.pnode = node;
vdf_newln( &ctx );
vdf_parse_feedbuffer( &ctx, text_src );
-
free( text_src );
- return ctx.root;
+
+ return 1;
+}
+
+vdf_node *vdf_open_file( const char *fn )
+{
+ vdf_node *root = vdf_create_node( NULL, NULL );
+ if( vdf_load_into( fn, root ) )
+ {
+ return root;
+ }
+ else
+ {
+ vdf_free_r( root );
+ return NULL;
+ }
}
// OUTPUT