Add code for constructing single-file cpio archives on the fly
[people/adir/gpxe.git] / src / include / gpxe / cpio.h
1 #ifndef _GPXE_CPIO_H
2 #define _GPXE_CPIO_H
3
4 /** @file
5  *
6  * CPIO archives
7  *
8  */
9
10 /** A CPIO archive header
11  *
12  * All field are hexadecimal ASCII numbers padded with '0' on the
13  * left to the full width of the field.
14  */
15 struct cpio_header {
16         /** The string "070701" or "070702" */
17         char c_magic[6];
18         /** File inode number */
19         char c_ino[8];
20         /** File mode and permissions */
21         char c_mode[8];
22         /** File uid */
23         char c_uid[8];
24         /** File gid */
25         char c_gid[8];
26         /** Number of links */
27         char c_nlink[8];
28         /** Modification time */
29         char c_mtime[8];
30         /** Size of data field */
31         char c_filesize[8];
32         /** Major part of file device number */
33         char c_maj[8];
34         /** Minor part of file device number */
35         char c_min[8];
36         /** Major part of device node reference */
37         char c_rmaj[8];
38         /** Minor part of device node reference */
39         char c_rmin[8];
40         /** Length of filename, including final NUL */
41         char c_namesize[8];
42         /** Checksum of data field if c_magic is 070702, othersize zero */
43         char c_chksum[8];
44 } __attribute__ (( packed ));
45
46 /** CPIO magic */
47 #define CPIO_MAGIC "070701"
48
49 extern void cpio_set_field ( char *field, unsigned long value );
50
51 #endif /* _GPXE_CPIO_H */