Revert "Modify the file format to not include rzip chunk size except for STDOUT chunked files thus decreasing the file format size further."

This reverts commit 131d4c92c2.

Breaks STDIN/OUT so revert this change and cope with the slightly extra file size on non-chunked files.
This commit is contained in:
Con Kolivas 2011-03-23 07:59:04 +11:00
parent 8fcedbc43e
commit b27e1df879
6 changed files with 12 additions and 27 deletions

View file

@ -28,7 +28,7 @@ Encrypted salt (bytes 6->14 in magic if encrypted):
Rzip Chunk Data:
0 Data offsets byte width (meaning length is < (2 * 8)^RCD0)
1 Flag that there is no chunk beyond this
(RCD0 bytes) Chunk decompressed size (only stored in stdout chunked file)
(RCD0 bytes) Chunk decompressed size (not stored in encrypted file)
XX Stream 0 header data
XX Stream 1 header data

View file

@ -49,7 +49,6 @@
#define TMP_OUTBUF (control->flags & FLAG_TMP_OUTBUF)
#define TMP_INBUF (control->flags & FLAG_TMP_INBUF)
#define ENCRYPT (control->flags & FLAG_ENCRYPT)
#define CHUNKED (control->flags & FLAG_CHUNKED)
#define print_output(format, args...) do {\
fprintf(control->msgout, format, ##args); \

16
lrzip.c
View file

@ -178,10 +178,6 @@ static void get_magic(rzip_control *control, char *magic)
print_output("Asked to decrypt a non-encrypted archive. Bypassing decryption.\n");
control->flags &= ~FLAG_ENCRYPT;
}
/* If the file was generated from STDOUT and !ENCRYPT, an extra field
* describing the chunk length exists */
if (!ENCRYPT && !expected_size)
control->flags |= FLAG_CHUNKED;
}
void read_magic(rzip_control *control, int fd_in, i64 *expected_size)
@ -794,13 +790,11 @@ void get_fileinfo(rzip_control *control)
if (control->major_version == 0 && control->minor_version > 5) {
if (unlikely(read(fd_in, &control->eof, 1) != 1))
fatal("Failed to read eof in get_fileinfo\n");
if (CHUNKED) {
if (unlikely(read(fd_in, &chunk_size, chunk_byte) != chunk_byte))
fatal("Failed to read chunk_size in get_fileinfo\n");
chunk_size = le64toh(chunk_size);
}
}
}
if (control->major_version == 0 && control->minor_version < 4) {
ofs = 24;
@ -812,7 +806,7 @@ void get_fileinfo(rzip_control *control)
ofs = 25;
header_length = 25;
} else {
ofs = 26 + (CHUNKED ? chunk_byte: 0);
ofs = 26 + chunk_byte;
header_length = 1 + (chunk_byte * 3);
}
next_chunk:
@ -886,13 +880,10 @@ next_chunk:
if (control->major_version == 0 && control->minor_version > 5) {
if (unlikely(read(fd_in, &control->eof, 1) != 1))
fatal("Failed to read eof in get_fileinfo\n");
ofs++;
if (CHUNKED) {
if (unlikely(read(fd_in, &chunk_size, chunk_byte) != chunk_byte))
fatal("Failed to read chunk_size in get_fileinfo\n");
chunk_size = le64toh(chunk_size);
ofs += chunk_byte;
}
ofs += 1 + chunk_byte;
header_length = 1 + (chunk_byte * 3);
}
}
@ -971,9 +962,6 @@ void compress_file(rzip_control *control)
if (ENCRYPT)
get_hash(control, 1);
else if (STDOUT)
control->flags |= FLAG_CHUNKED;
memset(header, 0, sizeof(header));
if (!STDIN) {

View file

@ -153,7 +153,6 @@ typedef struct md5_ctx md5_ctx;
#define FLAG_TMP_OUTBUF (1 << 21)
#define FLAG_TMP_INBUF (1 << 22)
#define FLAG_ENCRYPT (1 << 23)
#define FLAG_CHUNKED (1 << 24)
#define NO_MD5 (!(HASH_CHECK) && !(HAS_MD5))

1
main.c
View file

@ -88,7 +88,6 @@
#define TMP_OUTBUF (control.flags & FLAG_TMP_OUTBUF)
#define TMP_INBUF (control.flags & FLAG_TMP_INBUF)
#define ENCRYPT (control.flags & FLAG_ENCRYPT)
#define CHUNKED (control.flags & FLAG_CHUNKED)
#define print_output(format, args...) do {\
fprintf(control.msgout, format, ##args); \

View file

@ -1119,7 +1119,7 @@ void *open_stream_in(rzip_control *control, int f, int n, char chunk_bytes)
goto failed;
}
/* Read in the expected chunk size */
if (CHUNKED) {
if (!ENCRYPT) {
if (unlikely(read_val(control, f, &sinfo->size, sinfo->chunk_bytes))) {
print_err("Failed to read in chunk size in open_stream_in\n");
goto failed;
@ -1340,9 +1340,9 @@ retry:
write_u8(control, ctis->fd, ctis->chunk_bytes);
/* Write whether this is the last chunk, followed by the size
* of this chunk if working with STDOUT and !ENCRYPT */
* of this chunk */
write_u8(control, ctis->fd, control->eof);
if (CHUNKED)
if (!ENCRYPT)
write_val(control, ctis->fd, ctis->size, ctis->chunk_bytes);
/* First chunk of this stream, write headers */