summaryrefslogtreecommitdiff
path: root/src/photos/JfifSupport.vala
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2018-07-09 12:10:38 +0200
committerJörg Frings-Fürst <debian@jff.email>2018-07-09 12:10:38 +0200
commit709e2d6f5652ec90c194a4ec2b530bebc6f952cb (patch)
tree496b2f3899e1d5728ee9ae76095cc5056c317447 /src/photos/JfifSupport.vala
parentf1353e9ffd34db5f755c7da0b3f9c10638fbfd38 (diff)
parent5c8be07095cc04a6d8a95204b0504fd7ab030154 (diff)
Merge branch 'release/0.28.3-1'0.28.3-1
Diffstat (limited to 'src/photos/JfifSupport.vala')
-rw-r--r--src/photos/JfifSupport.vala22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/photos/JfifSupport.vala b/src/photos/JfifSupport.vala
index 2861353..5ea64a5 100644
--- a/src/photos/JfifSupport.vala
+++ b/src/photos/JfifSupport.vala
@@ -201,16 +201,25 @@ namespace Jpeg {
}
public bool is_jpeg(File file) throws Error {
- FileInputStream fins = file.read(null);
-
+ var fins = file.read(null);
+ return is_jpeg_stream(fins);
+ }
+
+ public bool is_jpeg_stream(InputStream ins) throws Error {
Marker marker;
- int segment_length = read_marker(fins, out marker);
+ int segment_length = read_marker(ins, out marker);
// for now, merely checking for SOI
return (marker == Marker.SOI) && (segment_length == 0);
}
- private int read_marker(FileInputStream fins, out Jpeg.Marker marker) throws Error {
+ public bool is_jpeg_bytes(Bytes bytes) throws Error {
+ var mins = new MemoryInputStream.from_bytes(bytes);
+
+ return is_jpeg_stream(mins);
+ }
+
+ private int read_marker(InputStream fins, out Jpeg.Marker marker) throws Error {
marker = Jpeg.Marker.INVALID;
DataInputStream dins = new DataInputStream(fins);
@@ -226,8 +235,9 @@ namespace Jpeg {
}
uint16 length = dins.read_uint16();
- if (length < 2) {
- debug("Invalid length %Xh at ofs %" + int64.FORMAT + "Xh", length, fins.tell() - 2);
+ if (length < 2 && fins is Seekable) {
+ debug("Invalid length %Xh at ofs %" + int64.FORMAT + "Xh", length,
+ (fins as Seekable).tell() - 2);
return -1;
}