static void *zlib_file_open(const char *path) { zlib_file_data_t *data = (zlib_file_data_t*)calloc(1, sizeof(*data)); if (!data) return NULL; data->fd = open(path, O_RDONLY); if (data->fd < 0) { RARCH_ERR("Failed to open archive: %s (%s).\n", path, strerror(errno)); goto error; } struct stat fds; if (fstat(data->fd, &fds) < 0) goto error; data->size = fds.st_size; if (!data->size) return data; data->data = mmap(NULL, data->size, PROT_READ, MAP_SHARED, data->fd, 0); if (data->data == MAP_FAILED) { data->data = NULL; RARCH_ERR("Failed to mmap() file: %s (%s).\n", path, strerror(errno)); goto error; } return data; error: zlib_file_free(data); return NULL; }
static void *zlib_file_open(const char *path) { zlib_file_data_t *data = (zlib_file_data_t*)calloc(1, sizeof(*data)); if (!data) return NULL; data->fd = open(path, O_RDONLY); /* Failed to open archive. */ if (data->fd < 0) goto error; data->size = path_get_size(path); if (!data->size) return data; data->data = mmap(NULL, data->size, PROT_READ, MAP_SHARED, data->fd, 0); if (data->data == MAP_FAILED) { data->data = NULL; /* Failed to mmap() file */ goto error; } return data; error: zlib_file_free(data); return NULL; }
static void *zlib_file_open(const char *path) { zlib_file_data_t *data = (zlib_file_data_t*)calloc(1, sizeof(*data)); if (!data) return NULL; ssize_t ret = read_file(path, &data->data); if (ret < 0) { RARCH_ERR("Failed to open archive: %s.\n", path); goto error; } data->size = ret; return data; error: zlib_file_free(data); return NULL; }
static void *zlib_file_open(const char *path) { ssize_t ret = -1; bool read_from_file = false; zlib_file_data_t *data = (zlib_file_data_t*)calloc(1, sizeof(*data)); if (!data) return NULL; read_from_file = zlib_read_file(path, &data->data, &ret); if (!read_from_file || ret < 0) { /* Failed to open archive. */ goto error; } data->size = ret; return data; error: zlib_file_free(data); return NULL; }