Esempio n. 1
0
file_error emu_file::load__7zped_file()
{
    assert(m_file == NULL);
    assert(m__7zdata.count() == 0);
    assert(m__7zfile != NULL);

    // allocate some memory
    m__7zdata.resize(m__7zlength);

    // read the data into our buffer and return
    _7z_error _7zerr = _7z_file_decompress(m__7zfile, m__7zdata, m__7zdata.count());
    if (_7zerr != _7ZERR_NONE)
    {
        m__7zdata.reset();
        return FILERR_FAILURE;
    }

    // convert to RAM file
    file_error filerr = core_fopen_ram(m__7zdata, m__7zdata.count(), m_openflags, &m_file);
    if (filerr != FILERR_NONE)
    {
        m__7zdata.reset();
        return FILERR_FAILURE;
    }

    // close out the _7Z file
    _7z_file_close(m__7zfile);
    m__7zfile = NULL;
    return FILERR_NONE;
}
Esempio n. 2
0
file_error emu_file::load_zipped_file()
{
    assert(m_file == NULL);
    assert(m_zipdata.count() == 0);
    assert(m_zipfile != NULL);

    // allocate some memory
    m_zipdata.resize(m_ziplength);

    // read the data into our buffer and return
    zip_error ziperr = zip_file_decompress(m_zipfile, m_zipdata, m_zipdata.count());
    if (ziperr != ZIPERR_NONE)
    {
        m_zipdata.reset();
        return FILERR_FAILURE;
    }

    // convert to RAM file
    file_error filerr = core_fopen_ram(m_zipdata, m_zipdata.count(), m_openflags, &m_file);
    if (filerr != FILERR_NONE)
    {
        m_zipdata.reset();
        return FILERR_FAILURE;
    }

    // close out the ZIP file
    zip_file_close(m_zipfile);
    m_zipfile = NULL;
    return FILERR_NONE;
}
Esempio n. 3
0
file_error emu_file::load_zipped_file()
{
	assert(m_file == NULL);
	assert(m_zipdata == NULL);
	assert(m_zipfile != NULL);

	// allocate some memory
	m_zipdata = global_alloc_array(UINT8, m_ziplength);

	// read the data into our buffer and return
	zip_error ziperr = zip_file_decompress(m_zipfile, m_zipdata, m_ziplength);
	if (ziperr != ZIPERR_NONE)
	{
		global_free(m_zipdata);
		m_zipdata = NULL;
		return FILERR_FAILURE;
	}

	// convert to RAM file
	file_error filerr = core_fopen_ram(m_zipdata, m_ziplength, m_openflags, &m_file);
	if (filerr != FILERR_NONE)
	{
		global_free(m_zipdata);
		m_zipdata = NULL;
		return FILERR_FAILURE;
	}

	// close out the ZIP file
	zip_file_close(m_zipfile);
	m_zipfile = NULL;
	return FILERR_NONE;
}
Esempio n. 4
0
file_error emu_file::load__7zped_file()
{
	assert(m_file == NULL);
	assert(m__7zdata == NULL);
	assert(m__7zfile != NULL);

	// allocate some memory
	m__7zdata = global_alloc_array(UINT8, m__7zlength);

	// read the data into our buffer and return
	_7z_error _7zerr = _7z_file_decompress(m__7zfile, m__7zdata, m__7zlength);
	if (_7zerr != _7ZERR_NONE)
	{
		global_free(m__7zdata);
		m__7zdata = NULL;
		return FILERR_FAILURE;
	}

	// convert to RAM file
	file_error filerr = core_fopen_ram(m__7zdata, m__7zlength, m_openflags, &m_file);
	if (filerr != FILERR_NONE)
	{
		global_free(m__7zdata);
		m__7zdata = NULL;
		return FILERR_FAILURE;
	}

	// close out the _7Z file
	_7z_file_close(m__7zfile);
	m__7zfile = NULL;
	return FILERR_NONE;
}
Esempio n. 5
0
file_error emu_file::open_ram(const void *data, UINT32 length)
{
    // set a fake filename and CRC
    m_filename = "RAM";
    m_crc = 0;

    // use the core_file's built-in RAM support
    return core_fopen_ram(data, length, m_openflags, &m_file);
}
Esempio n. 6
0
static file_error OpenDIBFile(const char *dir_name, const char *zip_name, const char *filename,
	core_file **file, void **buffer)
{
	file_error filerr;
	zip_error ziperr;
	zip_file *zip;
	const zip_file_header *zip_header;
	astring *fname;

	// clear out result
	*file = NULL;

	// look for the raw file
	fname = astring_assemble_3(astring_alloc(), dir_name, PATH_SEPARATOR, filename);
	filerr = core_fopen(astring_c(fname), OPEN_FLAG_READ, file);
	astring_free(fname);

	// did the raw file not exist?
	if (filerr != FILERR_NONE)
	{
		// look into zip file
		fname = astring_assemble_4(astring_alloc(), dir_name, PATH_SEPARATOR, zip_name, ".zip");
		ziperr = zip_file_open(astring_c(fname), &zip);
		astring_free(fname);
		if (ziperr == ZIPERR_NONE)
		{
			zip_header = zip_file_seek_file(zip, filename);
			if (zip_header != NULL)
			{
				*buffer = malloc(zip_header->uncompressed_length);
				ziperr = zip_file_decompress(zip, *buffer, zip_header->uncompressed_length);
				if (ziperr == ZIPERR_NONE)
				{
					filerr = core_fopen_ram(*buffer, zip_header->uncompressed_length, OPEN_FLAG_READ, file);
				}
			}
			zip_file_close(zip);
		}
	}
	return filerr;
}