CMS 3D CMS Logo

CPIOConstants.h

Go to the documentation of this file.
00001 #ifndef CLASSLIB_CPIO_CONSTANTS_H
00002 # define CLASSLIB_CPIO_CONSTANTS_H
00003 
00004 //<<<<<< INCLUDES                                                       >>>>>>
00005 
00006 # include "classlib/zip/ZipUtils.h"
00007 
00008 namespace lat {
00009 //<<<<<< PUBLIC DEFINES                                                 >>>>>>
00010 //<<<<<< PUBLIC CONSTANTS                                               >>>>>>
00011 //<<<<<< PUBLIC TYPES                                                   >>>>>>
00012 //<<<<<< PUBLIC VARIABLES                                               >>>>>>
00013 //<<<<<< PUBLIC FUNCTIONS                                               >>>>>>
00014 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
00015 
00017 struct CPIOConstants : ZipUtils
00018 {
00019     // CPIO archive formats are not very standard.  Apparently POSIX.1
00020     // does define it (though I haven't yet found the specs).  The ASCII
00021     // version has standard mode bits.  The binary format is completely
00022     // platform-specific, including the byte order (see stat(2)).
00023 
00024     // Header magic code and trailer string
00025     static const char *TRAILER;         //< Magic last-member file name
00026     enum {
00027         ODC_MAGIC       = 070707,       //< POSIX.1 archive
00028         SVR4_MAGIC      = 070701,       //< SVR4 archive
00029         SVR4C_MAGIC     = 070702        //< SVR4 archive with checksum
00030     };
00031 
00032     // Unix file mode bits
00033     enum Mode {
00034         SUID            = 04000,        //< Set-UID bit
00035         SGID            = 02000,        //< Set-GID bit
00036         SVTX            = 01000,        //< Sticky text bit
00037         UREAD           = 00400,        //< User read bit
00038         UWRITE          = 00200,        //< User write bit
00039         UEXEC           = 00100,        //< User execute bit
00040         GREAD           = 00040,        //< Group read bit
00041         GWRITE          = 00020,        //< Group write bit
00042         GEXEC           = 00010,        //< Group execute bit
00043         OREAD           = 00004,        //< Other read bit
00044         OWRITE          = 00002,        //< Other write bit
00045         OEXEC           = 00001         //< Other execute bit
00046     };
00047 
00048     // Offsets into the archive header: ascii and binary
00049     enum {
00050         MAGIC_LEN               = 6,
00051         TRAILER_LEN             = 11,
00052 
00053         ODC_MAGIC_OFFSET        = 0,    ODC_MAGIC_LENGTH        = 6,
00054         ODC_DEV_OFFSET          = 6,    ODC_DEV_LENGTH          = 6,
00055         ODC_INO_OFFSET          = 12,   ODC_INO_LENGTH          = 6,
00056         ODC_MODE_OFFSET         = 18,   ODC_MODE_LENGTH         = 6,
00057         ODC_UID_OFFSET          = 24,   ODC_UID_LENGTH          = 6,
00058         ODC_GID_OFFSET          = 30,   ODC_GID_LENGTH          = 6,
00059         ODC_NLINK_OFFSET        = 36,   ODC_NLINK_LENGTH        = 6,
00060         ODC_RDEV_OFFSET         = 42,   ODC_RDEV_LENGTH         = 6,
00061         ODC_MTIME_OFFSET        = 48,   ODC_MTIME_LENGTH        = 11,
00062         ODC_NAMELEN_OFFSET      = 59,   ODC_NAMELEN_LENGTH      = 6,
00063         ODC_SIZE_OFFSET         = 65,   ODC_SIZE_LENGTH         = 11,
00064         ODC_HEADER_LEN          = 76,
00065 
00066         SVR_MAGIC_OFFSET        = 0,    SVR_MAGIC_LENGTH        = 6,
00067         SVR_INO_OFFSET          = 6,    SVR_INO_LENGTH          = 8,
00068         SVR_MODE_OFFSET         = 14,   SVR_MODE_LENGTH         = 8,
00069         SVR_UID_OFFSET          = 22,   SVR_UID_LENGTH          = 8,
00070         SVR_GID_OFFSET          = 30,   SVR_GID_LENGTH          = 8,
00071         SVR_NLINK_OFFSET        = 38,   SVR_NLINK_LENGTH        = 8,
00072         SVR_MTIME_OFFSET        = 46,   SVR_MTIME_LENGTH        = 8,
00073         SVR_SIZE_OFFSET         = 54,   SVR_SIZE_LENGTH         = 8,
00074         SVR_DEVMAJOR_OFFSET     = 62,   SVR_DEVMAJOR_LENGTH     = 8,
00075         SVR_DEVMINOR_OFFSET     = 70,   SVR_DEVMINOR_LENGTH     = 8,
00076         SVR_RDEVMAJOR_OFFSET    = 78,   SVR_RDEVMAJOR_LENGTH    = 8,
00077         SVR_RDEVMINOR_OFFSET    = 86,   SVR_RDEVMINOR_LENGTH    = 8,
00078         SVR_NAMELEN_OFFSET      = 94,   SVR_NAMELEN_LENGTH      = 8,
00079         SVR_CHECKSUM_OFFSET     = 102,  SVR_CHECKSUM_LENGTH     = 8,
00080         SVR_HEADER_LEN          = 110,
00081         SVR_TRAILER_PAD         = 3,
00082 
00083         BIN_MAGIC_OFFSET        = 0,    BIN_MAGIC_LENGTH        = 2,  // short
00084         BIN_DEV_OFFSET          = 2,    BIN_DEV_LENGTH          = 2,  // short
00085         BIN_INO_OFFSET          = 4,    BIN_INO_LENGTH          = 2,  // ushort
00086         BIN_MODE_OFFSET         = 6,    BIN_MODE_LENGTH         = 2,  // ushort
00087         BIN_UID_OFFSET          = 8,    BIN_UID_LENGTH          = 2,  // ushort
00088         BIN_GID_OFFSET          = 10,   BIN_GID_LENGTH          = 2,  // ushort
00089         BIN_NLINK_OFFSET        = 12,   BIN_NLINK_LENGTH        = 2,  // short
00090         BIN_RDEV_OFFSET         = 14,   BIN_RDEV_LENGTH         = 2,  // short
00091         BIN_MTIME_OFFSET        = 16,   BIN_MTIME_LENGTH        = 4,  // short[2]
00092         BIN_NAMELEN_OFFSET      = 20,   BIN_NAMELEN_LENGTH      = 2,  // short
00093         BIN_FILELEN_OFFSET      = 22,   BIN_FILELEN_LENGTH      = 4,  // short[2]
00094 
00095         BIN_HEADER_LEN          = 26,
00096 
00097         // Maximum values for numeric values
00098         SMALL_MAX               = 0777777,
00099         LARGE_MAX               = 07777777777,
00100         SVR_NAMELEN_MAX         = 1024
00101     };
00102 };
00103 
00104 //<<<<<< INLINE PUBLIC FUNCTIONS                                        >>>>>>
00105 //<<<<<< INLINE MEMBER FUNCTIONS                                        >>>>>>
00106 
00107 } // namespace lat
00108 #endif // CLASSLIB_CPIO_CONSTANTS_H

Generated on Tue Jun 9 17:38:59 2009 for CMSSW by  doxygen 1.5.4