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
38
src/file.c
38
src/file.c
|
|
@ -291,3 +291,41 @@ void free_file(File* file) {
|
|||
|
||||
free(file);
|
||||
}
|
||||
|
||||
FileInfoBuffer* file_info_buffer_new() {
|
||||
return list_new(sizeof(FileInfo));
|
||||
}
|
||||
|
||||
int file_info_buffer_push(FileInfoBuffer* buffer, FileInfo info) {
|
||||
return list_push(buffer, &info);
|
||||
}
|
||||
|
||||
void file_info_buffer_free(List* buffer) {
|
||||
if (buffer) {
|
||||
free(buffer->items);
|
||||
free(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
int compare_file_info(const void* a, const void* b) {
|
||||
const FileInfo* info1 = (const FileInfo*)a;
|
||||
const FileInfo* info2 = (const FileInfo*)b;
|
||||
|
||||
return strcmp(info1->name, info2->name);
|
||||
}
|
||||
|
||||
void file_info_buffer_sort(FileInfoBuffer* buffer) {
|
||||
if (!buffer || buffer->len <= 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
qsort(buffer->items, buffer->len, sizeof(FileInfo), compare_file_info);
|
||||
}
|
||||
|
||||
FileInfo* file_info_buffer_search(FileInfoBuffer* buffer, const char* filename) {
|
||||
if (!buffer || !filename) return NULL;
|
||||
|
||||
FileInfo search_key = {.mode = 0, .name = (char*)filename};
|
||||
|
||||
return (FileInfo*)list_binary_search(buffer, &search_key, compare_file_info);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue