X-Git-Url: https://harrygodden.com/git/?p=csRadar.git;a=blobdiff_plain;f=vdf.h;fp=vdf.h;h=2b77a7a4f3bf65fc87aa0b7c54bc7978d8e1a782;hp=ddfc2d34300cc87751183c45dc64bec543439a95;hb=0399aad1d7374badf037a2696d9e276d71b7a297;hpb=a97099abba0a239e20929f04ece9d6839c96ac14 diff --git a/vdf.h b/vdf.h index ddfc2d3..2b77a7a 100644 --- a/vdf.h +++ b/vdf.h @@ -103,6 +103,8 @@ struct vdf_node vdf_node **nodes; vdf_kv *pairs; + + u32 user; }; vdf_node *vdf_next( vdf_node *node, const char *name, int *it ) @@ -112,7 +114,7 @@ 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]; @@ -534,24 +536,38 @@ void vdf_parse_feedbuffer( vdf_ctx *ctx, char *buf ) } } -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