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