  Bzip2 Howto
  David Fetter dfetter@best.com <mailto:dfetter@best.com>
  v1.92 18 sierpnia 1998
  WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff PP.. JJaassiiuuttoowwiicczz kkppjjaass@@pprriivv..oonneett..ppll
  v0.99, 28 sierpnia 1998

  Ten tekst wyjania jak uywa programu do kompresji bzip2. Lokalna
  wersja tego tekstu w sgml-u jest dostpna tu tu <Bzip2-HOWTO.sgml>, a
  "autor-ytatywna" pod tym adresem tu <http://www.best.com/~dfet
  ter/Bzip2-HOWTO/Bzip2-HOWTO.sgml>.  Dokument ten zosta napisany w
  standardzie ISO-8859-2.
  ______________________________________________________________________

  Table of Contents:

  1.      Wstp

  1.1.    Revision History

  1.1.1.  v1.92

  1.1.2.  v1.91

  1.1.3.  v1.9

  1.1.4.  v1.8

  1.1.5.  v1.7

  1.1.6.  v1.6

  1.1.7.  v1.5

  1.1.8.  v1.4

  1.1.9.  v1.3

  1.1.10. v1.2

  1.1.11. v1.1

  1.1.12. v1.0

  2.      Jak zdoby bzip2

  2.1.    Bzip2-HOWTO w twoim jzyku

  2.2.    Jak zdoby prekompilowane binaria bzip2-a

  2.3.    Jak zdoby rda bzip2-a

  2.4.    Kompilacja bzip2-a dla twojej maszyny

  3.      Uywanie bzip2

  4.      Uywanie bzip2 z tar-em

  4.1.    Najatwiejsza do zrobienia:

  4.2.    atwa do zrobienia, do atwa w uyciu, nie trzba mie
  uprawnie root-a:

  4.3.    Te atwa do zrobienia, ale wymaga dostpu jako root.

  5.      Uywanie bzip2 z less-em

  6.      Uywanie bzip2 z emacs-em

  6.1.    Zmaina emacs-a dla wszystkich:

  6.2.    Zmiana emacs-a dla pojedyczego uytkownika:

  7.      Uywanie bzip2-a z wu-ftpd

  8.      Uycie bzip2 z grep-em

  9.      Uywanie bzip2-a z Netscape-m pod X-ami.

  10.     Uycie bzip2-a do rekompresji plikw skompresowanych w innych
  formatach
  ______________________________________________________________________

  11..  WWssttpp

  Bzip2 to superowy nowy algorytm kompresji danych.  Oglnie rzecz
  biorc tworzy pliki, ktre s 60-70% mniejsze od takich samych plikw
  spakowanych gzip-em.

  Ten dokument opisze kilka typowych zastosowa bzip2-a.

  Przysze  wersje tego dokumentu bd dotyczyy planowanej bzip2
  library ktr autor bzip2-a, Julian Seward
  <mailto:Julian_Seward@muraroa.demon.co.uk> opisuje nastpujco:

  Pracuj nad nastpn wersj bzip2-a, ktra bdzie uywa tego samego
  formatu pliku .bz2; gwn nowoci bdzie biblioteka podobna do zlib
  suca do odczytywania i zapisu danych w tym formacie z poziomu programu.

  Przysze  wersje tego dokumentu mog take zawiera podsumowanie
  dyskusji nad tym czy (i jak) bzip2 powinno by zastosowane w jdrze
  Linux-a.

  11..11..  RReevviissiioonn HHiissttoorryy

  11..11..11..  vv11..9922

  Zaktualizowaem rozdzia ``Pobieranie binariw bzip2'', dodaem
  S.u.S.E.

  11..11..22..  vv11..9911

  Poprawiem bd w pisowni i poprawiem kilka idiomw shell-a w
  ``rozdziale o uywaniu bzip2-a z tar-em''.  Podzikowania dla
  Alessandro Rubini za nie.

  Poprawiem aby narzdzie buzzit nie to stomp oryginalnego archiwum
  bzip2-a.

  Dodaem bgrep, narzdzie podobne do zgrep-a.

  11..11..33..  vv11..99

  Poprawiem problem z gcc 2.7.*.  Podzikowanie dla  Ulrika Dickow-a za
  wskazanie go.

  Dodaem elegancki sposb Leonard-a Jean-Marc-a posugiwania si tar-
  em.

  Dodaem szwedzkie tumaczenie Linus-a kerlund-a.

  Poprawiem rozdzia o wu-ftpd np. sugestii Arnaud Launay-a.

  Przeniosem tumaczenia ich odpowiednich rozdziaw.

  11..11..44..  vv11..88

  Wstawiem buzzit i tar.diff do sgml-a tam gdzie ich miejsceg.
  Poprawiem interpunkcj i formatowanie.  Podzikowania dla Arnaud
  Launay za jego pomoc w poprawianiu mojej wasnej wersji. :-)

  Porzuciem xv project na razie z powodu braku wikszego
  zainteresowania.

  Wspomniaem o tipsach w przyszych wersjach tego dokumentu.

  11..11..55..  vv11..77

  Dodaem aplikacj buzzit.  Poprawiem patch do naoenia na gnu tar.

  11..11..66..  vv11..66

  Dodaem tip TenThumbs-a dot. Netscape.

  Take zmieniem lesspipe.sh dziki jego sugestii.  Powinien teraz
  lepiej dziaa.

  11..11..77..  vv11..55

  Dodaem francuskie tumaczenie Arnaud Launay-a, i jego plik wu-ftpd.

  11..11..88..  vv11..44

  Dodaem japoskie tumaczenie Tetsu Isaji-ego.

  11..11..99..  vv11..33

  Dodaem plik Ulrik Dickow-a .emacs do emacs-a 19.30 lub wyszej
  wersji.

  (take poprawiem patch jka-compr.el do emacs-a dziki jego sugestii.
  Ojej!  Bzip2 nie ma jeszcze(?) flagi "append".)

  11..11..1100..  vv11..22

  Zmienilem patch do emacs-a aby automagicznie rozpoznawa pliki .bz2.

  11..11..1111..  vv11..11

  Dodaem patch dla emacs-a.

  11..11..1122..  vv11..00

  Runda 1.

  22..  JJaakk zzddoobbyy bbzziipp22

  Home page Bzip2-a znajduje si na Home site w Wielkiej Brytanii
  <http://www.muraroa.demon.co.uk/>. Mirror site w U.S.A jest tu
  <http://www.digistar.com/bzip2/index.html>.  Mona te znale go na
  site-cie FTP Red Hat-a tu <ftp://ftp.redhat.com/pub/contrib>.

  22..11..  BBzziipp22--HHOOWWTTOO ww ttwwooiimm jjzzyykkuu

  Osoby posugujce si jzykiem francuskim mog skierowa si do
  francuskich dokumentw Arnaud Launay-a.  Wersja WWW jest tu
  <http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html>, a ftp mona uy
  tu <ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz> Z
  Arnaud mona skontaktowa si poczt elektroniczn pod tym adresem
  <mailto:zoro@mygale.org>

  Osoby posugujce si jzykiem japoskim mog skierowa si do
  japoskich dokumentw Tetsu Isaji tu <http://jf.gee.kyoto-
  u.ac.jp/JF/JF.html>.  Z Isaji mona skotaktowa si na jego stronie
  WWW <http://www2s.biglobe.ne.jp/~kaien/>, lub poczt elektroniczn pod
  tym adresem. <mailto:isaji@mxu.meshnet.or.jp>

  Osoby posugujce si jzykiem szwedzkim mog skierowa si do
  szwedzkich Linus-a kerlund-a tu
  <http://user.tninet.se/~uxm165t/linux_doc.html>.  Z Linus-em mona si
  skontaktowa poczt elektroniczn pod tym adresem.
  <mailto:uxm165t@tninet.se>

  22..22..  JJaakk zzddoobbyy pprreekkoommppiilloowwaannee bbiinnaarriiaa bbzziipp22--aa

  Zobacz Home site-y.

  Binarium Debian Intel jest tu
  <ftp://ftp.debian.org/debian/dists/stable/main/binary-
  i386/utils/bzip2_0.1pl2-5.deb>.

  Binarium alpha Red Hat-a jest tu
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/alpha/RedHat/RPMS/bzip2-0.1pl2-1.alpha.rpm>.

  Binarium Intel Red Hat-a jest tu
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/i386/RedHat/RPMS/bzip2-0.1pl2-1.i386.rpm>.

  Binarium SPARC Red Hat-a jest tu
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/sparc/RedHat/RPMS/bzip2-0.1pl2-1.sparc.rpm>.

  Binarium Intel Slackware jest tu
  <ftp://www.cdrom.com/pub/linux/slackware-3.5/slakware/a1/bzip2.tgz>.

  Binarium Intel S.u.S.E jest tu <ftp://ftp.suse.com/pub/SuSE-
  Linux/5.2/suse/ap1/bzip.rpm>.

  Wyej wymienione s take dostpne w analogicznuch miejscach rnych
  lustrzanych site-w.

  22..33..  JJaakk zzddoobbyy rrddaa bbzziipp22--aa

  Znajduj si na oficjalnych site-ach (zobacz w ``Jak zdoby Bzip2''
  gdzie, albo Red Hat ma je tu
  <ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm>).

  22..44..  KKoommppiillaaccjjaa bbzziipp22--aa ddllaa ttwwoojjeejj mmaasszzyynnyy

  JJeellii mmaasszz ggcccc 22..77..**, zmie linijk ktra brzmi

       CFLAGS = -O3 -fomit-frame-pointer -funroll-loops

  na

       CFLAGS = -O2 -fomit-frame-pointer

  to jest, zamie -O3 na -O2 i pomi -funroll-loops. You may also wish
  to add  any -m* flags (like -m486, for example) you use when compiling
  kernels.

  Usunicie -funroll-loops jest najistotniejsz czci, poniewa moe
  to spowodowa wiele gcc 2.7-w bdzie generowao nieprawidowy kod, a
  wszystkie gcc 2.7-y bd wikszy i wolniejszy kod wynikowy.  Dla
  innych kompilatorw (lcc, egcs, gcc 2.8.x) standartowe CFLAGS s w
  porzdku.

  Potem, po prostu make i zainstaluj wg README.

  33..  UUyywwaanniiee bbzziipp22

  Przeczytaj Wspanaia Stron Podrcznika Systemowego :)

  44..  UUyywwaanniiee bbzziipp22 zz ttaarr--eemm

  Poniej s opisane trzy metody uywania bzip2 z tar-em, a mianowicie

  44..11..  NNaajjaattwwiieejjsszzaa ddoo zzrroobbiieenniiaa::

  Ta metoda nie wyamga wcale adnych zmian.  Aby od-tar-owa bzip2-owane
  archiwum tar-owe, foo.tar.bz2 w aktualnym katalogu, wykonaj
       /path/to/bzip2 -cd foo.tar.bz2 | tar xf -

  To dziaa, ale moe by wnerwiajce jeli wypisuje si to zbyt czsto.

  44..22..  aattwwaa ddoo zzrroobbiieenniiaa,, ddoo aattwwaa ww uuyycciiuu,, nniiee ttrrzzbbaa mmiiee
  uupprraawwnniiee rroooott--aa::

  Dziki dla Leonard Jean-Marc <mailto:leonard@sct1.is.belgacom.be> za
  ten tip.  Dziki take dla Alessandro Rubini
  <mailto:rubini@morgana.systemy.it> za wprawadzenie rnic
  specyficznych dla csh.

  W swoim .bashrc, moesz wstawi tak linijk :

       alias btar='tar --use-compress-program /usr/local/bin/bzip2 '

  W .tcshrc, lub .cshrc, analogiczna linijka wyglda tak:

       alias btar 'tar --use-compress-program /usr/local/bin/bzip2'

  44..33..  TTee aattwwaa ddoo zzrroobbiieenniiaa,, aallee wwyymmaaggaa ddoossttppuu jjaakkoo rroooott..

  Na poniszy patch na gnu tar 1.12 w nastpujcy sposb:

       cd tar-1.12/src; patch < /path/to/tar.diff

  skompiluj go, i zainstaluj go, i wszystko ju gotowe do dziaania.
  Upewnij si ze zarwno tar jak i  bzip2 s w twojej $PATH poprzez
  "which tar" i "which bzip2."  Aby uy nowego tar-a, po prostu zrb

        tar xyf foo.tar.bz2

  aby zdekompresowa plik.

  Aby utworzy nowe archiwum, podobnie zrb:

        tar cyf foo.tar.bz2 file1 file2 file3...directory1 directory2...

  A oto patch:

  *** tar.c       Thu Jun 11 00:09:23 1998
  --- tar.c.new   Thu Jun 11 00:14:24 1998
  ***************
  *** 196,201 ****
  --- 196,203 ----
      {"block-number", no_argument, NULL, 'R'},
      {"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR},
      {"blocking-factor", required_argument, NULL, 'b'},
  +   {"bzip2", required_argument, NULL, 'y'},
  +   {"bunzip2", required_argument, NULL, 'y'},
      {"catenate", no_argument, NULL, 'A'},
      {"checkpoint", no_argument, &checkpoint_option, 1},
      {"compare", no_argument, NULL, 'd'},
  ***************
  *** 372,377 ****
  --- 374,380 ----
                  PATTERN                at list/extract time, a globbing PATTERN\n\
      -o, --old-archive, --portability   write a V7 format archive\n\
          --posix                        write a POSIX conformant archive\n\
  +   -y, --bzip2, --bunzip2             filter the archive through bzip2\n\
      -z, --gzip, --ungzip               filter the archive through gzip\n\
      -Z, --compress, --uncompress       filter the archive through compress\n\
          --use-compress-program=PROG    filter through PROG (must accept -d)\n"),
  ***************
  *** 448,454 ****
       Y  per-block gzip compression */

    #define OPTION_STRING \
  !   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz"

    static void
    set_subcommand_option (enum subcommand subcommand)
  --- 451,457 ----
       Y  per-block gzip compression */

    #define OPTION_STRING \
  !   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxyz"

    static void
    set_subcommand_option (enum subcommand subcommand)
  ***************
  *** 805,810 ****
  --- 808,817 ----
          case 'X':
          exclude_option = 1;
          add_exclude_file (optarg);
  +       break;
  +
  +       case 'y':
  +       set_use_compress_program_option ("bzip2");
          break;

          case 'z':

  55..  UUyywwaanniiee bbzziipp22 zz lleessss--eemm

  Aby dekompresowa pliki bzip2 w locie, tj. aby mc uywa less-a do
  czytania ich bez wczeniejszego bunzip2-owania ich, naley zrobi
  lesspipe.sh (man less) w ten sposb:

  #!/bin/sh
  # To jest preprocessor dla 'less-a'.  Jest on uywany, gdy ta zmienna
  # rodowiskowa jest ustawiona:   LESSOPEN="|lesspipe.sh %s"

    case "$1" in
    *.tar) tar tvvf $1 2>/dev/null ;; # Ogldaj zawarto rnych plikw tar-owych
    *.tgz) tar tzvvf $1 2>/dev/null ;;
  # Dziaa dla niezmodyfikowanej wersji tar-a
    *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;;
  # Dziaa z spatchowan wersj tar-a
  # *.tar.bz2) tyvvf $1 2>/dev/null ;;
    *.tar.gz) tar tzvvf $1 2>/dev/null ;;
    *.tar.Z) tar tzvvf $1 2>/dev/null ;;
    *.tar.z) tar tzvvf $1 2>/dev/null ;;
    *.bz2) bzip2 -dc $1  2>/dev/null ;; # Ogldaj spakowane pliki
    *.Z) gzip -dc $1  2>/dev/null ;;
    *.z) gzip -dc $1  2>/dev/null ;;
    *.gz) gzip -dc $1  2>/dev/null ;;
    *.zip) unzip -l $1 2>/dev/null ;;
    *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` ; # groff src
      FILE=`echo $FILE | cut -d ' ' -f 2`
      if [ "$FILE" = "troff" ]; then
        groff -s -p -t -e -Tascii -mandoc $1
      fi ;;
    *) cat $1 2>/dev/null ;;
  #  *) FILE=`file -L $1` ; # Check to see if binary, if so -- view with 'strings'
  #    FILE1=`echo $FILE | cut -d ' ' -f 2`
  #    FILE2=`echo $FILE | cut -d ' ' -f 3`
  #    if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
  #         -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
  #      strings $1
  #    fi ;;
    esac

  66..  UUyywwaanniiee bbzziipp22 zz eemmaaccss--eemm

  66..11..  ZZmmaaiinnaa eemmaaccss--aa ddllaa wwsszzyyssttkkiicchh::

  Napisalem ten patch do jka-compr.el ktry dodaje bzip2 do auto-
  compression-mode.

  DDiissccllaaiimmeerr:: Spawdziem go tylko z emacs-20.2, ale nie mam powodw by
  sdzi, e podobne postpowanie nie bdzie dziaa z innymi wersjami.

  By go uy,

  1. Przejd do katalogu rdowego emacs-20.2/lisp (tam gdzie go
     roztarowae)

  2. Wstaw ten patch do pliku  jka-compr.el.diff ( powinien by sam w
     tym pliku ;).

  3. Wykonaj

        patch < jka-compr.el.diff

  4. Wystartuj emacs-a, i wykonaj

   M-x byte-compile-file jka-compr.el

  5. Wyjd z emacs-a.

  6. Przenie pierwotny jka-compr.elc w bezpieczne miejsce gdyby byy
     bug-i.

  7. Zastp go new jka-compr.elc.

  8. Baw si dobrze!

     --- jka-compr.el        Sat Jul 26 17:02:39 1997
     +++ jka-compr.el.new    Thu Feb  5 17:44:35 1998
     @@ -44,7 +44,7 @@
      ;; The variable, jka-compr-compression-info-list can be used to
      ;; customize jka-compr to work with other compression programs.
      ;; The default value of this variable allows jka-compr to work with
     -;; Unix compress and gzip.
     +;; Unix compress and gzip.  David Fetter doda bzip2 support :)
      ;;
      ;; If you are concerned about the stderr output of gzip and other
      ;; compression/decompression programs showing up in your buffers, you
     @@ -121,7 +121,9 @@

      ;;; I have this defined so that .Z files are assumed to be in unix
     -;;; compress format; and .gz files, in gzip format.
     +;;; compress format; and .gz files, in gzip format, and .bz2 files,
     +;;; in the snappy new bzip2 format from http://www.muraroa.demon.co.uk.
     +;;; Keep up the good work, people!
      (defcustom jka-compr-compression-info-list
        ;;[regexp
        ;; compr-message  compr-prog  compr-args
     @@ -131,6 +133,10 @@
           "compressing"    "compress"     ("-c")
           "uncompressing"  "uncompress"   ("-c")
           nil t]
     +    ["\\.bz2\\'"
     +     "bzip2ing"        "bzip2"         ("")
     +     "bunzip2ing"      "bzip2"         ("-d")
     +     nil t]
          ["\\.tgz\\'"
           "zipping"        "gzip"         ("-c" "-q")
           "unzipping"      "gzip"         ("-c" "-q" "-d")

  66..22..  ZZmmiiaannaa eemmaaccss--aa ddllaa ppoojjeeddyycczzeeggoo uuyyttkkoowwnniikkaa::

  Podzikowania za to male si Ulrik-owi Dickow-owi, ukd@kampsax.dk
  <mailto:ukdATkampsax.dk>, programicie systemowemu w Kampsax
  Technology:

  Aby mc uywa bzip2 automatycznie gdy nie jeste sysadmin-em, po
  prostu dodaj co nastpuje do swojego pliku .emacs.

  ;; Automatic (un)compression on loading/saving files (gzip(1) and similar)
  ;; We start it in the off state, so that bzip2(1) support can be added.
  ;; Code thrown together by Ulrik Dickow for ~/.emacs with Emacs 19.34.
  ;; Should work with many older and newer Emacsen too.  No warranty though.
  ;;
  (if (fboundp 'auto-compression-mode) ; Emacs 19.30+
      (auto-compression-mode 0)
    (require 'jka-compr)
    (toggle-auto-compression 0))
  ;; Now add bzip2 support and turn auto compression back on.
  (add-to-list 'jka-compr-compression-info-list
               ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
                "zipping"        "bzip2"         ()
                "unzipping"      "bzip2"         ("-d")
                nil t])
  (toggle-auto-compression 1 t)

  77..  UUyywwaanniiee bbzziipp22--aa zz wwuu--ffttppdd

  Podzikowania dla Arnaud Launay za tego oszczdzacza bandwidth-u.  To
  co nastpuje powinno si znale w /etc/ftpconversions aby wykonywa
  kompresj i dekompresj on-the-fly za pomoc bzip2. Upewnij si, e
  cieki takie jak (like /bin/compress) s poprawne.

   :.Z:  :  :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
   :   : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
   :.gz: :  :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
   :   : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
   :.bz2: :  :/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:BUNZIP2
   :   : :.bz2:/bin/bzip2 -9 -c %s:T_REG:O_COMPRESS:BZIP2
   :   : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
   :   : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
   :   : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
   :   : :.tar.bz2:/bin/tar -c -y -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+BZIP2

  88..  UUyycciiee bbzziipp22 zz ggrreepp--eemm

  Ten uytek, ktry nazwaem bgrep, jest niewielk modyfikacj zgrep
  ktry jest dostarczany z Linux-em. Mona go uywa do grep-owania
  plikw bez bunzip2-owania ich najpierw.

  #!/bin/sh

  # bgrep -- a wrapper around a grep program that decompresses files as needed
  PATH="/usr/bin:$PATH"; export PATH

  prog=`echo $0 | sed 's|.*/||'`
  case "$prog" in
          *egrep) grep=${EGREP-egrep}     ;;
          *fgrep) grep=${FGREP-fgrep}     ;;
          *)      grep=${GREP-grep}       ;;
  esac
  pat=""
  while test $# -ne 0; do
    case "$1" in
    -e | -f) opt="$opt $1"; shift; pat="$1"
             if test "$grep" = grep; then  # grep is buggy with -e on SVR4
               grep=egrep
             fi;;
    -*)      opt="$opt $1";;
     *)      if test -z "$pat"; then
               pat="$1"
             else
               break;
             fi;;
    esac
    shift
  done

  if test -z "$pat"; then
    echo "grep through bzip2 files"
    echo "usage: $prog [grep_options] pattern [files]"
    exit 1
  fi

  list=0
  silent=0
  op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
  case "$op" in
    *l*) list=1
  esac
  case "$op" in
    *h*) silent=1
  esac

  if test $# -eq 0; then
    bzip2 -cd | $grep $opt "$pat"
    exit $?
  fi

  res=0
  for i do
    if test $list -eq 1; then
      bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
      r=$?
    elif test $# -eq 1 -o $silent -eq 1; then
      bzip2 -cd "$i" | $grep $opt "$pat"
      r=$?
    else
      bzip2 -cd "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
      r=$?
    fi
    test "$r" -ne 0 && res="$r"
  done
  exit $res

  99..  UUyywwaanniiee bbzziipp22--aa zz NNeettssccaappee--mm ppoodd XX--aammii..

  tenthumbs@cybernex.net pisze:

       Znalazem sposb aby spowodowa eby Linux-owy Netscape uywa bzip2-a
       do Content-Encoding tak jak uywa gzip-a. Dodaj to do $HOME/.Xdefaults
       lub $HOME/.Xresources

       Uywam opcji -s poniewa wol straci troch z szybkoci dekompresji
       na korzy zuycia RAM-u. Mon pomin t opcj, jeli kto tak chce.

  Netscape*encodingFilters:      \
          x-compress :  : .Z     : uncompress -c  \n\
          compress   :  : .Z     : uncompress -c  \n\
          x-gzip     :  : .z,.gz : gzip -cdq      \n\
          gzip       :  : .z,.gz : gzip -cdq      \n\
          x-bzip2    :  : .bz2   : bzip2 -ds \n

  1100..  UUyycciiee bbzziipp22--aa ddoo rreekkoommpprreessjjii pplliikkww sskkoommpprreessoowwaannyycchh ww iinnnnyycchh
  ffoorrmmaattaacchh

  Ten program w perl-u pobiera plik skompresowany w innych formatach
  (.tar.gz, .tgz. .tar.Z, and .Z ) i przepakowuje je dla lepszej
  kompresji.  Kod rdowy w perl-u ma wiele porzdnej dokumentacji
  dotyczcej tego co robi i jak to robi co robi.

  #!/usr/bin/perl -w

  #######################################################
  #                                                     #
  # Ten program pobiera pliki skompresowane programami  #
  # compress i gzip w aktualnym katalogu i zamienia je  #
  # do formatu bzip2. Obsuguje rozdszerzenie .tgz w    #
  # prawidowy sposb, tworzc plik .tar.bz2.           #
  #                                                     #
  #######################################################
  $counter = 0;
  $saved_bytes = 0;
  $totals_file = '/tmp/machine_bzip2_total';
  $machine_bzip2_total = 0;

  while(<*[Zz]>) {
      next if /^bzip2-0.1pl2.tar.gz$/;
      push @files, $_;
  }
  $total = scalar(@files);

  foreach (@files) {
      if (/tgz$/) {
          ($new=$_) =~ s/tgz$/tar.bz2/;
      } else {
          ($new=$_) =~ s/\.g?z$/.bz2/i;
      }
      $orig_size = (stat $_)[7];
      ++$counter;
      print "Repacking $_ ($counter/$total)...\n";
      if ((system "gzip -cd $_ |bzip2 >$new") == 0) {
          $new_size = (stat $new)[7];
          $factor = int(100*$new_size/$orig_size+.5);
          $saved_bytes += $orig_size-$new_size;
          print "$new is about $factor% of the size of $_. :",($factor<100)?')':'(',"\n";
          unlink $_;
      } else {
          print "Arrgghh!  Something happened to $_: $!\n";
      }
  }
  print "You've ",
        ($saved_bytes>=0)?"saved":"lost",
        " $saved_bytes bytes of storage space :",
         ($saved_bytes>=0)?")":"(", "\n";

  unless (-e '/tmp/machine_bzip2_total') {
      system ('echo "0" >/tmp/machine_bzip2_total');
      system ('chmod', '0666', '/tmp/machine_bzip2_total');
  }

  chomp($machine_bzip2_total = `cat $totals_file`);
  open TOTAL, ">$totals_file"
       or die "Can't open system-wide total: $!";
  $machine_bzip2_total += $saved_bytes;
  print TOTAL $machine_bzip2_total;
  close TOTAL;

  print "That's a machine-wide total of ",`cat $totals_file`," bytes saved.\n";

