1
0
mirror of https://git.freebsd.org/ports.git synced 2026-06-02 11:08:52 +00:00

sysutils/smartmontools: fix reload command

- add patch from upstream to set signals regardless existing flags
- simplify rc script by handling reload natively

PR: 293205
This commit is contained in:
Oleksii Samorukov
2026-02-17 18:32:53 +01:00
parent 6c101b8aa1
commit 5455b3dd17
3 changed files with 51 additions and 15 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
PORTNAME= smartmontools
DISTVERSION= 7.5
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= sysutils
MASTER_SITES= SF
@@ -0,0 +1,50 @@
--- smartd.cpp.orig 2026-02-17 17:19:34 UTC
+++ smartd.cpp
@@ -97,7 +97,7 @@ extern "C" {
typedef void (*signal_handler_type)(int);
}
-static void set_signal_if_not_ignored(int sig, signal_handler_type handler)
+static void set_signal(int sig, signal_handler_type handler)
{
#if defined(_WIN32)
// signal() emulation
@@ -105,13 +105,7 @@ static void set_signal_if_not_ignored(int sig, signal_
#else
// SVr4, POSIX.1-2001, ..., POSIX.1-2024
- struct sigaction sa;
- sa.sa_handler = SIG_DFL;
- sigaction(sig, (struct sigaction *)0, &sa);
- if (sa.sa_handler == SIG_IGN)
- return;
-
- sa = {};
+ struct sigaction sa = {};
sa.sa_handler = handler;
sa.sa_flags = SA_RESTART; // BSD signal() semantics
sigaction(sig, &sa, (struct sigaction *)0);
@@ -4401,17 +4395,17 @@ static void CheckDevicesOnce(const dev_config_vector &
static void install_signal_handlers()
{
// normal and abnormal exit
- set_signal_if_not_ignored(SIGTERM, sighandler);
- set_signal_if_not_ignored(SIGQUIT, sighandler);
+ set_signal(SIGTERM, sighandler);
+ set_signal(SIGQUIT, sighandler);
// in debug mode, <CONTROL-C> ==> HUP
- set_signal_if_not_ignored(SIGINT, (debugmode ? HUPhandler : sighandler));
+ set_signal(SIGINT, (debugmode ? HUPhandler : sighandler));
// Catch HUP and USR1
- set_signal_if_not_ignored(SIGHUP, HUPhandler);
- set_signal_if_not_ignored(SIGUSR1, USR1handler);
+ set_signal(SIGHUP, HUPhandler);
+ set_signal(SIGUSR1, USR1handler);
#ifdef _WIN32
- set_signal_if_not_ignored(SIGUSR2, USR2handler);
+ set_signal(SIGUSR2, USR2handler);
#endif
}
-14
View File
@@ -27,9 +27,7 @@ command="%%PREFIX%%/sbin/smartd"
command_args="-c ${required_files} -p ${pidfile}"
extra_commands="reload report"
reload_cmd="smartd_reload"
report_cmd="smartd_report"
start_precmd=smartd_prestart
smartd_prestart()
@@ -41,18 +39,6 @@ smartd_prestart()
esac
}
smartd_reload()
{
local status
if ! status=`run_rc_command status 2>&1`; then
echo $status
return 1
fi
echo 'Reloading smartd.'
kill -HUP $rc_pid
}
smartd_report()
{
local status