rendered paste bodyIndex: buzelib/Utils/MachineIndex.h===================================================================--- buzelib/Utils/MachineIndex.h (revision 44)+++ buzelib/Utils/MachineIndex.h (working copy)@@ -60,7 +60,7 @@ IndexItem* parseLine(const std::string& line, FileReader &reader); MachineMenu* parseMenu(const std::string& firstLine, FileReader &reader);- void open(const char* fn);+ void open(const char* fn, MachineMenu *menu = NULL); int saveDepth;Index: buzelib/Utils/MachineIndex.cpp===================================================================--- buzelib/Utils/MachineIndex.cpp (revision 44)+++ buzelib/Utils/MachineIndex.cpp (working copy)@@ -66,6 +66,15 @@ MachineMenu* childMenu=parseMenu(line, reader); if (childMenu) menu->append(childMenu);+ } else+ if (line.at(0) == '#') {+ const char *str;++ str = line.c_str();+ if(str && strlen(str) > 15 && !strncmp(str, "# buze-include ", 15))+ {+ open(str + 15, menu);+ } } else { IndexItem* item=parseLine(line, reader); if (item) {@@ -76,10 +85,13 @@ return menu; } -void MachineIndex::open(const char* fn) {+void MachineIndex::open(const char* fn, MachineMenu *menu) { FileReader reader; string line; + if(!menu)+ menu = &root;+ if (!reader.open(fn)) return ; while (!reader.eof()) { //cout << reader.readLine() << endl;@@ -98,14 +110,14 @@ str = line.c_str(); if(str && strlen(str) > 15 && !strncmp(str, "# buze-include ", 15)) {- open(str + 15);+ open(str + 15, menu); } item=0; } else item=parseLine(line, reader); if (item)- root.append(item);+ menu->append(item); } reader.close();