diff options
Diffstat (limited to 'archival')
-rw-r--r-- | archival/libunarchive/check_header_gzip.c | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/archival/libunarchive/check_header_gzip.c b/archival/libunarchive/check_header_gzip.c index e8bb8d5..d661df7 100644 --- a/archival/libunarchive/check_header_gzip.c +++ b/archival/libunarchive/check_header_gzip.c @@ -17,7 +17,7 @@ extern void check_header_gzip(int src_fd) xread_all(src_fd, header.raw, 8); - /* Check the compression method */ + /* Check the compression method */ if (header.formated.method != 8) { error_msg_and_die("Unknown compression method %d", header.formated.method); @@ -27,41 +27,30 @@ extern void check_header_gzip(int src_fd) /* bit 2 set: extra field present */ unsigned char extra_short; - extra_short = xread_char(src_fd); - extra_short += xread_char(src_fd) << 8; + extra_short = xread_char(src_fd) + (xread_char(src_fd) << 8); while (extra_short > 0) { - /* Ignore extra field */ + /* Ignore extra field */ xread_char(src_fd); extra_short--; } } - /* Discard original name if any */ + /* Discard original name if any */ if (header.formated.flags & 0x08) { - /* bit 3 set: original file name present */ - char tmp; - - do { - read(src_fd, &tmp, 1); - } while (tmp != 0); + /* bit 3 set: original file name present */ + while(xread_char(src_fd) != 0); } - /* Discard file comment if any */ + /* Discard file comment if any */ if (header.formated.flags & 0x10) { - /* bit 4 set: file comment present */ - char tmp; - - do { - read(src_fd, &tmp, 1); - } while (tmp != 0); + /* bit 4 set: file comment present */ + while(xread_char(src_fd) != 0); } - /* Read the header checksum */ + /* Read the header checksum */ if (header.formated.flags & 0x02) { - char tmp; - - read(src_fd, &tmp, 1); - read(src_fd, &tmp, 1); + xread_char(src_fd); + xread_char(src_fd); } return; |