/** * read_file: * @path : path to file. * @buf : buffer to allocate and read the contents of the * file into. Needs to be freed manually. * @length : Number of items read, -1 on error. * * Read the contents of a file into @buf. Will call read_compressed_file * if path contains a compressed file, otherwise will call read_generic_file. * * Returns: 1 if file read, 0 on error. */ int read_file(const char *path, void **buf, ssize_t *length) { #ifdef HAVE_COMPRESSION if (path_contains_compressed_file(path)) { if (read_compressed_file(path, buf, NULL, length)) return 1; } #endif return read_generic_file(path, buf, length); }
/* Generic file loader. */ long read_file(const char *path, void **buf) { /* Here we check, whether the file, we are about to read is * inside an archive, or not. * * We determine, whether a file is inside a compressed archive, * by checking for the # inside the URL. * * For example: fullpath: /home/user/game.7z/mygame.rom * carchive_path: /home/user/game.7z * */ #ifdef HAVE_COMPRESSION if (path_contains_compressed_file(path)) return read_compressed_file(path,buf,0); #endif return read_generic_file(path,buf); }