diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2023-06-14 20:35:58 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2023-06-14 20:35:58 +0200 |
commit | d443a3c2509889533ca812c163056bace396b586 (patch) | |
tree | e94ffc0d9c054ca4efb8fb327e18dfac88e15dc7 /src/photos/PhotoFileSniffer.vala | |
parent | bb9797c14470641b082ebf635e2ae3cfd5f27a3b (diff) |
New upstream version 0.32.1upstream/0.32.1
Diffstat (limited to 'src/photos/PhotoFileSniffer.vala')
-rw-r--r-- | src/photos/PhotoFileSniffer.vala | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/photos/PhotoFileSniffer.vala b/src/photos/PhotoFileSniffer.vala index 7442fde..6358920 100644 --- a/src/photos/PhotoFileSniffer.vala +++ b/src/photos/PhotoFileSniffer.vala @@ -47,6 +47,34 @@ public abstract class PhotoFileSniffer { } public abstract DetectedPhotoInformation? sniff(out bool is_corrupted) throws Error; + + protected static bool is_supported_bmff_with_variants(File file, string[] variants) throws Error { + + FileInputStream instream = file.read(null); + + // Skip the first four bytes + if (instream.skip(4) != 4) { + return false; + } + + // The next four bytes need to be ftyp + var buf = new uint8[4]; + if (instream.read(buf, null) != 4) { + return false; + } + + if (Memory.cmp("ftyp".data, buf, 4) != 0) { + return false; + } + + if (instream.read(buf, null) != 4) { + return false; + } + + buf += '\0'; + + return (string)buf in variants; + } } // |