aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xz/signals.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/xz/signals.c b/src/xz/signals.c
index 2a1d4eb7..5387c424 100644
--- a/src/xz/signals.c
+++ b/src/xz/signals.c
@@ -82,17 +82,19 @@ signals_init(void)
sigaddset(&hooked_signals, message_progress_sigs[i]);
#endif
- struct sigaction sa;
+ // Using "my_sa" because "sa" may conflict with a sockaddr variable
+ // from system headers on Solaris.
+ struct sigaction my_sa;
// All the signals that we handle we also blocked while the signal
// handler runs.
- sa.sa_mask = hooked_signals;
+ my_sa.sa_mask = hooked_signals;
// Don't set SA_RESTART, because we want EINTR so that we can check
// for user_abort and cleanup before exiting. We block the signals
// for which we have established a handler when we don't want EINTR.
- sa.sa_flags = 0;
- sa.sa_handler = &signal_handler;
+ my_sa.sa_flags = 0;
+ my_sa.sa_handler = &signal_handler;
for (size_t i = 0; i < ARRAY_SIZE(sigs); ++i) {
// If the parent process has left some signals ignored,
@@ -103,7 +105,7 @@ signals_init(void)
continue;
// Establish the signal handler.
- if (sigaction(sigs[i], &sa, NULL))
+ if (sigaction(sigs[i], &my_sa, NULL))
message_signal_handler();
}