Newer
Older
minerva / Userland / Utilities / copy_mount.cpp
@minerva minerva on 13 Jul 1017 bytes Initial commit
/*
 * Copyright (c) 2024, Liav A. <liavalb@hotmail.co.il>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#include <LibCore/ArgsParser.h>
#include <LibCore/System.h>
#include <LibMain/Main.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

ErrorOr<int> minerva_main(Main::Arguments arguments)
{
    StringView original_mountpoint;
    StringView target_mountpoint;

    Core::ArgsParser args_parser;
    // FIXME: Possibly allow to pass VFS root context IDs and flags?
    args_parser.add_positional_argument(original_mountpoint, "Source path", "source", Core::ArgsParser::Required::Yes);
    args_parser.add_positional_argument(target_mountpoint, "Mount point", "mountpoint", Core::ArgsParser::Required::Yes);
    args_parser.parse(arguments);

    VERIFY(!(original_mountpoint.is_null() || original_mountpoint.is_empty()));
    VERIFY(!(target_mountpoint.is_null() || target_mountpoint.is_empty()));
    TRY(Core::System::copy_mount({}, {}, original_mountpoint, target_mountpoint, 0));
    return 0;
}