]> gitweb.hhaalo.de Git - discspan.git/commitdiff
Multi-Ausgabe durchnummeriert
authorBastian Dehn <hhaalo@arcor.de>
Fri, 17 Jul 2015 10:31:54 +0000 (12:31 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Fri, 17 Jul 2015 10:31:54 +0000 (12:31 +0200)
README [deleted file]
batch.sh [deleted file]
discspan.c

diff --git a/README b/README
deleted file mode 100644 (file)
index 4d4fe74..0000000
--- a/README
+++ /dev/null
@@ -1,59 +0,0 @@
-
-discspan Version 1.0 2015-07-13
-===============================
-
-------------
-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, die auf ein Medium passen werden in das output-file geschrieben.
-Der Rest der Dateien wir dann in das rest-file geschrieben.
-
-------------
-Installation
-------------
-
-make
-make install
-
--------------------
-Anwendung (Example)
--------------------
-
-1. Um eine Dateiliste zu erstellen verwendet man am besten find und sort:
-
-       find /pfad/zur/den/Dateien -type f | sort > testfile
-
-2. discspan ausführen, um die Dateien auf ein DVD5 aufzuteilen
-
-       discspan testfile medium restfile -5
-
-3. Dateien herauskopieren mit rsync
-
-       rsync -av --files-from=medium / /pfad/zum/wegkopieren/
-
-Es ist noch ein batch.sh Bashscript dabei, um das ganze so lange durchzuführen bis alles aufgeteilt ist.
-
---------------------
-Command Line Options
---------------------
-
-Usage: discspan <input> <output> <rest> <option>
-
- <input>       Textdatei enthält alle Dateipfade, die auf den Datenträger sollen
- <output>      Textdatei enthält alle Dateipfade, die auf den Datenträger passen
- <rest>                Textdatei enthält alle Dateipfade, die nicht auf den Datenträger gepasst haben
-
- option:
-   -9          Entspricht der Größe einer Double Layer DVD: 8.500.000.000 Bytes
-   -5          Entspricht der Größe einer Single Layer DVD: 4.700.000.000 Bytes
-   -c          Entspricht der Größe einer CD: 734.003.200 Bytes
-   -f <Größe>        Option zur Größenangabe in Bytes
-
--------
-Kontakt
--------
-Autor: Bastian Dehn
-E-Mail: hhaalo@arcor.de
diff --git a/batch.sh b/batch.sh
deleted file mode 100755 (executable)
index d2a1662..0000000
--- a/batch.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-cp testfile work
-touch rest
-
-i=0
-while [ -f rest ]
-do
-       rm rest
-       i=$((i + 1))
-       ./discspan work medium$i rest -9
-       if [ -f rest ]
-       then
-               cp rest work
-       fi
-done
-rm work
index 339ada19e62f83b435b15948da34c95153923aa4..8ee71fca7dded3e52002771382d88416dc265151 100644 (file)
@@ -28,7 +28,7 @@ int exists(const char *fname)
                return 1;
 }
 
-void splitter(const char *input, const char *output, const char *rest, unsigned long long splitgroesse)
+void splitter(const char *input, char *output, const char *rest, unsigned long long splitgroesse)
 {
        struct stat st;
        char pfad[255];
@@ -88,10 +88,9 @@ void splitter(const char *input, const char *output, const char *rest, unsigned
 
 void usage()
 {      
-       printf("\nUsage: discspan <input> <output> <rest> <option>\n\n");
+       printf("\nUsage: discspan <input> <output> <option>\n\n");
        printf(" <input>\tTextdatei enthält alle Dateipfade, die auf den Datenträger sollen\n");
-       printf(" <output>\tTextdatei enthält alle Dateipfade, die auf den Datenträger passen\n");
-       printf(" <rest>\t\tTextdatei enthält alle Dateipfade, die nicht auf den Datenträger gepasst haben\n\n");
+       printf(" <output>\tTextdatei enthält alle Dateipfade, die auf den Datenträger passen\n\n");
        printf(" option:\n");
        printf("   -9\t\tEntspricht der Größe einer Double Layer DVD: 8.500.000.000 Bytes\n");
        printf("   -5\t\tEntspricht der Größe einer Single Layer DVD: 4.700.000.000 Bytes\n");
@@ -103,8 +102,12 @@ int main(int argc, char *argv[])
 {
        const char *input = argv[1];
        const char *output = argv[2];
-       const char *rest = argv[3];
+       const char *rest = "rest";
        const char *work = "work";
+
+       char outname[sizeof output] = "";
+       int num = 1;
+
        unsigned long long split;
        int c;
        extern char *optarg;
@@ -113,7 +116,7 @@ int main(int argc, char *argv[])
        const unsigned long long dvd5 = 4700000000;
        const unsigned long long cd = 734003200;
 
-       if(argc <= 4)
+       if(argc <= 3)
        {
                usage();
                return 1;
@@ -142,8 +145,17 @@ int main(int argc, char *argv[])
                }
        }
 
-       filecopy(input, work);
-       splitter(work, output, rest, split);
+       filecopy(input, rest);
+       while(exists(rest) == 0)
+       {
+               sprintf(outname, "%s%d",output , num++);
+               if(exists(rest) == 0)
+               {
+                       filecopy(rest, work);
+                       remove(rest);
+               }
+               splitter(work, outname, rest, split);
+       } 
        remove(work);
 
        return 0;