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 *   https://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 * <p>
024 * Based on code from the <a href="jrpm.sourceforge.net">jRPM project</a>.
025 * </p>
026 * <p>
027 * A list of the {@code C_xxx} constants is <a href="http://www.opengroup.org/onlinepubs/9699919799/basedefs/cpio.h.html">here</a>.
028 * </p>
029 * <p>
030 * TODO Next major version: Update to a class.
031 * </p>
032 */
033public interface CpioConstants {
034    /** Magic number of a cpio entry in the new format */
035    String MAGIC_NEW = "070701";
036
037    /** Magic number of a cpio entry in the new format with CRC */
038    String MAGIC_NEW_CRC = "070702";
039
040    /** Magic number of a cpio entry in the old ASCII format */
041    String MAGIC_OLD_ASCII = "070707";
042
043    /** Magic number of a cpio entry in the old binary format */
044    int MAGIC_OLD_BINARY = 070707;
045
046    /** Write/read a CpioArchiveEntry in the new format. FORMAT_ constants are internal. */
047    short FORMAT_NEW = 1;
048
049    /** Write/read a CpioArchiveEntry in the new format with CRC. FORMAT_ constants are internal. */
050    short FORMAT_NEW_CRC = 2;
051
052    /** Write/read a CpioArchiveEntry in the old ASCII format. FORMAT_ constants are internal. */
053    short FORMAT_OLD_ASCII = 4;
054
055    /** Write/read a CpioArchiveEntry in the old binary format. FORMAT_ constants are internal. */
056    short FORMAT_OLD_BINARY = 8;
057
058    /** Mask for both new formats. FORMAT_ constants are internal. */
059    short FORMAT_NEW_MASK = 3;
060
061    /** Mask for both old formats. FORMAT_ constants are internal. */
062    short FORMAT_OLD_MASK = 12;
063
064    /*
065     * Constants for the MODE bits
066     */
067
068    /** Mask for all file type bits. */
069    int S_IFMT = 0170000;
070
071    /** Defines a socket */
072    int C_ISSOCK = 0140000;
073
074    /** Defines a symbolic link */
075    int C_ISLNK = 0120000;
076
077    /** HP/UX network special (C_ISCTG) */
078    int C_ISNWK = 0110000;
079
080    /** Defines a regular file */
081    int C_ISREG = 0100000;
082
083    /** Defines a block device */
084    int C_ISBLK = 0060000;
085
086    /** Defines a directory */
087    int C_ISDIR = 0040000;
088
089    /** Defines a character device */
090    int C_ISCHR = 0020000;
091
092    /** Defines a pipe */
093    int C_ISFIFO = 0010000;
094
095    /** Sets user ID */
096    int C_ISUID = 0004000;
097
098    /** Sets group ID */
099    int C_ISGID = 0002000;
100
101    /** On directories, restricted deletion flag. */
102    int C_ISVTX = 0001000;
103
104    /** Permits the owner of a file to read the file */
105    int C_IRUSR = 0000400;
106
107    /** Permits the owner of a file to write to the file */
108    int C_IWUSR = 0000200;
109
110    /** Permits the owner of a file to execute the file or to search the directory */
111    int C_IXUSR = 0000100;
112
113    /** Permits a file's group to read the file */
114    int C_IRGRP = 0000040;
115
116    /** Permits a file's group to write to the file */
117    int C_IWGRP = 0000020;
118
119    /** Permits a file's group to execute the file or to search the directory */
120    int C_IXGRP = 0000010;
121
122    /** Permits others to read the file */
123    int C_IROTH = 0000004;
124
125    /** Permits others to write to the file */
126    int C_IWOTH = 0000002;
127
128    /** Permits others to execute the file or to search the directory */
129    int C_IXOTH = 0000001;
130
131    /** The special trailer marker */
132    String CPIO_TRAILER = "TRAILER!!!";
133
134    /**
135     * The default block size.
136     *
137     * @since 1.1
138     */
139    int BLOCK_SIZE = 512;
140}