[PATCH 64bit] Export <io.h> symbols with underscore

Christopher Faylor cgf-use-the-mailinglist-please@cygwin.com
Fri Feb 22 14:32:00 GMT 2013


On Fri, Feb 22, 2013 at 11:02:55AM +0100, Corinna Vinschen wrote:
>On Feb 22 10:51, Corinna Vinschen wrote:
>> On Feb 22 03:40, Yaakov wrote:
>> > On Fri, 22 Feb 2013 09:49:51 +0100, Corinna Vinschen wrote:
>> > > > access should go, no doubt about it.
>> > > > 
>> > > > For get_osfhandle and setmode I would prefer maintaining backward
>> > > > compatibility with existing applications.  Both variations, with and
>> > > > without underscore are definitely in use.
>> > > > 
>> > > > What about exporting the underscored variants only, but define the
>> > > > non-underscored ones:
>> > > > 
>> > > >   extern long _get_osfhandle(int);
>> > > >   #define get_osfhandle(i) _get_osfhandle(i)
>> > > > 
>> > > >   extern int _setmode (int __fd, int __mode);
>> > > >   #define setmode(f,m) _setmode((f),(m))
>> > > 
>> > > Just to be clear:  On 32 bit we should keep the exported symbols, too.
>> > > On 64 bit we can drop the non-underscored ones (which just requires
>> > > to rebuild gawk for me) and only keep the defines for backward
>> > > compatibility.
>> > 
>> > Like this?
>> 
>> Almost.  The _setmode needs a tweak, too.  I also think it makes
>> sense to rename the functions inside of syscalls.cc:
>> [...]
>
>I applied this patch to the 64 bit branch for now.

I was actually expecting that we'd break the compilation of existing
applications which incorrectly referenced get_osfhandle and setmode (I
have a couple of those).  It's a simple fix if someone recompiles and
it wouldn't be the first time that you'd have to make a source code
change when upreving to a new "OS".  For 32-bit we would need to keep
both in cygwin.din though, of course.

But, if you're going to use defines, why not just simplify them as:

#define get_osfhandle _get_osfhandle
#define setmode _setmode

?

cgf



More information about the Cygwin-patches mailing list