This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: sigaddset() should return 0 or -1


In article <354f6e0e.431563721.cygnus.gnu-win32@10.0.2.3>,
Richard Hitt <rbh00@netcom.com> wrote:
>I'm porting an application that expects sigaddset() to return 0 if it
>worked.  But in the CDK, sigaddset is implemented by a macro that
>doesn't care what it returns.  The file is
>/cygnus/b19/H-i386-cygwin32/i386-cygwin32/include/sys/signal.h.
>The macro is
>#define sigaddset(what,sig) (*(what) |= (1<<(sig)))
>
>So I changed it to always return 0:
>#define sigaddset(what,sig) ((*(what) |= (1<<(sig))),0)
>
>and avoided an unpleasant hack in my application.  May I suggest that
>you consider incorporating this change in your signal.h?  Or, for all
>I know, there may be other considerations why the macro must be as it
>is.
>
>Thanks for a fine environment.

Actually, as far as I can tell, this is a bug.  sigaddset and sigemptyset
are proper functions, exported by cygwinb19.dll.  I'm going to remove the
defines in favor of the functions.  In my version of the tools, there
are actually declarations for sig{add,empty}set but they are commented out.
I'd suggest removing the macros and uncommenting these declarations.

That will probably work as you expect.
-- 
cgf@cygnus.com             "Everything has a boolean value, if you stand
http://www.cygnus.com/      far enough away from it."  -- Galena Alyson Canada
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]