X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=blobdiff_plain;f=src%2Fir.c;h=d0abf1fffbceb7ecad46e66260f038f7dbb042b4;hp=ab9730515916ad012a2162cedf8dfdf36f6d056c;hb=10757d8de188be16a6d805c074ddff27e63f5b89;hpb=44b15998f0b17d98b4714e77a89fc90b2a2dc29e diff --git a/src/ir.c b/src/ir.c index ab97305..d0abf1f 100644 --- a/src/ir.c +++ b/src/ir.c @@ -101,7 +101,7 @@ struct ir_class_t uint8_t* name; }; struct ir_set_t -{ struct ir_set_t* nextchild, * nextsib, * p; +{ struct ir_set_t* nextchild, * nextsib; uint32_t ref; uint8_t* name; struct ir_framebox_t* frameboxes; @@ -672,23 +672,18 @@ void ir_test(void) static void crawl_class ( struct ir_class_t* class ) -{ wprintf("%U/\n", class->name); - if(chdir((char*)class->name)) - eprintf("CHDIR %U from %s\n",class->name,getcwd(NULL,255)); - if (class->nextchild != NULL) - crawl_class(class->nextchild); - if (class->root_set != NULL) - crawl_set(class->root_set, 0); - if (class->nextsib != NULL) - { if (chdir("..")) +{ struct ir_class_t* iter; + for (iter = class->nextchild; iter != NULL; iter = iter->nextsib) + { wprintf("%U/\n", iter->name); + if(chdir((char*)iter->name)) + eprintf("CHDIR %U from %s\n",iter->name,getcwd(NULL,255)); + crawl_class(iter); + if (iter->root_set != NULL) + crawl_set(iter->root_set, 0); + uprintf("%U\\\n",iter->name); + if (chdir("..")) eprintf("CHDIR ..\n"); - crawl_class(class->nextsib); - if(chdir((char*)class->name)) - eprintf("CHDIR %U from %s\n",class->name,getcwd(NULL,255)); } - uprintf("%U\\\n",class->name); - if (chdir("..")) - eprintf("CHDIR ..\n"); } static @@ -696,21 +691,19 @@ void crawl_set ( struct ir_set_t* set, int depth ) -{ struct ir_set_t* iter, * last; +{ struct ir_set_t* setlist[64], ** slp, * iter; int i; pspace(depth * 12); - last = NULL; i = depth; + slp = setlist; for(iter = set; iter != NULL; iter = iter->nextchild) { uprintf("[%10U]", iter->name); - if (last != NULL) - iter->p = last; - last = iter; + *slp++ = iter; i++; } --i; putchar('\n'); - for(iter = last; iter != NULL; iter = iter->p, --i) + for(iter = *--slp; slp >= setlist; iter = *--slp, --i) if (iter->nextsib != NULL) crawl_set(iter->nextsib,i); }