История изменений
Исправление 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 может не быть).