GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • GitHub
  • Projects
  • AZip
  • GLOBE_3D
  • Engine_3D
  • Scala / Huygens-Fokker Foundation
  • Consafe Logistics AB
  • Crédit Agricole (Suisse) SA
  • Eutopia Labs Ltd
  • NXP Semiconductors NV (Philips)
  • Partner Reinsurance Ltd
  • Pragmatic Scanner
  • Soudronic AG
  • Romans CAD - Stratégies software

This view

  • Original page
  • New address

GeezerVison is showing unzip-ada.sourceforge.io — Zip-Ada

Zip-Ada: Ada library for zip files (.zip). Ada programming.
Zip-Ada   20 years Zip-Ada

[NEW] BZip2 and LZMA compression supported.

What is Zip-Ada ?

Zip-Ada is a free, open-source, independent programming library for dealing with the Zip compressed archive file format.
The full sources of Zip-Ada are written in the Ada programming language.
For more details, read the files zipada.txt and zip.ads from the archive below.
 
Some features
  • Standalone (no dependency).
  • Pure Ada 2012 (nothing compiler/system specific); can be used in projects in Ada 2012 and later language versions.
  • Unconditionally portable: compilable on every Ada compiler and for every system (*).
  • Files and memory streams supported, for archives and entries, for compression and decompression.
  • Task safe.
  • Endian-neutral.
  • Zip methods supported for compression: Reduce, Shrink, Deflate, BZip2, LZMA.
  • Zip methods supported for decompression: the above methods, plus: Implode, Deflate64.
  • Tests and demos included.
  • Permissive license (MIT).
  • Free, open-source.
(*) within limits of compiler's provided integer types and target architecture capacity.
 
Why not call an zip or unzip executable, or use the zlib library ?
  • Independence:
    with this library you can zip and unzip data without any OS-dependent external call.
    Furthermore, you can use Zip-Ada with any data stream instead of files, for the archives as well as for the archived entries.
  • Unconditional portability (*):
    • the C code has "only" been widely ported, with specific source parts (via conditional compilation) for different Operating Systems and compilers;
    • a single Ada source code set produces a native Zip/UnZip in machine code for every OS, with every Ada compiler - no "header hell", nothing to configure (sceptic ? click here to see a list of reportedly successfully tested environments).
  • No effort of interfacing: interfacing is a frequent source of maintenance troubles, compatibility issues and portability constraints.
    With Zip-Ada, it is possible to have full-Ada projects using Zip archives, all compiled by a single compiler.
  • Transparency: full sources are visible; it is easier to verify and customize.
  • Benefit from the powerful LZMA and BZip2 compression formats, which are not available in zlib and zlib-based Zip tools (they are limited to the weaker Deflate format).
    Additionally, Zip-Ada provides the Preselection algorithm-picking method for compressing data depending on their type and size.
  • Zip-Ada can use an archive as a read-only file system. Since the archive itself can be stored in memory, Zip-Ada can even work as a RAM-disk.
(*) within limits of compiler's provided integer types and target architecture capacity.

Distribution

Zip-Ada is free software under MIT license - see copyright notice in the file zip.ads.

Download

  Download the library from the SourceForge project page.  

You can also...
  • get the corresponding crate on Alire; for details, click here:  Alire Crate
  • check the mirror on GitHub.

The zipada*.zip archive contains:
  • The full library Ada sources inside one directory, Zip_Lib.
  • Within the Zip_Lib library:
    • a standalone generic streaming LZ77 encoder (can be used outside of the Zip context)
    • standalone generic streaming BZip2 encoder and decoder (can be used outside of the Zip context).
    • standalone generic streaming LZMA encoder and decoder (can be used outside of the Zip context).
  • Some command-line demos, and the following tools:
    • ZipAda, a tool that creates a compressed Zip archive.
    • UnZipAda, a tool that extracts some or all files from a Zip archive.
    • Comp_Zip, an utility for comparing two Zip archives (compare contents, check missing files).
    • Find_Zip, an utility for searching a text string across contents of a Zip archive.
    • ReZip, a tool for recompressing Zip archives towards optimal compression.
    • bzip2_enc and bzip2_dec, a tool pair that encodes/decodes BZip2 compressed files (.bz2).
    • lzma_enc and lzma_dec, a tool pair that encodes/decodes LZMA compressed files (.lzma).

Screenshots:

Zip-Ada in action
within a Zip archive
manager (AZip):

Zip-Ada in action
within a self-extracting
installer:
HTML report
from the ReZip tool:
AZip   Installer   ReZip report  

Presentations:

Swiss Ada Event 2025
 
FOSDEM 2025
 
FOSDEM 2019
 
Swiss Ada Event 2017
 
Zip-Ada @ Swiss Ada Event 2025   Zip-Ada @ FOSDEM 2025   Zip-Ada @ FOSDEM 2019   Zip-Ada @ Swiss Ada Event 2017 (part 1)   Zip-Ada @ Swiss Ada Event 2017 (part 1)  

A small demo's source:


   1  --  Zip archive creation demo.
   2  --  For a complete Zip creation tool, see tools/zipada.adb .
   3  --
   4  with Zip.Create;
   5  
   6  procedure Demo_Zip is
   7    use Zip.Create;
   8    zip_file : aliased Zip_File_Stream;  --  Archive is a file in this example.
   9    archive : Zip_Create_Info;
  10  begin
  11    Create_Archive (archive, zip_file'Unchecked_Access, "mini_zip.zip");
  12    --  We insert a couple of files into the Zip archive:
  13    Add_File (archive, "demo/demo_zip.adb", Password => "1234");
  14    Add_File (archive, "demo/demo_unzip.adb");
  15    --  Here we add directly some contents to the Zip archive
  16    --  without a file in the first place:
  17    Add_String
  18      (archive,
  19       "==== Hello world! ====" & ASCII.LF &
  20       "It is such a nice ""Hello world""-like demo, isn't it ?",
  21       "nice_string.txt");
  22    Add_Empty_Folder (archive, "empty_folder/");
  23    Finish (archive);
  24  end Demo_Zip;


For viewing more sources...

Browse the source (of version 61)  

Source web pages automatically generated by gnathtml (GNAT).

Present state - latest changes - history

For the full history, click here.

Contact:

Mail:     Gautier de Montmollin, e-mail
For a little sponsoring (e.g. the equivalent of a glass of wine)...   Support This Project

An article about fuzzing (testing with randomized input data) and Zip-Ada:

Technical documentation: read PKWare's appnote.txt (included in the Zip-Ada archive).

On Gautier's blog: some news about Zip-Ada and other Ada projects.

Visit the Ada Forum:



Combinations (Operating System, processor, compiler) where the Zip-Ada library - one single source, zero conditional compilation - is reported to be in use: OSCPUCompiler OpenVMSIntel Itanium (64 bit) GNU - GNAT AIXPower7 (64 bit) MS Windows 32-bitIntel x86 MS Windows 64-bitAMD/Intel x64 Linux 32-bitIntel x86 Linux 64-bitAMD/Intel x64 Linux on PS3Cell (64 bit) Linux on Raspberry PiARM Mac OS XPowerPC (64 bit) Mac OS XAMD/Intel x64 (64 bit) Mac OS Xaarch64 SolarisSPARC (32 or 64 bit) SolarisAMD/Intel x64 (64 bit) OpenBSD(one of several) FreeBSDIntel x86 (32 bit) FreeBSDAMD/Intel x64 (64 bit) Android 2.3+ARM MS Windows x64AMD/Intel x64 (64 bit)PTC - ObjectAda MS Windows NT+Intel x86 (32 bit)SofCheck - AdaMagic MS Windows NT+AMD/Intel x64 (64 bit) LinuxIntel x86 (32 bit) Mac OS XPowerPC (64 bit) Mac OS XAMD/Intel x64 (64 bit) SolarisSPARC (32 or 64 bit) SolarisAMD/Intel x64 Don't hesitate to tell me about other OS / CPU / compiler combinations!Summary of supported Zip internal compression formats (each compressed file in a Zip archive can have a different compression format): Zip-Ada Other software. Info-Zip Format Format # Compress Decompress PKZip 7-Zip WinZip Zip UnZip Store 0 v.22 v.1 v.0.90 all all all all Shrink 1 v.22 v.1 v.0.90 v.9.20 all never Reduce 1 .. 4 2 .. 5 v.29 v.1 v.0.90 all never v.<=5.12 Implode 6 never v.1 v.1.01 v.9.20 all never Deflate 8 v.50(v.40-49: limited) v.1 v.2.0 all all v.2.0 all Enhanced Deflate 9 never v.30 v.2.1 all v.8.0 v.5.5 BZip2 12 v.60 v.36 v.4.6 v.9.20 v.9.0 v.3.0 v.6.0 LZMA 14 v.51 v.47 v.6.3 all v.12.0 PPMd 98 v.6.3 v.9.11 v.10.0 Zstandard 93 v.6.3.8 v.24.01 v.24Some Zip-Ada users:
  • Projects
    • AZip - a Zip archive manager based on Zip-Ada
    • GLOBE_3D
    • Engine_3D
    • Scala / Huygens-Fokker Foundation
  • Organizations / companies
    • Consafe Logistics AB
    • Crédit Agricole (Suisse) SA
    • Eutopia Labs Ltd
    • NXP Semiconductors NV (Philips)
    • Partner Reinsurance Ltd
    • Pragmatic Scanner - A fast, self-contained static analysis scanner for Ada source code.
    • Soudronic AG
    • Romans CAD - Stratégies software
    • Some others are known but are not disclosed here...

Here is a list of other open-source projects I participate to on SourceForge. Click on the links below for details.
  • Ada Bar Codes
  • Ada PDF Writer - a standalone, portable package for producing dynamically PDF documents
  • Corporate Bullshit Generator - the Corporate Bullshit Generator
  • Excel Writer - a standalone, portable Ada package for producing Excel spreadsheets
  • GID - Generic Image Decoder
  • GNAVI: GNU Ada Visual Interface - the GNU Ada Visual Interface
  • GNOGA - the GNU Omnificent GUI for Ada
  • HAC - HAC Ada Compiler
  • Ini file manager - a standalone, portable Ada package for configuration files
  • LEA - Lightweight Editor for Ada
  • Mathpaqs  - collection of mathematical, 100% portable, packages in Ada
  • Pascal-to-Ada  - Pascal to Ada translator
  • TeXCAD  - a program for drawing or retouching {picture}s in LaTeX
  • Wasabee - a Web browser with safety focus
Some projects have GitHub mirrors too.

Some Ada compilers:
  • AdaCore GNAT Public version via Alire
  • AdaCore GNAT Public version up to version CE 2021 as standalone installer
  • AdaCore GNAT Professional
  • FSF GNAT
  • PTC ObjectAda compiler
  • PTC ApexAda compiler
  • Green Hills
  • DDC-I
  • ICC
  • XGC
  • OC Systems

External compression tools used by ReZip:
  • 7-Zip
  • KZip
  • Zip (info-zip)
  • AdvZip (with Zopfli algorithm)
  • DeflOpt

Powered by Ada          Awesome Ada         


       

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.