]> gitweb.hhaalo.de Git - discspan.git/commitdiff
Dateien groesser dem Medium kommen in eine ignore Datei
authorBastian Dehn <hhaalo@arcor.de>
Sun, 19 Jul 2015 17:37:19 +0000 (19:37 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 19 Jul 2015 17:37:19 +0000 (19:37 +0200)
README
discspan.c

diff --git a/README b/README
index 2f2911889dcca4c4d41b3151bde72d23d985c709..b9f0593e515b62c44434aba2c02ecb00b37ed80d 100644 (file)
--- a/README
+++ b/README
@@ -9,6 +9,7 @@ Beschreibung
 Man hat viele Dateien, die nicht auf ein Medium (z.B. DVD) passen.
 discpan teilt eine Textdatei mit den Pfaden aller Dateien auf.
 Die Dateien werden aufgeteilt mit dem Outputnamen und einer dreistelligen Durchnummerierung.
+Sollten Dateien, die größer sind als das Medium, dabei sein, dann werden diese Dateien in einer ignore Datei landen.
 
 ------------
 Installation
index 5d6233a88073c51c1d9fd951bfb6f1faf60e8441..3edf541215de7a604e2e4257a46ccd7f2858527e 100644 (file)
@@ -105,9 +105,9 @@ int cmpfunc(const void * filea, const void * fileb)
        return -2;
 }
 
-void filesize_sort(const char *input, const char *output)
+void filesize_sort(const char *input, const char *output, const long long unsigned int split)
 {
-       FILE *in; FILE *out;
+       FILE *in; FILE *out; FILE *ignore;
        char pfad[255];
        struct stat st;
        int lines = 0;
@@ -125,8 +125,17 @@ void filesize_sort(const char *input, const char *output)
        while(fscanf(in, "%[^\n]\n", pfad) == 1)
        {
                stat(pfad, &st);
-               strcpy(fs[lines].name, pfad);
-               fs[lines++].fsize = st.st_size;
+               if(st.st_size <= split)
+               {
+                       strcpy(fs[lines].name, pfad);
+                       fs[lines++].fsize = st.st_size;
+               }
+               else
+               {
+                       if(exists("ignore") == 1)
+                               ignore = fopen("ignore", "w");
+                       fprintf(ignore, "%s\n", pfad);
+               }
        }
        qsort(fs, lines, sizeof(struct file_size), cmpfunc);
        int i;
@@ -136,6 +145,8 @@ void filesize_sort(const char *input, const char *output)
        }
        fclose(in);
        fclose(out);
+       if(exists("ignore") == 0)
+               fclose(ignore);
 }
 
 void usage()
@@ -197,7 +208,7 @@ int main(int argc, char *argv[])
                }
        }
 
-       filesize_sort(input, rest);
+       filesize_sort(input, rest, split);
        while(exists(rest) == 0)
        {
                sprintf(outname, "%s%03d",output , num++);