diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2022-11-22 14:45:32 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2022-11-22 14:45:32 +0100 |
commit | 168ef9be32ad754d7bcb38ed70787237fc12630d (patch) | |
tree | 39d567fa667b2f170783329a07481769dd538d43 /tests/libfstree/sort_file.c | |
parent | 61a0dd71c4b69c21ee4aacdc0459dba58504a24a (diff) |
Move gensquashfs specific code from libfstree to gensquashfs
The "from dir" and from "from file" code, as well as the "sort file"
code is specific to gensquashfs, so move them there and the test
cases as well.
The medium term idea is to reduce libfstree to a stub, merge it into
the generic writer and ultimately hoist that into libsquashfs.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tests/libfstree/sort_file.c')
-rw-r--r-- | tests/libfstree/sort_file.c | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/tests/libfstree/sort_file.c b/tests/libfstree/sort_file.c deleted file mode 100644 index 78d1606..0000000 --- a/tests/libfstree/sort_file.c +++ /dev/null @@ -1,217 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * sort_file.c - * - * Copyright (C) 2021 David Oberhollenzer <goliath@infraroot.at> - */ -#include "config.h" - -#include "sqfs/block.h" -#include "fstree.h" -#include "util/test.h" -#include "util/util.h" - -static const char *listing = -"dir /bin 0755 0 0\n" -"dir /lib 0755 0 0\n" -"dir /usr 0755 0 0\n" -"dir /usr/share 0755 0 0\n" -"\n" -"file /bin/chown 0755 0 0\n" -"file /bin/ls 0755 0 0\n" -"file /bin/chmod 0755 0 0\n" -"file /bin/dir 0755 0 0\n" -"file /bin/cp 0755 0 0\n" -"file /bin/dd 0755 0 0\n" -"file /bin/ln 0755 0 0\n" -"file /bin/mkdir 0755 0 0\n" -"file /bin/mknod 0755 0 0\n" -"\n" -"file /lib/libssl.so 0755 0 0\n" -"file /lib/libfoobar.so 0755 0 0\n" -"file /lib/libwhatever.so 0755 0 0\n" -"\n" -"file /usr/share/bla.txt 0644 0 0\n"; - -static const char *sort_file = -"# Blockwise reverse the order of the /bin files\n" -" 10 [glob] /bin/mk*\n" -" 20 [glob] /bin/ch*\n" -" 30 [glob] /bin/d*\n" -" 40 /bin/cp\n" -" 50 [glob] /bin/*\n" -"\n" -"# Make this file appear first\n" -" -10000 [dont_compress,dont_fragment,align] /usr/share/bla.txt"; - -static const char *initial_order[] = { - "bin/chmod", - "bin/chown", - "bin/cp", - "bin/dd", - "bin/dir", - "bin/ln", - "bin/ls", - "bin/mkdir", - "bin/mknod", - "lib/libfoobar.so", - "lib/libssl.so", - "lib/libwhatever.so", - "usr/share/bla.txt", -}; - -static const char *after_sort_order[] = { - "usr/share/bla.txt", - "lib/libfoobar.so", - "lib/libssl.so", - "lib/libwhatever.so", - "bin/mkdir", - "bin/mknod", - "bin/chmod", - "bin/chown", - "bin/dd", - "bin/dir", - "bin/cp", - "bin/ln", - "bin/ls", -}; - -static sqfs_s64 priorities[] = { - -10000, - 0, - 0, - 0, - 10, - 10, - 20, - 20, - 30, - 30, - 40, - 50, - 50, -}; - -static int flags[] = { - SQFS_BLK_DONT_COMPRESS | SQFS_BLK_ALIGN | SQFS_BLK_DONT_FRAGMENT, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -}; - -/*****************************************************************************/ - -static sqfs_u8 temp_buffer[2048]; -static const char *input_file = NULL; - -static void destroy_noop(sqfs_object_t *obj) -{ - (void)obj; -} - -static int memfile_load(istream_t *strm) -{ - strcpy((char *)temp_buffer, input_file); - strm->eof = true; - strm->buffer_used = strlen(input_file); - return 0; -} - -static const char *get_filename(istream_t *strm) -{ - (void)strm; - return "memstream"; -} - -static istream_t memstream = { - .base = { - .destroy = destroy_noop, - }, - - .buffer_used = 0, - .buffer_offset = 0, - .eof = false, - .buffer = temp_buffer, - - .precache = memfile_load, - .get_filename = get_filename, -}; - -/*****************************************************************************/ - -int main(int argc, char **argv) -{ - file_info_t *fi; - fstree_t fs; - size_t i; - (void)argc; (void)argv; - - input_file = listing; - memstream.buffer_used = 0; - memstream.buffer_offset = 0; - memstream.eof = false; - - TEST_ASSERT(fstree_init(&fs, NULL) == 0); - TEST_ASSERT(fstree_from_file_stream(&fs, &memstream, NULL) == 0); - - fstree_post_process(&fs); - - for (i = 0, fi = fs.files; fi != NULL; fi = fi->next, ++i) { - tree_node_t *n = container_of(fi, tree_node_t, data.file); - char *path = fstree_get_path(n); - int ret; - - TEST_NOT_NULL(path); - - ret = canonicalize_name(path); - TEST_EQUAL_I(ret, 0); - - TEST_STR_EQUAL(initial_order[i], path); - free(path); - - TEST_EQUAL_I(fi->priority, 0); - TEST_EQUAL_I(fi->flags, 0); - } - - TEST_EQUAL_UI(i, sizeof(initial_order) / sizeof(initial_order[0])); - - - input_file = sort_file; - memstream.buffer_used = 0; - memstream.buffer_offset = 0; - memstream.eof = false; - - TEST_ASSERT(fstree_sort_files(&fs, &memstream) == 0); - - for (i = 0, fi = fs.files; fi != NULL; fi = fi->next, ++i) { - tree_node_t *n = container_of(fi, tree_node_t, data.file); - char *path = fstree_get_path(n); - int ret; - - TEST_NOT_NULL(path); - - ret = canonicalize_name(path); - TEST_EQUAL_I(ret, 0); - - TEST_STR_EQUAL(after_sort_order[i], path); - free(path); - - TEST_EQUAL_I(fi->priority, priorities[i]); - TEST_EQUAL_I(fi->flags, flags[i]); - } - - TEST_EQUAL_UI(i, sizeof(after_sort_order) / - sizeof(after_sort_order[0])); - - fstree_cleanup(&fs); - return EXIT_SUCCESS; -} |