From 3253d99365813f2d2ffd05e10cbb8c11f53d746e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 22 Mar 2017 06:39:17 +0100 Subject: New upstream version 0.26.0 --- src/camera/GPhoto.vala | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/camera/GPhoto.vala') diff --git a/src/camera/GPhoto.vala b/src/camera/GPhoto.vala index 3616cb2..5acc4a3 100644 --- a/src/camera/GPhoto.vala +++ b/src/camera/GPhoto.vala @@ -196,22 +196,27 @@ namespace GPhoto { return new Gdk.Pixbuf.from_stream(ins, null); } - public void save_image(Context context, Camera camera, string folder, string filename, - File dest_file) throws Error { + public void save_image(Context context, Camera camera, string folder, string filename, File dest_file) throws Error { + var fd = Posix.creat(dest_file.get_path(), 0640); + if (fd < 0) { + throw new IOError.FAILED("[%d] Error creating file %s: %m", GLib.errno, dest_file.get_path()); + } + GPhoto.CameraFile camera_file; - GPhoto.Result res = GPhoto.CameraFile.create(out camera_file); - if (res != Result.OK) + GPhoto.Result res = GPhoto.CameraFile.create_from_fd(out camera_file, fd); + if (res != Result.OK) { + Posix.close(fd); throw new GPhotoError.LIBRARY("[%d] Error allocating camera file: %s", (int) res, res.as_string()); + } res = camera.get_file(folder, filename, GPhoto.CameraFileType.NORMAL, camera_file, context); - if (res != Result.OK) + if (res != Result.OK) { + Posix.close(fd); throw new GPhotoError.LIBRARY("[%d] Error retrieving file object for %s/%s: %s", (int) res, folder, filename, res.as_string()); + } - res = camera_file.save(dest_file.get_path()); - if (res != Result.OK) - throw new GPhotoError.LIBRARY("[%d] Error copying file %s/%s to %s: %s", (int) res, - folder, filename, dest_file.get_path(), res.as_string()); + Posix.close(fd); } public PhotoMetadata? load_metadata(Context context, Camera camera, string folder, string filename) -- cgit v1.2.3