diff options
author | Ryo Nakamura <upa@haeena.net> | 2023-02-25 22:17:29 +0900 |
---|---|---|
committer | Ryo Nakamura <upa@haeena.net> | 2023-02-25 22:17:29 +0900 |
commit | 1be9b70808ca235cd784d66efa92ecd2ce8c4e86 (patch) | |
tree | 77dd580ffb3749c8bd8aeb45f5603afabb866d4a /src/test.c | |
parent | b4c021c954866aade1ea893b04f307afa7295bd7 (diff) |
start to impliment mscp as a library
this commit starts to refactor file.h|c to path.h|c and
add mscp.c|h. not completed yet.
Diffstat (limited to 'src/test.c')
-rw-r--r-- | src/test.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/test.c b/src/test.c new file mode 100644 index 0000000..2452b6e --- /dev/null +++ b/src/test.c @@ -0,0 +1,68 @@ +#include <util.h> +#include <path.h> + +int path_walk_test(int argc, char **argv) +{ + struct list_head path_list, chunk_list, tmp; + mstat src, dst; + bool dst_is_dir = false, src_is_dir = false; + int ret, n; + + + if (mscp_stat(argv[argc - 1], &dst, NULL) == 0) { + if (mstat_is_dir(dst)) + dst_is_dir = true; + } + + INIT_LIST_HEAD(&path_list); + INIT_LIST_HEAD(&chunk_list); + + for (n = 1; n < argc - 1; n++) { + if (mscp_stat(argv[n], &src, NULL) < 0) { + pr_err("%s not found: %s\n", argv[n], strerrno()); + return -1; + } + src_is_dir = mstat_is_dir(src); + + INIT_LIST_HEAD(&tmp); + ret = walk_src_path(NULL, argv[n], &tmp); + if (ret < 0) + return ret; + + ret = resolve_dst_path(NULL, argv[n], argv[argc - 1], &tmp, + mstat_is_dir(src), dst_is_dir); + if (ret < 0) + return ret; + + list_splice_tail(&tmp, &path_list); + } + + path_dump(&path_list); + + ret = prepare_chunk(&path_list, &chunk_list, 4, 1024 * 1024, 0); + if (ret < 0) + return ret; + + //chunk_dump(&chunk_list); + + + return 0; +} + +void usage() +{ + printf("test [SRC_PATH] ... [DST_PATH]\n"); +} + +int main(int argc, char **argv) +{ + if (argc < 3) { + usage(); + return 1; + } + + if (path_walk_test(argc, argv) < 0) + return 1; + + return 0; +} |