mirror of https://github.com/dsoprea/go-exif.git
type.go: Deinegrated `ErrUnhandledUnknownTypedTag`
Not actually used anywhere.pull/28/head
parent
fb1db098b9
commit
4f2f9044e6
10
README.md
10
README.md
|
@ -186,13 +186,9 @@ visitor := func(fqIfdPath string, ifdIndex int, tagId uint16, tagType exif.TagTy
|
||||||
valueString := ""
|
valueString := ""
|
||||||
if tagType.Type() == exif.TypeUndefined {
|
if tagType.Type() == exif.TypeUndefined {
|
||||||
value, err := exif.UndefinedValue(ifdPath, tagId, valueContext, tagType.ByteOrder())
|
value, err := exif.UndefinedValue(ifdPath, tagId, valueContext, tagType.ByteOrder())
|
||||||
if log.Is(err, exif.ErrUnhandledUnknownTypedTag) {
|
log.PanicIf(err)
|
||||||
valueString = "!UNDEFINED!"
|
|
||||||
} else if err != nil {
|
valueString = fmt.Sprintf("%v", value)
|
||||||
panic(err)
|
|
||||||
} else {
|
|
||||||
valueString = fmt.Sprintf("%v", value)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
valueString, err = tagType.ResolveAsString(valueContext, true)
|
valueString, err = tagType.ResolveAsString(valueContext, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -109,13 +109,9 @@ func main() {
|
||||||
if tagType.Type() == exif.TypeUndefined {
|
if tagType.Type() == exif.TypeUndefined {
|
||||||
var err error
|
var err error
|
||||||
value, err = valueContext.Undefined()
|
value, err = valueContext.Undefined()
|
||||||
if log.Is(err, exif.ErrUnhandledUnknownTypedTag) {
|
log.PanicIf(err)
|
||||||
value = nil
|
|
||||||
} else if err != nil {
|
valueString = fmt.Sprintf("%v", value)
|
||||||
log.Panic(err)
|
|
||||||
} else {
|
|
||||||
valueString = fmt.Sprintf("%v", value)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
valueString, err = valueContext.FormatFirst()
|
valueString, err = valueContext.FormatFirst()
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
10
exif_test.go
10
exif_test.go
|
@ -82,13 +82,9 @@ func TestVisit(t *testing.T) {
|
||||||
valueString := ""
|
valueString := ""
|
||||||
if tagType.Type() == TypeUndefined {
|
if tagType.Type() == TypeUndefined {
|
||||||
value, err := valueContext.Undefined()
|
value, err := valueContext.Undefined()
|
||||||
if log.Is(err, ErrUnhandledUnknownTypedTag) {
|
log.PanicIf(err)
|
||||||
valueString = "!UNDEFINED!"
|
|
||||||
} else if err != nil {
|
valueString = fmt.Sprintf("%v", value)
|
||||||
log.Panic(err)
|
|
||||||
} else {
|
|
||||||
valueString = fmt.Sprintf("%v", value)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
valueString, err = valueContext.FormatFirst()
|
valueString, err = valueContext.FormatFirst()
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
|
@ -1135,14 +1135,9 @@ func (ib *IfdBuilder) AddTagsFromExisting(ifd *Ifd, itevr *IfdTagEntryValueResol
|
||||||
|
|
||||||
// TODO(dustin): !! Not correct. If we're adding from existing and it's an unknown-type tag that we can't parse, we're just going to be seting the placeholder even though there's nothing stopping us from just taking the raw bytes (other than some design decisions that we'd have to make in order to do this).
|
// TODO(dustin): !! Not correct. If we're adding from existing and it's an unknown-type tag that we can't parse, we're just going to be seting the placeholder even though there's nothing stopping us from just taking the raw bytes (other than some design decisions that we'd have to make in order to do this).
|
||||||
|
|
||||||
|
// TODO(dustin): !! This probably isn't correct. This will only work if the type is a one-byte type (e.g. ascii, bytes). Otherwise, we'll be reading the wrong number of bytes.
|
||||||
valueBytes, err := itevr.ValueBytes(ite)
|
valueBytes, err := itevr.ValueBytes(ite)
|
||||||
if err != nil {
|
log.PanicIf(err)
|
||||||
if log.Is(err, ErrUnhandledUnknownTypedTag) == true {
|
|
||||||
valueBytes = []byte(UnparseableUnknownTagValuePlaceholder)
|
|
||||||
} else {
|
|
||||||
log.Panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
value = NewIfdBuilderTagValueFromBytes(valueBytes)
|
value = NewIfdBuilderTagValueFromBytes(valueBytes)
|
||||||
}
|
}
|
||||||
|
|
|
@ -240,31 +240,24 @@ func (ie *IfdEnumerate) resolveTagValue(ite *IfdTagEntry) (valueBytes []byte, is
|
||||||
valueContext := ie.GetValueContext(ite)
|
valueContext := ie.GetValueContext(ite)
|
||||||
|
|
||||||
value, err := valueContext.Undefined()
|
value, err := valueContext.Undefined()
|
||||||
if err != nil {
|
log.PanicIf(err)
|
||||||
if log.Is(err, ErrUnhandledUnknownTypedTag) == true {
|
|
||||||
valueBytes = []byte(UnparseableUnknownTagValuePlaceholder)
|
|
||||||
return valueBytes, true, nil
|
|
||||||
} else {
|
|
||||||
log.Panic(err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
switch value.(type) {
|
|
||||||
case []byte:
|
|
||||||
return value.([]byte), false, nil
|
|
||||||
case TagUnknownType_UnknownValue:
|
|
||||||
b := []byte(value.(TagUnknownType_UnknownValue))
|
|
||||||
return b, false, nil
|
|
||||||
case string:
|
|
||||||
return []byte(value.(string)), false, nil
|
|
||||||
case UnknownTagValue:
|
|
||||||
valueBytes, err := value.(UnknownTagValue).ValueBytes()
|
|
||||||
log.PanicIf(err)
|
|
||||||
|
|
||||||
return valueBytes, false, nil
|
switch value.(type) {
|
||||||
default:
|
case []byte:
|
||||||
// TODO(dustin): !! Finish translating the rest of the types (make reusable and replace into other similar implementations?)
|
return value.([]byte), false, nil
|
||||||
log.Panicf("can not produce bytes for unknown-type tag (0x%04x) (1): [%s]", ite.TagId, reflect.TypeOf(value))
|
case TagUnknownType_UnknownValue:
|
||||||
}
|
b := []byte(value.(TagUnknownType_UnknownValue))
|
||||||
|
return b, false, nil
|
||||||
|
case string:
|
||||||
|
return []byte(value.(string)), false, nil
|
||||||
|
case UnknownTagValue:
|
||||||
|
valueBytes, err := value.(UnknownTagValue).ValueBytes()
|
||||||
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
return valueBytes, false, nil
|
||||||
|
default:
|
||||||
|
// TODO(dustin): !! Finish translating the rest of the types (make reusable and replace into other similar implementations?)
|
||||||
|
log.Panicf("can not produce bytes for unknown-type tag (0x%04x) (1): [%s]", ite.TagId, reflect.TypeOf(value))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
originalType := NewTagType(ite.TagType, ie.byteOrder)
|
originalType := NewTagType(ite.TagType, ie.byteOrder)
|
||||||
|
@ -716,13 +709,7 @@ func (ifd *Ifd) printTagTree(populateValues bool, index, level int, nextLink boo
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
value, err = ifd.TagValue(tag)
|
value, err = ifd.TagValue(tag)
|
||||||
if err != nil {
|
log.PanicIf(err)
|
||||||
if log.Is(err, ErrUnhandledUnknownTypedTag) == true {
|
|
||||||
value = UnparseableUnknownTagValuePlaceholder
|
|
||||||
} else {
|
|
||||||
log.Panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("%s - TAG: %s NAME=[%s] VALUE=[%v]\n", indent, tag, tagName, value)
|
fmt.Printf("%s - TAG: %s NAME=[%s] VALUE=[%v]\n", indent, tag, tagName, value)
|
||||||
|
|
|
@ -11,10 +11,6 @@ import (
|
||||||
"github.com/dsoprea/go-logging"
|
"github.com/dsoprea/go-logging"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
UnparseableUnknownTagValuePlaceholder = "!UNKNOWN"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
TagUnknownType_9298_UserComment_Encoding_ASCII = iota
|
TagUnknownType_9298_UserComment_Encoding_ASCII = iota
|
||||||
TagUnknownType_9298_UserComment_Encoding_JIS = iota
|
TagUnknownType_9298_UserComment_Encoding_JIS = iota
|
||||||
|
@ -401,7 +397,4 @@ func UndefinedValue(ifdPath string, tagId uint16, valueContext interface{}, byte
|
||||||
|
|
||||||
tutuv := TagUnknownType_UnknownValue(valueBytes)
|
tutuv := TagUnknownType_UnknownValue(valueBytes)
|
||||||
return tutuv, nil
|
return tutuv, nil
|
||||||
|
|
||||||
// log.Panic(ErrUnhandledUnknownTypedTag)
|
|
||||||
// return nil, nil
|
|
||||||
}
|
}
|
||||||
|
|
5
type.go
5
type.go
|
@ -84,11 +84,6 @@ var (
|
||||||
// ErrWrongType is used when we try to parse anything other than the
|
// ErrWrongType is used when we try to parse anything other than the
|
||||||
// current type.
|
// current type.
|
||||||
ErrWrongType = errors.New("wrong type, can not parse")
|
ErrWrongType = errors.New("wrong type, can not parse")
|
||||||
|
|
||||||
// ErrUnhandledUnknownTag is used when we try to parse a tag that's
|
|
||||||
// recorded as an "unknown" type but not a documented tag (therefore
|
|
||||||
// leaving us not knowning how to read it).
|
|
||||||
ErrUnhandledUnknownTypedTag = errors.New("not a standard unknown-typed tag")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Rational struct {
|
type Rational struct {
|
||||||
|
|
12
utility.go
12
utility.go
|
@ -182,18 +182,10 @@ func GetFlatExifData(exifData []byte) (exifTags []ExifTag, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
value, err := ifd.TagValue(ite)
|
value, err := ifd.TagValue(ite)
|
||||||
if err != nil {
|
log.PanicIf(err)
|
||||||
if log.Is(err, ErrUnhandledUnknownTypedTag) == true {
|
|
||||||
value = UnparseableUnknownTagValuePlaceholder
|
|
||||||
} else {
|
|
||||||
log.Panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
valueBytes, err := ifd.TagValueBytes(ite)
|
valueBytes, err := ifd.TagValueBytes(ite)
|
||||||
if err != nil && log.Is(err, ErrUnhandledUnknownTypedTag) == false {
|
log.PanicIf(err)
|
||||||
log.Panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
et := ExifTag{
|
et := ExifTag{
|
||||||
IfdPath: ifd.IfdPath,
|
IfdPath: ifd.IfdPath,
|
||||||
|
|
Loading…
Reference in New Issue