# lib/cpio.h

Go to the documentation of this file.

    00001 #ifndef H_CPIO
    00002 #define H_CPIO
    00003
    00015 #include <sys/types.h>
    00016
    00017 #include <rpmio_internal.h>
    00018 #include <rpmlib.h>
    00019
    00023 #define CPIOERR_CHECK_ERRNO     0x00008000
    00024
    00027 enum cpioErrorReturns {
    00028         CPIOERR_BAD_MAGIC       = (2                    ),
    00029         CPIOERR_BAD_HEADER      = (3                    ),
    00030         CPIOERR_OPEN_FAILED     = (4    | CPIOERR_CHECK_ERRNO),
    00031         CPIOERR_CHMOD_FAILED    = (5    | CPIOERR_CHECK_ERRNO),
    00032         CPIOERR_CHOWN_FAILED    = (6    | CPIOERR_CHECK_ERRNO),
    00033         CPIOERR_WRITE_FAILED    = (7    | CPIOERR_CHECK_ERRNO),
    00034         CPIOERR_UTIME_FAILED    = (8    | CPIOERR_CHECK_ERRNO),
    00035         CPIOERR_UNLINK_FAILED   = (9    | CPIOERR_CHECK_ERRNO),
    00036
    00037         CPIOERR_RENAME_FAILED   = (10   | CPIOERR_CHECK_ERRNO),
    00038         CPIOERR_SYMLINK_FAILED  = (11   | CPIOERR_CHECK_ERRNO),
    00039         CPIOERR_STAT_FAILED     = (12   | CPIOERR_CHECK_ERRNO),
    00040         CPIOERR_LSTAT_FAILED    = (13   | CPIOERR_CHECK_ERRNO),
    00041         CPIOERR_MKDIR_FAILED    = (14   | CPIOERR_CHECK_ERRNO),
    00042         CPIOERR_RMDIR_FAILED    = (15   | CPIOERR_CHECK_ERRNO),
    00043         CPIOERR_MKNOD_FAILED    = (16   | CPIOERR_CHECK_ERRNO),
    00044         CPIOERR_MKFIFO_FAILED   = (17   | CPIOERR_CHECK_ERRNO),
    00045         CPIOERR_LINK_FAILED     = (18   | CPIOERR_CHECK_ERRNO),
    00046         CPIOERR_READLINK_FAILED = (19   | CPIOERR_CHECK_ERRNO),
    00047         CPIOERR_READ_FAILED     = (20   | CPIOERR_CHECK_ERRNO),
    00048         CPIOERR_COPY_FAILED     = (21   | CPIOERR_CHECK_ERRNO),
    00049         CPIOERR_HDR_SIZE        = (22                   ),
    00050         CPIOERR_HDR_TRAILER     = (23                   ),
    00051         CPIOERR_UNKNOWN_FILETYPE= (24                   ),
    00052         CPIOERR_MISSING_HARDLINK= (25                   ),
    00053         CPIOERR_MD5SUM_MISMATCH = (26                   ),
    00054         CPIOERR_INTERNAL        = (27                   ),
    00055         CPIOERR_UNMAPPED_FILE   = (28                   )
    00056 };
    00057
    00060 typedef enum cpioMapFlags_e {
    00061     CPIO_MAP_PATH       = (1 << 0),
    00062     CPIO_MAP_MODE       = (1 << 1),
    00063     CPIO_MAP_UID        = (1 << 2),
    00064     CPIO_MAP_GID        = (1 << 3),
    00065     CPIO_FOLLOW_SYMLINKS= (1 << 4),
    00066     CPIO_MAP_ABSOLUTE   = (1 << 5),
    00067     CPIO_MAP_ADDDOT     = (1 << 6),
    00068     CPIO_ALL_HARDLINKS  = (1 << 7),
    00069     CPIO_MAP_TYPE       = (1 << 8),
    00070     CPIO_MULTILIB       = (1 << 31)
    00071 } cpioMapFlags;
    00072
    00073 #define CPIO_NEWC_MAGIC "070701"
    00074 #define CPIO_CRC_MAGIC  "070702"
    00075 #define CPIO_TRAILER    "TRAILER!!!"
    00076
    00080 struct cpioCrcPhysicalHeader {
    00081     char magic[6];
    00082     char inode[8];
    00083     char mode[8];
    00084     char uid[8];
    00085     char gid[8];
    00086     char nlink[8];
    00087     char mtime[8];
    00088     char filesize[8];
    00089     char devMajor[8];
    00090     char devMinor[8];
    00091     char rdevMajor[8];
    00092     char rdevMinor[8];
    00093     char namesize[8];
    00094     char checksum[8];                   /* ignored !! */
    00095 };
    00096
    00097 #define PHYS_HDR_SIZE   110
    00099 #ifdef __cplusplus
    00100 extern "C" {
    00101 #endif
    00102
    00108 int cpioTrailerWrite(FSM_t fsm)
    00109         /*@modifies fsm, fileSystem @*/;
    00110
    00116 int cpioHeaderWrite(FSM_t fsm, struct stat * st)
    00117         /*@modifies fsm, fileSystem @*/;
    00118
    00124 int cpioHeaderRead(FSM_t fsm, struct stat * st)
    00125         /*@modifies fsm, *st @*/;
    00126
    00132 /*@observer@*/ const char *const cpioStrerror(int rc)           /*@*/;
    00133
    00134 #ifdef __cplusplus
    00135 }
    00136 #endif
    00137
    00138 #endif  /* H_CPIO */