Example #1
0
static int database_info_iterate(database_state_handle_t *db_state, database_info_handle_t *db)
{
   const char *name = db ? db->list->elems[db->list_ptr].data : NULL;

   if (!db || !db->list)
      return -1;

   if (!name)
      return 0;

   switch (db->type)
   {
      case DATABASE_TYPE_NONE:
         break;
      case DATABASE_TYPE_ITERATE:
         return database_info_iterate_playlist(db_state, db, name);
      case DATABASE_TYPE_ITERATE_ZIP:
         return database_info_iterate_playlist_zip(db_state, db, name);
      case DATABASE_TYPE_SERIAL_LOOKUP:
         return database_info_iterate_serial_lookup(db_state, db, name);
      case DATABASE_TYPE_CRC_LOOKUP:
         return database_info_iterate_crc_lookup(db_state, db, NULL);
   }

   return 0;
}
Example #2
0
static int database_info_iterate_playlist_zip(
      database_state_handle_t *db_state,
      database_info_handle_t *db, const char *name)
{
   bool returnerr = true;
#ifdef HAVE_ZLIB
   if (db_state->crc != 0)
      return database_info_iterate_crc_lookup(
            db_state, db, db_state->zip_name);

   if (file_archive_parse_file_iterate(&db->state,
            &returnerr, name, NULL, zlib_compare_crc32,
            (void*)db_state) != 0)
      return 0;

   if (db_state->crc)
      file_archive_parse_file_iterate_stop(&db->state);
#endif

   return 1;
}