From c251b0d5a905f19498e1d3312041b794e57fd2f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?= Date: Mon, 28 Mar 2022 00:30:15 +0300 Subject: Little fixes and optimizations * Don't read image with Magick if it's up to date. * Some memory leaks fixed. There's still are some minor leaks. --- src/site.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/site.c') diff --git a/src/site.c b/src/site.c index 058da13..4c87c9d 100644 --- a/src/site.c +++ b/src/site.c @@ -130,6 +130,7 @@ images_walk(struct bstnode *node, void *data) struct image *image = node->value; struct stat dstat; struct timespec ddate = { .tv_sec = image->tstamp, .tv_nsec = 0 }; + int imgupdate, thumbupdate; char htmlpath[PATH_MAX]; const char *base = rbasename(image->dst); @@ -138,18 +139,22 @@ images_walk(struct bstnode *node, void *data) if (!nmkdir(image->dst, &dstat, site->dry_run)) return false; - if (!site->dry_run) { + imgupdate = file_is_uptodate(image->dst_image, &image->modtime); + if (imgupdate == -1) goto magick_fail; + thumbupdate = file_is_uptodate(image->dst_image, &image->modtime); + if (thumbupdate == -1) goto magick_fail; + if (!site->dry_run && (!imgupdate || !thumbupdate)) { TRYWAND(site->wand, MagickReadImage(site->wand, image->source)); } - if (!optimize_image(site->wand, image->dst_image, &site->config->images, - &image->modtime, site->dry_run)) { + if (!imgupdate && !optimize_image(site->wand, image->dst_image, + &site->config->images, &image->modtime, site->dry_run)) { goto magick_fail; } - if (!optimize_image(site->wand, image->dst_thumb, &site->config->thumbnails, - &image->modtime, site->dry_run)) { + if (!thumbupdate && !optimize_image(site->wand, image->dst_thumb, + &site->config->thumbnails, &image->modtime, site->dry_run)) { goto magick_fail; } - if (!site->dry_run) { + if (!site->dry_run && (!imgupdate || !thumbupdate)) { MagickRemoveImage(site->wand); } -- cgit v1.2.3