#define MAX_PATH_LENGTH 255
-void fill_array_from_file(FILE *in, medium_t *srcdata)
+void read_file_stat(const char* path, medium_t* srcdata)
+{
+ struct stat* st = malloc(sizeof(struct stat));
+ file_size_t** filearray = srcdata->filearray;
+ uint32_t length = srcdata->length;
+
+ filearray = realloc(filearray, (length + 1) * sizeof(file_size_t*));
+ srcdata->filearray = filearray;
+ filearray[length] = malloc(sizeof(file_size_t));
+ filearray[length]->name = malloc(sizeof(char) * strlen(path) + 1);
+
+ stat(path, st);
+ strcpy(filearray[length]->name, path);
+ filearray[length]->type = st->st_mode;
+ filearray[length]->fsize = st->st_size;
+ srcdata->length++;
+
+ free(st);
+ st = NULL;
+}
+
+void fill_array_from_file(FILE* in, medium_t* srcdata)
{
char* path = malloc(sizeof(char) * MAX_PATH_LENGTH);
memset(path, 0, MAX_PATH_LENGTH);
- struct stat* st = malloc(sizeof(struct stat));
while (fscanf(in, "%[^\n]\n", path) == 1) {
- // Lese Dateieigenschaften in st struct
- stat(path, st);
- srcdata->filearray = (file_size_t **)
- realloc(srcdata->filearray,
- (srcdata->length + 1) * sizeof(file_size_t*));
- srcdata->filearray[srcdata->length] = malloc(sizeof(file_size_t));
- srcdata->filearray[srcdata->length]->name = malloc(sizeof(char) * strlen(path) + 1);
- strcpy(srcdata->filearray[srcdata->length]->name, path);
- srcdata->filearray[srcdata->length]->type = st->st_mode;
- srcdata->filearray[srcdata->length]->fsize = st->st_size;
- srcdata->length++;
+ read_file_stat(path, srcdata);
}
free(path);
path = NULL;
- free(st);
- st = NULL;
}
void read_input_file(const char *input, medium_t *srcdata)