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    
024    package 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)
031    public 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    }