68 lines
2 KiB
C
68 lines
2 KiB
C
#ifndef UTILITIES_H
|
|
#define UTILITIES_H
|
|
|
|
#include <errno.h>
|
|
#include <dirent.h>
|
|
#include <unistd.h>
|
|
#include <fcntl.h>
|
|
|
|
#include "file.h"
|
|
#include "action_list.h"
|
|
|
|
#define IS_ALPHA(c) ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
|
|
#define IS_DIGIT(c) (c >= '0' && c <= '9')
|
|
#define IS_ALNUM(c) (IS_ALPHA(c) || IS_DIGIT(c))
|
|
#define IS_PUNCT(c) ((c >= 33 && c <= 47) || (c >= 58 && c <= 64) || (c >= 91 && c <= 96) || (c >= 123 && c <= 126))
|
|
|
|
#define RESET "\033[0m"
|
|
#define RED_BG "\033[41m"
|
|
#define GREEN_BG "\033[42m"
|
|
#define BLACK_FG "\033[30m"
|
|
|
|
#define LIST_INIT_CAPACITY 4
|
|
|
|
typedef enum {
|
|
PT_NOEXIST,
|
|
PT_FILE,
|
|
PT_DIR,
|
|
PT_OTHER,
|
|
PT_ERROR
|
|
} PathType;
|
|
|
|
typedef struct {
|
|
void** items;
|
|
size_t len;
|
|
size_t capacity;
|
|
size_t item_size;
|
|
} List;
|
|
|
|
typedef List StringBuffer;
|
|
typedef List FileInfoBuffer;
|
|
|
|
List* list_new(size_t);
|
|
int list_push(List*, void*);
|
|
int list_remove(List*, const void*, int (*compare)(const void*, const void*));
|
|
void list_free(List*);
|
|
void* binary_search(const void*, const void*, size_t, size_t, int (*compare)(const void*, const void*));
|
|
void* list_binary_search(List*, const void*, int (*compare)(const void*, const void*));
|
|
StringBuffer* string_buffer_new();
|
|
int string_buffer_push(StringBuffer*, char*);
|
|
void string_buffer_sort(StringBuffer*);
|
|
char* string_buffer_search(StringBuffer*, char*);
|
|
FileInfoBuffer* file_info_buffer_new();
|
|
int file_info_buffer_push(FileInfoBuffer*, FileInfo);
|
|
void file_info_buffer_free(FileInfoBuffer*);
|
|
void file_info_buffer_sort(FileInfoBuffer*);
|
|
FileInfo* file_info_buffer_search(FileInfoBuffer*, const char*);
|
|
char* find_root(char*);
|
|
void walk(char*, char*, char*, FileInfoBuffer*, int, char*);
|
|
char* get_repo_path(char*, char*);
|
|
int is_in_repo(char*, char*);
|
|
void visualize_diff(File*, File*, ActionList*);
|
|
int cut_path(char*, char*);
|
|
void combine_path(char*, char*);
|
|
PathType get_path_type(const char*);
|
|
char* get_file_content(char*);
|
|
char* get_file_content_with_size(char*, size_t*);
|
|
|
|
#endif // UTILITIES_H
|