The libc unit declares the sigaction() function in "sigactionh.inc" as:
function sigaction( __sig:longint; Const act: _sigaction; Var oldact: _sigaction):longint;cdecl;external clib name 'sigaction'; According to the libc man page: "Either act or oldact can be a null pointer." - But this is not possible, because call by var parameters have to match exactly. So I think the function should be overloaded: function sigaction( __sig:longint; act: P_sigaction; oldact: P_sigaction):longint;cdecl;external clib name 'sigaction'; libc also says that the sa_handler field of a sigaction record can be a function pointer, or one of the constants SIG_DFL or SIG_IGN. "signumh.inc" defines these constants as: Const SIG_DFL = (0); SIG_IGN = (1); But this does not work, because of pascal's strong type checking: MySigRec.sa_handler:=SIG_IGN; % Error: Incompatible types: got "LongInt" expected "<procedure variable type of procedure(Longint);CDecl>" Maybe this would be better? Const SIG_DFL = nil; function SIG_IGN:__sighandler_t; begin SIG_IGN:=__sighandler_t(pointer(1)); end; __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free web site building tool. Try it! http://webhosting.yahoo.com/ps/sb/ _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal