Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}