#ifndef UTILS_H
#define UTILS_H
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
#include "MyLinkedList.h"
#define SYMLINK_ENCOUNTERED 1
int compare_by_lexicographic(void* a, void* b);
int compare_file_size(void* a, void* b);
int compare_by_access_time(void* a, void* b);
int compare_by_status_change_time(void* a, void* b);
int compare_by_modification_time(void* a, void* b);
int f_entry_is_dir(void* entry);
int f_entry_isnt_dir(void* entry);
void free_ls_entry(void* entry);
long get_blocks_from_sectors(struct stat* st);
long get_total_dir_blocks(LinkedList* entries);
ssize_t read_link_crawl(const char* linkpath, char* target, size_t size);
DIR* opendir_cd_crawl(const char* dirpath, int* status);
int lstat_cd_crawl(const char* dirpath, struct stat* st);
void ls_sort_entries(LinkedList* entries);
int ls_count_dirs(LinkedList* entries);
#endif