lib/cpio.h

Go to the documentation of this file.
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     CPIO_SBIT_CHECK     = (1 << 9)
00069 } cpioMapFlags;
00070 
00071 #define CPIO_NEWC_MAGIC "070701"
00072 #define CPIO_CRC_MAGIC  "070702"
00073 #define CPIO_TRAILER    "TRAILER!!!"
00074 
00078 struct cpioCrcPhysicalHeader {
00079     char magic[6];
00080     char inode[8];
00081     char mode[8];
00082     char uid[8];
00083     char gid[8];
00084     char nlink[8];
00085     char mtime[8];
00086     char filesize[8];
00087     char devMajor[8];
00088     char devMinor[8];
00089     char rdevMajor[8];
00090     char rdevMinor[8];
00091     char namesize[8];
00092     char checksum[8];                   /* ignored !! */
00093 };
00094 
00095 #define PHYS_HDR_SIZE   110             /* Don't depend on sizeof(struct) */
00096 
00097 #ifdef __cplusplus
00098 extern "C" {
00099 #endif
00100 
00106 int cpioTrailerWrite(FSM_t fsm)
00107         /*@globals h_errno, fileSystem, internalState @*/
00108         /*@modifies fsm, fileSystem, internalState @*/;
00109 
00116 int cpioHeaderWrite(FSM_t fsm, struct stat * st)
00117         /*@globals h_errno, fileSystem, internalState @*/
00118         /*@modifies fsm, fileSystem, internalState @*/;
00119 
00126 int cpioHeaderRead(FSM_t fsm, struct stat * st)
00127         /*@globals h_errno, fileSystem, internalState @*/
00128         /*@modifies fsm, *st, fileSystem, internalState @*/;
00129 
00135 /*@observer@*/ const char *const cpioStrerror(int rc)
00136         /*@*/;
00137 
00138 #ifdef __cplusplus
00139 }
00140 #endif
00141 
00142 #endif  /* H_CPIO */

Generated on Fri Oct 12 08:44:53 2007 for rpm by  doxygen 1.5.2