refactor: split up the utilities file into smaller modules
This commit is contained in:
parent
abaa6e12fc
commit
ff71a92249
13 changed files with 572 additions and 488 deletions
|
|
@ -30,5 +30,6 @@ ActionList* new_list();
|
|||
void add_action(ActionList*, Action);
|
||||
void append_list(ActionList*, ActionList*);
|
||||
void free_action_list(ActionList*);
|
||||
void sort_action_list(ActionList*);
|
||||
|
||||
#endif // ACTION_LIST_H
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#endif
|
||||
|
||||
#include "hash.h"
|
||||
#include "list.h"
|
||||
|
||||
typedef struct {
|
||||
char** content;
|
||||
|
|
@ -34,6 +35,8 @@ typedef struct {
|
|||
char* hash;
|
||||
} FileInfo;
|
||||
|
||||
typedef List FileInfoBuffer;
|
||||
|
||||
File* new_empty_file();
|
||||
File* new_file(const char*);
|
||||
File* from_string(char*);
|
||||
|
|
@ -43,5 +46,10 @@ int insert_line(File*, char*, size_t);
|
|||
int delete_line(File*, size_t);
|
||||
int snapshot_file(char*, char*, size_t, char*);
|
||||
void free_file(File*);
|
||||
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*);
|
||||
|
||||
#endif // FILE_H
|
||||
|
|
|
|||
24
include/list.h
Normal file
24
include/list.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#ifndef LIST_H
|
||||
#define LIST_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define LIST_INIT_CAPACITY 4
|
||||
|
||||
typedef struct {
|
||||
void** items;
|
||||
size_t len;
|
||||
size_t capacity;
|
||||
size_t item_size;
|
||||
} List;
|
||||
|
||||
List* list_new(size_t item_size);
|
||||
int list_push(List*, void*);
|
||||
int list_remove(List*, const void*, int (*compare)(const void*, const void*));
|
||||
void list_free(List*);
|
||||
void* list_binary_search(List*, const void*, int (*compare)(const void*, const void*));
|
||||
|
||||
#endif // LIST_H
|
||||
32
include/object.h
Normal file
32
include/object.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef OBJECT_H
|
||||
#define OBJECT_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <dirent.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <zlib.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#ifndef PATH_MAX
|
||||
#define PATH_MAX MAX_PATH
|
||||
#endif
|
||||
#else
|
||||
#include <limits.h>
|
||||
#ifndef PATH_MAX
|
||||
#define PATH_MAX 4096
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "hash.h"
|
||||
#include "file.h"
|
||||
#include "tree.h"
|
||||
#include "utilities.h"
|
||||
|
||||
char* get_object(char*, size_t*);
|
||||
void* parse_object(char*, ObjectType, size_t*);
|
||||
|
||||
#endif // OBJECT_H
|
||||
|
|
@ -2,11 +2,19 @@
|
|||
#define TREE_H
|
||||
|
||||
#include <zlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "utilities.h"
|
||||
#include "hash.h"
|
||||
#include "file.h"
|
||||
#include "myers.h"
|
||||
#include "utilities.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))
|
||||
|
||||
void snapshot_tree(FileInfoBuffer*, char*);
|
||||
int save_tree_diff(FileInfoBuffer*, char*, char*, size_t, char*, char*);
|
||||
|
||||
int read_tree(FileInfoBuffer*, char*);
|
||||
#endif // TREE_H
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include <fcntl.h>
|
||||
|
||||
#include "myers.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')
|
||||
|
|
@ -18,8 +19,6 @@
|
|||
#define GREEN_BG "\033[42m"
|
||||
#define BLACK_FG "\033[30m"
|
||||
|
||||
#define LIST_INIT_CAPACITY 4
|
||||
|
||||
typedef enum {
|
||||
PT_NOEXIST,
|
||||
PT_FILE,
|
||||
|
|
@ -28,36 +27,17 @@ typedef enum {
|
|||
PT_ERROR
|
||||
} PathType;
|
||||
|
||||
typedef struct {
|
||||
void** items;
|
||||
size_t len;
|
||||
size_t capacity;
|
||||
size_t item_size;
|
||||
} List;
|
||||
|
||||
typedef List StringBuffer;
|
||||
typedef List FileInfoBuffer;
|
||||
|
||||
typedef struct {
|
||||
uint32_t insertions;
|
||||
uint32_t deletions;
|
||||
} Changes;
|
||||
|
||||
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*);
|
||||
|
|
@ -70,9 +50,7 @@ char* get_file_content(char*);
|
|||
char* get_file_content_with_size(char*, size_t*);
|
||||
int create_default_config_file(char*);
|
||||
int save_diff(ActionList*, char*, char*, size_t, char*, File*, int);
|
||||
int read_diff(char*, char*, size_t, char*, ActionList*);
|
||||
int read_diff(char*, char*, ActionList*);
|
||||
int save_file_diff(char*, char*, size_t, char*, Changes*);
|
||||
File* apply_diff(File*, ActionList*);
|
||||
void sort_action_list(ActionList*);
|
||||
|
||||
#endif // UTILITIES_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue