• Home
  • Raw
  • Download

Lines Matching +full:zstd +full:- +full:src

2  * libkmod - interface to kernel module operations
4 * Copyright (C) 2011-2013 ProFUSION embedded systems
30 #include <zstd.h>
42 #include "libkmod-internal.h"
77 free((void *)input->src); in zstd_read_block()
78 input->src = malloc(block_size); in zstd_read_block()
79 if (input->src == NULL) { in zstd_read_block()
80 ret = -errno; in zstd_read_block()
81 ERR(file->ctx, "zstd: %m\n"); in zstd_read_block()
87 rdret = read(file->fd, (void *)input->src, block_size); in zstd_read_block()
89 ret = -errno; in zstd_read_block()
90 ERR(file->ctx, "zstd: %m\n"); in zstd_read_block()
94 input->pos = 0; in zstd_read_block()
95 input->size = rdret; in zstd_read_block()
101 uint8_t *old_buffer = buffer->dst; in zstd_ensure_outbuffer_space()
104 if (buffer->size - buffer->pos >= min_free) in zstd_ensure_outbuffer_space()
107 buffer->size += min_free; in zstd_ensure_outbuffer_space()
108 buffer->dst = realloc(buffer->dst, buffer->size); in zstd_ensure_outbuffer_space()
109 if (buffer->dst == NULL) { in zstd_ensure_outbuffer_space()
110 ret = -errno; in zstd_ensure_outbuffer_space()
129 ERR(file->ctx, "zstd: %s\n", strerror(-ret)); in zstd_decompress_block()
135 ret = -EINVAL; in zstd_decompress_block()
136 ERR(file->ctx, "zstd: %s\n", ZSTD_getErrorName(dsret)); in zstd_decompress_block()
141 } while (input->pos < input->size in zstd_decompress_block()
142 || output->pos > output->size in zstd_decompress_block()
143 || output->size - output->pos < out_buf_min_size); in zstd_decompress_block()
159 ret = -EINVAL; in load_zstd()
160 ERR(file->ctx, "zstd: Failed to create decompression stream\n"); in load_zstd()
181 free((void *)zst_inb.src); in load_zstd()
182 file->zstd_used = true; in load_zstd()
183 file->memory = zst_outb.dst; in load_zstd()
184 file->size = zst_outb.pos; in load_zstd()
189 free((void *)zst_inb.src); in load_zstd()
196 if (!file->zstd_used) in unload_zstd()
198 free(file->memory); in unload_zstd()
209 ERR(file->ctx, "xz: %s\n", strerror(ENOMEM)); in xz_uncompress_belch()
212 ERR(file->ctx, "xz: File format not recognized\n"); in xz_uncompress_belch()
215 ERR(file->ctx, "xz: Unsupported compression options\n"); in xz_uncompress_belch()
218 ERR(file->ctx, "xz: File is corrupt\n"); in xz_uncompress_belch()
221 ERR(file->ctx, "xz: Unexpected end of input\n"); in xz_uncompress_belch()
224 ERR(file->ctx, "xz: Internal error (bug)\n"); in xz_uncompress_belch()
237 strm->avail_in = 0; in xz_uncompress()
238 strm->next_out = out_buf; in xz_uncompress()
239 strm->avail_out = sizeof(out_buf); in xz_uncompress()
242 if (strm->avail_in == 0) { in xz_uncompress()
243 ssize_t rdret = read(file->fd, in_buf, sizeof(in_buf)); in xz_uncompress()
245 ret = -errno; in xz_uncompress()
248 strm->next_in = in_buf; in xz_uncompress()
249 strm->avail_in = rdret; in xz_uncompress()
254 if (strm->avail_out == 0 || ret != LZMA_OK) { in xz_uncompress()
255 size_t write_size = BUFSIZ - strm->avail_out; in xz_uncompress()
258 ret = -errno; in xz_uncompress()
264 strm->next_out = out_buf; in xz_uncompress()
265 strm->avail_out = BUFSIZ; in xz_uncompress()
271 ret = -EINVAL; in xz_uncompress()
275 file->xz_used = true; in xz_uncompress()
276 file->memory = p; in xz_uncompress()
277 file->size = total; in xz_uncompress()
292 ERR(file->ctx, "xz: %s\n", strerror(ENOMEM)); in load_xz()
293 return -ENOMEM; in load_xz()
295 ERR(file->ctx, "xz: Internal error (bug)\n"); in load_xz()
296 return -EINVAL; in load_xz()
305 if (!file->xz_used) in unload_xz()
307 free(file->memory); in unload_xz()
322 file->gzf = gzdopen(file->fd, "rb"); in load_zlib()
323 if (file->gzf == NULL) in load_zlib()
324 return -errno; in load_zlib()
325 file->fd = -1; /* now owned by gzf due gzdopen() */ in load_zlib()
333 err = -errno; in load_zlib()
340 r = gzread(file->gzf, p + did, total - did); in load_zlib()
345 const char *gz_errmsg = gzerror(file->gzf, &gzerr); in load_zlib()
347 ERR(file->ctx, "gzip: %s\n", gz_errmsg); in load_zlib()
350 err = gzerr == Z_ERRNO ? -errno : -EINVAL; in load_zlib()
356 file->memory = p; in load_zlib()
357 file->size = did; in load_zlib()
362 gzclose(file->gzf); in load_zlib()
368 if (file->gzf == NULL) in unload_zlib()
370 free(file->memory); in unload_zlib()
371 gzclose(file->gzf); /* closes file->fd */ in unload_zlib()
398 if (fstat(file->fd, &st) < 0) in load_reg()
399 return -errno; in load_reg()
401 file->size = st.st_size; in load_reg()
402 file->memory = mmap(NULL, file->size, PROT_READ, MAP_PRIVATE, in load_reg()
403 file->fd, 0); in load_reg()
404 if (file->memory == MAP_FAILED) in load_reg()
405 return -errno; in load_reg()
406 file->direct = true; in load_reg()
412 munmap(file->memory, file->size); in unload_reg()
421 if (file->elf) in kmod_file_get_elf()
422 return file->elf; in kmod_file_get_elf()
424 file->elf = kmod_elf_new(file->memory, file->size); in kmod_file_get_elf()
425 return file->elf; in kmod_file_get_elf()
439 file->fd = open(filename, O_RDONLY|O_CLOEXEC); in kmod_file_open()
440 if (file->fd < 0) { in kmod_file_open()
441 err = -errno; in kmod_file_open()
445 for (itr = comp_types; itr->ops.load != NULL; itr++) { in kmod_file_open()
446 if (magic_size_max < itr->magic_size) in kmod_file_open()
447 magic_size_max = itr->magic_size; in kmod_file_open()
450 file->direct = false; in kmod_file_open()
456 err = -errno; in kmod_file_open()
459 sz = read_str_safe(file->fd, buf, magic_size_max + 1); in kmod_file_open()
460 lseek(file->fd, 0, SEEK_SET); in kmod_file_open()
465 err = -EINVAL; in kmod_file_open()
469 for (itr = comp_types; itr->ops.load != NULL; itr++) { in kmod_file_open()
470 if (memcmp(buf, itr->magic_bytes, itr->magic_size) == 0) in kmod_file_open()
473 if (itr->ops.load != NULL) in kmod_file_open()
474 file->ops = &itr->ops; in kmod_file_open()
477 if (file->ops == NULL) in kmod_file_open()
478 file->ops = &reg_ops; in kmod_file_open()
480 err = file->ops->load(file); in kmod_file_open()
481 file->ctx = ctx; in kmod_file_open()
484 if (file->fd >= 0) in kmod_file_open()
485 close(file->fd); in kmod_file_open()
487 errno = -err; in kmod_file_open()
496 return file->memory; in kmod_file_get_contents()
501 return file->size; in kmod_file_get_size()
506 return file->direct; in kmod_file_get_direct()
511 return file->fd; in kmod_file_get_fd()
516 if (file->elf) in kmod_file_unref()
517 kmod_elf_unref(file->elf); in kmod_file_unref()
519 file->ops->unload(file); in kmod_file_unref()
520 if (file->fd >= 0) in kmod_file_unref()
521 close(file->fd); in kmod_file_unref()