mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 06:38:37 -04:00 
			
		
		
		
	Dump: add output format tar and output to stdout (#10376)
* 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>
This commit is contained in:
		
							
								
								
									
										132
									
								
								vendor/github.com/nwaples/rardecode/decode29_ppm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								vendor/github.com/nwaples/rardecode/decode29_ppm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,132 @@ | ||||
| package rardecode | ||||
|  | ||||
| import "io" | ||||
|  | ||||
| type ppm29Decoder struct { | ||||
| 	m   model // ppm model | ||||
| 	esc byte  // escape character | ||||
| 	br  io.ByteReader | ||||
| } | ||||
|  | ||||
| func (d *ppm29Decoder) init(br *rarBitReader) error { | ||||
| 	maxOrder, err := br.readBits(7) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	reset := maxOrder&0x20 > 0 | ||||
|  | ||||
| 	// Should have flushed all unread bits from bitReader by now, | ||||
| 	// use underlying ByteReader | ||||
| 	d.br = br.r | ||||
|  | ||||
| 	var maxMB int | ||||
| 	if reset { | ||||
| 		c, err := d.br.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		maxMB = int(c) + 1 | ||||
| 	} | ||||
|  | ||||
| 	if maxOrder&0x40 > 0 { | ||||
| 		d.esc, err = d.br.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	maxOrder = (maxOrder & 0x1f) + 1 | ||||
| 	if maxOrder > 16 { | ||||
| 		maxOrder = 16 + (maxOrder-16)*3 | ||||
| 	} | ||||
|  | ||||
| 	return d.m.init(d.br, reset, maxOrder, maxMB) | ||||
| } | ||||
|  | ||||
| func (d *ppm29Decoder) reset() { | ||||
| 	d.esc = 2 | ||||
| } | ||||
|  | ||||
| func (d *ppm29Decoder) readFilterData() ([]byte, error) { | ||||
| 	c, err := d.m.ReadByte() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	n := int(c&7) + 1 | ||||
| 	if n == 7 { | ||||
| 		b, err := d.m.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		n += int(b) | ||||
| 	} else if n == 8 { | ||||
| 		b, err := d.m.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		n = int(b) << 8 | ||||
| 		b, err = d.m.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		n |= int(b) | ||||
| 	} | ||||
|  | ||||
| 	n++ | ||||
| 	buf := make([]byte, n) | ||||
| 	buf[0] = byte(c) | ||||
| 	for i := 1; i < n; i++ { | ||||
| 		buf[i], err = d.m.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| 	return buf, nil | ||||
| } | ||||
|  | ||||
| func (d *ppm29Decoder) decode(w *window) ([]byte, error) { | ||||
| 	c, err := d.m.ReadByte() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if c != d.esc { | ||||
| 		w.writeByte(c) | ||||
| 		return nil, nil | ||||
| 	} | ||||
| 	c, err = d.m.ReadByte() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	switch c { | ||||
| 	case 0: | ||||
| 		return nil, endOfBlock | ||||
| 	case 2: | ||||
| 		return nil, endOfBlockAndFile | ||||
| 	case 3: | ||||
| 		return d.readFilterData() | ||||
| 	case 4: | ||||
| 		offset := 0 | ||||
| 		for i := 0; i < 3; i++ { | ||||
| 			c, err = d.m.ReadByte() | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 			} | ||||
| 			offset = offset<<8 | int(c) | ||||
| 		} | ||||
| 		len, err := d.m.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		w.copyBytes(int(len)+32, offset+2) | ||||
| 	case 5: | ||||
| 		len, err := d.m.ReadByte() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		w.copyBytes(int(len)+4, 1) | ||||
| 	default: | ||||
| 		w.writeByte(d.esc) | ||||
| 	} | ||||
| 	return nil, nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user