+\r
+static\r
+uint8_t* classname_alloc\r
+( const uint8_t* name_src )\r
+{ const uint8_t* iter;\r
+ uint8_t* name;\r
+ int head_mem;\r
+ copy:\r
+ name = (uint8_t*)namepages.head->header.head;\r
+ iter = name_src;\r
+ for (head_mem = PL_HEADMEM(namepages); *iter && head_mem; head_mem--)\r
+ *(namepages.head->header.head)++ = *iter++;\r
+ if (head_mem < 1) //not enough room\r
+ { pagelist_alloc(namepages);\r
+ goto copy;\r
+ }\r
+ *(namepages.head->header.head)++ = '\0';\r
+ return name;\r
+}\r
+\r
+static void crawl_class(struct ir_class_t*,int);\r
+static void crawl_set(struct ir_set_t*,int);\r
+void ir_test(void)\r
+{ uprintf("IR From Directory: %s\n",getcwd(NULL,255));\r
+ crawl_class(&root_class,0);\r
+}\r
+\r
+#define pspace(num) for (i = 0; i < (num); i++) putchar(' ')\r
+static\r
+void crawl_class\r
+( struct ir_class_t* class,\r
+ int depth\r
+)\r
+{ struct ir_class_t* iter;\r
+ /*if(chdir((char*)class->name))\r
+ eprintf("CHDIR %U\n",class->name);\r
+ else\r
+ wprintf("chdir %U\n",class->name);*/\r
+ if (class->nextchild != NULL)\r
+ { iter = class->nextchild;\r
+ do {\r
+ crawl_class(iter,depth + 1);\r
+ /*if (chdir(".."))\r
+ eprintf("CHDIR ..\n");*/\r
+ } while ((iter = iter->nextsib) != NULL);\r
+ }\r
+ wprintf("%U/\n", class->name);\r
+ if (class->root_set != NULL)\r
+ crawl_set(class->root_set,0);\r
+ uprintf("\n%U\\\n",class->name);\r
+}\r
+\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 = depth * 10;\r
+ pspace(i);\r
+ i = 0;\r
+ for(iter = set->nextchild; iter != NULL; iter = iter->nextchild)\r
+ { uprintf("[%8U]", iter->name);\r
+ }\r
+ for(iter = set->nextchild; iter != NULL; iter = iter->nextchild)\r
+ { if (iter->nextsib != NULL)\r
+ crawl_set(iter->nextsib, i);\r
+ i++;\r
+ }\r
+ for(iter = set->nextchild; iter != NULL; iter = iter->nextchild)\r
+ crawl_set(iter, depth + 1);\r
+ putchar('\n');\r
+}\r