mirror of
https://github.com/holub/mame
synced 2025-05-25 07:15:25 +03:00

and then keep searching the searchpath for the next valid file. Did some internal rearranging in fileio.c to make this work. Changed cheat search so that it loads *all* cheat files in all search paths. Note that it is easy to end up with duplicate entries this way. Some currently disabled code is present which filters out duplicates, but the logic for doing this is quite unclear with the presence of text-only cheats, which is why the code is disabled for now.
182 lines
5.7 KiB
C
182 lines
5.7 KiB
C
/***************************************************************************
|
|
|
|
fileio.h
|
|
|
|
Core file I/O interface functions and definitions.
|
|
|
|
Copyright Nicola Salmoria and the MAME Team.
|
|
Visit http://mamedev.org for licensing and usage restrictions.
|
|
|
|
***************************************************************************/
|
|
|
|
#pragma once
|
|
|
|
#ifndef __FILEIO_H__
|
|
#define __FILEIO_H__
|
|
|
|
#include "mamecore.h"
|
|
#include "osdcore.h"
|
|
#include "corefile.h"
|
|
#include "mame.h"
|
|
#include "emuopts.h"
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
CONSTANTS
|
|
***************************************************************************/
|
|
|
|
/* search paths */
|
|
#define SEARCHPATH_RAW NULL
|
|
#define SEARCHPATH_LANGUAGE NULL
|
|
#define SEARCHPATH_DEBUGLOG NULL
|
|
|
|
#define SEARCHPATH_ROM OPTION_ROMPATH
|
|
#ifdef MESS
|
|
#define SEARCHPATH_IMAGE NULL
|
|
#define SEARCHPATH_HASH OPTION_HASHPATH
|
|
#else
|
|
#define SEARCHPATH_IMAGE OPTION_ROMPATH
|
|
#define SEARCHPATH_HASH NULL
|
|
#endif
|
|
#define SEARCHPATH_SAMPLE OPTION_SAMPLEPATH
|
|
#define SEARCHPATH_ARTWORK OPTION_ARTPATH
|
|
#define SEARCHPATH_CTRLR OPTION_CTRLRPATH
|
|
#define SEARCHPATH_INI OPTION_INIPATH
|
|
#define SEARCHPATH_FONT OPTION_FONTPATH
|
|
#define SEARCHPATH_CHEAT OPTION_CHEATPATH
|
|
#define SEARCHPATH_CROSSHAIRPATH OPTION_CROSSHAIRPATH
|
|
|
|
#define SEARCHPATH_IMAGE_DIFF OPTION_DIFF_DIRECTORY
|
|
#define SEARCHPATH_NVRAM OPTION_NVRAM_DIRECTORY
|
|
#define SEARCHPATH_CONFIG OPTION_CFG_DIRECTORY
|
|
#define SEARCHPATH_INPUTLOG OPTION_INPUT_DIRECTORY
|
|
#define SEARCHPATH_STATE OPTION_STATE_DIRECTORY
|
|
#define SEARCHPATH_MEMCARD OPTION_MEMCARD_DIRECTORY
|
|
#define SEARCHPATH_SCREENSHOT OPTION_SNAPSHOT_DIRECTORY
|
|
#define SEARCHPATH_MOVIE OPTION_SNAPSHOT_DIRECTORY
|
|
#define SEARCHPATH_COMMENT OPTION_COMMENT_DIRECTORY
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
TYPE DEFINITIONS
|
|
***************************************************************************/
|
|
|
|
typedef struct _mame_path mame_path;
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
FUNCTION PROTOTYPES
|
|
***************************************************************************/
|
|
|
|
|
|
/* ----- core initialization ----- */
|
|
|
|
/* initialize the fileio system */
|
|
void fileio_init(running_machine *machine);
|
|
|
|
|
|
|
|
/* ----- file open/close ----- */
|
|
|
|
/* open a file in the given search path with the specified filename */
|
|
file_error mame_fopen(const char *searchpath, const char *filename, UINT32 openflags, mame_file **file);
|
|
|
|
/* open a file in the given search path with the specified filename or a matching CRC */
|
|
file_error mame_fopen_crc(const char *searchpath, const char *filename, UINT32 crc, UINT32 openflags, mame_file **file);
|
|
|
|
/* open a file in the given search path with the specified filename, using the specified options */
|
|
file_error mame_fopen_options(core_options *opts, const char *searchpath, const char *filename, UINT32 openflags, mame_file **file);
|
|
|
|
/* open a file in the given search path with the specified filename or a matching CRC, using the specified options */
|
|
file_error mame_fopen_crc_options(core_options *opts, const char *searchpath, const char *filename, UINT32 crc, UINT32 openflags, mame_file **file);
|
|
|
|
/* open a "file" which is actually data in RAM */
|
|
file_error mame_fopen_ram(const void *data, UINT32 length, UINT32 openflags, mame_file **file);
|
|
|
|
/* close an open file */
|
|
void mame_fclose(mame_file *file);
|
|
|
|
/* close an open file, and open the next entry in the original searchpath*/
|
|
file_error mame_fclose_and_open_next(mame_file **file, const char *filename, UINT32 openflags);
|
|
|
|
/* enable/disable streaming file compression via zlib; level is 0 to disable compression, or up to 9 for max compression */
|
|
file_error mame_fcompress(mame_file *file, int compress);
|
|
|
|
|
|
|
|
/* ----- file positioning ----- */
|
|
|
|
/* adjust the file pointer within the file */
|
|
int mame_fseek(mame_file *file, INT64 offset, int whence);
|
|
|
|
/* return the current file pointer */
|
|
UINT64 mame_ftell(mame_file *file);
|
|
|
|
/* return true if we are at the EOF */
|
|
int mame_feof(mame_file *file);
|
|
|
|
/* return the total size of the file */
|
|
UINT64 mame_fsize(mame_file *file);
|
|
|
|
|
|
|
|
/* ----- file read ----- */
|
|
|
|
/* standard binary read from a file */
|
|
UINT32 mame_fread(mame_file *file, void *buffer, UINT32 length);
|
|
|
|
/* read one character from the file */
|
|
int mame_fgetc(mame_file *file);
|
|
|
|
/* put back one character from the file */
|
|
int mame_ungetc(int c, mame_file *file);
|
|
|
|
/* read a full line of text from the file */
|
|
char *mame_fgets(char *s, int n, mame_file *file);
|
|
|
|
|
|
|
|
/* ----- file write ----- */
|
|
|
|
/* standard binary write to a file */
|
|
UINT32 mame_fwrite(mame_file *file, const void *buffer, UINT32 length);
|
|
|
|
/* write a line of text to the file */
|
|
int mame_fputs(mame_file *f, const char *s);
|
|
|
|
/* printf-style text write to a file */
|
|
int CLIB_DECL mame_fprintf(mame_file *f, const char *fmt, ...) ATTR_PRINTF(2,3);
|
|
|
|
|
|
|
|
/* ----- file enumeration ----- */
|
|
|
|
/* open a search path (multiple directories) for iteration */
|
|
mame_path *mame_openpath(core_options *opts, const char *searchpath);
|
|
|
|
/* return information about the next file in the search path */
|
|
const osd_directory_entry *mame_readpath(mame_path *path);
|
|
|
|
/* close an open seach path */
|
|
void mame_closepath(mame_path *path);
|
|
|
|
|
|
|
|
/* ----- file misc ----- */
|
|
|
|
/* return the core_file underneath the mame_file */
|
|
core_file *mame_core_file(mame_file *file);
|
|
|
|
/* return the full filename for a given mame_file */
|
|
const char *mame_file_full_name(mame_file *file);
|
|
|
|
/* return a hash string for the file with the given functions */
|
|
const char *mame_fhash(mame_file *file, UINT32 functions);
|
|
|
|
|
|
|
|
#endif /* __FILEIO_H__ */
|