mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +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
 | |
| }
 |