intfstream_t *intfstream_open_memory(void *data, unsigned mode, unsigned hints, uint64_t size) { intfstream_info_t info; intfstream_t *fd = NULL; info.type = INTFSTREAM_MEMORY; info.memory.buf.data = (uint8_t*)data; info.memory.buf.size = size; info.memory.writable = false; fd = (intfstream_t*)intfstream_init(&info); if (!fd) return NULL; if (!intfstream_open(fd, NULL, mode, hints)) goto error; return fd; error: if (fd) { intfstream_close(fd); free(fd); } return NULL; }
intfstream_t *intfstream_open_chd_track(const char *path, unsigned mode, unsigned hints, int32_t track) { intfstream_info_t info; intfstream_t *fd = NULL; info.type = INTFSTREAM_CHD; info.chd.track = track; fd = (intfstream_t*)intfstream_init(&info); if (!fd) return NULL; if (!intfstream_open(fd, path, mode, hints)) goto error; return fd; error: if (fd) { intfstream_close(fd); free(fd); } return NULL; }
intfstream_t* intfstream_open_file(const char *path, unsigned mode, unsigned hints) { intfstream_info_t info; intfstream_t *fd = NULL; info.type = INTFSTREAM_FILE; fd = (intfstream_t*)intfstream_init(&info); if (!fd) return NULL; if (!intfstream_open(fd, path, mode, hints)) goto error; return fd; error: if (fd) { intfstream_close(fd); free(fd); } return NULL; }
static intfstream_t* open_file(const char *path) { intfstream_info_t info; intfstream_t *fd = NULL; info.type = INTFSTREAM_FILE; fd = intfstream_init(&info); if (!fd) return NULL; if (!intfstream_open(fd, path, RFILE_MODE_READ, -1)) { intfstream_close(fd); return NULL; } return fd; }
static intfstream_t *open_chd_track(const char *path, int32_t track) { intfstream_info_t info; intfstream_t *fd = NULL; info.type = INTFSTREAM_CHD; info.chd.track = track; fd = intfstream_init(&info); if (!fd) return NULL; if (!intfstream_open(fd, path, RFILE_MODE_READ, -1)) { intfstream_close(fd); return NULL; } return fd; }