summaryrefslogtreecommitdiff
path: root/src/test.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2023-02-25 22:17:29 +0900
committerRyo Nakamura <upa@haeena.net>2023-02-25 22:17:29 +0900
commit1be9b70808ca235cd784d66efa92ecd2ce8c4e86 (patch)
tree77dd580ffb3749c8bd8aeb45f5603afabb866d4a /src/test.c
parentb4c021c954866aade1ea893b04f307afa7295bd7 (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.c68
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;
+}