summaryrefslogtreecommitdiff
path: root/src/photos/PhotoFileSniffer.vala
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2023-06-14 20:36:17 +0200
committerJörg Frings-Fürst <debian@jff.email>2023-06-14 20:36:17 +0200
commit31804433d72460cbe0a39f9f8ea5e76058d84cda (patch)
tree2084a84c39f159c6aea254775dc0880d52579d45 /src/photos/PhotoFileSniffer.vala
parenta9898fb3f39c44a85876930ef6b2558052569ae6 (diff)
parentd443a3c2509889533ca812c163056bace396b586 (diff)
Update upstream source from tag 'upstream/0.32.1'
Update to upstream version '0.32.1' with Debian dir c460ad6e13d3c39eaa2d5399059385e64e6fba4c
Diffstat (limited to 'src/photos/PhotoFileSniffer.vala')
-rw-r--r--src/photos/PhotoFileSniffer.vala28
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;
+ }
}
//