From 369b510cec343988a4ae1693e8e922c7281c4e31 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 9 Jun 2013 13:06:21 +0200 Subject: [PATCH] gal-scan preserves order of pre-existing images --- gal/bin/gal-scan | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/gal/bin/gal-scan b/gal/bin/gal-scan index 0cdff94..41e2d3a 100755 --- a/gal/bin/gal-scan +++ b/gal/bin/gal-scan @@ -116,23 +116,26 @@ if (!$update) { my $old = $gal->read_list('gallery.list'); if ($old) { print "Updating gallery.list\n"; - my %old_by_id = map { $_->{id} => $_ } @$old; - for my $i (@images) { - my $id = $i->{id}; - my $o = $old_by_id{$id}; - if ($o) { - print "\t$id: updated\n"; - $i->{orientation} = $o->{orientation}; - $i->{xfrm} = $o->{xfrm}; - $i->{title} = $o->{title}; - } else { - print "\t$id: new\n"; + my %new_by_id = map { $_->{id} => $_ } @images; + my @result = (); + for my $o (@$old) { + my $id = $o->{id}; + my $i = $new_by_id{$id}; + if (!$i) { + print "\t$id: removed\n"; + next; } - delete $old_by_id{$id}; + print "\t$id: updated\n"; + push @result, $o; + delete $new_by_id{$id}; } - for my $id (keys %old_by_id) { - print "\t$id: removed\n"; + for my $i (@images) { + my $id = $i->{id}; + $new_by_id{$id} or next; + print "\t$id: new\n"; + push @result, $i; } + @images = @result; } } -- 2.39.2