mirror of
https://github.com/SerenityOS/serenity.git
synced 2026-11-07 04:29:30 -10:00
Utilities: Stop using getsignalname() and getsignalbyname()
This commit is contained in:
1 parent
9b8ec9646a
commit
4f8b91ad8b
4 files changed
+14
-41
No files matched your search
@@ -4,6 +4,7 @@
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <AK/ByteString.h>
|
||||
#include <AK/CharacterTypes.h>
|
||||
#include <AK/Optional.h>
|
||||
#include <LibCore/System.h>
|
||||
@@ -29,12 +30,11 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
|
||||
if (argc == 2 && strings[1] == "-l") {
|
||||
size_t valid_signal_count = 0;
|
||||
char signal_name[SIG2STR_MAX] = { 0 };
|
||||
for (size_t i = 1; i < NSIG; ++i) {
|
||||
if (valid_signal_count && valid_signal_count % 5 == 0)
|
||||
outln("");
|
||||
auto const* signal_name = getsignalname(i);
|
||||
// This excludes SIGCANCEL, which is intended for internal use only
|
||||
if (!signal_name)
|
||||
if (sig2str(i, signal_name) != 0)
|
||||
continue;
|
||||
valid_signal_count++;
|
||||
out("{:2}) {:10}", i, signal_name);
|
||||
@@ -45,29 +45,18 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
|
||||
if (argc != 2 && argc != 3)
|
||||
print_usage_and_exit();
|
||||
unsigned signum = SIGTERM;
|
||||
int signum = SIGTERM;
|
||||
int pid_argi = 1;
|
||||
if (argc == 3) {
|
||||
pid_argi = 2;
|
||||
if (strings[1][0] != '-' || strings[1].length() <= 1)
|
||||
print_usage_and_exit();
|
||||
|
||||
Optional<unsigned> number;
|
||||
|
||||
if (is_ascii_alpha(strings[1][1])) {
|
||||
int value = getsignalbyname(&strings[1][1]);
|
||||
if (value > 0 && value < NSIG)
|
||||
number = value;
|
||||
}
|
||||
|
||||
if (!number.has_value())
|
||||
number = strings[1].substring_view(1).to_number<unsigned>();
|
||||
|
||||
if (!number.has_value()) {
|
||||
ByteString signal_name = strings[1].substring_view(1).starts_with("SIG"sv) ? strings[1].substring_view(4) : strings[1].substring_view(1);
|
||||
if (str2sig(signal_name.characters(), &signum) != 0) {
|
||||
warnln("'{}' is not a valid signal name or number", &strings[1][1]);
|
||||
return 2;
|
||||
}
|
||||
signum = number.value();
|
||||
}
|
||||
auto pid_opt = strings[pid_argi].to_number<pid_t>();
|
||||
if (!pid_opt.has_value()) {
|
||||
|
||||
@@ -35,7 +35,7 @@ static ErrorOr<int> kill_all(StringView process_name, unsigned const signum)
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
{
|
||||
unsigned signum = SIGTERM;
|
||||
int signum = SIGTERM;
|
||||
int name_argi = 1;
|
||||
|
||||
if (arguments.argc != 2 && arguments.argc != 3)
|
||||
@@ -47,22 +47,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
if (arguments.argv[1][0] != '-')
|
||||
print_usage_and_exit();
|
||||
|
||||
Optional<unsigned> number;
|
||||
|
||||
if (is_ascii_alpha(arguments.argv[1][1])) {
|
||||
int value = getsignalbyname(&arguments.argv[1][1]);
|
||||
if (value > 0 && value < NSIG)
|
||||
number = value;
|
||||
}
|
||||
|
||||
if (!number.has_value())
|
||||
number = arguments.strings[1].substring_view(1).to_number<unsigned>();
|
||||
|
||||
if (!number.has_value()) {
|
||||
StringView signal_name_view(arguments.argv[1] + 1, strlen(arguments.argv[1] + 1));
|
||||
ByteString signal_name = signal_name_view.starts_with("SIG"sv) ? signal_name_view.substring_view(3) : signal_name_view;
|
||||
if (str2sig(signal_name.characters(), &signum) != 0) {
|
||||
warnln("'{}' is not a valid signal name or number", &arguments.argv[1][1]);
|
||||
return 2;
|
||||
}
|
||||
signum = number.value();
|
||||
}
|
||||
|
||||
return kill_all(arguments.strings[name_argi], signum);
|
||||
|
||||
@@ -70,15 +70,9 @@ ErrorOr<int> serenity_main(Main::Arguments args)
|
||||
if (signal_string.is_empty())
|
||||
return false;
|
||||
|
||||
if (is_ascii_alpha(signal_string[0]))
|
||||
signal = getsignalbyname(&signal_string[0]);
|
||||
else if (auto maybe_signal = signal_string.to_number<int>(); maybe_signal.has_value())
|
||||
signal = maybe_signal.value();
|
||||
ByteString signal_byte_string = signal_string.starts_with("SIG"sv) ? signal_string.substring_view(3) : signal_string;
|
||||
|
||||
if (signal <= 0 || signal >= NSIG)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
return (str2sig(signal_byte_string.characters(), &signal) == 0);
|
||||
},
|
||||
});
|
||||
args_parser.add_option(Core::ArgsParser::Option {
|
||||
|
||||
@@ -717,8 +717,8 @@ static void format_dbgputstr(FormattedSyscallBuilder& builder, char* characters,
|
||||
static void format_kill(FormattedSyscallBuilder& builder, pid_t pid_or_pgid, int signal)
|
||||
{
|
||||
builder.add_argument(pid_or_pgid);
|
||||
auto* signal_name = getsignalname(signal);
|
||||
if (signal_name)
|
||||
char signal_name[SIG2STR_MAX] = { 0 };
|
||||
if (sig2str(signal, signal_name) == 0)
|
||||
builder.add_argument(signal_name);
|
||||
else
|
||||
builder.add_argument(signal);
|
||||
|
||||
Reference in new issue
Block a user