]> granicus.if.org Git - file/commitdiff
use the tiff parser for exif
authorChristos Zoulas <christos@zoulas.com>
Thu, 1 Jan 2015 02:57:40 +0000 (02:57 +0000)
committerChristos Zoulas <christos@zoulas.com>
Thu, 1 Jan 2015 02:57:40 +0000 (02:57 +0000)
magic/Magdir/jpeg

index 1c7156f18d1b26cc73d8bf9d6c590a2ec715abc4..0e3a1c116d78cc02cd6669f6ef02fef83ff405dc 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: jpeg,v 1.21 2014/09/12 20:47:00 christos Exp $
+# $File: jpeg,v 1.22 2015/01/01 02:57:40 christos Exp $
 # JPEG images
 # SunOS 5.5.1 had
 #
 >>18   byte            !0              \b, thumbnail %dx
 >>>19  byte            x               \b%d
 
-# EXIF moved down here to avoid reporting a bogus version number,
-# and EXIF version number printing added.
-#   - Patrik R=E5dman <patrik+file-magic@iki.fi>
->6     string          Exif            \b, EXIF standard
-# Look for EXIF IFD offset in IFD 0, and then look for EXIF version tag in EXIF IFD.
-# All possible combinations of entries have to be enumerated, since no looping
-# is possible. And both endians are possible...
-# The combinations included below are from real-world JPEGs.
-# Little-endian
->>12   string          II              
-# IFD 0 Entry #5:
->>>70  leshort         0x8769          
-# EXIF IFD Entry #1:
->>>>(78.l+14)  leshort 0x9000          
->>>>>(78.l+23) byte    x               %c
->>>>>(78.l+24) byte    x               \b.%c
->>>>>(78.l+25) byte    !0x30           \b%c
-# IFD 0 Entry #9:
->>>118 leshort         0x8769          
-# EXIF IFD Entry #3:
->>>>(126.l+38) leshort 0x9000          
->>>>>(126.l+47)        byte    x               %c
->>>>>(126.l+48)        byte    x               \b.%c
->>>>>(126.l+49)        byte    !0x30           \b%c
-# IFD 0 Entry #10
->>>130 leshort         0x8769          
-# EXIF IFD Entry #3:
->>>>(138.l+38) leshort 0x9000          
->>>>>(138.l+47)        byte    x               %c
->>>>>(138.l+48)        byte    x               \b.%c
->>>>>(138.l+49)        byte    !0x30           \b%c
-# EXIF IFD Entry #4:
->>>>(138.l+50) leshort 0x9000          
->>>>>(138.l+59)        byte    x               %c
->>>>>(138.l+60)        byte    x               \b.%c
->>>>>(138.l+61)        byte    !0x30           \b%c
-# EXIF IFD Entry #5:
->>>>(138.l+62) leshort 0x9000          
->>>>>(138.l+71)        byte    x               %c
->>>>>(138.l+72)        byte    x               \b.%c
->>>>>(138.l+73)        byte    !0x30           \b%c
-# IFD 0 Entry #11
->>>142 leshort         0x8769          
-# EXIF IFD Entry #3:
->>>>(150.l+38) leshort 0x9000          
->>>>>(150.l+47)        byte    x               %c
->>>>>(150.l+48)        byte    x               \b.%c
->>>>>(150.l+49)        byte    !0x30           \b%c
-# EXIF IFD Entry #4:
->>>>(150.l+50) leshort 0x9000          
->>>>>(150.l+59)        byte    x               %c
->>>>>(150.l+60)        byte    x               \b.%c
->>>>>(150.l+61)        byte    !0x30           \b%c
-# EXIF IFD Entry #5:
->>>>(150.l+62) leshort 0x9000          
->>>>>(150.l+71)        byte    x               %c
->>>>>(150.l+72)        byte    x               \b.%c
->>>>>(150.l+73)        byte    !0x30           \b%c
-# Big-endian
->>12   string          MM              
-# IFD 0 Entry #9:
->>>118 beshort         0x8769          
-# EXIF IFD Entry #1:
->>>>(126.L+14) beshort 0x9000          
->>>>>(126.L+23)        byte    x               %c
->>>>>(126.L+24)        byte    x               \b.%c
->>>>>(126.L+25)        byte    !0x30           \b%c
-# EXIF IFD Entry #3:
->>>>(126.L+38) beshort 0x9000          
->>>>>(126.L+47)        byte    x               %c
->>>>>(126.L+48)        byte    x               \b.%c
->>>>>(126.L+49)        byte    !0x30           \b%c
-# IFD 0 Entry #10
->>>130 beshort         0x8769          
-# EXIF IFD Entry #3:
->>>>(138.L+38) beshort 0x9000          
->>>>>(138.L+47)        byte    x               %c
->>>>>(138.L+48)        byte    x               \b.%c
->>>>>(138.L+49)        byte    !0x30           \b%c
-# EXIF IFD Entry #5:
->>>>(138.L+62) beshort 0x9000          
->>>>>(138.L+71)        byte    x               %c
->>>>>(138.L+72)        byte    x               \b.%c
->>>>>(138.L+73)        byte    !0x30           \b%c
-# IFD 0 Entry #11
->>>142 beshort         0x8769          
-# EXIF IFD Entry #4:
->>>>(150.L+50) beshort 0x9000          
->>>>>(150.L+59)        byte    x               %c
->>>>>(150.L+60)        byte    x               \b.%c
->>>>>(150.L+61)        byte    !0x30           \b%c
-
 # Jump to the first segment
 >(4.S+4)       use             jpeg_segment
 
 >0     beshort         0xFFC4
 >>(2.S+2)      use                     jpeg_segment
 
+>0     beshort         0xFFE1          
+#>>(2.S+2)     use                     jpeg_segment
+>>4    string          Exif            Exif Standard
+>>>10  string          MM              (big endian)
+>>>>20 use             \^tiff_entry
+>>>10  string          II              (little endian)
+>>>>20 use             tiff_entry
+
 # Application specific markers
 >0     beshort&0xFFE0  =0xFFE0
 >>(2.S+2)      use                     jpeg_segment