Full Mattermost server source with integrated Community Enterprise features. Includes vendor directory for offline/air-gapped builds. Structure: - enterprise-impl/: Enterprise feature implementations - enterprise-community/: Init files that register implementations - enterprise/: Bridge imports (community_imports.go) - vendor/: All dependencies for offline builds Build (online): go build ./cmd/mattermost Build (offline/air-gapped): go build -mod=vendor ./cmd/mattermost 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
45 lines
752 B
Go
45 lines
752 B
Go
// Copyright 2024 Bjørn Erik Pedersen
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package imagemeta
|
|
|
|
import (
|
|
"encoding/binary"
|
|
)
|
|
|
|
type imageDecoderTIF struct {
|
|
*baseStreamingDecoder
|
|
}
|
|
|
|
func (e *imageDecoderTIF) decode() error {
|
|
const (
|
|
meaningOfLife = 42
|
|
)
|
|
|
|
byteOrderTag := e.read2()
|
|
switch byteOrderTag {
|
|
case byteOrderBigEndian:
|
|
e.byteOrder = binary.BigEndian
|
|
case byteOrderLittleEndian:
|
|
e.byteOrder = binary.LittleEndian
|
|
default:
|
|
return errInvalidFormat
|
|
}
|
|
|
|
if id := e.read2(); id != meaningOfLife {
|
|
return errInvalidFormat
|
|
}
|
|
|
|
ifdOffset := e.read4()
|
|
|
|
if ifdOffset < 8 {
|
|
return errInvalidFormat
|
|
}
|
|
|
|
e.skip(int64(ifdOffset - 8))
|
|
|
|
dec := newMetaDecoderEXIFFromStreamReader(e.streamReader, 0, e.opts)
|
|
|
|
return dec.decodeTags("IFD0")
|
|
}
|