#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