diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/playlist_vector.c | 7 | ||||
-rw-r--r-- | src/playlist_vector.h | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/playlist_vector.c b/src/playlist_vector.c index 80b70a96c..7c1765a98 100644 --- a/src/playlist_vector.c +++ b/src/playlist_vector.c @@ -93,16 +93,21 @@ playlist_vector_add(struct playlist_vector *pv, pv->head = pm; } -void +bool playlist_vector_update_or_add(struct playlist_vector *pv, const char *name, time_t mtime) { struct playlist_metadata **pmp = playlist_vector_find_p(pv, name); if (pmp != NULL) { struct playlist_metadata *pm = *pmp; + if (mtime == pm->mtime) + return false; + pm->mtime = mtime; } else playlist_vector_add(pv, name, mtime); + + return true; } bool diff --git a/src/playlist_vector.h b/src/playlist_vector.h index a2ba306d3..566de5f00 100644 --- a/src/playlist_vector.h +++ b/src/playlist_vector.h @@ -58,7 +58,10 @@ void playlist_vector_add(struct playlist_vector *pv, const char *name, time_t mtime); -void +/** + * @return true if the vector or one of its items was modified + */ +bool playlist_vector_update_or_add(struct playlist_vector *pv, const char *name, time_t mtime); |