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