001/*
002 *  Licensed to the Apache Software Foundation (ASF) under one or more
003 *  contributor license agreements.  See the NOTICE file distributed with
004 *  this work for additional information regarding copyright ownership.
005 *  The ASF licenses this file to You under the Apache License, Version 2.0
006 *  (the "License"); you may not use this file except in compliance with
007 *  the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 *  Unless required by applicable law or agreed to in writing, software
012 *  distributed under the License is distributed on an "AS IS" BASIS,
013 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 *  See the License for the specific language governing permissions and
015 *  limitations under the License.
016 *
017 */
018
019/*
020 * This package is based on the work done by Timothy Gerard Endres
021 * (time@ice.com) to whom the Ant project is very grateful for his great code.
022 */
023
024package org.apache.activemq.console.command.store.tar;
025
026/**
027 * This interface contains all the definitions used in the package.
028 *
029 */
030// CheckStyle:InterfaceIsTypeCheck OFF (bc)
031public interface TarConstants {
032
033    /**
034     * The length of the name field in a header buffer.
035     */
036    int    NAMELEN = 100;
037
038    /**
039     * The length of the mode field in a header buffer.
040     */
041    int    MODELEN = 8;
042
043    /**
044     * The length of the user id field in a header buffer.
045     */
046    int    UIDLEN = 8;
047
048    /**
049     * The length of the group id field in a header buffer.
050     */
051    int    GIDLEN = 8;
052
053    /**
054     * The length of the checksum field in a header buffer.
055     */
056    int    CHKSUMLEN = 8;
057
058    /**
059     * The length of the size field in a header buffer.
060     */
061    int    SIZELEN = 12;
062
063    /**
064     * The maximum size of a file in a tar archive (That's 11 sevens, octal).
065     */
066    long   MAXSIZE = 077777777777L;
067
068    /**
069     * The length of the magic field in a header buffer.
070     */
071    int    MAGICLEN = 8;
072
073    /**
074     * The length of the modification time field in a header buffer.
075     */
076    int    MODTIMELEN = 12;
077
078    /**
079     * The length of the user name field in a header buffer.
080     */
081    int    UNAMELEN = 32;
082
083    /**
084     * The length of the group name field in a header buffer.
085     */
086    int    GNAMELEN = 32;
087
088    /**
089     * The length of the devices field in a header buffer.
090     */
091    int    DEVLEN = 8;
092
093    /**
094     * LF_ constants represent the "link flag" of an entry, or more commonly,
095     * the "entry type". This is the "old way" of indicating a normal file.
096     */
097    byte   LF_OLDNORM = 0;
098
099    /**
100     * Normal file type.
101     */
102    byte   LF_NORMAL = (byte) '0';
103
104    /**
105     * Link file type.
106     */
107    byte   LF_LINK = (byte) '1';
108
109    /**
110     * Symbolic link file type.
111     */
112    byte   LF_SYMLINK = (byte) '2';
113
114    /**
115     * Character device file type.
116     */
117    byte   LF_CHR = (byte) '3';
118
119    /**
120     * Block device file type.
121     */
122    byte   LF_BLK = (byte) '4';
123
124    /**
125     * Directory file type.
126     */
127    byte   LF_DIR = (byte) '5';
128
129    /**
130     * FIFO (pipe) file type.
131     */
132    byte   LF_FIFO = (byte) '6';
133
134    /**
135     * Contiguous file type.
136     */
137    byte   LF_CONTIG = (byte) '7';
138
139    /**
140     * The magic tag representing a POSIX tar archive.
141     */
142    String TMAGIC = "ustar";
143
144    /**
145     * The magic tag representing a GNU tar archive.
146     */
147    String GNU_TMAGIC = "ustar  ";
148
149    /**
150     * The namr of the GNU tar entry which contains a long name.
151     */
152    String GNU_LONGLINK = "././@LongLink";
153
154    /**
155     * Identifies the *next* file on the tape as having a long name.
156     */
157    byte LF_GNUTYPE_LONGNAME = (byte) 'L';
158}