From 4ff0938c418978f0ece8f4ba54b54096ba54fa44 Mon Sep 17 00:00:00 2001 From: Dustin Oprea Date: Tue, 2 Apr 2019 11:46:50 -0400 Subject: [PATCH] ifd_enumerate.go: Allow GPS version to not exist - Also, log when we're not processing GPS due to incompatible version. --- ifd_enumerate.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ifd_enumerate.go b/ifd_enumerate.go index 00c843e..0bee146 100644 --- a/ifd_enumerate.go +++ b/ifd_enumerate.go @@ -821,8 +821,11 @@ func (ifd *Ifd) GpsInfo() (gi *GpsInfo, err error) { } if tags, found := ifd.EntriesByTagId[TagVersionId]; found == false { - log.Panic(ErrNoGpsTags) + // We've seen this. We'll just have to default to assuming we're in a + // 2.2.0.0 format. + ifdEnumerateLogger.Warningf(nil, "No GPS version tag (0x%04x) found.", TagVersionId) } else if bytes.Compare(tags[0].value, []byte{2, 2, 0, 0}) != 0 { + ifdEnumerateLogger.Errorf(nil, nil, "GPS version not supported: %v", tags[0].value) log.Panic(ErrNoGpsTags) } @@ -834,6 +837,7 @@ func (ifd *Ifd) GpsInfo() (gi *GpsInfo, err error) { latitudeValue, err := ifd.TagValue(tags[0]) log.PanicIf(err) + // Look for whether North or South. tags, found = ifd.EntriesByTagId[TagLatitudeRefId] if found == false { log.Panicf("latitude-ref not found") @@ -850,6 +854,7 @@ func (ifd *Ifd) GpsInfo() (gi *GpsInfo, err error) { longitudeValue, err := ifd.TagValue(tags[0]) log.PanicIf(err) + // Look for whether West or East. tags, found = ifd.EntriesByTagId[TagLongitudeRefId] if found == false { log.Panicf("longitude-ref not found")