diff --git a/src/util.c b/src/util.c index 8efcabed73af77a99e5181d326442ef8d57150d4..d6002fa3e6fe30f9804281d97bd81e10f28388da 100644 --- a/src/util.c +++ b/src/util.c @@ -176,8 +176,8 @@ void freedir_rec(struct dir *dr) { } -struct dir *freedir(struct dir *dr) { - struct dir *tmp, *cur; +void freedir(struct dir *dr) { + struct dir *tmp; /* update sizes of parent directories */ tmp = dr; @@ -187,33 +187,24 @@ struct dir *freedir(struct dir *dr) { tmp->items -= dr->items+1; } - /* free dr->sub recursive */ - if(dr->sub) freedir_rec(dr->sub); + /* free dr->sub recursively */ + if(dr->sub) + freedir_rec(dr->sub); /* update references */ - cur = NULL; if(dr->parent) { /* item is at the top of the dir, refer to next item */ - if(dr->parent->sub == dr) { + if(dr->parent->sub == dr) dr->parent->sub = dr->next; - cur = dr->next; - } /* else, get the previous item and update it's "next"-reference */ else for(tmp = dr->parent->sub; tmp != NULL; tmp = tmp->next) - if(tmp->next == dr) { + if(tmp->next == dr) tmp->next = dr->next; - cur = tmp; - } - /* no previous item, refer to parent dir */ - if(cur == NULL && dr->parent->parent) - cur = dr->parent; } free(dr->name); free(dr); - - return cur; } diff --git a/src/util.h b/src/util.h index fa4828964ff58a51b3f49e17a292edc104c3c3ab..72f303882ae9ae4aac39ad99612736ea35bc3dcc 100644 --- a/src/util.h +++ b/src/util.h @@ -72,7 +72,7 @@ char *formatsize(const off_t); char *fullsize(const off_t); /* recursively free()s a directory tree */ -struct dir *freedir(struct dir *); +void freedir(struct dir *); /* generates full path from a dir item */ char *getpath(struct dir *, char *);