Skip to content
Snippets Groups Projects
stack_operations.c 958 B
Newer Older
  • Learn to ignore specific revisions
  • #include "stack_operations.h"
    
    void push(struct directory *dr, struct list_head *list)
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	if (list_empty(list))
    		INIT_LIST_HEAD(list);
    	list_add(&dr->list, list);
    
    struct directory *pop(struct list_head *list)
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	struct directory *dr;
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	if (list_empty(list))
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	dr = list_first_entry(list, struct directory, list);
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	list_del(&dr->list);
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	return dr;
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    bool search(char *path, struct list_head *list)
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	struct directory *dr;
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	list_for_each_entry(dr, list, list) {
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    		if (strncmp(dr->path, path, 1024) == 0)
    
    			return true;
    	}
    
    	return false;
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    void clear_list(struct list_head *list)
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	struct directory *dr, *tmp;
    
    	if (list_empty(list))
    		return;
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	list_for_each_entry_safe(dr, tmp, list, list) {
    		free(dr->path);
    		list_del(&dr->list);
    		free(dr);
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    }
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    void print_list_dfs(struct list_head *list)
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    {
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	struct directory *dr;
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	if (list_empty(list))
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    		return;
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	list_for_each_entry(dr, list, list) {
    		printf("path: %s\n", dr->path);
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    }