From db24f16686b7e704e625f499140848681b31cfde Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Tue, 14 Apr 2020 19:08:49 +0200 Subject: core: add get_picture_idx() function A function that gets the index of a picture in a picture table given its filename. Since we are going to identify pictures by their filename, we will need this function in the undo code. Use the function in the remove_picture() function. Signed-off-by: Berthold Stoeger --- core/picture.c | 21 ++++++++++++++------- core/picture.h | 1 + 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'core') diff --git a/core/picture.c b/core/picture.c index 727500afd..df1304ab8 100644 --- a/core/picture.c +++ b/core/picture.c @@ -58,14 +58,21 @@ void add_picture(struct picture_table *t, struct picture newpic) add_to_picture_table(t, idx, newpic); } -// Return true if picture was found and deleted -bool remove_picture(struct picture_table *t, const char *filename) +int get_picture_idx(const struct picture_table *t, const char *filename) { for (int i = 0; i < t->nr; ++i) { - if (same_string(t->pictures[i].filename, filename)) { - remove_from_picture_table(t, i); - return true; - } + if (same_string(t->pictures[i].filename, filename)) + return i; } - return false; + return -1; +} + +// Return true if picture was found and deleted +bool remove_picture(struct picture_table *t, const char *filename) +{ + int idx = get_picture_idx(t, filename); + if (idx < 0) + return false; + remove_from_picture_table(t, idx); + return true; } diff --git a/core/picture.h b/core/picture.h index da1a42acd..4e42052a4 100644 --- a/core/picture.h +++ b/core/picture.h @@ -34,6 +34,7 @@ extern void add_to_picture_table(struct picture_table *, int idx, struct picture extern void copy_pictures(const struct picture_table *s, struct picture_table *d); extern void add_picture(struct picture_table *, struct picture newpic); extern bool remove_picture(struct picture_table *, const char *filename); +extern int get_picture_idx(const struct picture_table *, const char *filename); /* Return -1 if not found */ #ifdef __cplusplus } -- cgit v1.2.3-70-g09d2