std-unix@uunet.UU.NET (Moderator, John Quarterman) (08/14/87)
From: attunix!kevra (Lorraine Kevra) [ This is the current cpio proposal for 1003.1 -mod ] FOR COMPUTER ENVIRONMENTS Std 1003.1-Draft 11 Editor's Note: The following section has been proposed as a b replacement for, or an addition to, the previous section. b The small group that considered the issue at the June 1987 b meeting determined that indications were needed on how to b extend this subsection to account for at least the following b items: b o+ symbolic links b o+ contiguous files b o+ file name length b o+ i-node number size b There is a possibility that these concerns may be addressed b by text in the Rationale, rather than in the body of the b standard. b 10.3.1 cpio Archive Format b The byte-oriented cpio archive format is a series of b entries, each comprised of a header that describes the file, b the name of the file, and then the contents of the file. b An archive may be recorded as a series of fixed size blocks b of bytes. This blocking shall be used only to make physical b I/O more efficient. The last group of blocks is always at b the full size. b For the byte-oriented cpio archive format, the individual b entry information must be in the order indicated and is b described by: b UNAPPROVED DRAFT. All Rights Reserved by IEEE. Do not specify or claim conformance to this document. Std 1003.1-Draft 11 PORTABLE OPERATING SYSTEM Byte-Oriented cpio Archive Entry b Header b Field Name Length Interpreted as b __________ __________ _______________ b c_magic 6 bytes octal number b c_dev 6 bytes octal number b c_ino 6 bytes octal number b c_mode 6 bytes octal number b c_uid 6 bytes octal number b c_gid 6 bytes octal number b c_nlink 6 bytes octal number b c_rdev 6 bytes octal number b c_mtime 11 bytes octal number b c_namesize 6 bytes octal number b c_filesize 11 bytes octal number b File Name b Field Name Length Interpreted as b __________ __________ _______________ b c_name c_namesize pathname string b File Data b Field Name Length Interpreted as b __________ __________ _______________ b c_filedata c_filesize data b 22 10.3.1.1 Header b 23 For each file in the archive, a header as defined above b 24 shall be written. The information in the header fields b 25 shall be written as streams of bytes interpreted as octal b 26 numbers and shall be right-justified and zero filled. The b 27 fields shall be interpreted as follows: b 28 o+ c_magic shall identify the archive as being a b 29 transportable archive by containing the magic bytes as b 30 defined by MAGIC ("070707"). b 31 o+ c_dev and c_ino shall contain values which uniquely b 32 identify the file within the archive (i.e., no files b 33 shall contain the same pair of c_dev and c_ino values b 34 unless they are links to the same file). The values b 35 shall be determined in an implementation defined b 36 manner. b 37 o+ c_mode shall contain the file type and access b 38 permissions as defined in the tables below. b UNAPPROVED DRAFT. All Rights Reserved by IEEE. Do not specify or claim conformance to this document. FOR COMPUTER ENVIRONMENTS Std 1003.1-Draft 11 39 o+ c_uid shall contain the user id of the owner. b 40 o+ c_gid shall contain the group id of the group. b 41 o+ c_nlink shall contain the number of links referencing b 42 the file at the time the archive was created. b 43 o+ c_rdev shall contain implementation defined information b 44 for character or block special files. b 45 o+ c_mtime shall contain the latest time of modification b 46 of the file. b 47 o+ c_namesize shall contain the length of the path name, b 48 including the terminating null byte. b 49 o+ c_filesize shall contain the length of the file. This b 50 is the length of the data section following the header b 51 structure. b 52 10.3.1.2 File Name b 53 c_name shall contain the path name of the file. The length b 54 of the name is determined by c_namesize; the maximum length b 55 of this string is 256 bytes. b 56 10.3.1.3 File Data b 57 Following c_name, there shall be c_filesize bytes of data. b 58 Interpretation of such data shall occur in a manner b 59 dependent on the file. If c_filesize is zero, no data shall b 60 be contained in c_filedata. b 61 10.3.1.4 Special Entries b 62 Special files, directories, and the trailer are recorded b 63 with c_filesize equal to zero. The header for the next file b 64 entry in the archive shall be written directly after the b 65 last byte of the file entry preceding it. A header denoting b 66 the file name ``TRAILER!!!'' shall indicate the end of the b 67 archive; the contents of bytes in the last block of the b 68 archive following such a header are undefined. b 69 10.3.1.5 cpio Values b 70 Values needed by the cpio archive format are described as b 71 follows: b UNAPPROVED DRAFT. All Rights Reserved by IEEE. Do not specify or claim conformance to this document. Std 1003.1-Draft 11 PORTABLE OPERATING SYSTEM Values for c_mode field b File permissions b Name Value Indicates b _______ ______ __________________ b C_IRUSR 000400 read by owner b C_IWUSR 000200 write by owner b C_IXUSR 000100 execute by owner b C_IRGRP 000040 read by group b C_IWGRP 000020 write by group b C_IXGRP 000010 execute by group b C_IROTH 000004 read by others b C_IWOTH 000002 write by others b C_IXOTH 000001 execute by others b C_ISUID 004000 set uid b C_ISGID 002000 set gid b C_ISVTX 001000 reserved b Values for c_mode field b File type b Name Value Indicates b ________ ______ _________________ b C_ISDIR 040000 directory b C_ISFIFO 010000 FIFO b C_ISREG 100000 regular file b C_ISBLK 060000 block special b C_ISCHR 020000 character special b 110000 reserved b 120000 reserved b 140000 reserved b 101 C_ISDIR, C_ISFIFO, and C_ISREG shall be supported on a POSIX b 102 conforming system; additional values defined above are b 103 reserved for compatibility with existing systems. b 104 Additional file types may be supported; however, such files b 105 should not be written on archives intended for transport to b 106 portable systems. b 107 10.3.1.6 References b 108 <grp.h> sS9.2.1, <pwd.h> sS9.2.2, <sys/stat.h> sS5.6.1, chmod() b 109 sS5.6.4, link() sS5.3.4, mkdir() sS5.4.1, read() sS6.4.1, stat() b 110 sS5.6.2. 111 UNAPPROVED DRAFT. All Rights Reserved by IEEE. Do not specify or claim conformance to this document. Volume-Number: Volume 12, Number 12