X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=blobdiff_plain;f=src%2Fir.c;h=63556545b04c6494fb53ae974372fd8b1aa7ecd1;hp=0e95d7f38314125e934015a797e12bf68edce30f;hb=2d355679ac2a1e225f158ab8064566174e9e1402;hpb=aad17010d4fab99c1583930c98afff0575bcf944 diff --git a/src/ir.c b/src/ir.c index 0e95d7f..6355654 100644 --- a/src/ir.c +++ b/src/ir.c @@ -666,33 +666,29 @@ static void crawl_set(struct ir_set_t*,int); void ir_test(void) { uprintf("IR From Directory: %s\n",getcwd(NULL,255)); crawl_class(&root_class); + if (root_class.root_set != NULL) + crawl_set(root_class.root_set, 0); } -#define pspace(num) for (i = 0; i < (num); i++) putchar('.') static void crawl_class ( struct ir_class_t* class ) { struct ir_class_t* iter; - 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("..")) + 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"); - for (iter = class->nextsib; iter != NULL; iter = iter->nextsib) - crawl_class(iter); - if(chdir((char*)class->name)) - eprintf("CHDIR %U from %s\n",class->name,getcwd(NULL,255)); } - uprintf("\n%U\\\n",class->name); - if (chdir("..")) - eprintf("CHDIR ..\n"); } +#define push_setp(setp) (*(struct ir_set_t**)stack_alloc(sizeof(struct ir_set_t*)) = setp) +#define pop_setp() (*(struct ir_set_t**)pagelist_pop(&datapages, sizeof(struct ir_set_t*))) static void crawl_set ( struct ir_set_t* set, @@ -700,16 +696,17 @@ void crawl_set ) { struct ir_set_t* iter; int i; - pspace(depth * 10); - i = 0; - for(iter = set; iter != NULL; iter = iter->nextchild, ++i) - uprintf("[%8U]", iter->name); - if (i) - putchar('\n'); - i = 0; - for(iter = set->nextchild; iter != NULL; iter = iter->nextchild) - if (iter->nextsib != NULL) - crawl_set(iter->nextsib, ++i); - for(iter = set->nextsib; iter != NULL; iter = iter->nextsib) - crawl_set(iter, depth); + i = depth * 12; + while (i--) + putchar('.'); + i = depth; + for(iter = set; iter != NULL; iter = iter->nextchild) + { uprintf("[%10U]", iter->name); + push_setp(iter); + i++; + } + putchar('\n'); + while (--i >= depth) + if (((iter = pop_setp())->nextsib) != NULL) + crawl_set(iter->nextsib,i); }