From: ken Date: Fri, 20 Jan 2017 03:29:42 +0000 (-0800) Subject: bug fixes, treewalk printing of classes/sets X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=commitdiff_plain;h=aad17010d4fab99c1583930c98afff0575bcf944 bug fixes, treewalk printing of classes/sets --- diff --git a/src/ir.c b/src/ir.c index e88ac36..0e95d7f 100644 --- a/src/ir.c +++ b/src/ir.c @@ -632,7 +632,7 @@ uint8_t* name_alloc copy: name = (uint8_t*)namepages.head->header.head; iter = name_src; - for (head_mem = PL_HEADMEM(namepages); *iter && *iter != '_' && head_mem; head_mem--) + for (head_mem = PL_HEADMEM(namepages); *iter && *iter != '_' && *iter != '.' && head_mem; head_mem--) *(namepages.head->header.head)++ = *iter++; if (head_mem < 1) //not enough room { pagelist_alloc(namepages); @@ -661,36 +661,36 @@ uint8_t* classname_alloc return name; } -static void crawl_class(struct ir_class_t*,int); +static void crawl_class(struct ir_class_t*); 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,0); + crawl_class(&root_class); } -#define pspace(num) for (i = 0; i < (num); i++) putchar(' ') +#define pspace(num) for (i = 0; i < (num); i++) putchar('.') static void crawl_class -( struct ir_class_t* class, - int depth -) +( struct ir_class_t* class ) { struct ir_class_t* iter; - /*if(chdir((char*)class->name)) - eprintf("CHDIR %U\n",class->name); - else - wprintf("chdir %U\n",class->name);*/ - if (class->nextchild != NULL) - { iter = class->nextchild; - do { - crawl_class(iter,depth + 1); - /*if (chdir("..")) - eprintf("CHDIR ..\n");*/ - } while ((iter = iter->nextsib) != NULL); - } 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); + crawl_set(class->root_set, 0); + if (class->nextsib != NULL) + { 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"); } static @@ -699,18 +699,17 @@ void crawl_set int depth ) { struct ir_set_t* iter; - int i = depth * 10; - pspace(i); + 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) - { uprintf("[%8U]", iter->name); - } - for(iter = set->nextchild; iter != NULL; iter = iter->nextchild) - { if (iter->nextsib != NULL) - crawl_set(iter->nextsib, i); - i++; - } - for(iter = set->nextchild; iter != NULL; iter = iter->nextchild) - crawl_set(iter, depth + 1); - putchar('\n'); + if (iter->nextsib != NULL) + crawl_set(iter->nextsib, ++i); + for(iter = set->nextsib; iter != NULL; iter = iter->nextsib) + crawl_set(iter, depth); }