On Mon, 2 Jun 2003, Stephen Hurd wrote:
> I can't seem to find any correct way of manipulating SigSets in freepascal... > although sigprocmask and sigpending are implemented, how have these been > tested? How am I supposed to add something to a sigmask? They have not been implemented but it should be easy to do it yourself, it's just setting some bits in an array. in the 1.1 version, the functions have been implemented. Here is the implementation: function fpsigaddset(var nset : tsigset;signo:cint): cint; Begin if (signo<=0) or (signo > SIG_MAXSIG) Then Begin seterrno(ESysEINVAL); exit(-1); End; nset[(signo-1) shr ln2bitsinword]:=nset[(signo-1) shr ln2bitsinword] OR (1 shl ((signo-1) and ln2bitmask)); fpsigaddset:=0; End; function fpsigdelset(var nset : tsigset;signo:cint): cint; Begin if (signo<=0) or (signo > SIG_MAXSIG) Then Begin seterrno(ESysEINVAL); exit(-1); End; nset[(signo-1) shr ln2bitsinword]:=nset[(signo-1) shr ln2bitsinword] AND NOT (1 shl ((signo-1) and ln2bitmask)); fpsigdelset:=0; End; function fpsigemptyset(var nset : tsigset):cint; var i :longint; Begin for i:=0 to wordsinsigset-1 DO nset[i]:=0; fpsigemptyset:=0; End; function fpsigfillset(var nset : tsigset):cint; var i :longint; Begin for i:=0 to wordsinsigset DO nset[i]:=NOT 0; fpsigfillset:=0; End; function fpsigismember(const nset : tsigset;signo:cint): cint; Begin if (signo<=0) or (signo > SIG_MAXSIG) Then Begin seterrno(ESysEINVAL); exit(-1); End; if ((nset[(signo-1) shr ln2bitsinword]) and (1 shl ((signo-1) and ln2bitmask)))>0 Then fpsigismember:=1 else fpsigismember:=0; End; Michael. _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal