История изменений
Исправление beastie, (текущая версия) :
Дай побрюзжать. =)
Приведена, но не совсем правильно (deb7):
The sigaction structure is defined as something like:
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
On some architectures a union is involved: do not assign to both sa_handler and sa_sigaction.
Особенно доставляет «as something like». (В манах не место «как-то так»!)
Versus (*bsd):
SYNOPSIS
#include <signal.h>
struct sigaction {
union { /* signal handler */
void (*__sa_handler)(int);
void (*__sa_sigaction)(int, siginfo_t *, void *);
} __sigaction_u;
sigset_t sa_mask; /* signal mask to apply */
int sa_flags; /* see signal options below */
};
#define sa_handler __sigaction_u.__sa_handler
#define sa_sigaction __sigaction_u.__sa_sigaction
Почувстуй разницу.
А в самой шапке за-ifdef-ино совсем другое и только в линуксе (sa_sigaction в пре-posix-93 может не быть).
Исходная версия beastie, :
Дай побрюзжать. =)
Приведена, но не совсем правильно (deb7):
The sigaction structure is defined as something like:
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
On some architectures a union is involved: do not assign to both sa_handler and sa_sigaction.
Особенно доставляет «as something like».
Versus (*bsd):
SYNOPSIS
#include <signal.h>
struct sigaction {
union { /* signal handler */
void (*__sa_handler)(int);
void (*__sa_sigaction)(int, siginfo_t *, void *);
} __sigaction_u;
sigset_t sa_mask; /* signal mask to apply */
int sa_flags; /* see signal options below */
};
#define sa_handler __sigaction_u.__sa_handler
#define sa_sigaction __sigaction_u.__sa_sigaction
Почувстуй разницу.
А в самой шапке за-ifdef-ино совсем другое и только в линуксе (sa_sigaction в пре-posix-93 может не быть).