From owner-freebsd-stable@FreeBSD.ORG Thu Dec 8 23:46:39 2005 Return-Path: X-Original-To: freebsd-stable@freebsd.org Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1B0C716A420; Thu, 8 Dec 2005 23:46:39 +0000 (GMT) (envelope-from dan@dan.emsphone.com) Received: from dan.emsphone.com (dan.emsphone.com [199.67.51.101]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3380943D78; Thu, 8 Dec 2005 23:46:01 +0000 (GMT) (envelope-from dan@dan.emsphone.com) Received: (from dan@localhost) by dan.emsphone.com (8.13.1/8.13.3) id jB8Njedw049728; Thu, 8 Dec 2005 17:45:40 -0600 (CST) (envelope-from dan) Date: Thu, 8 Dec 2005 17:45:40 -0600 From: Dan Nelson To: Brian Fundakowski Feldman Message-ID: <20051208234540.GB95420@dan.emsphone.com> References: <00c701c5fc1c$e6db4220$b3db87d4@multiplay.co.uk> <20051208225404.GF98704@green.homeunix.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20051208225404.GF98704@green.homeunix.org> X-OS: FreeBSD 5.4-STABLE X-message-flag: Outlook Error User-Agent: Mutt/1.5.11 Cc: freebsd-stable@freebsd.org, Steven Hartland Subject: Re: bsdtar / libarchive bug? X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Dec 2005 23:46:39 -0000 In the last episode (Dec 08), Brian Fundakowski Feldman said: > On Thu, Dec 08, 2005 at 05:29:06PM -0000, Steven Hartland wrote: > > It seems bsdtar can create files it cant read. i.e. it will happily create > > empty tar.gz files but when it comes to read them the following error > > is output: > > tar: Unrecognized archive format: Inappropriate file type or format > > > > Having a look at libarchive shows the following code: > > /* An empty archive is a serious error. */ > > if (bytes_read == 0) { > > archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT, > > "Empty input file"); > > return (ARCHIVE_FATAL); > > } > > > > Which is where I expect the issue is, why would an empty archive > > be fatal? I can see any reason for this, yes its strange but there's > > nothing fatal about it imo. > > I don't think it will "happily create empty tar.gz files", even where > by empty you mean the tar itself inside of the gz. > > {"/home/green" green@green}$ tar cfv x.tar > tar: no files or directories specified > {"/home/green" green@green}$ tar cfvz x.tar.gz > tar: no files or directories specified > {"/home/green" green@green}$ ls -l x.ta* > ls: x.ta*: No such file or directory I managed to make it create 0-byte files: $ touch a $ tar cvf b.tar --exclude a a $ tar zcvf b.tar.gz --exclude a a $ ls -la b.tar* -rw-r--r-- 1 dan wheel 0 Dec 8 17:37 b.tar -rw-r--r-- 1 dan wheel 20 Dec 8 17:37 b.tar.gz $ gunzip -vl b.tar.gz method crc date time compressed uncompr. ratio uncompressed_name defla 00000000 Dec 8 17:37 20 0 0.0% b.tar This works because at the time tar creates the output file, it doesn't know that I have excluded all the listed files. I am leaning towards an empty archive being legal, though, since it makes scripting easier. There may be cases where you are archiving files generated daily, and you want to distinguish "no data today" from "the archiver didn't run". At worst it should print a warning. -- Dan Nelson dnelson@allantgroup.com