Subject: Re: bug#14541: 24.3.50; `ediff-buffers' does not play well with recent Cygwin version

From: Eli Zaretskii <[email-masked]>
Date: Mon, 03 Jun 2013 18:40:38 +0300

> Date: Sun, 2 Jun 2013 21:12:40 -0700 (PDT)
> From: Drew Adams <[email-masked]>
> 
> I used to use an old (2007?) version of Cygwin.  I just
> installed the latest Cygwin verion on Windows 7.  I use the same setup
> for Emacs as previously (cygwin-mount.el, then setup-cygwin.el, both
> from Emacs Wiki).
> 
> Previously, Cygwin handled MS DOS-style file names OK.
> But `ediff-buffers' passes such file names for its temporary files,
> and the latest version of Cygwin (on Windows 7 at least) does not,
> by default, handle such file names: it issues a warning, which means
> that Emacs raises an error and prints the Cygwin warning.
> 
> This makes `ediff-buffers' unusable.  There is a workaround: set env var
> CYGWIN to `nodosfilewarning'.  I have added that to file setup-cygwin.el
> as a workaround.

May I again urge you to consider switching to MinGW ports instead?  I
can point to those I use for years, which means they are reliable.

> But I wonder if `ediff-buffers' could perhaps prevent the error/warning
> anyway.  I don't know whether it is really the 8-char DOS file-name
> format that Cygwin objects to, but I think so.  Maybe just having it
> use full Windows (not DOS) file names would be a fix?

No.  Cygwin wines about drive letters, not about the 8+3 aliases.  So
using long file names will not help.  You can verify that by invoking
Diff from the shell prompt.

We could perhaps push "CYGWIN=nodosfilewarning" into the environment
when Emacs launches child processes.  However, as these URLs indicate:

  http://stackoverflow.com/questions/9079982/cygwin-nodosfilewarning-doesnt-help-cygwin-warning
  http://superuser.com/questions/370545/behaviour-of-cygwins-nodosfilewarning

this solution is not reliable if there's some other Cygwin process
running on the same system.  So I think the only reliable solution is
to put the above into the System environment variables, so that
whatever the first Cygwin process is, it always sees it.