This is the mail archive of the cygwin-patches 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]
Other format: [Raw text]

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


On Feb 22 09:00, Corinna Vinschen wrote:
> On Feb 22 01:51, Christopher Faylor wrote:
> > On Fri, Feb 22, 2013 at 12:18:48AM -0600, Yaakov wrote:
> > >On Thu, 21 Feb 2013 14:42:36 -0500, Christopher Faylor wrote:
> > >> I wasn't fulling grokking the fact that Cygwin explicitly defined the
> > >> get_osfhandle without an underscore in io.h.  Sigh.  That's probably my
> > >> fault too.
> > >> 
> > >> But we definitely shouldn't be going back to adding "_" decorations.  I
> > >> have deleted a few of these and no one has complained.  I know that
> > >> isn't a scientific sampling but it's hard to believe that someone has
> > >> written code which actually goes out of its way to prepend an underscore
> > >> in front of a standard UNIX function name, especially since we do not,
> > >> AFAIK, define these functions in any header file.
> > >> 
> > >> So, I guess I don't understand why we need to add an underscore now
> > >> when we have gotten by with the incorrect declaration for get_osfhandle
> > >> all of these years.
> > >
> > >Because even if it caused a warning in C, the link still succeeded with
> > >the underscored symbol.
> > 
> > Ok.  I think we should also change io.h to only define _get_osfhandle on
> > both 64-bit and the trunk version of cygwin.  Ditto for _setmode.  And,
> > IMO, the access() declaration should be removed from io.h entirely.
> 
> 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.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat


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