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.tar;
020
021 /**
022 * This interface contains all the definitions used in the package.
023 *
024 */
025 // CheckStyle:InterfaceIsTypeCheck OFF (bc)
026 public interface TarConstants {
027
028 /**
029 * The length of the name field in a header buffer.
030 */
031 int NAMELEN = 100;
032
033 /**
034 * The length of the mode field in a header buffer.
035 */
036 int MODELEN = 8;
037
038 /**
039 * The length of the user id field in a header buffer.
040 */
041 int UIDLEN = 8;
042
043 /**
044 * The length of the group id field in a header buffer.
045 */
046 int GIDLEN = 8;
047
048 /**
049 * The length of the checksum field in a header buffer.
050 */
051 int CHKSUMLEN = 8;
052
053 /**
054 * The length of the size field in a header buffer.
055 */
056 int SIZELEN = 12;
057
058 /**
059 * The maximum size of a file in a tar archive (That's 11 sevens, octal).
060 */
061 long MAXSIZE = 077777777777L;
062
063 /** Offset of start of magic field within header record */
064 int MAGIC_OFFSET = 257;
065 /**
066 * The length of the magic field in a header buffer.
067 */
068 int MAGICLEN = 6;
069
070 /** Offset of start of magic field within header record */
071 int VERSION_OFFSET = 263;
072 /**
073 * Previously this was regarded as part of "magic" field, but it is separate.
074 */
075 int VERSIONLEN = 2;
076
077 /**
078 * The length of the modification time field in a header buffer.
079 */
080 int MODTIMELEN = 12;
081
082 /**
083 * The length of the user name field in a header buffer.
084 */
085 int UNAMELEN = 32;
086
087 /**
088 * The length of the group name field in a header buffer.
089 */
090 int GNAMELEN = 32;
091
092 /**
093 * The length of each of the device fields (major and minor) in a header buffer.
094 */
095 int DEVLEN = 8;
096
097 /**
098 * Length of the prefix field.
099 *
100 */
101 int PREFIXLEN = 155;
102
103 /**
104 * LF_ constants represent the "link flag" of an entry, or more commonly,
105 * the "entry type". This is the "old way" of indicating a normal file.
106 */
107 byte LF_OLDNORM = 0;
108
109 /**
110 * Normal file type.
111 */
112 byte LF_NORMAL = (byte) '0';
113
114 /**
115 * Link file type.
116 */
117 byte LF_LINK = (byte) '1';
118
119 /**
120 * Symbolic link file type.
121 */
122 byte LF_SYMLINK = (byte) '2';
123
124 /**
125 * Character device file type.
126 */
127 byte LF_CHR = (byte) '3';
128
129 /**
130 * Block device file type.
131 */
132 byte LF_BLK = (byte) '4';
133
134 /**
135 * Directory file type.
136 */
137 byte LF_DIR = (byte) '5';
138
139 /**
140 * FIFO (pipe) file type.
141 */
142 byte LF_FIFO = (byte) '6';
143
144 /**
145 * Contiguous file type.
146 */
147 byte LF_CONTIG = (byte) '7';
148
149 /**
150 * The magic tag representing a POSIX tar archive.
151 */
152 String MAGIC_POSIX = "ustar\0";
153 String VERSION_POSIX = "00";
154
155 /**
156 * The magic tag representing a GNU tar archive.
157 */
158 String MAGIC_GNU = "ustar ";
159 // Appear to be two possible GNU versions
160 String VERSION_GNU_SPACE = " \0";
161 String VERSION_GNU_ZERO = "0\0";
162
163 /**
164 * The name of the GNU tar entry which contains a long name.
165 */
166 String GNU_LONGLINK = "././@LongLink"; // TODO rename as LONGLINK_GNU ?
167
168 /**
169 * Identifies the *next* file on the tape as having a long name.
170 */
171 byte LF_GNUTYPE_LONGNAME = (byte) 'L';
172 }