nkeynes@26: /** nkeynes@561: * $Id$ nkeynes@26: * nkeynes@26: * Interface declarations for the binary loader routines (loader.c, elf.c) nkeynes@26: * nkeynes@26: * Copyright (c) 2005 Nathan Keynes. nkeynes@26: * nkeynes@26: * This program is free software; you can redistribute it and/or modify nkeynes@26: * it under the terms of the GNU General Public License as published by nkeynes@26: * the Free Software Foundation; either version 2 of the License, or nkeynes@26: * (at your option) any later version. nkeynes@26: * nkeynes@26: * This program is distributed in the hope that it will be useful, nkeynes@26: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@26: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@26: * GNU General Public License for more details. nkeynes@26: */ nkeynes@26: nkeynes@736: #ifndef lxdream_loader_H nkeynes@736: #define lxdream_loader_H 1 nkeynes@26: nkeynes@26: #include nkeynes@26: #include nkeynes@26: nkeynes@1108: #include "drivers/cdrom/cdrom.h" nkeynes@1108: nkeynes@26: #ifdef __cplusplus nkeynes@26: extern "C" { nkeynes@26: #endif nkeynes@26: nkeynes@26: /** nkeynes@26: * NULL-terminated list of file extension/name pairs, nkeynes@26: * supported by the loader nkeynes@26: */ nkeynes@26: extern char *file_loader_extensions[][2]; nkeynes@26: nkeynes@1109: typedef enum { nkeynes@1109: FILE_ERROR, nkeynes@1109: FILE_BINARY, nkeynes@1109: FILE_ELF, nkeynes@1109: FILE_ISO, nkeynes@1109: FILE_DISC, nkeynes@1109: FILE_ZIP, nkeynes@1109: FILE_SAVE_STATE, nkeynes@1109: FILE_UNKNOWN, nkeynes@1109: } lxdream_file_type_t; nkeynes@26: nkeynes@26: /** nkeynes@1109: * Attempt to identify the given file as one of the above file types nkeynes@26: */ nkeynes@1109: lxdream_file_type_t file_identify( const gchar *filename, int fd, ERROR *err ); nkeynes@26: nkeynes@26: /** nkeynes@1109: * Load any supported file, and return the type of file loaded. nkeynes@1109: * If the file is a disc, the disc is mounted. nkeynes@1109: * nkeynes@1109: * @param filename The file to load nkeynes@1109: * @param wrap_exec If true, load executables as disc images. Otherwise load nkeynes@1109: * directly into RAM nkeynes@1109: * @param err Updated with error message on failure. nkeynes@26: */ nkeynes@1109: lxdream_file_type_t file_load_magic( const gchar *filename, gboolean wrap_exec, ERROR *err ); nkeynes@26: nkeynes@26: /** nkeynes@1109: * Load an ELF or .bin executable file based on magic. nkeynes@26: */ nkeynes@1109: gboolean file_load_exec( const gchar *filename, ERROR *err ); nkeynes@26: nkeynes@1108: cdrom_disc_t cdrom_wrap_magic( cdrom_disc_type_t type, const gchar *filename, ERROR *err ); nkeynes@1108: nkeynes@26: #ifdef __cplusplus nkeynes@26: } nkeynes@26: #endif nkeynes@26: nkeynes@736: #endif /* !lxdream_loader_H */ nkeynes@26: