Index

Package: Zip.Headers

Description

package Zip.Headers is
Change log: ========== 16-Nov-2009: GdM: Replaced Ada.Calendar.Time by Zip.Time in headers, due to perf. issues in some run-times' Ada.Calendar.Time_Of

Types

Data_descriptor

type Data_descriptor is record
    -- PK78                           --  1.. 4
    crc_32             : Unsigned_32; --  5.. 8
    compressed_size,
    uncompressed_size  : Unsigned_32;
  end record;

References:

zip-headers.ads:30:8 (declaration)
unzip-decompress.adb:20:46 (reference)
unzip-decompress.adb:1829:51 (reference)
unzip-decompress.ads:35:46 (reference)
zip-headers.adb:293:28 (reference)
zip-headers.adb:309:28 (reference)
zip-headers.adb:320:24 (reference)
zip-headers.ads:43:28 (reference)
zip-headers.ads:48:28 (reference)
zip-headers.ads:55:28 (reference)
zip-headers.ads:68:30 (reference)

Local_File_Header

type Local_File_Header is record
    -- PK34                                --  1.. 4
    needed_extract_version : Unsigned_16;  --  5.. 6
    bit_flag,
    zip_type               : Unsigned_16;
    file_timedate          : Time;
    dd                     : Data_descriptor;
    filename_length,
    extra_field_length     : Unsigned_16;
  end record;

References:

zip-headers.ads:62:8 (declaration)
unzip-streams.adb:35:31 (reference)
unzip.adb:31:31 (reference)
zip-headers.adb:132:21 (reference)
zip-headers.adb:159:35 (reference)
zip-headers.ads:77:18 (reference)
zip-headers.ads:84:17 (reference)
zip-headers.ads:95:27 (reference)

Central_File_Header

type Central_File_Header is record
    -- PK12                                  --  1.. 4
    made_by_version     : Unsigned_16;       --  5.. 6
    short_info          : Local_File_Header; --  7..32
    comment_length      : Unsigned_16;       -- 33..34
    disk_number_start   : Unsigned_16;
    internal_attributes : Unsigned_16; -- internal properties of data
    external_attributes : Unsigned_32; -- 1st byte if MS-DOS: see below
    local_header_offset : Unsigned_32;
  end record;

References:

zip-headers.ads:92:8 (declaration)
zip-create.ads:73:26 (reference)
zip-headers.adb:67:18 (reference)
zip-headers.adb:99:21 (reference)
zip-headers.ads:116:21 (reference)
zip-headers.ads:123:21 (reference)
zip.adb:185:26 (reference)
zip.adb:432:29 (reference)
zip.adb:480:26 (reference)

End_of_Central_Dir

type End_of_Central_Dir is record
    -- PK56                           --  1.. 4
    disknum            : Unsigned_16; --  5.. 6
    disknum_with_start : Unsigned_16;
    disk_total_entries : Unsigned_16;
    total_entries      : Unsigned_16;
    central_dir_size   : Unsigned_32;
    central_dir_offset : Unsigned_32;
    main_comment_length: Unsigned_16;
  end record;

References:

zip-headers.ads:130:8 (declaration)
zip-create.adb:190:24 (reference)
zip-headers.adb:184:22 (reference)
zip-headers.adb:204:22 (reference)
zip-headers.adb:224:21 (reference)
zip-headers.adb:270:22 (reference)
zip-headers.ads:147:22 (reference)
zip-headers.ads:152:22 (reference)
zip-headers.ads:161:21 (reference)
zip-headers.ads:166:22 (reference)
zip.adb:184:26 (reference)
zip.adb:431:29 (reference)
zip.adb:479:26 (reference)

Constants & Global variables

data_descriptor_length

data_descriptor_length : constant:= 16;

References:

zip-headers.ads:37:3 (declaration)
unzip-streams.adb:120:55 (reference)
unzip.adb:345:49 (reference)

bad_data_descriptor

bad_data_descriptor: exception;

References:

zip-headers.ads:51:3 (declaration)
zip-headers.adb:298:13 (reference)

local_header_length

local_header_length: constant:= 30;

References:

zip-headers.ads:73:3 (declaration)
unzip-streams.adb:66:27 (reference)
unzip-streams.adb:114:27 (reference)
unzip.adb:213:27 (reference)
unzip.adb:337:27 (reference)

bad_local_header

bad_local_header: exception;

References:

zip-headers.ads:80:3 (declaration)
unzip-streams.adb:49:24 (reference)
unzip.adb:196:24 (reference)
unzip.adb:565:22 (reference)
zip-headers.adb:140:13 (reference)

central_header_length

central_header_length: constant:= 46;

References:

zip-headers.ads:112:3 (declaration)
zip-create.adb:210:28 (reference)

bad_central_header

bad_central_header: exception;

References:

zip-headers.ads:119:3 (declaration)
zip-headers.adb:75:13 (reference)

end_of_central_dir_length

end_of_central_dir_length : constant:= 22;

References:

zip-headers.ads:141:3 (declaration)

bad_end

bad_end: exception;

References:

zip-headers.ads:155:3 (declaration)
zip-headers.adb:189:13 (reference)
zip-headers.adb:252:19 (reference)
zip-headers.adb:258:14 (reference)

Subprograms & Entries

Copy_and_check

procedure Copy_and_check
( buffer: in Byte_Buffer;
the_data_desc: out Data_descriptor );

References:

zip-headers.ads:41:13 (declaration)
unzip-decompress.adb:1848:19 (reference)
zip-headers.adb:291:13 (body)
zip-headers.adb:305:7 (label)
zip-headers.adb:315:5 (reference)

Called by:

Read_and_check defined at zip-headers.ads:46:13
UnZip.Decompress.Decompress_data.Process defined at unzip-decompress.adb:1829:15

Calls:

Zip.Headers.Intel_nb defined at zip-headers.adb:25:12
Zip.Headers.PK_signature defined at zip-headers.adb:52:12
This header needs to be read in continuation of the compressed data -> access to a buffer

Read_and_check

procedure Read_and_check
( stream: in Zipstream_Class;
the_data_desc: out Data_descriptor );

References:

zip-headers.ads:46:13 (declaration)
zip-headers.adb:307:13 (body)
zip-headers.adb:316:7 (label)

Write

procedure Write
( stream: in Zipstream_Class;
the_data_desc: in Data_descriptor );

References:

zip-headers.ads:53:13 (declaration)
zip-headers.adb:318:13 (body)
zip-headers.adb:332:7 (label)

Calls:

Zip.BlockWrite defined at zip.ads:263:13
Zip.Headers.Intel_bf defined at zip-headers.adb:46:12
Zip.Headers.PK_signature defined at zip-headers.adb:57:13
--------------------------------------------------------------------- PKZIP local file header, in front of every file in archive - PK34 -- ---------------------------------------------------------------------

Read_and_check

procedure Read_and_check
( stream: in Zipstream_Class;
header: out Local_File_Header );

References:

zip-headers.ads:75:13 (declaration)
unzip-streams.adb:46:25 (reference)
unzip.adb:193:25 (reference)
zip-headers.adb:130:13 (body)
zip-headers.adb:155:7 (label)

Called by:

UnZip.Streams.UnZipFile defined at unzip-streams.adb:25:13
UnZip.UnZipFile defined at unzip.adb:15:13

Calls:

Zip.BlockRead defined at zip.ads:255:13
Zip.Headers.Intel_nb defined at zip-headers.adb:25:12
Zip.Headers.Intel_nb defined at zip-headers.adb:24:12
Zip.Headers.PK_signature defined at zip-headers.adb:52:12
Zip_Streams.Calendar.Convert defined at zip_streams.ads:113:16

Write

procedure Write
( stream: in Zipstream_Class;
header: in Local_File_Header );

References:

zip-headers.ads:82:13 (declaration)
zip-create.adb:107:19 (reference)
zip-create.adb:128:19 (reference)
zip-headers.adb:157:13 (body)
zip-headers.adb:177:7 (label)

Calls:

Zip.BlockWrite defined at zip.ads:263:13
Zip.Headers.Intel_bf defined at zip-headers.adb:46:12
Zip.Headers.Intel_bf defined at zip-headers.adb:45:12
Zip.Headers.PK_signature defined at zip-headers.adb:57:13
Zip_Streams.Calendar.Convert defined at zip_streams.ads:114:16
----------------------------------------------------- PKZIP file header, as in central directory - PK12 -- ----------------------------------------------------- NB: a central header contains a local header in the middle

Read_and_check

procedure Read_and_check
( stream: in Zipstream_Class;
header: out Central_File_Header );

References:

zip-headers.ads:114:13 (declaration)
zip-headers.adb:65:13 (body)
zip-headers.adb:95:7 (label)
zip.adb:205:19 (reference)
zip.adb:448:25 (reference)
zip.adb:490:22 (reference)

Calls:

Zip.BlockRead defined at zip.ads:255:13
Zip.Headers.Intel_nb defined at zip-headers.adb:25:12
Zip.Headers.Intel_nb defined at zip-headers.adb:24:12
Zip.Headers.PK_signature defined at zip-headers.adb:52:12
Zip_Streams.Calendar.Convert defined at zip_streams.ads:113:16

Write

procedure Write
( stream: in Zipstream_Class;
header: in Central_File_Header );

References:

zip-headers.ads:121:13 (declaration)
zip-create.adb:206:24 (reference)
zip-headers.adb:97:13 (body)
zip-headers.adb:125:7 (label)

Called by:

Zip.Create.Finish defined at zip-create.ads:68:14

Calls:

Zip.BlockWrite defined at zip.ads:263:13
Zip.Headers.Intel_bf defined at zip-headers.adb:46:12
Zip.Headers.Intel_bf defined at zip-headers.adb:45:12
Zip.Headers.PK_signature defined at zip-headers.adb:57:13
Zip_Streams.Calendar.Convert defined at zip_streams.ads:114:16
----------------------------------------- PKZIP end-of-central-directory - PK56 -- -----------------------------------------

Copy_and_check

procedure Copy_and_check
( buffer: in Byte_Buffer;
the_end: out End_of_Central_Dir );

References:

zip-headers.ads:145:13 (declaration)
zip-headers.adb:182:13 (body)
zip-headers.adb:200:7 (label)
zip-headers.adb:210:5 (reference)
zip-headers.adb:255:9 (reference)

Calls:

Zip.Headers.Intel_nb defined at zip-headers.adb:25:12
Zip.Headers.Intel_nb defined at zip-headers.adb:24:12
Zip.Headers.PK_signature defined at zip-headers.adb:52:12
This header needs to be read in special ways (see Load) -> access to a buffer

Read_and_check

procedure Read_and_check
( stream: in Zipstream_Class;
the_end: out End_of_Central_Dir );

References:

zip-headers.ads:150:13 (declaration)
zip-headers.adb:202:13 (body)
zip-headers.adb:211:7 (label)

Load

procedure Load
( stream: in Zipstream_Class;
the_end: out End_of_Central_Dir );

References:

zip-headers.ads:159:13 (declaration)
zip-headers.adb:222:13 (body)
zip-headers.adb:266:7 (label)
zip.adb:195:17 (reference)
zip.adb:436:17 (reference)
zip.adb:483:17 (reference)
A bit more elaborated: from an open file (not a stream), find the End-of-Central-dir and load it; keep the file open.

Write

procedure Write
( stream: in Zipstream_Class;
the_end: in End_of_Central_Dir );

References:

zip-headers.ads:164:13 (declaration)
zip-create.adb:220:19 (reference)
zip-headers.adb:268:13 (body)
zip-headers.adb:286:7 (label)

Called by:

Zip.Create.Finish defined at zip-create.ads:68:14

Calls:

Zip.BlockWrite defined at zip.ads:263:13
Zip.Headers.Intel_bf defined at zip-headers.adb:46:12
Zip.Headers.Intel_bf defined at zip-headers.adb:45:12
Zip.Headers.PK_signature defined at zip-headers.adb:57:13