X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/14a7f0b86565fffa82281d21f562b57de5d61975..83c1f3bcb7ec8d6219ce4af96b06ac35a172a7ba:/src/surf/surf_parse.l?ds=sidebyside diff --git a/src/surf/surf_parse.l b/src/surf/surf_parse.l index 0d1005435c..39fd337953 100644 --- a/src/surf/surf_parse.l +++ b/src/surf/surf_parse.l @@ -140,6 +140,46 @@ e_surf_token_t surf_parse(void) { return(tok_num); } +void find_section(const char* file, const char* section_name) +{ + e_surf_token_t token; + int found = 0; + + surf_parse_open(file); + + while((token=surf_parse())) { + if(token!=TOKEN_BEGIN_SECTION) continue; + + token=surf_parse(); + xbt_assert1((token==TOKEN_WORD),"Parse error line %d",line_pos); + if(strcmp(surf_parse_text,section_name)==0) found=1; + + token=surf_parse(); + xbt_assert1((token==TOKEN_CLOSURE),"Parse error line %d",line_pos); + + if(found) return; + } + + CRITICAL2("Could not find %s section in %s\n",section_name,file); + xbt_abort(); +} + +void close_section(const char* section_name) +{ + e_surf_token_t token; + + token=surf_parse(); + xbt_assert1((token==TOKEN_WORD),"Parse error line %d",line_pos); + xbt_assert1((strcmp(surf_parse_text,section_name)==0), + "Closing section does not match the opening one (%s).", + section_name); + + token=surf_parse(); + xbt_assert1((token==TOKEN_CLOSURE),"Parse error line %d",line_pos); + + surf_parse_close(); +} + void surf_parse_open(const char *file) { file_to_parse = fopen(file,"r"); xbt_assert1((file_to_parse), "Unable to open \"%s\"\n",file) @@ -160,6 +200,7 @@ void surf_parse_close(void) { tok_num = 0; } + /* Local variables: */ /* mode: c */ /* End: */