Utilities: Stop using getsignalname() and getsignalbyname()

This commit is contained in:
implicitfield authored and Nico Weber committed 2025-08-07 21:34:32 -04:00
1 parent 9b8ec9646a
commit 4f8b91ad8b
4 files changed
+14 -41

No files matched your search

+6 -17
View File
@@ -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()) {
+4 -14
View File
@@ -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);
+2 -8
View File
@@ -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 {
+2 -2
View File
@@ -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);