On Tue, Aug 16, 2011 at 04:44:07PM +0800, Chow Loong Jin wrote: > > Am 16.08.2011 02:43, schrieb Russell Coker: > >> I'd like to see zless work transparently with bzip and xz compressed files. > >> There's really no need for three different wrapper programs when the zless > >> program can just consult the magic db to determine which decompression program > >> to use. > > > > eval "$(lesspipe)" > > > > you can just "less somegzfile" or "less somebzipfile". In squeeze you > > can't use less on a xz compressed file, but I guess that could be added. > > That works when you do "less somefile.gz" or something, but doesn't work out so > well on gz/bz2 streams, unfortunately. Isn't it possible to detect this based on > some magic strings at the beginning of the stream? lesspipe tries to support a long list of compression formats. On a .pdf, it will go through pdftotext, on a .iso, it will list the files contained, and so on. It'd be tricky to implement all of that as magic rather than extension checks, especially for twice encapsulated files (.tar.gz, etc). Doable of course, but on non-seekable streams it'd require some work. On the other hand, zcat and zless are nothing but thin shell wrappers over "gzip -cd", without loads of extra functionality lesspipe has. I'd turn them into a C program linked against zlib (priority: required), liblzma2 (priority: required) and libbz2 (priority: important, might be dlopened instead). "zcat" already supports multiple formats: gzip and compress, it's just that support for uncompressing the latter is included in gzip's binary. Since it's not called "gzcat" but generic "zcat", I think that's a better idea than proliferation of bzcat, xzcat, my-newest-formatcat. What would you guys say? -- 1KB // Yo momma uses IPv4!
Description: Digital signature