aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Model/PhotoSet.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2016-04-27 14:22:53 +0100
committerMatthew Somerville <matthew@mysociety.org>2016-05-03 13:32:53 +0100
commit7777e305ee6f00ab6503f07249b13756bbd749b1 (patch)
treef70c6765872f970a6748cd0ba17ca54c1f7d60e2 /perllib/FixMyStreet/App/Model/PhotoSet.pm
parentfee5734316c3b253af81ede5a1f382801ac64591 (diff)
Switch external jhead call to use IPC::Open3.
Diffstat (limited to 'perllib/FixMyStreet/App/Model/PhotoSet.pm')
-rw-r--r--perllib/FixMyStreet/App/Model/PhotoSet.pm9
1 files changed, 8 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Model/PhotoSet.pm b/perllib/FixMyStreet/App/Model/PhotoSet.pm
index 243675f2c..b44bf4b38 100644
--- a/perllib/FixMyStreet/App/Model/PhotoSet.pm
+++ b/perllib/FixMyStreet/App/Model/PhotoSet.pm
@@ -8,6 +8,8 @@ use if !$ENV{TRAVIS}, 'Image::Magick';
use Scalar::Util 'openhandle', 'blessed';
use Digest::SHA qw(sha1_hex);
use Image::Size;
+use IPC::Cmd qw(can_run);
+use IPC::Open3;
use MIME::Base64;
has c => (
@@ -144,7 +146,12 @@ has ids => ( # Arrayref of $fileid tuples (always, so post upload/raw data proc
my $photo_blob = eval {
my $filename = $upload->tempname;
my $out;
- $out = `jhead -se -autorot $filename 2>&1` if $type eq 'jpeg';
+ if ($type eq 'jpeg' && can_run('jhead')) {
+ my $pid = open3(undef, my $stdout, undef, 'jhead', '-se', '-autorot', $filename);
+ $out = join('', <$stdout>);
+ waitpid($pid, 0);
+ close $stdout;
+ }
unless (defined $out) {
my ($w, $h, $err) = Image::Size::imgsize($filename);
die _("Please upload an image only") . "\n" if !defined $w || $err !~ /JPG|GIF|PNG|TIF/;