/*
* Define additional missing types
*/
-#ifndef HAVE_SIG_ATOMIC_T_TYPE
-typedef int sig_atomic_t;
+#if defined(HAVE_SIG_ATOMIC_T_TYPE) && defined(AIX)
+typedef sig_atomic_t SIG_ATOMIC_T;
+#elif defined(HAVE_SIG_ATOMIC_T_TYPE) && !defined(AIX)
+typedef sig_atomic_t VOLATILE SIG_ATOMIC_T;
+#else
+typedef int VOLATILE SIG_ATOMIC_T;
#endif
#ifndef HAVE_SOCKLEN_T_TYPE
return True;
}
-static VOLATILE sig_atomic_t gotalarm;
+static SIG_ATOMIC_T gotalarm;
/***************************************************************
Signal function to tell us we timed out.
Catch a SIGTERM signal.
**************************************************************************** */
-static VOLATILE sig_atomic_t got_sig_term;
+static SIG_ATOMIC_T got_sig_term;
static void sig_term(int sig)
{
Catch a SIGHUP signal.
**************************************************************************** */
-static VOLATILE sig_atomic_t reload_after_sighup;
+static SIG_ATOMIC_T reload_after_sighup;
static void sig_hup(int sig)
{
};
static struct nisp_enum_info global_nisp_ent;
-static VOLATILE sig_atomic_t gotalarm;
+static SIG_ATOMIC_T gotalarm;
/***************************************************************
#if HAVE_KERNEL_CHANGE_NOTIFY
#define FD_PENDING_SIZE 20
-static VOLATILE sig_atomic_t fd_pending_array[FD_PENDING_SIZE];
-static VOLATILE sig_atomic_t signals_received;
+static SIG_ATOMIC_T fd_pending_array[FD_PENDING_SIZE];
+static SIG_ATOMIC_T signals_received;
#ifndef DN_ACCESS
#define DN_ACCESS 0x00000001 /* File accessed in directory */
static void signal_handler(int sig, siginfo_t *info, void *unused)
{
if (signals_received < FD_PENDING_SIZE - 1) {
- fd_pending_array[signals_received] = (sig_atomic_t)info->si_fd;
+ fd_pending_array[signals_received] = (SIG_ATOMIC_T)info->si_fd;
signals_received++;
} /* Else signal is lost. */
sys_select_signal();
path, i, (int)fd_pending_array[i], (int)signals_received ));
close((int)fd_pending_array[i]);
- fd_pending_array[i] = (sig_atomic_t)-1;
+ fd_pending_array[i] = (SIG_ATOMIC_T)-1;
if (signals_received - i - 1) {
- memmove(&fd_pending_array[i], &fd_pending_array[i+1],
- sizeof(sig_atomic_t)*(signals_received-i-1));
+ memmove((void *)&fd_pending_array[i], (void *)&fd_pending_array[i+1],
+ sizeof(SIG_ATOMIC_T)*(signals_received-i-1));
}
data->directory_handle = -1;
signals_received--;
for (i = 0; i < signals_received; i++) {
if (fd == (int)fd_pending_array[i]) {
close(fd);
- fd_pending_array[i] = (sig_atomic_t)-1;
+ fd_pending_array[i] = (SIG_ATOMIC_T)-1;
if (signals_received - i - 1) {
- memmove(&fd_pending_array[i], &fd_pending_array[i+1],
- sizeof(sig_atomic_t)*(signals_received-i-1));
+ memmove((void *)&fd_pending_array[i], (void *)&fd_pending_array[i+1],
+ sizeof(SIG_ATOMIC_T)*(signals_received-i-1));
}
data->directory_handle = -1;
signals_received--;
#if HAVE_KERNEL_OPLOCKS_LINUX
-static VOLATILE sig_atomic_t signals_received;
+static SIG_ATOMIC_T signals_received;
#define FD_PENDING_SIZE 100
-static VOLATILE sig_atomic_t fd_pending_array[FD_PENDING_SIZE];
+static SIG_ATOMIC_T fd_pending_array[FD_PENDING_SIZE];
#ifndef F_SETLEASE
#define F_SETLEASE 1024
static void signal_handler(int sig, siginfo_t *info, void *unused)
{
if (signals_received < FD_PENDING_SIZE - 1) {
- fd_pending_array[signals_received] = (sig_atomic_t)info->si_fd;
+ fd_pending_array[signals_received] = (SIG_ATOMIC_T)info->si_fd;
signals_received++;
} /* Else signal is lost. */
sys_select_signal();
BlockSignals(True, RT_SIGNAL_LEASE);
fd = fd_pending_array[0];
fsp = file_find_fd(fd);
- fd_pending_array[0] = (sig_atomic_t)-1;
+ fd_pending_array[0] = (SIG_ATOMIC_T)-1;
if (signals_received > 1)
- memmove(&fd_pending_array[0], &fd_pending_array[1],
- sizeof(sig_atomic_t)*(signals_received-1));
+ memmove((void *)&fd_pending_array[0], (void *)&fd_pending_array[1],
+ sizeof(SIG_ATOMIC_T)*(signals_received-1));
signals_received--;
/* now we can receive more signals */
BlockSignals(False, RT_SIGNAL_LEASE);
extern int global_oplock_break;
extern userdom_struct current_user_info;
extern int smb_read_error;
-extern VOLATILE sig_atomic_t reload_after_sighup;
-extern VOLATILE sig_atomic_t got_sig_term;
+SIG_ATOMIC_T reload_after_sighup;
+SIG_ATOMIC_T got_sig_term;
extern BOOL global_machine_password_needs_changing;
extern fstring global_myworkgroup;
extern pstring global_myname;
Terminate signal.
****************************************************************************/
-VOLATILE sig_atomic_t got_sig_term = 0;
+SIG_ATOMIC_T got_sig_term = 0;
static void sig_term(void)
{
Catch a sighup.
****************************************************************************/
-VOLATILE sig_atomic_t reload_after_sighup = 0;
+SIG_ATOMIC_T reload_after_sighup = 0;
static void sig_hup(int sig)
{