forked from SerenityOS/serenity
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
uptime: Bring output closer to Linux/BSDs, and add -p flag
The -p flag is equivalent to the previous behavior: outputting the uptime in a human-readable form. We don't seem to expose the number of online users or the load averages, so those sections are missing from the output compared to those OSes.
- Loading branch information
1 parent
388856d
commit 8faeb13
Showing
2 changed files
with
33 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,28 @@ | ||
/* | ||
* Copyright (c) 2018-2020, Andreas Kling <[email protected]> | ||
* Copyright (c) 2022, Karol Kosek <[email protected]> | ||
* Copyright (c) 2024, Sam Atkins <[email protected]> | ||
* | ||
* SPDX-License-Identifier: BSD-2-Clause | ||
*/ | ||
|
||
#include <AK/NumberFormat.h> | ||
#include <LibCore/ArgsParser.h> | ||
#include <LibCore/DateTime.h> | ||
#include <LibCore/File.h> | ||
#include <LibCore/System.h> | ||
#include <LibMain/Main.h> | ||
|
||
ErrorOr<int> serenity_main(Main::Arguments) | ||
ErrorOr<int> serenity_main(Main::Arguments arguments) | ||
{ | ||
TRY(Core::System::pledge("stdio rpath")); | ||
|
||
bool pretty_output = false; | ||
|
||
Core::ArgsParser args_parser; | ||
args_parser.add_option(pretty_output, "Output only the uptime, in human-readable format", "pretty", 'p'); | ||
args_parser.parse(arguments); | ||
|
||
auto file = TRY(Core::File::open("/sys/kernel/uptime"sv, Core::File::OpenMode::Read)); | ||
|
||
TRY(Core::System::pledge("stdio")); | ||
|
@@ -25,6 +34,14 @@ ErrorOr<int> serenity_main(Main::Arguments) | |
return Error::from_string_literal("Couldn't convert to number"); | ||
auto seconds = maybe_seconds.release_value(); | ||
|
||
outln("Up {}", human_readable_time(seconds)); | ||
if (pretty_output) { | ||
outln("Up {}", human_readable_time(seconds)); | ||
} else { | ||
auto current_time = TRY(Core::DateTime::now().to_string()); | ||
// FIXME: To match Linux and the BSDs, we should also include the number of current users, | ||
// and some load averages, but these don't seem to be available yet. | ||
outln("{} up {}", current_time, human_readable_digital_time(seconds)); | ||
} | ||
|
||
return 0; | ||
} |