Frage

Ich hatte ein fusecompress von Verzeichnis montiert komprimiert / bei fusecompress / Ich kopierte eine große Datei (mehrere GB) an das fusecompress Verzeichnis (ok, ich mv'd es). Die komprimierte Datei im Verzeichnis komprimiert / ist Länge 1221396660. Allerdings kann ich die Datei nicht entfernen / dekomprimieren. fusecompress hat einen Speicherfehler. „Speicher kann nicht zugewiesen“

Gibt es trotzdem die lzo Bibliothek zu verwenden, um eine decompress Routine für die komprimierte Datei zu schreiben?

Ich habe versucht, die folgenden, aber einen Segmentation Fault bekam:

    char buffer[OUT_LEN];
    char outbuffer[IN_LEN];
    int read;
    lzo_uint writ;
    unsigned long totalWrit = 0;

    while( (read = fread( buffer, sizeof(char), OUT_LEN, stdin )) > 0 )
    {
            r = lzo1x_decompress( buffer, read, outbuffer, &writ, NULL );
            fwrite( outbuffer, sizeof(char), writ, stdout );
            totalWrit += writ;
    }

    fprintf( stderr, "\nDone. %d bytes written out.\n\n", totalWrit );

Update:

Als Reaktion auf die Rechnung, die ersten 160 Bytes der Datei sind:

00000000  01 1f 01 5d ff 89 04 00  a2 20 85 04 30 6e ba 48  |...]..... ..0n.H|
00000010  00 00 01 02 00 00 00 00  00 00 11 3c 3c 3c 20 53  |...........<<< S|
00000020  75 6e 20 56 69 72 74 75  61 6c 42 6f 78 20 44 69  |un VirtualBox Di|
00000030  73 6b 20 49 6d 61 67 65  20 3e 3e 3e 0a 00 3b 00  |sk Image >>>..;.|
00000040  00 08 7f 10 da be 01 00  01 00 90 01 00 54 00 3b  |.............T.;|
00000050  a8 00 20 c9 70 00 02 02  00 00 00 a2 2d b8 03 6c  |.. .p.......-..l|
00000060  02 a9 02 80 a9 01 10 b4  01 00 15 28 00 00 52 08  |...........(..R.|
00000070  00 00 a4 15 30 3e 76 22  73 4c 96 3d bf 8f ca 66  |....0>v"sL.=...f|
00000080  a8 93 2b a6 83 65 44 4d  37 41 a4 02 ca bb 56 4e  |..+..eDM7A....VN|
00000090  a9 e9 b0 05 39 14 00 05  04 00 00 ff 00 00 00 3f  |....9..........?|
War es hilfreich?

Lösung

Sie müssen schauen, wie die Datei komprimiert wurde. Witch Kopf- und zusätzliche Daten werden in der Datei gespeichert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top