while (fscanf(in, "%[^\n]\n", path) == 1) {
// Lese Dateieigenschaften in st struct
stat(path, st);
- srcdata->filearray = (file_size_t *)
+ srcdata->filearray = (file_size_t **)
realloc(srcdata->filearray,
- (srcdata->length + 1) * 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 + 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++;
}
FILE *out = fopen(output, "w");
for (int i = 0; i < disc->length; i++) {
- fprintf(out, "%s\n", disc->filearray[i].name);
+ fprintf(out, "%s\n", disc->filearray[i]->name);
}
fclose(out);
int cmpfunc(const void *filea, const void *fileb)
{
- unsigned long long a = ((const file_size_t*)filea)->fsize;
- unsigned long long b = ((const file_size_t*)fileb)->fsize;
+ unsigned long long a = (*(const file_size_t**)filea)->fsize;
+ unsigned long long b = (*(const file_size_t**)fileb)->fsize;
if (a < b)
return 1;
return strcasecmp(filename1, filename2);
}
-int can_add_file_to_medium(medium_t *disc, file_size_t file)
+int can_add_file_to_medium(medium_t *disc, file_size_t *file)
{
int retvalue = 0;
// ISO9660 filesystem overhead
- unsigned long long filesize = ceil(file.fsize / 2048.0) * 2048;
+ unsigned long long filesize = ceil(file->fsize / 2048.0) * 2048;
if (disc->freespace >= filesize) {
disc->freespace -= filesize;
return retvalue;
}
-int bigger_file_ignore_medium(medium_t *disc, file_size_t file)
+int bigger_file_ignore_medium(medium_t *disc, file_size_t *file)
{
int retvalue = 0;
- unsigned long long filesize = ceil(file.fsize /2048.0) * 2048;
+ unsigned long long filesize = ceil(file->fsize /2048.0) * 2048;
- if ((file.type & S_IFREG) != S_IFREG)
+ if ((file->type & S_IFREG) != S_IFREG)
retvalue = 1;
if (disc->freespace < filesize)
return retvalue;
}
-void add_item_medium(medium_t *medium, file_size_t item)
+void add_item_medium(medium_t *medium, file_size_t *item)
{
medium->filearray = realloc(medium->filearray,
(medium->length + 1) * sizeof(file_size_t));
}
medium_t* splitter_to_disc(medium_t *srcdata,
- int (*check)(medium_t*, file_size_t))
+ int (*check)(medium_t*, file_size_t*))
{
- qsort(srcdata->filearray, srcdata->length, sizeof(file_size_t), cmpfunc);
+ qsort(srcdata->filearray, srcdata->length, sizeof(file_size_t*), cmpfunc);
medium_t* rest = init_medium();
rest->nr = srcdata->nr;
move_rest_to_srcdata(rest, srcdata);
- qsort(disc->filearray, disc->length, sizeof(file_size_t), strcmpfunc);
+ qsort(disc->filearray, disc->length, sizeof(file_size_t*), strcmpfunc);
free_medium(rest);
rest = NULL;