[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Relocation patch for cygwin
From: |
Charles Wilson |
Subject: |
Re: Relocation patch for cygwin |
Date: |
Mon, 28 Feb 2011 21:32:17 -0500 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666 |
On 2/28/2011 5:23 PM, Bruno Haible wrote:
> Thanks for the reminder. Three weeks ago, I concentrated on discussing the
> support of UCS-4 characters (still working on that). I've added minor tweaks
> (especially so as to avoid mixing the Win32 and the Cygwin approach), and
> committed this:
Thanks...
> +#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
> # define WIN32_NATIVE
> #endif
> -#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined
> __EMX__ || defined __DJGPP__
> - /* Win32, Cygwin, OS/2, DOS */
> +#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) ||
> defined __EMX__ || defined __DJGPP__
> + /* Win32, OS/2, DOS */
I'm confused. You told Jan, in a different thread, to be /sure/ to use
WIN32_NATIVE throughout his new code, defined as above. Yet here, you
repeat the same sequence of conditionals rather than using WIN32_NATIVE.
Why?
> +# ifdef __CYGWIN__
> + /* The executable is accessible as /proc/<pid>/exe, at least in
> + Cygwin >= 1.5. */
> + {
> + char *link;
> +
> + link = xreadlink ("/proc/self/exe");
> + if (link != NULL)
> + return link;
> + if (executable_fd < 0)
> + executable_fd = open ("/proc/self/exe", O_EXEC, 0);
> + }
> +# endif
The comment doesn't match the code. You talk about /proc/<pid>/exe, but
use /proc/self/exe...
> -#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined
> __EMX__ || defined __DJGPP__
> - /* Win32, Cygwin, OS/2, DOS */
> +#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) ||
> defined __EMX__ || defined __DJGPP__
> + /* Win32, OS/2, DOS */
Same as above (although in this case, relocatable.c, you did not add a
new stanza to define WIN32_NATIVE, so obv. you'd have to DO that before
you could use it).
> +#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
> +/* Native Win32 only.
> + On Cygwin, it is better to use the Cygwin provided /proc interface, than
> + to use native Win32 API and cygwin_conv_to_posix_path, because it supports
> + longer file names
> + (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
Ditto...
> -#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
> +#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
> static bool tried_find_shared_library_fullname;
> if (!tried_find_shared_library_fullname)
And ditto...
--
Chuck