if (!_lmo_active_catalog)
_lmo_active_catalog = cat;
- return 0;
+ return cat->archives ? 0 : -1;
err:
if (dh) closedir(dh);
return -1;
}
+void lmo_iterate(lmo_iterate_cb_t cb, void *priv)
+{
+ unsigned int i;
+ lmo_entry_t *e;
+ lmo_archive_t *ar;
+
+ if (!_lmo_active_catalog)
+ return;
+
+ for (ar = _lmo_active_catalog->archives; ar; ar = ar->next)
+ for (i = 0, e = &ar->index[0]; i < ar->length; e = &ar->index[++i])
+ cb(ntohl(e->key_id), ar->mmap + ntohl(e->offset), ntohl(e->length), priv);
+}
+
void lmo_close_catalog(const char *lang)
{
lmo_archive_t *ar, *next;