Class Archive::Tar::PosixHeader
In: lib/archive/tar/minitar.rb
Parent: Object

Archive::Tar::PosixHeader

Implements the POSIX tar header as a Ruby class. The structure of the POSIX tar header is:

  struct tarfile_entry_posix
  {                      //                               pack/unpack
     char name[100];     // ASCII (+ Z unless filled)     a100/Z100
     char mode[8];       // 0 padded, octal, null         a8  /A8
     char uid[8];        // ditto                         a8  /A8
     char gid[8];        // ditto                         a8  /A8
     char size[12];      // 0 padded, octal, null         a12 /A12
     char mtime[12];     // 0 padded, octal, null         a12 /A12
     char checksum[8];   // 0 padded, octal, null, space  a8  /A8
     char typeflag[1];   // see below                     a   /a
     char linkname[100]; // ASCII + (Z unless filled)     a100/Z100
     char magic[6];      // "ustar\0"                     a6  /A6
     char version[2];    // "00"                          a2  /A2
     char uname[32];     // ASCIIZ                        a32 /Z32
     char gname[32];     // ASCIIZ                        a32 /Z32
     char devmajor[8];   // 0 padded, octal, null         a8  /A8
     char devminor[8];   // 0 padded, octal, null         a8  /A8
     char prefix[155];   // ASCII (+ Z unless filled)     a155/Z155
  };

The typeflag may be one of the following known values:

"0":Regular file. NULL should be treated as a synonym, for compatibility purposes.
"1":Hard link.
"2":Symbolic link.
"3":Character device node.
"4":Block device node.
"5":Directory.
"6":FIFO node.
"7":Reserved.

POSIX indicates that "A POSIX-compliant implementation must treat any unrecognized typeflag value as a regular file."

Methods

Constants

FIELDS = %w(name mode uid gid size mtime checksum typeflag linkname) + %w(magic version uname gname devmajor devminor prefix)
HEADER_PACK_FORMAT = "a100a8a8a8a12a12a7aaa100a6a2a32a32a8a8a155"
HEADER_UNPACK_FORMAT = "Z100A8A8A8A12A12A8aZ100A6A2Z32Z32A8A8Z155"

Public Class methods

Creates a new PosixHeader. A PosixHeader cannot be created unless the name, size, prefix, and mode are provided.

Creates a new PosixHeader from a data stream.

Public Instance methods

Update the checksum field.

[Validate]