mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 09:44:21 +00:00 
			
		
		
		
	* Dump: Use mholt/archive/v3 to support tar including many compressions Signed-off-by: Philipp Homann <homann.philipp@googlemail.com> * Dump: Allow dump output to stdout Signed-off-by: Philipp Homann <homann.philipp@googlemail.com> * Dump: Fixed bug present since #6677 where SessionConfig.Provider is never "file" Signed-off-by: Philipp Homann <homann.philipp@googlemail.com> * Dump: never pack RepoRootPath, LFS.ContentPath and LogRootPath when they are below AppDataPath Signed-off-by: Philipp Homann <homann.philipp@googlemail.com> * Dump: also dump LFS (fixes #10058) Signed-off-by: Philipp Homann <homann.philipp@googlemail.com> * Dump: never dump CustomPath if CustomPath is a subdir of or equal to AppDataPath (fixes #10365) Signed-off-by: Philipp Homann <homann.philipp@googlemail.com> * Use log.Info instead of fmt.Fprintf Signed-off-by: Philipp Homann <homann.philipp@googlemail.com> * import ordering * make fmt Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: Matti R <matti@mdranta.net>
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
/*
 | 
						|
 * XZ decompressor
 | 
						|
 *
 | 
						|
 * Authors: Lasse Collin <lasse.collin@tukaani.org>
 | 
						|
 *          Igor Pavlov <http://7-zip.org/>
 | 
						|
 *
 | 
						|
 * Translation to Go: Michael Cross <https://github.com/xi2>
 | 
						|
 *
 | 
						|
 * This file has been put into the public domain.
 | 
						|
 * You can do whatever you want with this file.
 | 
						|
 */
 | 
						|
 | 
						|
package xz
 | 
						|
 | 
						|
/* from linux/include/linux/xz.h **************************************/
 | 
						|
 | 
						|
/**
 | 
						|
 * xzRet - Return codes
 | 
						|
 * @xzOK:                   Everything is OK so far. More input or more
 | 
						|
 *                          output space is required to continue.
 | 
						|
 * @xzStreamEnd:            Operation finished successfully.
 | 
						|
 * @xzUnSupportedCheck:     Integrity check type is not supported. Decoding
 | 
						|
 *                          is still possible by simply calling xzDecRun
 | 
						|
 *                          again.
 | 
						|
 * @xzMemlimitError:        A bigger LZMA2 dictionary would be needed than
 | 
						|
 *                          allowed by the dictMax argument given to
 | 
						|
 *                          xzDecInit.
 | 
						|
 * @xzFormatError:          File format was not recognized (wrong magic
 | 
						|
 *                          bytes).
 | 
						|
 * @xzOptionsError:         This implementation doesn't support the requested
 | 
						|
 *                          compression options. In the decoder this means
 | 
						|
 *                          that the header CRC32 matches, but the header
 | 
						|
 *                          itself specifies something that we don't support.
 | 
						|
 * @xzDataError:            Compressed data is corrupt.
 | 
						|
 * @xzBufError:             Cannot make any progress.
 | 
						|
 *
 | 
						|
 * xzBufError is returned when two consecutive calls to XZ code cannot
 | 
						|
 * consume any input and cannot produce any new output.  This happens
 | 
						|
 * when there is no new input available, or the output buffer is full
 | 
						|
 * while at least one output byte is still pending. Assuming your code
 | 
						|
 * is not buggy, you can get this error only when decoding a
 | 
						|
 * compressed stream that is truncated or otherwise corrupt.
 | 
						|
 */
 | 
						|
type xzRet int
 | 
						|
 | 
						|
const (
 | 
						|
	xzOK xzRet = iota
 | 
						|
	xzStreamEnd
 | 
						|
	xzUnsupportedCheck
 | 
						|
	xzMemlimitError
 | 
						|
	xzFormatError
 | 
						|
	xzOptionsError
 | 
						|
	xzDataError
 | 
						|
	xzBufError
 | 
						|
)
 | 
						|
 | 
						|
/**
 | 
						|
 * xzBuf - Passing input and output buffers to XZ code
 | 
						|
 * @in:         Input buffer.
 | 
						|
 * @inPos:      Current position in the input buffer. This must not exceed
 | 
						|
 *              input buffer size.
 | 
						|
 * @out:        Output buffer.
 | 
						|
 * @outPos:     Current position in the output buffer. This must not exceed
 | 
						|
 *              output buffer size.
 | 
						|
 *
 | 
						|
 * Only the contents of the output buffer from out[outPos] onward, and
 | 
						|
 * the variables inPos and outPos are modified by the XZ code.
 | 
						|
 */
 | 
						|
type xzBuf struct {
 | 
						|
	in     []byte
 | 
						|
	inPos  int
 | 
						|
	out    []byte
 | 
						|
	outPos int
 | 
						|
}
 | 
						|
 | 
						|
/* All XZ filter IDs */
 | 
						|
type xzFilterID int64
 | 
						|
 | 
						|
const (
 | 
						|
	idDelta       xzFilterID = 0x03
 | 
						|
	idBCJX86      xzFilterID = 0x04
 | 
						|
	idBCJPowerPC  xzFilterID = 0x05
 | 
						|
	idBCJIA64     xzFilterID = 0x06
 | 
						|
	idBCJARM      xzFilterID = 0x07
 | 
						|
	idBCJARMThumb xzFilterID = 0x08
 | 
						|
	idBCJSPARC    xzFilterID = 0x09
 | 
						|
	idLZMA2       xzFilterID = 0x21
 | 
						|
)
 | 
						|
 | 
						|
// CheckID is the type of the data integrity check in an XZ stream
 | 
						|
// calculated from the uncompressed data.
 | 
						|
type CheckID int
 | 
						|
 | 
						|
func (id CheckID) String() string {
 | 
						|
	switch id {
 | 
						|
	case CheckNone:
 | 
						|
		return "None"
 | 
						|
	case CheckCRC32:
 | 
						|
		return "CRC32"
 | 
						|
	case CheckCRC64:
 | 
						|
		return "CRC64"
 | 
						|
	case CheckSHA256:
 | 
						|
		return "SHA256"
 | 
						|
	default:
 | 
						|
		return "Unknown"
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
const (
 | 
						|
	CheckNone   CheckID = 0x00
 | 
						|
	CheckCRC32  CheckID = 0x01
 | 
						|
	CheckCRC64  CheckID = 0x04
 | 
						|
	CheckSHA256 CheckID = 0x0A
 | 
						|
	checkMax    CheckID = 0x0F
 | 
						|
	checkUnset  CheckID = -1
 | 
						|
)
 | 
						|
 | 
						|
// An XZ stream contains a stream header which holds information about
 | 
						|
// the stream. That information is exposed as fields of the
 | 
						|
// Reader. Currently it contains only the stream's data integrity
 | 
						|
// check type.
 | 
						|
type Header struct {
 | 
						|
	CheckType CheckID // type of the stream's data integrity check
 | 
						|
}
 |