소스 검색

asctl: Port to LibMain :^)

Kenneth Myhra 3 년 전
부모
커밋
8c4625e3b1
2개의 변경된 파일18개의 추가작업 그리고 17개의 파일을 삭제
  1. 1 1
      Userland/Utilities/CMakeLists.txt
  2. 17 16
      Userland/Utilities/asctl.cpp

+ 1 - 1
Userland/Utilities/CMakeLists.txt

@@ -54,7 +54,7 @@ endforeach()
 target_link_libraries(allocate LibMain)
 target_link_libraries(allocate LibMain)
 target_link_libraries(aplay LibAudio LibMain)
 target_link_libraries(aplay LibAudio LibMain)
 target_link_libraries(arp LibMain)
 target_link_libraries(arp LibMain)
-target_link_libraries(asctl LibAudio)
+target_link_libraries(asctl LibAudio LibMain)
 target_link_libraries(base64 LibMain)
 target_link_libraries(base64 LibMain)
 target_link_libraries(basename LibMain)
 target_link_libraries(basename LibMain)
 target_link_libraries(bt LibSymbolication)
 target_link_libraries(bt LibSymbolication)

+ 17 - 16
Userland/Utilities/asctl.cpp

@@ -13,6 +13,7 @@
 #include <LibCore/ArgsParser.h>
 #include <LibCore/ArgsParser.h>
 #include <LibCore/EventLoop.h>
 #include <LibCore/EventLoop.h>
 #include <LibCore/File.h>
 #include <LibCore/File.h>
+#include <LibMain/Main.h>
 #include <math.h>
 #include <math.h>
 #include <stdio.h>
 #include <stdio.h>
 #include <sys/ioctl.h>
 #include <sys/ioctl.h>
@@ -24,31 +25,31 @@ enum AudioVariable : u32 {
 };
 };
 
 
 // asctl: audio server control utility
 // asctl: audio server control utility
-int main(int argc, char** argv)
+ErrorOr<int> serenity_main(Main::Arguments arguments)
 {
 {
     Core::EventLoop loop;
     Core::EventLoop loop;
     auto audio_client = Audio::ClientConnection::construct();
     auto audio_client = Audio::ClientConnection::construct();
 
 
     String command = String::empty();
     String command = String::empty();
-    Vector<StringView> arguments;
+    Vector<StringView> command_arguments;
     bool human_mode = false;
     bool human_mode = false;
 
 
     Core::ArgsParser args_parser;
     Core::ArgsParser args_parser;
     args_parser.set_general_help("Send control signals to the audio server and hardware.");
     args_parser.set_general_help("Send control signals to the audio server and hardware.");
     args_parser.add_option(human_mode, "Print human-readable output", "human-readable", 'h');
     args_parser.add_option(human_mode, "Print human-readable output", "human-readable", 'h');
     args_parser.add_positional_argument(command, "Command, either (g)et or (s)et\n\n\tThe get command accepts a list of variables to print.\n\tThey are printed in the given order.\n\tIf no value is specified, all are printed.\n\n\tThe set command accepts a any number of variables\n\tfollowed by the value they should be set to.\n\n\tPossible variables are (v)olume, (m)ute, sample(r)ate.\n", "command");
     args_parser.add_positional_argument(command, "Command, either (g)et or (s)et\n\n\tThe get command accepts a list of variables to print.\n\tThey are printed in the given order.\n\tIf no value is specified, all are printed.\n\n\tThe set command accepts a any number of variables\n\tfollowed by the value they should be set to.\n\n\tPossible variables are (v)olume, (m)ute, sample(r)ate.\n", "command");
-    args_parser.add_positional_argument(arguments, "Arguments for the command", "args", Core::ArgsParser::Required::No);
-    args_parser.parse(argc, argv);
+    args_parser.add_positional_argument(command_arguments, "Arguments for the command", "args", Core::ArgsParser::Required::No);
+    args_parser.parse(arguments);
 
 
     if (command.equals_ignoring_case("get") || command == "g") {
     if (command.equals_ignoring_case("get") || command == "g") {
         // Get variables
         // Get variables
         Vector<AudioVariable> values_to_print;
         Vector<AudioVariable> values_to_print;
-        if (arguments.is_empty()) {
+        if (command_arguments.is_empty()) {
             values_to_print.append(AudioVariable::Volume);
             values_to_print.append(AudioVariable::Volume);
             values_to_print.append(AudioVariable::Mute);
             values_to_print.append(AudioVariable::Mute);
             values_to_print.append(AudioVariable::SampleRate);
             values_to_print.append(AudioVariable::SampleRate);
         } else {
         } else {
-            for (auto& variable : arguments) {
+            for (auto& variable : command_arguments) {
                 if (variable.is_one_of("v"sv, "volume"sv))
                 if (variable.is_one_of("v"sv, "volume"sv))
                     values_to_print.append(AudioVariable::Volume);
                     values_to_print.append(AudioVariable::Volume);
                 else if (variable.is_one_of("m"sv, "mute"sv))
                 else if (variable.is_one_of("m"sv, "mute"sv))
@@ -95,25 +96,25 @@ int main(int argc, char** argv)
     } else if (command.equals_ignoring_case("set") || command == "s") {
     } else if (command.equals_ignoring_case("set") || command == "s") {
         // Set variables
         // Set variables
         HashMap<AudioVariable, Variant<int, bool>> values_to_set;
         HashMap<AudioVariable, Variant<int, bool>> values_to_set;
-        for (size_t i = 0; i < arguments.size(); ++i) {
-            if (i == arguments.size() - 1) {
+        for (size_t i = 0; i < command_arguments.size(); ++i) {
+            if (i == command_arguments.size() - 1) {
                 warnln("Error: value missing for last variable");
                 warnln("Error: value missing for last variable");
                 return 1;
                 return 1;
             }
             }
-            auto& variable = arguments[i];
+            auto& variable = command_arguments[i];
             if (variable.is_one_of("v"sv, "volume"sv)) {
             if (variable.is_one_of("v"sv, "volume"sv)) {
-                auto volume = arguments[++i].to_int();
+                auto volume = command_arguments[++i].to_int();
                 if (!volume.has_value()) {
                 if (!volume.has_value()) {
-                    warnln("Error: {} is not an integer volume", arguments[i - 1]);
+                    warnln("Error: {} is not an integer volume", command_arguments[i - 1]);
                     return 1;
                     return 1;
                 }
                 }
                 if (volume.value() < 0 || volume.value() > 100) {
                 if (volume.value() < 0 || volume.value() > 100) {
-                    warnln("Error: {} is not between 0 and 100", arguments[i - 1]);
+                    warnln("Error: {} is not between 0 and 100", command_arguments[i - 1]);
                     return 1;
                     return 1;
                 }
                 }
                 values_to_set.set(AudioVariable::Volume, volume.value());
                 values_to_set.set(AudioVariable::Volume, volume.value());
             } else if (variable.is_one_of("m"sv, "mute"sv)) {
             } else if (variable.is_one_of("m"sv, "mute"sv)) {
-                auto& mute_text = arguments[++i];
+                auto& mute_text = command_arguments[++i];
                 bool mute;
                 bool mute;
                 if (mute_text.equals_ignoring_case("true") || mute_text == "1") {
                 if (mute_text.equals_ignoring_case("true") || mute_text == "1") {
                     mute = true;
                     mute = true;
@@ -125,14 +126,14 @@ int main(int argc, char** argv)
                 }
                 }
                 values_to_set.set(AudioVariable::Mute, mute);
                 values_to_set.set(AudioVariable::Mute, mute);
             } else if (variable.is_one_of("r"sv, "samplerate"sv)) {
             } else if (variable.is_one_of("r"sv, "samplerate"sv)) {
-                auto sample_rate = arguments[++i].to_int();
+                auto sample_rate = command_arguments[++i].to_int();
                 if (!sample_rate.has_value()) {
                 if (!sample_rate.has_value()) {
-                    warnln("Error: {} is not an integer sample rate", arguments[i - 1]);
+                    warnln("Error: {} is not an integer sample rate", command_arguments[i - 1]);
                     return 1;
                     return 1;
                 }
                 }
                 values_to_set.set(AudioVariable::SampleRate, sample_rate.value());
                 values_to_set.set(AudioVariable::SampleRate, sample_rate.value());
             } else {
             } else {
-                warnln("Error: Unrecognized variable {}", arguments[i]);
+                warnln("Error: Unrecognized variable {}", command_arguments[i]);
                 return 1;
                 return 1;
             }
             }
         }
         }