00001 #ifndef H_CPIO
00002 #define H_CPIO
00003
00018 #define CPIOERR_CHECK_ERRNO 0x00008000
00019
00022 enum cpioErrorReturns {
00023 CPIOERR_BAD_MAGIC = (2 ),
00024 CPIOERR_BAD_HEADER = (3 ),
00025 CPIOERR_OPEN_FAILED = (4 | CPIOERR_CHECK_ERRNO),
00026 CPIOERR_CHMOD_FAILED = (5 | CPIOERR_CHECK_ERRNO),
00027 CPIOERR_CHOWN_FAILED = (6 | CPIOERR_CHECK_ERRNO),
00028 CPIOERR_WRITE_FAILED = (7 | CPIOERR_CHECK_ERRNO),
00029 CPIOERR_UTIME_FAILED = (8 | CPIOERR_CHECK_ERRNO),
00030 CPIOERR_UNLINK_FAILED = (9 | CPIOERR_CHECK_ERRNO),
00031
00032 CPIOERR_RENAME_FAILED = (10 | CPIOERR_CHECK_ERRNO),
00033 CPIOERR_SYMLINK_FAILED = (11 | CPIOERR_CHECK_ERRNO),
00034 CPIOERR_STAT_FAILED = (12 | CPIOERR_CHECK_ERRNO),
00035 CPIOERR_LSTAT_FAILED = (13 | CPIOERR_CHECK_ERRNO),
00036 CPIOERR_MKDIR_FAILED = (14 | CPIOERR_CHECK_ERRNO),
00037 CPIOERR_RMDIR_FAILED = (15 | CPIOERR_CHECK_ERRNO),
00038 CPIOERR_MKNOD_FAILED = (16 | CPIOERR_CHECK_ERRNO),
00039 CPIOERR_MKFIFO_FAILED = (17 | CPIOERR_CHECK_ERRNO),
00040 CPIOERR_LINK_FAILED = (18 | CPIOERR_CHECK_ERRNO),
00041 CPIOERR_READLINK_FAILED = (19 | CPIOERR_CHECK_ERRNO),
00042 CPIOERR_READ_FAILED = (20 | CPIOERR_CHECK_ERRNO),
00043 CPIOERR_COPY_FAILED = (21 | CPIOERR_CHECK_ERRNO),
00044 CPIOERR_LSETFCON_FAILED = (22 | CPIOERR_CHECK_ERRNO),
00045 CPIOERR_HDR_SIZE = (23 ),
00046 CPIOERR_HDR_TRAILER = (24 ),
00047 CPIOERR_UNKNOWN_FILETYPE= (25 ),
00048 CPIOERR_MISSING_HARDLINK= (26 ),
00049 CPIOERR_MD5SUM_MISMATCH = (27 ),
00050 CPIOERR_INTERNAL = (28 ),
00051 CPIOERR_UNMAPPED_FILE = (29 ),
00052 CPIOERR_ENOENT = (30 ),
00053 CPIOERR_ENOTEMPTY = (31 )
00054 };
00055
00058 typedef enum cpioMapFlags_e {
00059 CPIO_MAP_PATH = (1 << 0),
00060 CPIO_MAP_MODE = (1 << 1),
00061 CPIO_MAP_UID = (1 << 2),
00062 CPIO_MAP_GID = (1 << 3),
00063 CPIO_FOLLOW_SYMLINKS= (1 << 4),
00064 CPIO_MAP_ABSOLUTE = (1 << 5),
00065 CPIO_MAP_ADDDOT = (1 << 6),
00066 CPIO_ALL_HARDLINKS = (1 << 7),
00067 CPIO_MAP_TYPE = (1 << 8)
00068 } cpioMapFlags;
00069
00070 #define CPIO_NEWC_MAGIC "070701"
00071 #define CPIO_CRC_MAGIC "070702"
00072 #define CPIO_TRAILER "TRAILER!!!"
00073
00077 struct cpioCrcPhysicalHeader {
00078 char magic[6];
00079 char inode[8];
00080 char mode[8];
00081 char uid[8];
00082 char gid[8];
00083 char nlink[8];
00084 char mtime[8];
00085 char filesize[8];
00086 char devMajor[8];
00087 char devMinor[8];
00088 char rdevMajor[8];
00089 char rdevMinor[8];
00090 char namesize[8];
00091 char checksum[8];
00092 };
00093
00094 #define PHYS_HDR_SIZE 110
00095
00096 #ifdef __cplusplus
00097 extern "C" {
00098 #endif
00099
00105 int cpioTrailerWrite(FSM_t fsm)
00106
00107 ;
00108
00115 int cpioHeaderWrite(FSM_t fsm, struct stat * st)
00116
00117 ;
00118
00125 int cpioHeaderRead(FSM_t fsm, struct stat * st)
00126
00127 ;
00128
00134 const char *const cpioStrerror(int rc)
00135 ;
00136
00137 #ifdef __cplusplus
00138 }
00139 #endif
00140
00141 #endif