    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one
    003 * or more contributor license agreements.  See the NOTICE file
    004 * distributed with this work for additional information
    005 * regarding copyright ownership.  The ASF licenses this file
    006 * to you under the Apache License, Version 2.0 (the
    007 * "License"); you may not use this file except in compliance
    008 * with the License.  You may obtain a copy of the License at
    009 *
    010 * http://www.apache.org/licenses/LICENSE-2.0
    011 *
    012 * Unless required by applicable law or agreed to in writing,
    013 * software distributed under the License is distributed on an
    014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    015 * KIND, either express or implied.  See the License for the
    016 * specific language governing permissions and limitations
    017 * under the License.
    018 */
    019package org.apache.commons.compress.archivers.cpio;
    020
    021/**
    022 * All constants needed by CPIO.
    023 *
    024 * based on code from the jRPM project (jrpm.sourceforge.net)
    025 *
    026 * http://www.opengroup.org/onlinepubs/9699919799/basedefs/cpio.h.html has a list of the C_xxx constants.
    027 */
    028public interface CpioConstants {
    029    /** Magic number of a cpio entry in the new format */
    030    String MAGIC_NEW = "070701";
    031
    032    /** Magic number of a cpio entry in the new format with crc */
    033    String MAGIC_NEW_CRC = "070702";
    034
    035    /** Magic number of a cpio entry in the old ascii format */
    036    String MAGIC_OLD_ASCII = "070707";
    037
    038    /** Magic number of a cpio entry in the old binary format */
    039    int MAGIC_OLD_BINARY = 070707;
    040
    041    /** Write/read a CpioArchiveEntry in the new format. FORMAT_ constants are internal. */
    042    short FORMAT_NEW = 1;
    043
    044    /** Write/read a CpioArchiveEntry in the new format with crc. FORMAT_ constants are internal. */
    045    short FORMAT_NEW_CRC = 2;
    046
    047    /** Write/read a CpioArchiveEntry in the old ascii format. FORMAT_ constants are internal. */
    048    short FORMAT_OLD_ASCII = 4;
    049
    050    /** Write/read a CpioArchiveEntry in the old binary format. FORMAT_ constants are internal. */
    051    short FORMAT_OLD_BINARY = 8;
    052
    053    /** Mask for both new formats. FORMAT_ constants are internal. */
    054    short FORMAT_NEW_MASK = 3;
    055
    056    /** Mask for both old formats. FORMAT_ constants are internal. */
    057    short FORMAT_OLD_MASK = 12;
    058
    059    /*
    060     * Constants for the MODE bits
    061     */
    062
    063    /** Mask for all file type bits. */
    064    int S_IFMT = 0170000;
    065
    066    /** Defines a socket */
    067    int C_ISSOCK = 0140000;
    068
    069    /** Defines a symbolic link */
    070    int C_ISLNK = 0120000;
    071
    072    /** HP/UX network special (C_ISCTG) */
    073    int C_ISNWK = 0110000;
    074
    075    /** Defines a regular file */
    076    int C_ISREG = 0100000;
    077
    078    /** Defines a block device */
    079    int C_ISBLK = 0060000;
    080
    081    /** Defines a directory */
    082    int C_ISDIR = 0040000;
    083
    084    /** Defines a character device */
    085    int C_ISCHR = 0020000;
    086
    087    /** Defines a pipe */
    088    int C_ISFIFO = 0010000;
    089
    090    /** Sets user ID */
    091    int C_ISUID = 0004000;
    092
    093    /** Sets group ID */
    094    int C_ISGID = 0002000;
    095
    096    /** On directories, restricted deletion flag. */
    097    int C_ISVTX = 0001000;
    098
    099    /** Permits the owner of a file to read the file */
    100    int C_IRUSR = 0000400;
    101
    102    /** Permits the owner of a file to write to the file */
    103    int C_IWUSR = 0000200;
    104
    105    /** Permits the owner of a file to execute the file or to search the directory */
    106    int C_IXUSR = 0000100;
    107
    108    /** Permits a file's group to read the file */
    109    int C_IRGRP = 0000040;
    110
    111    /** Permits a file's group to write to the file */
    112    int C_IWGRP = 0000020;
    113
    114    /** Permits a file's group to execute the file or to search the directory */
    115    int C_IXGRP = 0000010;
    116
    117    /** Permits others to read the file */
    118    int C_IROTH = 0000004;
    119
    120    /** Permits others to write to the file */
    121    int C_IWOTH = 0000002;
    122
    123    /** Permits others to execute the file or to search the directory */
    124    int C_IXOTH = 0000001;
    125
    126    /** The special trailer marker */
    127    String CPIO_TRAILER = "TRAILER!!!";
    128
    129    /**
    130     * The default block size.
    131     *
    132     * @since 1.1
    133     */
    134    int BLOCK_SIZE = 512;
    135}