From faa108dc5c84f5c4aecee35a2f490eeedc85cb0d Mon Sep 17 00:00:00 2001 From: garhve Date: Tue, 3 Jan 2023 19:05:48 +0800 Subject: add files --- c/tree/basic.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'c/tree/basic.c') diff --git a/c/tree/basic.c b/c/tree/basic.c index aa95497..99bb23f 100644 --- a/c/tree/basic.c +++ b/c/tree/basic.c @@ -7,6 +7,7 @@ #include "tree.h" +// error and init and empty function void error(const char * str) { perror(str); @@ -48,27 +49,34 @@ void allocText(char ** text, const char * str, size_t len) *text = (char *) calloc (len, sizeof(char)); if (!*text) error("newly allocation failed"); - memmove(*text,str,len+1); + memmove(*text,str,len); } } -nodes * addnodes(const char * d_name, int level) +size_t strsize(const char * str) +{ + size_t new = 0; + while ( *(str+new) != '\0') + new++; + return new; +} + +nodes * addnodes(const char * d_name, size_t level) { nodes * new = (nodes *) calloc (1,sizeof(nodes)); if (!new) error("allocation for new node failed"); - new->len = strlen(d_name); + new->len = strsize(d_name); new->level = level; new->fod = checkdir(d_name); - allocText(&new->text, d_name, new->len); - allocText(&new->text, '\0', 1); + allocText(&new->text, d_name, new->len+1); return new; } -void addreg(regfile * head, const char * d_name, int level) +void addreg(regfile * head, const char * d_name, size_t level) { regfile * new = head; @@ -82,7 +90,7 @@ void addreg(regfile * head, const char * d_name, int level) new->next->next = NULL; } -void extractContent(regfile * head, const char * parent, int level) +void extractContent(regfile * head, const char * parent, size_t level) { DIR * d = opendir(parent); struct dirent * dir; @@ -93,14 +101,13 @@ void extractContent(regfile * head, const char * parent, int level) while ((dir = readdir(d))) { if (dir->d_name[1] == '.' || (dir->d_name[0] == '.' && dir->d_name[1] == '\0')) continue; - addreg(head, dir->d_name, 0); + addreg(head, dir->d_name, level); } + closedir(d); } void getfile(regfile * head, const char * parent) { init(head); - extractContent(head, parent, 0); } - -- cgit v1.2.3-70-g09d2