From 6b628dcfe97aba56baaf7db7fb502debaaf7d3dc Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 21 Sep 2025 09:23:26 +0200 Subject: [PATCH] change merge spandisc to splitter --- libs/spandisc/src/filehandler.c | 1 - libs/spandisc/src/filehandler.h | 2 +- libs/spandisc/src/libspandisc.h | 3 +- libs/spandisc/src/logic.h | 2 +- libs/spandisc/src/spandisc.c | 65 --------------------------------- libs/spandisc/src/spandisc.h | 27 -------------- libs/spandisc/src/splitter.c | 63 +++++++++++++++++++++++++++++++- libs/spandisc/src/splitter.h | 25 ++++++++++++- 8 files changed, 89 insertions(+), 99 deletions(-) delete mode 100644 libs/spandisc/src/spandisc.c delete mode 100644 libs/spandisc/src/spandisc.h diff --git a/libs/spandisc/src/filehandler.c b/libs/spandisc/src/filehandler.c index 8f3fb52..6364874 100644 --- a/libs/spandisc/src/filehandler.c +++ b/libs/spandisc/src/filehandler.c @@ -2,7 +2,6 @@ #include #include #include -#include #include "filehandler.h" diff --git a/libs/spandisc/src/filehandler.h b/libs/spandisc/src/filehandler.h index 21cada6..646ad47 100644 --- a/libs/spandisc/src/filehandler.h +++ b/libs/spandisc/src/filehandler.h @@ -1,7 +1,7 @@ #ifndef _FILEHANDLER_H #define _FILEHANDLER_H -#include "spandisc.h" +#include "splitter.h" void read_input_file(const char *input, medium_t *srcdata); void write_output_file(const char *output, medium_t* disc); diff --git a/libs/spandisc/src/libspandisc.h b/libs/spandisc/src/libspandisc.h index 13396f1..e4ed3cf 100644 --- a/libs/spandisc/src/libspandisc.h +++ b/libs/spandisc/src/libspandisc.h @@ -1,9 +1,8 @@ #ifndef _LIBSPANDISC_H #define _LIBSPANDISC_H -#include "spandisc.h" +#include "splitter.h" #include "logic.h" #include "filehandler.h" -#include "splitter.h" #endif diff --git a/libs/spandisc/src/logic.h b/libs/spandisc/src/logic.h index 3aa9e2f..b6a4e34 100644 --- a/libs/spandisc/src/logic.h +++ b/libs/spandisc/src/logic.h @@ -1,7 +1,7 @@ #ifndef _LOGIC_H #define _LOGIC_H -#include "spandisc.h" +#include "splitter.h" typedef void (*status_print_t)(const char *output, medium_t* disc); extern status_print_t status_print; diff --git a/libs/spandisc/src/spandisc.c b/libs/spandisc/src/spandisc.c deleted file mode 100644 index 1f64f08..0000000 --- a/libs/spandisc/src/spandisc.c +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include -#include "spandisc.h" - -collection_t* init_collection() -{ - collection_t* col = malloc(sizeof(collection_t)); - - col->length = 0; - col->disc = NULL; - - return col; -} - -medium_t* init_medium() -{ - medium_t* medium = malloc(sizeof(medium_t)); - - medium->nr = 0; - medium->freespace = 0; - medium->length = 0; - medium->filearray = NULL; - - return medium; -} - -void free_file_size(file_size_t* file_size) -{ - free(file_size->name); - file_size->name = NULL; - free(file_size); - file_size = NULL; -} - -void free_medium(medium_t *medium) -{ - free(medium->filearray); - medium->filearray = NULL; - free(medium); - medium = NULL; -} - -void free_medium_complete(medium_t* medium) -{ - for (int i = 0; i < medium->length; i++) { - free_file_size(medium->filearray[i]); - medium->filearray[i] = NULL; - } - - free_medium(medium); - medium = NULL; -} - -void free_collection(collection_t *col) -{ - for (uint32_t i = 0; i < col->length; i++) { - free_medium_complete(col->disc[i]); - col->disc[i] = NULL; - } - - free(col->disc); - col->disc = NULL; - free(col); - col = NULL; -} \ No newline at end of file diff --git a/libs/spandisc/src/spandisc.h b/libs/spandisc/src/spandisc.h deleted file mode 100644 index 62e2abe..0000000 --- a/libs/spandisc/src/spandisc.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _SPANDISC_H -#define _SPANDISC_H - -typedef struct { - char* name; - uint64_t fsize; - uint32_t type; -} file_size_t; - -typedef struct { - int16_t nr; - uint64_t freespace; - uint32_t length; - file_size_t **filearray; -} medium_t; - -typedef struct { - uint32_t length; - medium_t **disc; -} collection_t; - -collection_t* init_collection(); -medium_t* init_medium(); -void free_medium(medium_t *medium); -void free_collection(collection_t *col); - -#endif diff --git a/libs/spandisc/src/splitter.c b/libs/spandisc/src/splitter.c index 414ae50..7cc16e3 100644 --- a/libs/spandisc/src/splitter.c +++ b/libs/spandisc/src/splitter.c @@ -2,13 +2,74 @@ #include #include #include -#include #include "splitter.h" #define BLOCK_SIZE 2048.0 #define S_IFREG 0100000 // bitmask for regular file; man inode +collection_t* init_collection() +{ + collection_t* col = malloc(sizeof(collection_t)); + + col->length = 0; + col->disc = NULL; + + return col; +} + +medium_t* init_medium() +{ + medium_t* medium = malloc(sizeof(medium_t)); + + medium->nr = 0; + medium->freespace = 0; + medium->length = 0; + medium->filearray = NULL; + + return medium; +} + +void free_file_size(file_size_t* file_size) +{ + free(file_size->name); + file_size->name = NULL; + free(file_size); + file_size = NULL; +} + +void free_medium(medium_t *medium) +{ + free(medium->filearray); + medium->filearray = NULL; + free(medium); + medium = NULL; +} + +void free_medium_complete(medium_t* medium) +{ + for (int i = 0; i < medium->length; i++) { + free_file_size(medium->filearray[i]); + medium->filearray[i] = NULL; + } + + free_medium(medium); + medium = NULL; +} + +void free_collection(collection_t *col) +{ + for (uint32_t i = 0; i < col->length; i++) { + free_medium_complete(col->disc[i]); + col->disc[i] = NULL; + } + + free(col->disc); + col->disc = NULL; + free(col); + col = NULL; +} + int cmpfunc(const void *filea, const void *fileb) { uint64_t a = (*(const file_size_t**)filea)->fsize; diff --git a/libs/spandisc/src/splitter.h b/libs/spandisc/src/splitter.h index e4aa092..7fe8613 100644 --- a/libs/spandisc/src/splitter.h +++ b/libs/spandisc/src/splitter.h @@ -1,7 +1,30 @@ #ifndef _SPLITTER_H #define _SPLITTER_H -#include "spandisc.h" +#include + +typedef struct { + char* name; + uint64_t fsize; + uint32_t type; +} file_size_t; + +typedef struct { + int16_t nr; + uint64_t freespace; + uint32_t length; + file_size_t **filearray; +} medium_t; + +typedef struct { + uint32_t length; + medium_t **disc; +} collection_t; + +collection_t* init_collection(); +medium_t* init_medium(); +void free_medium(medium_t *medium); +void free_collection(collection_t *col); medium_t* splitter(medium_t *srcdata); medium_t* ignore(medium_t *srcdata); -- 2.47.3