summaryrefslogtreecommitdiff
path: root/src/grp-machine/grp-import/systemd-import
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-08-11 22:55:47 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-08-11 22:55:47 -0400
commit7648bff2717c24e9f5c90ec9e4588eda510aba9d (patch)
tree2bf4f778fc37036b9343b8f677244d008efd4329 /src/grp-machine/grp-import/systemd-import
parent799fb8a3d138c075bfde710d093350a60b7ee75b (diff)
Get grp-machine building
Diffstat (limited to 'src/grp-machine/grp-import/systemd-import')
-rw-r--r--src/grp-machine/grp-import/systemd-import/Makefile11
-rw-r--r--src/grp-machine/grp-import/systemd-import/import-common.c226
-rw-r--r--src/grp-machine/grp-import/systemd-import/import-common.h28
-rw-r--r--src/grp-machine/grp-import/systemd-import/import-compress.c470
-rw-r--r--src/grp-machine/grp-import/systemd-import/import-compress.h61
5 files changed, 3 insertions, 793 deletions
diff --git a/src/grp-machine/grp-import/systemd-import/Makefile b/src/grp-machine/grp-import/systemd-import/Makefile
index 301556ffd5..06fd01fcd7 100644
--- a/src/grp-machine/grp-import/systemd-import/Makefile
+++ b/src/grp-machine/grp-import/systemd-import/Makefile
@@ -20,7 +20,7 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
-include $(dir $(lastword $(MAKEFILE_LIST)))/../../../config.mk
+include $(dir $(lastword $(MAKEFILE_LIST)))/../../../../config.mk
include $(topsrcdir)/build-aux/Makefile.head.mk
rootlibexec_PROGRAMS += systemd-import
@@ -29,13 +29,7 @@ systemd_import_SOURCES = \
src/import/import-raw.c \
src/import/import-raw.h \
src/import/import-tar.c \
- src/import/import-tar.h \
- src/import/import-common.c \
- src/import/import-common.h \
- src/import/import-compress.c \
- src/import/import-compress.h \
- src/import/qcow2-util.c \
- src/import/qcow2-util.h
+ src/import/import-tar.h
systemd_import_CFLAGS = \
$(AM_CFLAGS) \
@@ -45,6 +39,7 @@ systemd_import_CFLAGS = \
systemd_import_LDADD = \
libshared.la \
+ libimport.la \
$(XZ_LIBS) \
$(ZLIB_LIBS) \
$(BZIP2_LIBS)
diff --git a/src/grp-machine/grp-import/systemd-import/import-common.c b/src/grp-machine/grp-import/systemd-import/import-common.c
deleted file mode 100644
index cd69e900ec..0000000000
--- a/src/grp-machine/grp-import/systemd-import/import-common.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/***
- This file is part of systemd.
-
- Copyright 2015 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <sched.h>
-#include <sys/prctl.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "basic/btrfs-util.h"
-#include "basic/capability-util.h"
-#include "basic/fd-util.h"
-#include "basic/signal-util.h"
-#include "basic/util.h"
-
-#include "import-common.h"
-
-int import_make_read_only_fd(int fd) {
- int r;
-
- assert(fd >= 0);
-
- /* First, let's make this a read-only subvolume if it refers
- * to a subvolume */
- r = btrfs_subvol_set_read_only_fd(fd, true);
- if (r == -ENOTTY || r == -ENOTDIR || r == -EINVAL) {
- struct stat st;
-
- /* This doesn't refer to a subvolume, or the file
- * system isn't even btrfs. In that, case fall back to
- * chmod()ing */
-
- r = fstat(fd, &st);
- if (r < 0)
- return log_error_errno(errno, "Failed to stat temporary image: %m");
-
- /* Drop "w" flag */
- if (fchmod(fd, st.st_mode & 07555) < 0)
- return log_error_errno(errno, "Failed to chmod() final image: %m");
-
- return 0;
-
- } else if (r < 0)
- return log_error_errno(r, "Failed to make subvolume read-only: %m");
-
- return 0;
-}
-
-int import_make_read_only(const char *path) {
- _cleanup_close_ int fd = 1;
-
- fd = open(path, O_RDONLY|O_NOCTTY|O_CLOEXEC);
- if (fd < 0)
- return log_error_errno(errno, "Failed to open %s: %m", path);
-
- return import_make_read_only_fd(fd);
-}
-
-int import_fork_tar_x(const char *path, pid_t *ret) {
- _cleanup_close_pair_ int pipefd[2] = { -1, -1 };
- pid_t pid;
- int r;
-
- assert(path);
- assert(ret);
-
- if (pipe2(pipefd, O_CLOEXEC) < 0)
- return log_error_errno(errno, "Failed to create pipe for tar: %m");
-
- pid = fork();
- if (pid < 0)
- return log_error_errno(errno, "Failed to fork off tar: %m");
-
- if (pid == 0) {
- int null_fd;
- uint64_t retain =
- (1ULL << CAP_CHOWN) |
- (1ULL << CAP_FOWNER) |
- (1ULL << CAP_FSETID) |
- (1ULL << CAP_MKNOD) |
- (1ULL << CAP_SETFCAP) |
- (1ULL << CAP_DAC_OVERRIDE);
-
- /* Child */
-
- (void) reset_all_signal_handlers();
- (void) reset_signal_mask();
- assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0);
-
- pipefd[1] = safe_close(pipefd[1]);
-
- if (dup2(pipefd[0], STDIN_FILENO) != STDIN_FILENO) {
- log_error_errno(errno, "Failed to dup2() fd: %m");
- _exit(EXIT_FAILURE);
- }
-
- if (pipefd[0] != STDIN_FILENO)
- pipefd[0] = safe_close(pipefd[0]);
-
- null_fd = open("/dev/null", O_WRONLY|O_NOCTTY);
- if (null_fd < 0) {
- log_error_errno(errno, "Failed to open /dev/null: %m");
- _exit(EXIT_FAILURE);
- }
-
- if (dup2(null_fd, STDOUT_FILENO) != STDOUT_FILENO) {
- log_error_errno(errno, "Failed to dup2() fd: %m");
- _exit(EXIT_FAILURE);
- }
-
- if (null_fd != STDOUT_FILENO)
- null_fd = safe_close(null_fd);
-
- fd_cloexec(STDIN_FILENO, false);
- fd_cloexec(STDOUT_FILENO, false);
- fd_cloexec(STDERR_FILENO, false);
-
- if (unshare(CLONE_NEWNET) < 0)
- log_error_errno(errno, "Failed to lock tar into network namespace, ignoring: %m");
-
- r = capability_bounding_set_drop(retain, true);
- if (r < 0)
- log_error_errno(r, "Failed to drop capabilities, ignoring: %m");
-
- execlp("tar", "tar", "--numeric-owner", "-C", path, "-px", "--xattrs", "--xattrs-include=*", NULL);
- log_error_errno(errno, "Failed to execute tar: %m");
- _exit(EXIT_FAILURE);
- }
-
- pipefd[0] = safe_close(pipefd[0]);
- r = pipefd[1];
- pipefd[1] = -1;
-
- *ret = pid;
-
- return r;
-}
-
-int import_fork_tar_c(const char *path, pid_t *ret) {
- _cleanup_close_pair_ int pipefd[2] = { -1, -1 };
- pid_t pid;
- int r;
-
- assert(path);
- assert(ret);
-
- if (pipe2(pipefd, O_CLOEXEC) < 0)
- return log_error_errno(errno, "Failed to create pipe for tar: %m");
-
- pid = fork();
- if (pid < 0)
- return log_error_errno(errno, "Failed to fork off tar: %m");
-
- if (pid == 0) {
- int null_fd;
- uint64_t retain = (1ULL << CAP_DAC_OVERRIDE);
-
- /* Child */
-
- (void) reset_all_signal_handlers();
- (void) reset_signal_mask();
- assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0);
-
- pipefd[0] = safe_close(pipefd[0]);
-
- if (dup2(pipefd[1], STDOUT_FILENO) != STDOUT_FILENO) {
- log_error_errno(errno, "Failed to dup2() fd: %m");
- _exit(EXIT_FAILURE);
- }
-
- if (pipefd[1] != STDOUT_FILENO)
- pipefd[1] = safe_close(pipefd[1]);
-
- null_fd = open("/dev/null", O_RDONLY|O_NOCTTY);
- if (null_fd < 0) {
- log_error_errno(errno, "Failed to open /dev/null: %m");
- _exit(EXIT_FAILURE);
- }
-
- if (dup2(null_fd, STDIN_FILENO) != STDIN_FILENO) {
- log_error_errno(errno, "Failed to dup2() fd: %m");
- _exit(EXIT_FAILURE);
- }
-
- if (null_fd != STDIN_FILENO)
- null_fd = safe_close(null_fd);
-
- fd_cloexec(STDIN_FILENO, false);
- fd_cloexec(STDOUT_FILENO, false);
- fd_cloexec(STDERR_FILENO, false);
-
- if (unshare(CLONE_NEWNET) < 0)
- log_error_errno(errno, "Failed to lock tar into network namespace, ignoring: %m");
-
- r = capability_bounding_set_drop(retain, true);
- if (r < 0)
- log_error_errno(r, "Failed to drop capabilities, ignoring: %m");
-
- execlp("tar", "tar", "-C", path, "-c", "--xattrs", "--xattrs-include=*", ".", NULL);
- log_error_errno(errno, "Failed to execute tar: %m");
- _exit(EXIT_FAILURE);
- }
-
- pipefd[1] = safe_close(pipefd[1]);
- r = pipefd[0];
- pipefd[0] = -1;
-
- *ret = pid;
-
- return r;
-}
diff --git a/src/grp-machine/grp-import/systemd-import/import-common.h b/src/grp-machine/grp-import/systemd-import/import-common.h
deleted file mode 100644
index 3abd62e8c3..0000000000
--- a/src/grp-machine/grp-import/systemd-import/import-common.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-/***
- This file is part of systemd.
-
- Copyright 2015 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <sys/types.h>
-
-int import_make_read_only_fd(int fd);
-int import_make_read_only(const char *path);
-
-int import_fork_tar_c(const char *path, pid_t *ret);
-int import_fork_tar_x(const char *path, pid_t *ret);
diff --git a/src/grp-machine/grp-import/systemd-import/import-compress.c b/src/grp-machine/grp-import/systemd-import/import-compress.c
deleted file mode 100644
index 4f1a9891e8..0000000000
--- a/src/grp-machine/grp-import/systemd-import/import-compress.c
+++ /dev/null
@@ -1,470 +0,0 @@
-/***
- This file is part of systemd.
-
- Copyright 2015 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include "basic/string-table.h"
-#include "basic/util.h"
-
-#include "import-compress.h"
-
-void import_compress_free(ImportCompress *c) {
- assert(c);
-
- if (c->type == IMPORT_COMPRESS_XZ)
- lzma_end(&c->xz);
- else if (c->type == IMPORT_COMPRESS_GZIP) {
- if (c->encoding)
- deflateEnd(&c->gzip);
- else
- inflateEnd(&c->gzip);
- } else if (c->type == IMPORT_COMPRESS_BZIP2) {
- if (c->encoding)
- BZ2_bzCompressEnd(&c->bzip2);
- else
- BZ2_bzDecompressEnd(&c->bzip2);
- }
-
- c->type = IMPORT_COMPRESS_UNKNOWN;
-}
-
-int import_uncompress_detect(ImportCompress *c, const void *data, size_t size) {
- static const uint8_t xz_signature[] = {
- 0xfd, '7', 'z', 'X', 'Z', 0x00
- };
- static const uint8_t gzip_signature[] = {
- 0x1f, 0x8b
- };
- static const uint8_t bzip2_signature[] = {
- 'B', 'Z', 'h'
- };
-
- int r;
-
- assert(c);
-
- if (c->type != IMPORT_COMPRESS_UNKNOWN)
- return 1;
-
- if (size < MAX3(sizeof(xz_signature),
- sizeof(gzip_signature),
- sizeof(bzip2_signature)))
- return 0;
-
- assert(data);
-
- if (memcmp(data, xz_signature, sizeof(xz_signature)) == 0) {
- lzma_ret xzr;
-
- xzr = lzma_stream_decoder(&c->xz, UINT64_MAX, LZMA_TELL_UNSUPPORTED_CHECK);
- if (xzr != LZMA_OK)
- return -EIO;
-
- c->type = IMPORT_COMPRESS_XZ;
-
- } else if (memcmp(data, gzip_signature, sizeof(gzip_signature)) == 0) {
- r = inflateInit2(&c->gzip, 15+16);
- if (r != Z_OK)
- return -EIO;
-
- c->type = IMPORT_COMPRESS_GZIP;
-
- } else if (memcmp(data, bzip2_signature, sizeof(bzip2_signature)) == 0) {
- r = BZ2_bzDecompressInit(&c->bzip2, 0, 0);
- if (r != BZ_OK)
- return -EIO;
-
- c->type = IMPORT_COMPRESS_BZIP2;
- } else
- c->type = IMPORT_COMPRESS_UNCOMPRESSED;
-
- c->encoding = false;
-
- return 1;
-}
-
-int import_uncompress(ImportCompress *c, const void *data, size_t size, ImportCompressCallback callback, void *userdata) {
- int r;
-
- assert(c);
- assert(callback);
-
- r = import_uncompress_detect(c, data, size);
- if (r <= 0)
- return r;
-
- if (c->encoding)
- return -EINVAL;
-
- if (size <= 0)
- return 1;
-
- assert(data);
-
- switch (c->type) {
-
- case IMPORT_COMPRESS_UNCOMPRESSED:
- r = callback(data, size, userdata);
- if (r < 0)
- return r;
-
- break;
-
- case IMPORT_COMPRESS_XZ:
- c->xz.next_in = data;
- c->xz.avail_in = size;
-
- while (c->xz.avail_in > 0) {
- uint8_t buffer[16 * 1024];
- lzma_ret lzr;
-
- c->xz.next_out = buffer;
- c->xz.avail_out = sizeof(buffer);
-
- lzr = lzma_code(&c->xz, LZMA_RUN);
- if (lzr != LZMA_OK && lzr != LZMA_STREAM_END)
- return -EIO;
-
- r = callback(buffer, sizeof(buffer) - c->xz.avail_out, userdata);
- if (r < 0)
- return r;
- }
-
- break;
-
- case IMPORT_COMPRESS_GZIP:
- c->gzip.next_in = (void*) data;
- c->gzip.avail_in = size;
-
- while (c->gzip.avail_in > 0) {
- uint8_t buffer[16 * 1024];
-
- c->gzip.next_out = buffer;
- c->gzip.avail_out = sizeof(buffer);
-
- r = inflate(&c->gzip, Z_NO_FLUSH);
- if (r != Z_OK && r != Z_STREAM_END)
- return -EIO;
-
- r = callback(buffer, sizeof(buffer) - c->gzip.avail_out, userdata);
- if (r < 0)
- return r;
- }
-
- break;
-
- case IMPORT_COMPRESS_BZIP2:
- c->bzip2.next_in = (void*) data;
- c->bzip2.avail_in = size;
-
- while (c->bzip2.avail_in > 0) {
- uint8_t buffer[16 * 1024];
-
- c->bzip2.next_out = (char*) buffer;
- c->bzip2.avail_out = sizeof(buffer);
-
- r = BZ2_bzDecompress(&c->bzip2);
- if (r != BZ_OK && r != BZ_STREAM_END)
- return -EIO;
-
- r = callback(buffer, sizeof(buffer) - c->bzip2.avail_out, userdata);
- if (r < 0)
- return r;
- }
-
- break;
-
- default:
- assert_not_reached("Unknown compression");
- }
-
- return 1;
-}
-
-int import_compress_init(ImportCompress *c, ImportCompressType t) {
- int r;
-
- assert(c);
-
- switch (t) {
-
- case IMPORT_COMPRESS_XZ: {
- lzma_ret xzr;
-
- xzr = lzma_easy_encoder(&c->xz, LZMA_PRESET_DEFAULT, LZMA_CHECK_CRC64);
- if (xzr != LZMA_OK)
- return -EIO;
-
- c->type = IMPORT_COMPRESS_XZ;
- break;
- }
-
- case IMPORT_COMPRESS_GZIP:
- r = deflateInit2(&c->gzip, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 + 16, 8, Z_DEFAULT_STRATEGY);
- if (r != Z_OK)
- return -EIO;
-
- c->type = IMPORT_COMPRESS_GZIP;
- break;
-
- case IMPORT_COMPRESS_BZIP2:
- r = BZ2_bzCompressInit(&c->bzip2, 9, 0, 0);
- if (r != BZ_OK)
- return -EIO;
-
- c->type = IMPORT_COMPRESS_BZIP2;
- break;
-
- case IMPORT_COMPRESS_UNCOMPRESSED:
- c->type = IMPORT_COMPRESS_UNCOMPRESSED;
- break;
-
- default:
- return -EOPNOTSUPP;
- }
-
- c->encoding = true;
- return 0;
-}
-
-static int enlarge_buffer(void **buffer, size_t *buffer_size, size_t *buffer_allocated) {
- size_t l;
- void *p;
-
- if (*buffer_allocated > *buffer_size)
- return 0;
-
- l = MAX(16*1024U, (*buffer_size * 2));
- p = realloc(*buffer, l);
- if (!p)
- return -ENOMEM;
-
- *buffer = p;
- *buffer_allocated = l;
-
- return 1;
-}
-
-int import_compress(ImportCompress *c, const void *data, size_t size, void **buffer, size_t *buffer_size, size_t *buffer_allocated) {
- int r;
-
- assert(c);
- assert(buffer);
- assert(buffer_size);
- assert(buffer_allocated);
-
- if (!c->encoding)
- return -EINVAL;
-
- if (size <= 0)
- return 0;
-
- assert(data);
-
- *buffer_size = 0;
-
- switch (c->type) {
-
- case IMPORT_COMPRESS_XZ:
-
- c->xz.next_in = data;
- c->xz.avail_in = size;
-
- while (c->xz.avail_in > 0) {
- lzma_ret lzr;
-
- r = enlarge_buffer(buffer, buffer_size, buffer_allocated);
- if (r < 0)
- return r;
-
- c->xz.next_out = (uint8_t*) *buffer + *buffer_size;
- c->xz.avail_out = *buffer_allocated - *buffer_size;
-
- lzr = lzma_code(&c->xz, LZMA_RUN);
- if (lzr != LZMA_OK)
- return -EIO;
-
- *buffer_size += (*buffer_allocated - *buffer_size) - c->xz.avail_out;
- }
-
- break;
-
- case IMPORT_COMPRESS_GZIP:
-
- c->gzip.next_in = (void*) data;
- c->gzip.avail_in = size;
-
- while (c->gzip.avail_in > 0) {
- r = enlarge_buffer(buffer, buffer_size, buffer_allocated);
- if (r < 0)
- return r;
-
- c->gzip.next_out = (uint8_t*) *buffer + *buffer_size;
- c->gzip.avail_out = *buffer_allocated - *buffer_size;
-
- r = deflate(&c->gzip, Z_NO_FLUSH);
- if (r != Z_OK)
- return -EIO;
-
- *buffer_size += (*buffer_allocated - *buffer_size) - c->gzip.avail_out;
- }
-
- break;
-
- case IMPORT_COMPRESS_BZIP2:
-
- c->bzip2.next_in = (void*) data;
- c->bzip2.avail_in = size;
-
- while (c->bzip2.avail_in > 0) {
- r = enlarge_buffer(buffer, buffer_size, buffer_allocated);
- if (r < 0)
- return r;
-
- c->bzip2.next_out = (void*) ((uint8_t*) *buffer + *buffer_size);
- c->bzip2.avail_out = *buffer_allocated - *buffer_size;
-
- r = BZ2_bzCompress(&c->bzip2, BZ_RUN);
- if (r != BZ_RUN_OK)
- return -EIO;
-
- *buffer_size += (*buffer_allocated - *buffer_size) - c->bzip2.avail_out;
- }
-
- break;
-
- case IMPORT_COMPRESS_UNCOMPRESSED:
-
- if (*buffer_allocated < size) {
- void *p;
-
- p = realloc(*buffer, size);
- if (!p)
- return -ENOMEM;
-
- *buffer = p;
- *buffer_allocated = size;
- }
-
- memcpy(*buffer, data, size);
- *buffer_size = size;
- break;
-
- default:
- return -EOPNOTSUPP;
- }
-
- return 0;
-}
-
-int import_compress_finish(ImportCompress *c, void **buffer, size_t *buffer_size, size_t *buffer_allocated) {
- int r;
-
- assert(c);
- assert(buffer);
- assert(buffer_size);
- assert(buffer_allocated);
-
- if (!c->encoding)
- return -EINVAL;
-
- *buffer_size = 0;
-
- switch (c->type) {
-
- case IMPORT_COMPRESS_XZ: {
- lzma_ret lzr;
-
- c->xz.avail_in = 0;
-
- do {
- r = enlarge_buffer(buffer, buffer_size, buffer_allocated);
- if (r < 0)
- return r;
-
- c->xz.next_out = (uint8_t*) *buffer + *buffer_size;
- c->xz.avail_out = *buffer_allocated - *buffer_size;
-
- lzr = lzma_code(&c->xz, LZMA_FINISH);
- if (lzr != LZMA_OK && lzr != LZMA_STREAM_END)
- return -EIO;
-
- *buffer_size += (*buffer_allocated - *buffer_size) - c->xz.avail_out;
- } while (lzr != LZMA_STREAM_END);
-
- break;
- }
-
- case IMPORT_COMPRESS_GZIP:
- c->gzip.avail_in = 0;
-
- do {
- r = enlarge_buffer(buffer, buffer_size, buffer_allocated);
- if (r < 0)
- return r;
-
- c->gzip.next_out = (uint8_t*) *buffer + *buffer_size;
- c->gzip.avail_out = *buffer_allocated - *buffer_size;
-
- r = deflate(&c->gzip, Z_FINISH);
- if (r != Z_OK && r != Z_STREAM_END)
- return -EIO;
-
- *buffer_size += (*buffer_allocated - *buffer_size) - c->gzip.avail_out;
- } while (r != Z_STREAM_END);
-
- break;
-
- case IMPORT_COMPRESS_BZIP2:
- c->bzip2.avail_in = 0;
-
- do {
- r = enlarge_buffer(buffer, buffer_size, buffer_allocated);
- if (r < 0)
- return r;
-
- c->bzip2.next_out = (void*) ((uint8_t*) *buffer + *buffer_size);
- c->bzip2.avail_out = *buffer_allocated - *buffer_size;
-
- r = BZ2_bzCompress(&c->bzip2, BZ_FINISH);
- if (r != BZ_FINISH_OK && r != BZ_STREAM_END)
- return -EIO;
-
- *buffer_size += (*buffer_allocated - *buffer_size) - c->bzip2.avail_out;
- } while (r != BZ_STREAM_END);
-
- break;
-
- case IMPORT_COMPRESS_UNCOMPRESSED:
- break;
-
- default:
- return -EOPNOTSUPP;
- }
-
- return 0;
-}
-
-static const char* const import_compress_type_table[_IMPORT_COMPRESS_TYPE_MAX] = {
- [IMPORT_COMPRESS_UNKNOWN] = "unknown",
- [IMPORT_COMPRESS_UNCOMPRESSED] = "uncompressed",
- [IMPORT_COMPRESS_XZ] = "xz",
- [IMPORT_COMPRESS_GZIP] = "gzip",
- [IMPORT_COMPRESS_BZIP2] = "bzip2",
-};
-
-DEFINE_STRING_TABLE_LOOKUP(import_compress_type, ImportCompressType);
diff --git a/src/grp-machine/grp-import/systemd-import/import-compress.h b/src/grp-machine/grp-import/systemd-import/import-compress.h
deleted file mode 100644
index 130afb4cd0..0000000000
--- a/src/grp-machine/grp-import/systemd-import/import-compress.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#pragma once
-
-/***
- This file is part of systemd.
-
- Copyright 2015 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <bzlib.h>
-#include <lzma.h>
-#include <sys/types.h>
-#include <zlib.h>
-
-#include "basic/macro.h"
-
-typedef enum ImportCompressType {
- IMPORT_COMPRESS_UNKNOWN,
- IMPORT_COMPRESS_UNCOMPRESSED,
- IMPORT_COMPRESS_XZ,
- IMPORT_COMPRESS_GZIP,
- IMPORT_COMPRESS_BZIP2,
- _IMPORT_COMPRESS_TYPE_MAX,
- _IMPORT_COMPRESS_TYPE_INVALID = -1,
-} ImportCompressType;
-
-typedef struct ImportCompress {
- ImportCompressType type;
- bool encoding;
- union {
- lzma_stream xz;
- z_stream gzip;
- bz_stream bzip2;
- };
-} ImportCompress;
-
-typedef int (*ImportCompressCallback)(const void *data, size_t size, void *userdata);
-
-void import_compress_free(ImportCompress *c);
-
-int import_uncompress_detect(ImportCompress *c, const void *data, size_t size);
-int import_uncompress(ImportCompress *c, const void *data, size_t size, ImportCompressCallback callback, void *userdata);
-
-int import_compress_init(ImportCompress *c, ImportCompressType t);
-int import_compress(ImportCompress *c, const void *data, size_t size, void **buffer, size_t *buffer_size, size_t *buffer_allocated);
-int import_compress_finish(ImportCompress *c, void **buffer, size_t *buffer_size, size_t *buffer_allocated);
-
-const char* import_compress_type_to_string(ImportCompressType t) _const_;
-ImportCompressType import_compress_type_from_string(const char *s) _pure_;