void dirtree_delete (dirtree_t * tree) { ASSERT_TREE(tree); /* find and remove ourself from our parent's list */ dirtree_remove (tree); /* kill our children */ while (tree->child != NULL) dirtree_delete (tree->child); /* free members */ if (tree->stripped_name != NULL && tree->stripped_name != tree->name ) free (tree->stripped_name); if (tree->name != NULL) free (tree->name); if (tree->path != NULL) free (tree->path); if (tree->icon != NULL) free (tree->icon); if (tree->extension != NULL) free (tree->extension); if (tree->minipixmap_extension != NULL) free (tree->minipixmap_extension); free_func_data (&tree->command); if (tree->de != NULL) unref_desktop_entry(tree->de); if (tree->Comment != NULL) free (tree->Comment); if (tree->FolderReference != NULL) free (tree->FolderReference); free (tree); }
void DestroyWharfButton (WharfButton ** pbtn) { WharfButton *btn = *pbtn; if (btn == NULL) return; *pbtn = btn->next; /* delete members */ if (btn->title != NULL) free (btn->title); if (btn->comment != NULL) free (btn->comment); if (btn->contents) { int k; for (k = 0; k < btn->contents_num; ++k) { char **icon = btn->contents[k].icon; FunctionData *function = btn->contents[k].function; if (icon != NULL) destroy_string_list (icon, 0); if (function) { free_func_data (function); free (function); } } free (btn->contents); } while (btn->folder) DestroyWharfButton (&(btn->folder)); free (btn); }