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_HDR_SIZE = (22 ),
00045 CPIOERR_HDR_TRAILER = (23 ),
00046 CPIOERR_UNKNOWN_FILETYPE= (24 ),
00047 CPIOERR_MISSING_HARDLINK= (25 ),
00048 CPIOERR_MD5SUM_MISMATCH = (26 ),
00049 CPIOERR_INTERNAL = (27 ),
00050 CPIOERR_UNMAPPED_FILE = (28 ),
00051 CPIOERR_ENOENT = (29 ),
00052 CPIOERR_ENOTEMPTY = (30 )
00053 };
00054
00057 typedef enum cpioMapFlags_e {
00058 CPIO_MAP_PATH = (1 << 0),
00059 CPIO_MAP_MODE = (1 << 1),
00060 CPIO_MAP_UID = (1 << 2),
00061 CPIO_MAP_GID = (1 << 3),
00062 CPIO_FOLLOW_SYMLINKS= (1 << 4),
00063 CPIO_MAP_ABSOLUTE = (1 << 5),
00064 CPIO_MAP_ADDDOT = (1 << 6),
00065 CPIO_ALL_HARDLINKS = (1 << 7),
00066 CPIO_MAP_TYPE = (1 << 8)
00067 } cpioMapFlags;
00068
00069 #define CPIO_NEWC_MAGIC "070701"
00070 #define CPIO_CRC_MAGIC "070702"
00071 #define CPIO_TRAILER "TRAILER!!!"
00072
00076 struct cpioCrcPhysicalHeader {
00077 char magic[6];
00078 char inode[8];
00079 char mode[8];
00080 char uid[8];
00081 char gid[8];
00082 char nlink[8];
00083 char mtime[8];
00084 char filesize[8];
00085 char devMajor[8];
00086 char devMinor[8];
00087 char rdevMajor[8];
00088 char rdevMinor[8];
00089 char namesize[8];
00090 char checksum[8];
00091 };
00092
00093 #define PHYS_HDR_SIZE 110
00095 #ifdef __cplusplus
00096 extern "C" {
00097 #endif
00098
00104 int cpioTrailerWrite(FSM_t fsm)
00105
00106 ;
00107
00114 int cpioHeaderWrite(FSM_t fsm, struct stat * st)
00115
00116 ;
00117
00124 int cpioHeaderRead(FSM_t fsm, struct stat * st)
00125
00126 ;
00127
00133 const char *const cpioStrerror(int rc)
00134 ;
00135
00136 #ifdef __cplusplus
00137 }
00138 #endif
00139
00140 #endif