#ifndef _FT_NM_H # define _FT_NM_H # include # include # include # include # include # include # include # include # include "libft.h" # define FT_NM_SUCCESS 0 # define FT_NM_FAILURE -1 typedef enum e_verbosity { ALL, DEFAULT_VERBOSITY, GLOBAL, UNDEFINED } t_verbosity; typedef enum e_ordering { DEFAULT_ORDERING, REVERSE, NOSORT } t_ordering; typedef struct s_entry { t_verbosity verbosity; char *string; char *symbol; } t_entry; typedef struct s_env { char *bin_name; t_verbosity verbosity; t_ordering ordering; t_list *list; int list_len; bool has_multiple_files; } t_env; typedef struct s_mapped_file { void *ptr; off_t size; } t_mapped_file; void ft_printf(const char *format, ...); void ft_nm_error(const char *path); int check_ident(unsigned char ident[EI_NIDENT]); void *fetch(t_mapped_file mapped_file, size_t offset, size_t fetch_size); int nm32(t_mapped_file mapped_file, char *path, t_verbosity verbosity, t_ordering ordering); int get_header32(t_mapped_file mapped_file, Elf32_Ehdr *header); int nm64(t_mapped_file mapped_file, char *path, t_verbosity verbosity, t_ordering ordering); int get_header64(t_mapped_file mapped_file, Elf64_Ehdr *header); int strcmp_nm(void *a, void *b); int reverse(void *a, void *b); int nosort(void *a, void *b); void put_entry(void *data); char ft_get_hex_digit(char c); #endif