cosmopolitan/third_party/lz4cli
Justine Tunney f4f4caab0e Add x86_64-linux-gnu emulator
I wanted a tiny scriptable meltdown proof way to run userspace programs
and visualize how program execution impacts memory. It helps to explain
how things like Actually Portable Executable works. It can show you how
the GCC generated code is going about manipulating matrices and more. I
didn't feel fully comfortable with Qemu and Bochs because I'm not smart
enough to understand them. I wanted something like gVisor but with much
stronger levels of assurances. I wanted a single binary that'll run, on
all major operating systems with an embedded GPL barrier ZIP filesystem
that is tiny enough to transpile to JavaScript and run in browsers too.

https://justine.storage.googleapis.com/emulator625.mp4
2020-08-25 04:43:42 -07:00
..
COPYING Initial import 2020-06-15 07:18:57 -07:00
README Initial import 2020-06-15 07:18:57 -07:00
bench.c Add x86_64-linux-gnu emulator 2020-08-25 04:43:42 -07:00
bench.h Initial import 2020-06-15 07:18:57 -07:00
datagen.c Initial import 2020-06-15 07:18:57 -07:00
datagen.h Initial import 2020-06-15 07:18:57 -07:00
lz4.1 Initial import 2020-06-15 07:18:57 -07:00
lz4.c Initial import 2020-06-15 07:18:57 -07:00
lz4.h Initial import 2020-06-15 07:18:57 -07:00
lz4cli.c Initial import 2020-06-15 07:18:57 -07:00
lz4cli.mk Initial import 2020-06-15 07:18:57 -07:00
lz4frame.c Initial import 2020-06-15 07:18:57 -07:00
lz4frame.h Initial import 2020-06-15 07:18:57 -07:00
lz4hc.c Initial import 2020-06-15 07:18:57 -07:00
lz4hc.h Initial import 2020-06-15 07:18:57 -07:00
lz4io.c Add x86_64-linux-gnu emulator 2020-08-25 04:43:42 -07:00
lz4io.h Initial import 2020-06-15 07:18:57 -07:00
platform.h Initial import 2020-06-15 07:18:57 -07:00
util.h Add x86_64-linux-gnu emulator 2020-08-25 04:43:42 -07:00
xxhash.c Initial import 2020-06-15 07:18:57 -07:00
xxhash.h Initial import 2020-06-15 07:18:57 -07:00

README

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

LZ4(1)                Cosmopolitan User Commands               -*-text-*-

๐๐€๐Œ๐„
       ๐—น๐˜‡๐Ÿฐ - lz4, unlz4, lz4cat - Compress or decompress .lz4 files

๐’๐˜๐๐Ž๐๐’๐ˆ๐’
       ๐—น๐˜‡๐Ÿฐ [OฬฒPฬฒTฬฒIฬฒOฬฒNฬฒSฬฒ] [-|INPUT-FILE] OฬฒUฬฒTฬฒPฬฒUฬฒTฬฒ-ฬฒFฬฒIฬฒLฬฒEฬฒ

       ๐˜‚๐—ป๐—น๐˜‡๐Ÿฐ is equivalent to ๐—น๐˜‡๐Ÿฐ -๐—ฑ

       ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜ is equivalent to ๐—น๐˜‡๐Ÿฐ -๐—ฑ๐—ฐ๐—ณ๐—บ

       When  writing scripts that need to decompress files, it is recomโ€
       mended to always use the name ๐—น๐˜‡๐Ÿฐ with appropriate arguments (๐—น๐˜‡๐Ÿฐ
       -๐—ฑ or ๐—น๐˜‡๐Ÿฐ -๐—ฑ๐—ฐ) instead of the names ๐˜‚๐—ป๐—น๐˜‡๐Ÿฐ and ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜.

๐ƒ๐„๐’๐‚๐‘๐ˆ๐๐“๐ˆ๐Ž๐
       ๐—น๐˜‡๐Ÿฐ is an extremely fast lossless compression algorithm, based on
       ๐—ฏ๐˜†๐˜๐—ฒ-๐—ฎ๐—น๐—ถ๐—ด๐—ป๐—ฒ๐—ฑ ๐‹๐™๐Ÿณ๐Ÿณ family of compression scheme. ๐—น๐˜‡๐Ÿฐ  offers  comโ€
       pression  speeds  of  400  MB/s  per core, linearly scalable with
       multi-core CPUs. It features  an  extremely  fast  decoder,  with
       speed  in  multiple  GB/s  per core, typically reaching RAM speed
       limit on multi-core systems. The native file format is  the  .๐—น๐˜‡๐Ÿฐ
       format.

   ๐ƒ๐—ถ๐—ณ๐—ณ๐—ฒ๐—ฟ๐—ฒ๐—ป๐—ฐ๐—ฒ ๐—ฏ๐—ฒ๐˜๐˜„๐—ฒ๐—ฒ๐—ป ๐—น๐˜‡๐Ÿฐ ๐—ฎ๐—ป๐—ฑ ๐—ด๐˜‡๐—ถ๐—ฝ
       ๐—น๐˜‡๐Ÿฐ  supports  a command line syntax similar bฬฒuฬฒtฬฒ nฬฒoฬฒtฬฒ iฬฒdฬฒeฬฒnฬฒtฬฒiฬฒcฬฒaฬฒlฬฒ to
       ๐—ด๐˜‡๐—ถ๐—ฝ(๐Ÿญ). Differences are :

       ยท   ๐—น๐˜‡๐Ÿฐ preserves original files

       ยท   ๐—น๐˜‡๐Ÿฐ compresses a single file by default (see -๐—บ for  multiple
           files)

       ยท   ๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿญ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿฎ means : compress file1 iฬฒnฬฒtฬฒoฬฒ file2

       ยท   ๐—น๐˜‡๐Ÿฐ  ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ  will default to decompression (use -๐˜‡ to force
           compression)

       ยท   ๐—น๐˜‡๐Ÿฐ shows real-time notification statistics  during  compresโ€
           sion  or  decompression  of  a single file (use -๐—พ to silence
           them)

       ยท   If no destination name is provided, result is sent to  ๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜
           eฬฒxฬฒcฬฒeฬฒpฬฒtฬฒ iฬฒfฬฒ sฬฒtฬฒdฬฒoฬฒuฬฒtฬฒ iฬฒsฬฒ tฬฒhฬฒeฬฒ cฬฒoฬฒnฬฒsฬฒoฬฒlฬฒeฬฒ.

       ยท   If no destination name is provided, ๐—ฎ๐—ป๐—ฑ if ๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜ is the conโ€
           sole, ๐—ณ๐—ถ๐—น๐—ฒ is compressed into ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ.

       ยท   As a consequence of previous rules, note the following  examโ€
           ple  :  ๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ | ๐—ฐ๐—ผ๐—ป๐˜€๐˜‚๐—บ๐—ฒ๐—ฟ sends compressed data to ๐—ฐ๐—ผ๐—ป๐˜€๐˜‚๐—บ๐—ฒ๐—ฟ
           through ๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜, hence it does nฬฒoฬฒtฬฒ create ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ.

       ยท   Another consequence of those rules is that to run  ๐—น๐˜‡๐Ÿฐ  under
           ๐—ป๐—ผ๐—ต๐˜‚๐—ฝ,  you should provide a destination file: ๐—ป๐—ผ๐—ต๐˜‚๐—ฝ ๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ
           ๐—ณ๐—ถ๐—น๐—ฒ.๐—น๐˜‡๐Ÿฐ, because ๐—ป๐—ผ๐—ต๐˜‚๐—ฝ writes the specified commandยดs output
           to a file.



       Default  behaviors  can  be modified by opt-in commands, detailed
       below.

       ยท   ๐—น๐˜‡๐Ÿฐ -๐—บ makes it possible to provide multiple input filenames,
           which  will  be  compressed  into  files  using  suffix .๐—น๐˜‡๐Ÿฐ.
           Progress notifications are also disabled by default  (use  -๐˜ƒ
           to  enable them). This mode has a behavior which more closely
           mimics ๐—ด๐˜‡๐—ถ๐—ฝ command line, with the main remaining  difference
           being that source files are preserved by default.

       ยท   Similarly, ๐—น๐˜‡๐Ÿฐ -๐—บ -๐—ฑ can decompress multiple *.๐—น๐˜‡๐Ÿฐ files.

       ยท   Itยดs  possible  to opt-in to erase source files on successful
           compression or decompression, using --๐—ฟ๐—บ command.

       ยท   Consequently, ๐—น๐˜‡๐Ÿฐ -๐—บ --๐—ฟ๐—บ behaves the same as ๐—ด๐˜‡๐—ถ๐—ฝ.



   ๐‚๐—ผ๐—ป๐—ฐ๐—ฎ๐˜๐—ฒ๐—ป๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ผ๐—ณ .๐—น๐˜‡๐Ÿฐ ๐—ณ๐—ถ๐—น๐—ฒ๐˜€
       It is possible to concatenate .๐—น๐˜‡๐Ÿฐ files as is. ๐—น๐˜‡๐Ÿฐ  will  decomโ€
       press such files as if they were a single .๐—น๐˜‡๐Ÿฐ file. For example:



           lz4 file1  > foo.lz4
           lz4 file2 >> foo.lz4



       Then ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜ ๐—ณ๐—ผ๐—ผ.๐—น๐˜‡๐Ÿฐ is equivalent to ๐—ฐ๐—ฎ๐˜ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿญ ๐—ณ๐—ถ๐—น๐—ฒ๐Ÿฎ.

๐Ž๐๐“๐ˆ๐Ž๐๐’
   ๐’๐—ต๐—ผ๐—ฟ๐˜ ๐—ฐ๐—ผ๐—บ๐—บ๐—ฎ๐—ป๐—ฑ๐˜€ ๐—ฐ๐—ผ๐—ป๐—ฐ๐—ฎ๐˜๐—ฒ๐—ป๐—ฎ๐˜๐—ถ๐—ผ๐—ป
       In  some cases, some options can be expressed using short command
       -๐˜… or long command --๐—น๐—ผ๐—ป๐—ด-๐˜„๐—ผ๐—ฟ๐—ฑ. Short commands  can  be  concateโ€
       nated  together.  For  example,  -๐—ฑ -๐—ฐ is equivalent to -๐—ฑ๐—ฐ. Long
       commands cannot be concatenated. They must be  clearly  separated
       by a space.

   ๐Œ๐˜‚๐—น๐˜๐—ถ๐—ฝ๐—น๐—ฒ ๐—ฐ๐—ผ๐—บ๐—บ๐—ฎ๐—ป๐—ฑ๐˜€
       When multiple contradictory commands are issued on a same command
       line, only the latest one will be applied.

   ๐Ž๐—ฝ๐—ฒ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—บ๐—ผ๐—ฑ๐—ฒ
       -๐˜‡ --๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€
              Compress. This is the default operation mode when no operโ€
              ation mode option is specified, no other operation mode is
              implied from the command name (for example, ๐˜‚๐—ป๐—น๐˜‡๐Ÿฐ  implies
              --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€),  nor from the input file name (for example,
              a file extension .๐—น๐˜‡๐Ÿฐ implies --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ by default). -๐˜‡
              can  also  be used to force compression of an already comโ€
              pressed .๐—น๐˜‡๐Ÿฐ file.

       -๐—ฑ --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ --๐˜‚๐—ป๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€
              Decompress. --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ is  also  the  default  operation
              when the input filename has an .๐—น๐˜‡๐Ÿฐ extension.

       -๐˜ --๐˜๐—ฒ๐˜€๐˜
              Test  the  integrity  of compressed .๐—น๐˜‡๐Ÿฐ files. The decomโ€
              pressed data  is  discarded.  No  files  are  created  nor
              removed.

       -๐—ฏ#    Benchmark mode, using # compression level.

   ๐Ž๐—ฝ๐—ฒ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—บ๐—ผ๐—ฑ๐—ถ๐—ณ๐—ถ๐—ฒ๐—ฟ๐˜€
       -#     Compression  level,  with  # being any value from 1 to 12.
              Higher values  trade  compression  speed  for  compression
              ratio. Values above 12 are considered the same as 12. Recโ€
              ommended values are 1 for fast compression (default),  and
              9  for  high compression. Speed/compression trade-off will
              vary depending on data to  compress.  Decompression  speed
              remains fast at all settings.

       -๐ƒ ๐—ฑ๐—ถ๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐—ฎ๐—ฟ๐˜†๐๐—ฎ๐—บ๐—ฒ
              Compress, decompress or benchmark using dictionary dฬฒiฬฒcฬฒtฬฒiฬฒoฬฒโ€ฬฒ
              nฬฒaฬฒrฬฒyฬฒNฬฒaฬฒmฬฒeฬฒ. Compression and decompression must use the  same
              dictionary  to be compatible. Using a different dictionary
              during decompression will either abort due  to  decompresโ€
              sion error, or generate a checksum error.

       -๐—ณ --[๐—ป๐—ผ-]๐—ณ๐—ผ๐—ฟ๐—ฐ๐—ฒ
              This option has several effects:

              If  the  target  file already exists, overwrite it without
              prompting.

              When used with --๐—ฑ๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฟ๐—ฒ๐˜€๐˜€ and ๐—น๐˜‡๐Ÿฐ cannot  recognize  the
              type  of  the  source  file, copy the source file as is to
              standard output. This allows ๐—น๐˜‡๐Ÿฐ๐—ฐ๐—ฎ๐˜  --๐—ณ๐—ผ๐—ฟ๐—ฐ๐—ฒ  to  be  used
              like  ๐—ฐ๐—ฎ๐˜ (๐Ÿญ) for files that have not been compressed with
              ๐—น๐˜‡๐Ÿฐ.

       -๐—ฐ --๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜ --๐˜๐—ผ-๐˜€๐˜๐—ฑ๐—ผ๐˜‚๐˜
              Force write to standard output, even if it is the console.

       -๐—บ --๐—บ๐˜‚๐—น๐˜๐—ถ๐—ฝ๐—น๐—ฒ
              Multiple  input  files.  Compressed  file  names  will  be
              appended  a  .๐—น๐˜‡๐Ÿฐ suffix. This mode also reduces notificaโ€
              tion level. ๐—น๐˜‡๐Ÿฐ -๐—บ has a behavior equivalent  to  ๐—ด๐˜‡๐—ถ๐—ฝ  -๐—ธ
              (it preserves source files by default).

       -๐—ฟ     operate recursively on directories. This mode also sets -๐—บ
              (multiple input files).

       -๐#    Block size [4-7](default : 7)
              -๐๐Ÿฐ= 64KB ; -๐๐Ÿฑ= 256KB ; -๐๐Ÿฒ= 1MB ; -๐๐Ÿณ= 4MB

       -๐๐ƒ    Block Dependency  (improves  compression  ratio  on  small
              blocks)

       --๐—ณ๐—ฎ๐˜€๐˜[=#]
              switch  to  ultra-fast  compression  levels.  If =# is not
              present, it defaults to  ๐Ÿญ.  The  higher  the  value,  the
              faster the compression speed, at the cost of some compresโ€
              sion ratio. This setting overwrites compression  level  if
              one  was set previously. Similarly, if a compression level
              is set after --๐—ณ๐—ฎ๐˜€๐˜, it overrides it.

       --[๐—ป๐—ผ-]๐—ณ๐—ฟ๐—ฎ๐—บ๐—ฒ-๐—ฐ๐—ฟ๐—ฐ
              Select frame checksum (default:enabled)

       --[๐—ป๐—ผ-]๐—ฐ๐—ผ๐—ป๐˜๐—ฒ๐—ป๐˜-๐˜€๐—ถ๐˜‡๐—ฒ
              Header includes original size (default:not present)
              Note : this option can only be activated when the original
              size  can  be  determined, hence for a file. It wonยดt work
              with unknown source size, such as stdin or pipe.

       --[๐—ป๐—ผ-]๐˜€๐—ฝ๐—ฎ๐—ฟ๐˜€๐—ฒ
              Sparse mode support (default:enabled on file, disabled  on
              stdout)

       -๐—น     Use Legacy format (typically for Linux Kernel compression)
              Note : -๐—น is not compatible with -๐—บ (--๐—บ๐˜‚๐—น๐˜๐—ถ๐—ฝ๐—น๐—ฒ) nor -๐—ฟ

   ๐Ž๐˜๐—ต๐—ฒ๐—ฟ ๐—ผ๐—ฝ๐˜๐—ถ๐—ผ๐—ป๐˜€
       -๐˜ƒ --๐˜ƒ๐—ฒ๐—ฟ๐—ฏ๐—ผ๐˜€๐—ฒ
              Verbose mode

       -๐—พ --๐—พ๐˜‚๐—ถ๐—ฒ๐˜
              Suppress  warnings and real-time statistics; specify twice
              to suppress errors too

       -๐—ต -๐‡ --๐—ต๐—ฒ๐—น๐—ฝ
              Display help/long help and exit

       -๐• --๐˜ƒ๐—ฒ๐—ฟ๐˜€๐—ถ๐—ผ๐—ป
              Display Version number and exit

       -๐—ธ --๐—ธ๐—ฒ๐—ฒ๐—ฝ
              Preserve source files (default behavior)

       --๐—ฟ๐—บ   Delete source files on successful  compression  or  decomโ€
              pression

       --     Treat all subsequent arguments as files

   ๐๐—ฒ๐—ป๐—ฐ๐—ต๐—บ๐—ฎ๐—ฟ๐—ธ ๐—บ๐—ผ๐—ฑ๐—ฒ
       -๐—ฏ#    Benchmark file(s), using # compression level

       -๐—ฒ#    Benchmark  multiple  compression  levels,  from  b#  to e#
              (included)

       -๐—ถ#    Minimum evaluation time in seconds [1-9] (default : 3)

๐๐”๐†๐’
       Report bugs at: https://github.com/lz4/lz4/issues

๐€๐”๐“๐‡๐Ž๐‘
       Yann Collet

lz4 1.8.3                       September 2018                          LZ4(1)