diff options
author | Linus Groh <mail@linusgroh.de> | 2020-08-05 20:48:28 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-08-06 20:41:13 +0200 |
commit | 4565d2d415443e6d7bec65593600042d890cb6eb (patch) | |
tree | c0528684cc5e86801d69bdf5a2e04dfd4b5f226e /Userland/purge.cpp | |
parent | 646f6165e25921c07596c9c9790a5d3feabcde2e (diff) | |
download | serenity-4565d2d415443e6d7bec65593600042d890cb6eb.zip |
Userland: Use Core::ArgsParser for 'purge'
Diffstat (limited to 'Userland/purge.cpp')
-rw-r--r-- | Userland/purge.cpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/Userland/purge.cpp b/Userland/purge.cpp index 77032a3d7e..95257ec563 100644 --- a/Userland/purge.cpp +++ b/Userland/purge.cpp @@ -25,6 +25,7 @@ */ #include <Kernel/API/Syscall.h> +#include <LibCore/ArgsParser.h> #include <serenity.h> #include <stdio.h> #include <string.h> @@ -32,18 +33,23 @@ int main(int argc, char** argv) { int mode = 0; - if (argc == 1) { - mode = PURGE_ALL_VOLATILE | PURGE_ALL_CLEAN_INODE; - } else { - if (!strcmp(argv[1], "-c")) { - mode = PURGE_ALL_CLEAN_INODE; - } else if (!strcmp(argv[1], "-v")) { - mode = PURGE_ALL_VOLATILE; - } else { - fprintf(stderr, "Unknown option: %s\n", argv[1]); - return 1; - } - } + + bool purge_all_volatile = false; + bool purge_all_clean_inode = false; + + Core::ArgsParser args_parser; + args_parser.add_option(purge_all_volatile, "Mode PURGE_ALL_VOLATILE", nullptr, 'v'); + args_parser.add_option(purge_all_clean_inode, "Mode PURGE_ALL_CLEAN_INODE", nullptr, 'c'); + args_parser.parse(argc, argv); + + if (!purge_all_volatile && !purge_all_clean_inode) + purge_all_volatile = purge_all_clean_inode = true; + + if (purge_all_volatile) + mode |= PURGE_ALL_VOLATILE; + if (purge_all_clean_inode) + mode |= PURGE_ALL_CLEAN_INODE; + int purged_page_count = purge(mode); if (purged_page_count < 0) { perror("purge"); |