From 0dbc7d07a7cf424d33138269c4e10a1d47ed1c6d Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 19 Jul 2015 19:37:19 +0200 Subject: [PATCH] Dateien groesser dem Medium kommen in eine ignore Datei --- README | 1 + discspan.c | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/README b/README index 2f29118..b9f0593 100644 --- 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 diff --git a/discspan.c b/discspan.c index 5d6233a..3edf541 100644 --- a/discspan.c +++ b/discspan.c @@ -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++); -- 2.39.5