// expat callback for start of a "node" tag\r
void tree_start (void* usrdata, const char* tag, const char** arg)\r
{\r
- int i, icon;\r
+ int i, icon = 0;\r
static int id = 1;\r
- const char* name = "\0";\r
\r
TREE* tree = (TREE*)usrdata;\r
\r
tree->packages[id].icon = FALSE;\r
tree->packages[id].none = TRUE;\r
tree->packages[id].path = NULL;\r
+ tree->packages[id].name = "\0";\r
\r
// read the arguments\r
for (i=0; arg[i]; i+=2) \r
{\r
if(!strcmp(arg[i], "name"))\r
- name = arg[i+1];\r
+ {\r
+ tree->packages[id].name = new char [strlen(arg[i+1])+1];\r
+ strcpy(tree->packages[id].name, arg[i+1]);\r
+ }\r
\r
if(!strcmp(arg[i], "icon"))\r
{\r
\r
if(!strcmp(arg[i], "file"))\r
{\r
- tree->packages[id].path = new char [strlen(arg[i+1])];\r
+ tree->packages[id].path = new char [strlen(arg[i+1])+1];\r
strcpy(tree->packages[id].path, arg[i+1]);\r
\r
if(strcmp(tag, "bin"))\r
}\r
}\r
\r
- if(name[0]=='\0') return;\r
+ if(tree->packages[id].name[0] == '\0') return;\r
\r
// add it\r
if(!parents.size())\r
- tree->addItem(id, name, 0, icon);\r
+ {\r
+ if(tree->addItem)\r
+ tree->addItem(id, tree->packages[id].name, 0, icon);\r
+ }\r
+\r
+ // do some manipulation at the parent\r
else\r
{\r
- tree->addItem(id, name, parents.back(), icon);\r
+ tree->addItem(id, tree->packages[id].name, parents.back(), icon);\r
\r
// list as child in the parent node\r
tree->packages[parents.back()].children.push_back(id);\r