-{ struct ir_class_t* class, * classbuf;\r
- struct ir_set_t* set, * set_child;\r
- int depth, i, olddepth;\r
- depth = olddepth = 0;\r
- classbuf = NULL;\r
- for(class = ir_class_root(); class != NULL; class = class->nextchild)\r
- {handle_class:\r
- pdepth();\r
- uprintf("%U\n",class->name);\r
- old_depth = depth;\r
- set = class->root_set;\r
- handle_set:\r
- while(set != NULL)\r
- { pdepth();uprintf("|");\r
- pdepth();\r
- uprintf("-[%U]",set->name);\r
- set_child = set->nextchild;\r
- while (set_child != NULL)\r
- { depth++;\r
- uprintf("--[%U]",set_child->name);\r
- set_child = set_child->nextchild;\r
- }\r
- uprintf("\n");\r
- set = set->nextsib;\r
- }\r
- if (class->nextsib != NULL)\r
- { if (classbuf == NULL)\r
- classbuf = class;\r
- class = class->nextsib;\r
- goto handle_class;\r
- }\r
- if (classbuf != NULL)\r
- class = classbuf;\r
- classbuf = NULL;\r
- uprintf("\n");\r
- depth = olddepth + 1;\r
+{ uprintf("IR From Directory: %s\n",getcwd(NULL,255));\r
+ crawl_class(&root_class);\r
+ if (root_class.root_set != NULL)\r
+ crawl_set(root_class.root_set, 0);\r
+}\r
+\r
+static\r
+void crawl_class\r
+( struct ir_class_t* class )\r
+{ struct ir_class_t* iter;\r
+ for (iter = class->nextchild; iter != NULL; iter = iter->nextsib)\r
+ { wprintf("%U/\n", iter->name);\r
+ if(chdir((char*)iter->name))\r
+ eprintf("CHDIR %U from %s\n",iter->name,getcwd(NULL,255));\r
+ crawl_class(iter);\r
+ if (iter->root_set != NULL)\r
+ crawl_set(iter->root_set, 0);\r
+ uprintf("%U\\\n",iter->name);\r
+ if (chdir(".."))\r
+ eprintf("CHDIR ..\n");\r
+ }\r
+}\r
+\r
+#define push_setp(setp) (*(struct ir_set_t**)stack_alloc(sizeof(struct ir_set_t*)) = setp)\r
+#define pop_setp() (*(struct ir_set_t**)pagelist_pop(&datapages, sizeof(struct ir_set_t*)))\r
+static\r
+void crawl_set\r
+( struct ir_set_t* set,\r
+ int depth\r
+)\r
+{ struct ir_set_t* iter;\r
+ int i;\r
+ i = depth * 12;\r
+ while (i--)\r
+ putchar('.');\r
+ i = depth;\r
+ for(iter = set; iter != NULL; iter = iter->nextchild)\r
+ { uprintf("[%10U]", iter->name);\r
+ push_setp(iter);\r
+ i++;\r