#include "spandisc.h"
#include "filehandler.h"
-void malloc_array_length(FILE *in, medium_t *srcdata)
-{
- int lines = 0;
- char pfad[255];
-
- while (fscanf(in, "%[^\n]\n", pfad) == 1) {
- lines++;
- }
- rewind(in);
-
- srcdata->length = lines;
- srcdata->filearray = (file_size_t *)
- malloc(srcdata->length * sizeof(file_size_t));
-}
-
void fill_array_from_file(FILE *in, medium_t *srcdata)
{
char pfad[255];
struct stat st;
- int lines = 0;
while (fscanf(in, "%[^\n]\n", pfad) == 1) {
// Lese Dateieigenschaften in st struct
stat(pfad, &st);
- strcpy(srcdata->filearray[lines].name, pfad);
- srcdata->filearray[lines].type = st.st_mode;
- srcdata->filearray[lines++].fsize = st.st_size;
+ srcdata->filearray = (file_size_t *)
+ realloc(srcdata->filearray,
+ (srcdata->length + 1) * sizeof(file_size_t));
+ strcpy(srcdata->filearray[srcdata->length].name, pfad);
+ srcdata->filearray[srcdata->length].type = st.st_mode;
+ srcdata->filearray[srcdata->length].fsize = st.st_size;
+ srcdata->length++;
}
}
{
FILE *in = fopen(input, "r");
- malloc_array_length(in, srcdata);
fill_array_from_file(in, srcdata);
fclose(in);