/* cpio.h */ #ifndef ___CPIO_H #define ___CPIO_H /* Reference: GNU cpio cpiohdr.h */ /* "New" portable format and CRC format: Each file has a 110 byte header, a variable length, NUL terminated filename, and variable length file data. A header for a filename "TRAILER!!!" indicates the end of the archive. */ /* All the fields in the header are ISO 646 (approximately ASCII) strings of hexadecimal numbers, left padded, not NUL terminated. */ struct new_cpio_header { char magic[6]; /* "070701" for "new" portable format, "070702" for CRC format */ char inode[8]; char mode[8]; char uid[8]; char gid[8]; char nlink[8]; char mtime[8]; char size[8]; /* must be 0 for FIFOs and directories */ char devmajor[8]; char devminor[8]; char rdevmajor[8]; /*only valid for chr and blk special files*/ char rdevminor[8]; /*only valid for chr and blk special files*/ char namesize[8]; /*count includes terminating NUL in pathname*/ char chksum[8]; /* 0 for "new" portable format; for CRC format the sum of all the bytes in the file */ int magic_check(){ return memcmp(magic,"070701",6) == 0 || memcmp(magic,"070702",6) == 0; }; }; #endif /* CPIO_H */