X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fbuffer.c;h=47e1be6cd0db10bd1847e0ffbf3ff7188bebc0f9;hb=ab3b31cfef3e33696596f459da5130256b5ec60f;hp=01f1f7017b3bbc118f8b44a4a68c6066fef81fe3;hpb=f152367c578715dd54a9da44afc15bef1263e29d;p=chaz%2Ftar diff --git a/src/buffer.c b/src/buffer.c index 01f1f70..47e1be6 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -177,8 +177,7 @@ static struct zip_magic magic[] = { #define compress_option(t) magic[t].option #define compress_program(t) magic[t].program -/* Check if the file FD is a compressed archive. FD is guaranteed to - represent a local file */ +/* Check if the file ARCHIVE is a compressed archive. */ enum compress_type check_compressed_archive () { @@ -200,7 +199,7 @@ check_compressed_archive () read_full_records = sfr; reading_from_pipe = srp; - if (tar_checksum (record_start) == HEADER_SUCCESS) + if (tar_checksum (record_start, true) == HEADER_SUCCESS) /* Probably a valid header */ return ct_none; @@ -222,20 +221,19 @@ open_compressed_archive () { enum compress_type type; - int fd = rmtopen (archive_name_array[0], O_RDONLY | O_BINARY, - MODE_RW, rsh_command_option); - if (fd == -1 || _isrmt (fd)) - return fd; + archive = rmtopen (archive_name_array[0], O_RDONLY | O_BINARY, + MODE_RW, rsh_command_option); + if (archive == -1) + return archive; - archive = fd; type = check_compressed_archive (); if (type == ct_none) - return fd; + return archive; /* FD is not needed any more */ - rmtclose (fd); - + rmtclose (archive); + /* Open compressed archive */ use_compress_program_option = compress_program (type); child_pid = sys_child_open_for_uncompress ();