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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user