Subject: bug#42402: closed (Re: Enhancement request re zcat with empty files)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 07 Apr 2022 00:09:02 +0000

Your bug report

#42402: Enhancement request re zcat with empty files

which was filed against the gzip package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
42402: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=42402
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: Enhancement request re zcat with empty files
From: Paul Eggert <[email-masked]>
To: Peter Horn <[email-masked]>
Cc: [email-masked]
Date: Wed, 6 Apr 2022 17:08:17 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

> I am asking for an enhancement to zcat, that it should silently ignore 
> empty files, either always, or (if that conflicts with POSIX or some 
> other standard), by a command line option.

zcat -f does what you're asking for. For example:

$ touch empty
$ echo something | gzip >abc.gz
$ zcat -f *
something

Since the -f option satisfies your request I'll close the bug report.

Subject: Enhancement request re zcat with empty files
From: Peter Horn <[email-masked]>
To: [email-masked]
Date: Fri, 17 Jul 2020 13:42:04 +1000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello list,

This is my first post here, so apologies in advance for whatever I get 
wrong.

I am asking for an enhancement to zcat, that it should silently ignore 
empty files, either always, or (if that conflicts with POSIX or some 
other standard), by a command line option.

My use case is as follows:
I maintain a server, and have occasion to scan log files for specific items.
As is typical in a logrotate environment, the files are something like

xyz.log              current
xyz.log.1           previous
xyz.log.2.gz
xyz.log.3.gz      etc etc

Most of the time I can search for something by

zgrep 'target' xyz*

But, wanting to further process a number of entries, I tried the obvious

zcat xyz* | awk ...

which results in

gzip: xyz.log.1: unexpected end of file

I note that it correctly handles archives with no content (just the 20 
byte header)

Regards,
Peter