cpio(F)


cpio -- format of cpio archive

Format

struct {
	short	h_magic;	/* cpio archive magic number: 070707 */
	short	h_dev;		/* see stat(S) */
	ushort	h_ino;
	ushort	h_mode,
		h_uid,
		h_gid;
	short	h_nlink;
	short	h_rdev;
	ushort	h_mtime[2];
	short	h_namesize;	/* length of h_name + null */
	ushort	h_filesize[2];	/* length of file */
	char	h_name[h_namesize rounded to short];	/* pathname of file */
	} oldHdr;

Description

The ``Format'' section shows the binary header structure that is used when none of the -c, -Hcrc, or -Hodc options of the cpio command is specified. The header is written as an even number of short words, and is truncated after the end of the null-terminated pathname member h_name.

When one of the -c, -Hcrc, or -Hodc options is used, the header information is written in ASCII form for portability.

An ASCII header is truncated at the end of the null-terminated pathname. The size of the header (without pathname) is 76 bytes for the -Hodc option, and 110 bytes for the -c and -Hcrc options.

The -Hodc option is equivalent to the -c option in older SCO OpenServer versions of cpio. It is only suitable for backing up filesystems that implement 16-bit inode numbers.

The following C code shows an example of reading header information written using the -Hodc option:

   scanf("%6o%6o%6o%6o%6o%6o%6o%6o%11lo%6o%11lo%s",
   &oldHdr.h_magic, &oldHdr.h_dev, &oldHdr.h_ino, &oldHdr.h_mode,
   &oldHdr.h_uid, &oldHdr.h_gid, &oldHdr.h_nlink, &oldHdr.h_rdev,
   &Longtime, &oldHdr.h_namesize, &Longfile, oldHdr.h_name);
The variables ulong Longtime and ulong Longfile are used to read the arrays oldHdr.h_mtime and oldHdr.h_filesize.

The length of the null-terminated pathname h_name is (h_namesize + 1).

The structure members h_dev through h_mtime are explained in stat(S).

The -c and -Hcrc options use the SVR4 extended ASCII format suitable for backing up both 16 and 32-bit inode number filesystems. The new format supports checksums; these are written if the -Hcrc option is used.

There are some differences in the way that the SVR4 version of cpio archives hard links. See ``Limitations'' on the cpio(C) manual page for details.

The following code shows an example of reading header information written using the -c or -Hcrc options:

   scanf("%6o%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%8lx%s",
   &newHdr.h_magic, &newHdr.h_ino, &newHdr.h_mode,
   &newHdr.h_uid, &newHdr.h_gid, &newHdr.h_nlink,
   &newHdr.h_mtime, &newHdr.h_filesize, &newHdr.h_dev_maj,
   &newHdr.h_dev_min, &newHdr.h_rdev_maj, &newHdr.h_rdev_min,
   &newHdr.h_namesize, &newHdr.h_chksum, newHdr.h_name);
The magic number in the member h_magic determines whether the header is in old or new format and whether it contains a checksum.

The length of the null-terminated pathname h_name is (h_namesize + 1) rounded up to long.

The last record of the archive always contains the string TRAILER!!!.

Special files, directories, and the trailer are recorded with h_filesize equal to zero.

Files


/bin/cpio
cpio(C) executable file

See also

cpio(C), find(C), stat(S)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 03 June 2005