A new problem has cropped up. In parted/ui.c, the function init_ui uses the
SA_SIGINFO constant to set the flags passed to sigaction. Although the entire
block is within a '#ifdef HAVE_SIGACTION....#endif', we are not checking
whether the SA_SIGINFO is defined in glibc or not. While building in Debian
GNU/Hurd 4.0 I found out that although the sigaction function is mentioned in
/usr/include/bits/sigaction.h, SA_SIGINFO is not defined in the library. This
seems to be a known issue in the Hurd kernel, and is confirmed by #hurd.
According to Guillem Jover (braindmg) we should check for the availability of
SA_SIGINFO at build-time, since it is a POSIX XSI extension.

Please find attached a 'diff -uNp' of parted/ui.c to solve this problem.

Instead of checking for the presence of the sigaction function in
signal.h using HAVE_SIGACTION, I am checking for the availabilty of
the SA_SIGINFO constant in signal.h. I have done this because even if
sigaction is available and SA_SIGINFO is not, as in Hurd, then we are
stuck with using a signal handler having the signature:
void handler (int signum);

All those cases where SA_SIGINFO is not available I have used the
'signal' function, as was being done before. The difference this time
around is that I have used separate signal handler definitions for
cases where it is present and where it is not to ensure that the
signal handler signature is exactly what is expected by sigaction and
signal.

Comments...

Happy hacking,
Debarshi
--
GPG key ID: 63D4A5A7
Key server: pgp.mit.edu

_______________________________________________
parted-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/parted-devel

Reply via email to