Serenity Operating System
at master 39 lines 1.1 kB view raw
1/* 2 * Copyright (c) 2020, Tom Lebreux <tomlebreux@hotmail.com> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <AK/Base64.h> 8#include <LibCore/ArgsParser.h> 9#include <LibCore/File.h> 10#include <LibCore/System.h> 11#include <LibMain/Main.h> 12 13ErrorOr<int> serenity_main(Main::Arguments arguments) 14{ 15 TRY(Core::System::pledge("stdio rpath")); 16 17 bool decode = false; 18 StringView filepath = {}; 19 20 Core::ArgsParser args_parser; 21 args_parser.add_option(decode, "Decode data", "decode", 'd'); 22 args_parser.add_positional_argument(filepath, "", "file", Core::ArgsParser::Required::No); 23 args_parser.parse(arguments); 24 25 auto file = TRY(Core::File::open_file_or_standard_stream(filepath, Core::File::OpenMode::Read)); 26 ByteBuffer buffer = TRY(file->read_until_eof()); 27 28 TRY(Core::System::pledge("stdio")); 29 30 if (decode) { 31 auto decoded = TRY(decode_base64(buffer)); 32 out("{}", StringView(decoded.bytes())); 33 return 0; 34 } 35 36 auto encoded = TRY(encode_base64(buffer)); 37 outln("{}", encoded); 38 return 0; 39}