diff options
author | Eric Wong <normalperson@yhbt.net> | 2008-10-21 01:30:30 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-10-21 01:30:30 +0200 |
commit | f2525e3efbd35262ac1fa017482c8a70c11f35c0 (patch) | |
tree | 29d4bb929c206e4a8006a5e8e93317dc28e5e417 | |
parent | 1d385190a07007ec7c4f7a880ab16ef4fce88cf4 (diff) | |
download | mpd-f2525e3efbd35262ac1fa017482c8a70c11f35c0.tar.gz mpd-f2525e3efbd35262ac1fa017482c8a70c11f35c0.tar.xz mpd-f2525e3efbd35262ac1fa017482c8a70c11f35c0.zip |
dirvec: add dirvec_for_each iterator
This will make it easier to introduce locking
-rw-r--r-- | src/dirvec.c | 16 | ||||
-rw-r--r-- | src/dirvec.h | 3 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/dirvec.c b/src/dirvec.c index 61e5a859a..7493a4d2c 100644 --- a/src/dirvec.c +++ b/src/dirvec.c @@ -78,3 +78,19 @@ void dirvec_destroy(struct dirvec *dv) } dv->nr = 0; } + +int dirvec_for_each(const struct dirvec *dv, + int (*fn)(struct directory *, void *), void *arg) +{ + size_t i; + + for (i = 0; i < dv->nr; ++i) { + struct directory *dir = dv->base[i]; + + assert(dir); + if (fn(dir, arg) < 0) + return -1; + } + + return 0; +} diff --git a/src/dirvec.h b/src/dirvec.h index 2cdfb3196..746143aee 100644 --- a/src/dirvec.h +++ b/src/dirvec.h @@ -24,4 +24,7 @@ dirvec_clear(struct dirvec *dv) void dirvec_destroy(struct dirvec *dv); +int dirvec_for_each(const struct dirvec *dv, + int (*fn)(struct directory *, void *), void *arg); + #endif /* DIRVEC_H */ |