コード例 #1
0
ファイル: file_extract.c プロジェクト: Ced2911/RetroArch
void zlib_parse_file_iterate_stop(void *data)
{
   zlib_transfer_t *state = (zlib_transfer_t*)data;
   if (!state || !state->handle)
      return;

   state->type = ZLIB_TRANSFER_DEINIT;
   zlib_parse_file_iterate(data, NULL, NULL, NULL, NULL, NULL);
}
コード例 #2
0
ファイル: task_decompress.c プロジェクト: Sotsukun/RetroArch
static void rarch_task_decompress_handler_subdir(rarch_task_t *task)
{
   bool returnerr;
   decompress_state_t *dec = (decompress_state_t*)task->state;
   int ret = zlib_parse_file_iterate(&dec->zlib, &returnerr, dec->source_file,
         dec->valid_ext, file_decompressed_subdir, dec);

   task->progress = zlib_parse_file_progress(&dec->zlib);

   if (task->cancelled || ret != 0)
   {
      task->error = dec->callback_error;
      zlib_parse_file_iterate_stop(&dec->zlib);

      rarch_task_decompress_handler_finished(task, dec);
   }
}
コード例 #3
0
ファイル: file_extract.c プロジェクト: hbfelizzola/RetroArch
/**
 * zlib_parse_file:
 * @file                        : filename path of archive
 * @valid_exts                  : Valid extensions of archive to be parsed. 
 *                                If NULL, allow all.
 * @file_cb                     : file_cb function pointer
 * @userdata                    : userdata to pass to file_cb function pointer.
 *
 * Low-level file parsing. Enumerates over all files and calls 
 * file_cb with userdata.
 *
 * Returns: true (1) on success, otherwise false (0).
 **/
bool zlib_parse_file(const char *file, const char *valid_exts,
      zlib_file_cb file_cb, void *userdata)
{
   zlib_transfer_t state = {0};
   bool returnerr = true;

   state.type = ZLIB_TRANSFER_INIT;

   for (;;)
   {
      int ret = zlib_parse_file_iterate(&state, &returnerr, file,
            valid_exts, file_cb, userdata);

      if (ret != 0)
         break;
   }

   return returnerr;
}
コード例 #4
0
ファイル: task_database.c プロジェクト: ioev/RetroArch
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);
   else
   {
      if (zlib_parse_file_iterate(&db->state,
               &returnerr, name, NULL, zlib_compare_crc32,
               (void*)db_state) != 0)
         return 0;

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

   return 1;
}