]> gitweb.hhaalo.de Git - discspan.git/commitdiff
change: ignore files form splitter not readfile
authorBastian Dehn <hhaalo@arcor.de>
Sat, 31 Jul 2021 17:05:42 +0000 (19:05 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 31 Jul 2021 17:05:42 +0000 (19:05 +0200)
discspan.c
filehandler.c
splitter.c
splitter.h

index e90063666a3dba915904a0a84327ba6c4d4b6756..33bf56db3b60f0e81d2b50c5122496d8d18d015f 100644 (file)
@@ -12,6 +12,7 @@ extern void useage();
 extern void read_input_file(const char *input, medium_t *srcdata);
 extern void write_output_file(const char *output, medium_t disc);
 extern medium_t splitter(medium_t *srcdata);
+extern medium_t ignore(medium_t *srdata);
 
 int cmpfunc(const void *filea, const void *fileb)
 {
@@ -100,8 +101,12 @@ int main(int argc, char *argv[])
 
        qsort(srcdata.filearray, srcdata.length, sizeof(file_size_t), cmpfunc);
 
-       char outname[strlen(output) + 3];
        medium_t disc;
+       disc = ignore(&srcdata);
+       write_output_file("ignore", disc);
+       free(disc.filearray);
+
+       char outname[strlen(output) + 3];
        while (srcdata.length > 0) {
                srcdata.nr++;
                sprintf(outname, "%s%03d", output, srcdata.nr);
index c2647e70e388ba8b40ae179169b901de23b13e40..ade08ba07b679d4f9e288459d615903147d2cc1d 100644 (file)
@@ -6,7 +6,7 @@
 #include "discspan.h"
 #include "filehandler.h"
 
-void malloc_array_length(FILE *in, medium_t *handler)
+void malloc_array_length(FILE *in, medium_t *srcdata)
 {
        int lines = 0;
        char pfad[255];
@@ -16,14 +16,13 @@ void malloc_array_length(FILE *in, medium_t *handler)
        }
        rewind(in);
 
-       handler->length = lines;
-       handler->filearray = (file_size_t *)
-               malloc(handler->length * sizeof(file_size_t));
+       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)
 {
-       FILE *ignore = NULL;
        char pfad[255];
        struct stat st;
        int lines = 0;
@@ -31,26 +30,9 @@ void fill_array_from_file(FILE *in, medium_t *srcdata)
        while (fscanf(in, "%[^\n]\n", pfad) == 1) {
                // Lese Dateieigenschaften in st struct
                stat(pfad, &st);
-
-               if (st.st_size <= srcdata->freespace) {
-                       strcpy(srcdata->filearray[lines].name, pfad);
-                       srcdata->filearray[lines++].fsize = st.st_size;
-               } else {
-                       // irgnore List erstellen
-                       if (ignore == NULL)
-                               ignore = fopen("ignore", "w");
-
-                       fprintf(ignore, "%s\n", pfad);
-               }
+               strcpy(srcdata->filearray[lines].name, pfad);
+               srcdata->filearray[lines++].fsize = st.st_size;
        }
-
-       if (ignore != NULL)
-               fclose(ignore);
-
-       srcdata->length = lines;
-       srcdata->filearray = (file_size_t *)
-               realloc(srcdata->filearray,
-                               srcdata->length * sizeof(file_size_t));
 }
 
 void read_input_file(const char *input, medium_t *srcdata)
index e487e22d887a37ecc4175d191ed024808416aa13..49ce7d2b4abc765a6d0a98ff1fbfe38aa41ad285 100644 (file)
@@ -20,12 +20,26 @@ medium_t init_empty_medium(medium_t srcdata)
 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;
+
        if (disc->freespace >= filesize) {
                disc->freespace -= filesize;
                retvalue = 1;
        }
+
+       return retvalue;
+}
+
+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;
+
+       if (disc->freespace < filesize)
+               retvalue = 1;
+
        return retvalue;
 }
 
@@ -65,3 +79,9 @@ medium_t splitter(medium_t *srcdata)
        medium_t disc = splitter_to_disc(srcdata, can_add_file_to_medium);
        return disc;
 }
+
+medium_t ignore(medium_t *srcdata)
+{
+       medium_t ignore = splitter_to_disc(srcdata, bigger_file_ignore_medium);
+       return ignore;
+}
index a1d9dd8691f813103b48ed208d1aa951e0812a51..7557b389b64e22b1a177a426066106b02981cd57 100644 (file)
@@ -3,4 +3,6 @@
 
 medium_t splitter(medium_t *srcdata);
 
+medium_t ignore(medium_t *srcdata);
+
 #endif