Re: zmore for bzip2?
On Sun, 31 Aug 2003 [EMAIL PROTECTED] wrote: > Adapting zmore for the case where you specify the files to display on > the command line is not problem at all: > > > diff kk zmore > 5,14d4 > < get_decompressor () > < { > < case `file ${1--} | sed "s/[^:]*: *\([^ ]*\).*/\1/"` in > < "compress"*) DECOMPRESSOR="uncompress -c";; > < "gzip"*) DECOMPRESSOR="gzip -cdfq";; > < "bzip2"*)DECOMPRESSOR="bunzip2 -cdq";; > < *) DECOMPRESSOR="cat";; > < esac > < } > < > 56,57c46 > < get_decompressor ${FILE} > < ${DECOMPRESSOR} "$FILE" | eval ${PAGER-more} > --- > > gzip -cdfq "$FILE" | eval ${PAGER-more} > > But when zmore is used as a pipe or with input redirection, things become > more complicated. > >gzip -cdfq | eval ${PAGER-more} > > In order to detect the type of data passed on STDIN, the get_decompressor > function or any other means of detection would consume STDIN. STDIN, however > must be passed to the decompressor after the type of data has been > detected. I don't have an idea hot to 'duplicate' STDIN, so it could be As a somewhat ugly hack, you could read a few bytes, match against known magic numbers and then prepend those bytes to the stream before feeding to the decompressor, for the cost of an extra "cat" process: magic=$(dd bs=1 count=3 2>/dev/null) case $magic in BZh) DECOMPRESSOR=bunzip2;; *) DECOMPRESSOR="gzip -cdfq";; esac (echo -n "$magic"; exec cat) | $DECOMPRESSOR | eval ${PAGER-more} Note that gzip will handle compressed data and gzipped data as well as plain text. $.02, /Mikko > consumed twice. Sure, writing it to a temporary file would be a > workaround: > > 38,53c28 > < FILE="/tmp/.zmore.${$}" > < touch ${FILE} 2>/dev/null > < if [ "${?}" -ne "0" ]; then > < echo "can't create temporary file" > < exit 1 > < fi > < chmod 0600 ${FILE} > < cat >${FILE} > < if [ "${?}" -ne "0" ]; then > < echo "can't create temporary file" > < rm -f ${FILE} > < exit 1 > < fi > < get_decompressor ${FILE} > < cat ${FILE} | ${DECOMPRESSOR} | eval ${PAGER-more} > < rm -f ${FILE} > --- > > gzip -cdfq | eval ${PAGER-more} > > But I don't like that. I myself sometimes work with compressed files > larger than anything I would be happy to write to /tmp or somewhere else > (even though those cases usually rather use zcat and its cousinds than > zmore...) > > Kurt > > On Sat, Aug 30, 2003 at 12:21:45PM -0400, Chuck Swiger wrote: > > David Kelly wrote: > > [ ... ] > > > Yes, of course. But zmore is smart enough to figure out what to do with > > > several compression techniques, or even to handle non-compressed files > > > very trivially and without hassle. > > > > 'zmore' is a simple shell script which calls "gzcat | ${PAGER-more}". One > > solution to your problem, or at least a solution, would be to change zmore to > > look for a trailing bz/bz2 or invoke bzcat instead. Another would be to change > > the sources of gzip to recognize the bzip2 magic files bytes, extending the > > detection of gzip versus classic LZH used by compress. > ___ > [EMAIL PROTECTED] mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "[EMAIL PROTECTED]" > ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: zmore for bzip2?
Adapting zmore for the case where you specify the files to display on the command line is not problem at all: > diff kk zmore 5,14d4 < get_decompressor () < { < case `file ${1--} | sed "s/[^:]*: *\([^ ]*\).*/\1/"` in < "compress"*) DECOMPRESSOR="uncompress -c";; < "gzip"*) DECOMPRESSOR="gzip -cdfq";; < "bzip2"*)DECOMPRESSOR="bunzip2 -cdq";; < *) DECOMPRESSOR="cat";; < esac < } < 56,57c46 < get_decompressor ${FILE} < ${DECOMPRESSOR} "$FILE" | eval ${PAGER-more} --- > gzip -cdfq "$FILE" | eval ${PAGER-more} But when zmore is used as a pipe or with input redirection, things become more complicated. gzip -cdfq | eval ${PAGER-more} In order to detect the type of data passed on STDIN, the get_decompressor function or any other means of detection would consume STDIN. STDIN, however must be passed to the decompressor after the type of data has been detected. I don't have an idea hot to 'duplicate' STDIN, so it could be consumed twice. Sure, writing it to a temporary file would be a workaround: 38,53c28 < FILE="/tmp/.zmore.${$}" < touch ${FILE} 2>/dev/null < if [ "${?}" -ne "0" ]; then < echo "can't create temporary file" < exit 1 < fi < chmod 0600 ${FILE} < cat >${FILE} < if [ "${?}" -ne "0" ]; then < echo "can't create temporary file" < rm -f ${FILE} < exit 1 < fi < get_decompressor ${FILE} < cat ${FILE} | ${DECOMPRESSOR} | eval ${PAGER-more} < rm -f ${FILE} --- > gzip -cdfq | eval ${PAGER-more} But I don't like that. I myself sometimes work with compressed files larger than anything I would be happy to write to /tmp or somewhere else (even though those cases usually rather use zcat and its cousinds than zmore...) Kurt On Sat, Aug 30, 2003 at 12:21:45PM -0400, Chuck Swiger wrote: > David Kelly wrote: > [ ... ] > > Yes, of course. But zmore is smart enough to figure out what to do with > > several compression techniques, or even to handle non-compressed files > > very trivially and without hassle. > > 'zmore' is a simple shell script which calls "gzcat | ${PAGER-more}". One > solution to your problem, or at least a solution, would be to change zmore to > look for a trailing bz/bz2 or invoke bzcat instead. Another would be to change > the sources of gzip to recognize the bzip2 magic files bytes, extending the > detection of gzip versus classic LZH used by compress. ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: zmore for bzip2?
David Kelly wrote: [ ... ] Yes, of course. But zmore is smart enough to figure out what to do with several compression techniques, or even to handle non-compressed files very trivially and without hassle. 'zmore' is a simple shell script which calls "gzcat | ${PAGER-more}". One solution to your problem, or at least a solution, would be to change zmore to look for a trailing bz/bz2 or invoke bzcat instead. Another would be to change the sources of gzip to recognize the bzip2 magic files bytes, extending the detection of gzip versus classic LZH used by compress. Compression formats are similar to graphic image formats in the PBMPLUS sense. -- -Chuck ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: zmore for bzip2?
On Wed, Aug 27, 2003 at 11:37:47PM -0500, ES top-posted: > For your bzip2 files, would the following command suffice? > > bzcat | less [...] Yes, of course. But zmore is smart enough to figure out what to do with several compression techniques, or even to handle non-compressed files very trivially and without hassle. I've changed my /etc/newsyslog.conf from J to Z simply so that I could zmore the files rather than pipe the file or dress up an alias named bmore or similar. -- David Kelly N4HHE, [EMAIL PROTECTED] = The human mind ordinarily operates at only ten percent of its capacity -- the rest is overhead for the operating system. ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: zmore for bzip2?
For your bzip2 files, would the following command suffice? bzcat | less This would be similar to handling a gzipped file with: zcat | less ...which is essentially what "zmore" does... -bsdterm On Wed, Aug 27, 2003 at 11:00:42AM -0500, David Kelly wrote: > /etc/newsyslog.conf uses J in FreeBSD-5.1 to specify bzip2 format for > compression. zmore(1) doesn't know bzip format, is someone working on > it? > > -- > David Kelly N4HHE, [EMAIL PROTECTED] > = > The human mind ordinarily operates at only ten percent of its > capacity -- the rest is overhead for the operating system. > > ___ > [EMAIL PROTECTED] mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "[EMAIL PROTECTED]" ---end quoted text--- ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: zmore for bzip2?
David Kelly <[EMAIL PROTECTED]> writes: > /etc/newsyslog.conf uses J in FreeBSD-5.1 to specify bzip2 format for > compression. zmore(1) doesn't know bzip format, is someone working on > it? I doubt it; seems kind of trivial to have a separate program to implement 'bzcat | more`... ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"