#include "stack_operations.h" void push(struct directory *dr, struct list_head *list) { if (list_empty(list)) INIT_LIST_HEAD(list); list_add(&dr->list, list); } struct directory *pop(struct list_head *list) { struct directory *dr; if (list_empty(list)) return NULL; dr = list_first_entry(list, struct directory, list); list_del(&dr->list); return dr; } bool search(char *path, struct list_head *list) { struct directory *dr; list_for_each_entry(dr, list, list) { if (strncmp(dr->path, path, 1024) == 0) return true; } return false; } void clear_list(struct list_head *list) { struct directory *dr, *tmp; if (list_empty(list)) return; list_for_each_entry_safe(dr, tmp, list, list) { free(dr->path); list_del(&dr->list); free(dr); } } void print_list_dfs(struct list_head *list) { struct directory *dr; if (list_empty(list)) return; list_for_each_entry(dr, list, list) { printf("path: %s\n", dr->path); } }