mirror of
https://github.com/minio/minio.git
synced 2024-12-29 08:33:21 -05:00
eb7c690ea9
This PR allows 'minio update' to not only shows update banner but also allows for in-place upgrades. Updates are done safely by validating the downloaded sha256 of the binary. Fixes #4781
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package binarydist
|
|
|
|
// SignMagLittleEndian is the numeric encoding used by the bsdiff tools.
|
|
// It implements binary.ByteOrder using a sign-magnitude format
|
|
// and little-endian byte order. Only methods Uint64 and String
|
|
// have been written; the rest panic.
|
|
type signMagLittleEndian struct{}
|
|
|
|
func (signMagLittleEndian) Uint16(b []byte) uint16 { panic("unimplemented") }
|
|
|
|
func (signMagLittleEndian) PutUint16(b []byte, v uint16) { panic("unimplemented") }
|
|
|
|
func (signMagLittleEndian) Uint32(b []byte) uint32 { panic("unimplemented") }
|
|
|
|
func (signMagLittleEndian) PutUint32(b []byte, v uint32) { panic("unimplemented") }
|
|
|
|
func (signMagLittleEndian) Uint64(b []byte) uint64 {
|
|
y := int64(b[0]) |
|
|
int64(b[1])<<8 |
|
|
int64(b[2])<<16 |
|
|
int64(b[3])<<24 |
|
|
int64(b[4])<<32 |
|
|
int64(b[5])<<40 |
|
|
int64(b[6])<<48 |
|
|
int64(b[7]&0x7f)<<56
|
|
|
|
if b[7]&0x80 != 0 {
|
|
y = -y
|
|
}
|
|
return uint64(y)
|
|
}
|
|
|
|
func (signMagLittleEndian) PutUint64(b []byte, v uint64) {
|
|
x := int64(v)
|
|
neg := x < 0
|
|
if neg {
|
|
x = -x
|
|
}
|
|
|
|
b[0] = byte(x)
|
|
b[1] = byte(x >> 8)
|
|
b[2] = byte(x >> 16)
|
|
b[3] = byte(x >> 24)
|
|
b[4] = byte(x >> 32)
|
|
b[5] = byte(x >> 40)
|
|
b[6] = byte(x >> 48)
|
|
b[7] = byte(x >> 56)
|
|
if neg {
|
|
b[7] |= 0x80
|
|
}
|
|
}
|
|
|
|
func (signMagLittleEndian) String() string { return "signMagLittleEndian" }
|