unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Fabrice Popineau <fabrice.popineau@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Emacs developers <emacs-devel@gnu.org>,
	Noam Postavsky <npostavs@users.sourceforge.net>
Subject: Re: Emacs 25.2, win64, env vars
Date: Thu, 27 Jul 2017 18:35:32 +0200	[thread overview]
Message-ID: <CAFgFV9MeOqmb72-o24MiTJoWkRUcbt82uxYpECxhW0TkqnCPtA@mail.gmail.com> (raw)
In-Reply-To: <83d18o7ga3.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 2853 bytes --]

2017-07-25 16:16 GMT+02:00 Eli Zaretskii <eliz@gnu.org>:

> > From: Fabrice Popineau <fabrice.popineau@gmail.com>
> > Date: Mon, 24 Jul 2017 22:34:20 +0200
> > Cc: Noam Postavsky <npostavs@users.sourceforge.net>, Emacs developers <
> emacs-devel@gnu.org>
> >
> >  So you are saying that MSYS holds two separate environment variables,
> >  one called "temp", the other "TEMP"? If so, what do native Windows
> >  programs started from such a shell get in their environment? The
> >  upper-case one? the first one in the order? both? something else?
> >
> > Both GetEnvironmentVariable) and getenv() return :
> >
> > TEMP=C:\MSys64\tmpy
> > temp=C:\MSys64\tmp
> >
> > And from the shell :
> >
> > $ echo $TEMP
> > /tmp
> >
> > $ echo $temp
> > C:\Users\Fabrice\AppData\Roaming\Local\Temp
> >
> > So they return the win32 path from the value of the upper case variable.
>
> Maybe we could remove the lower-case variant at startup, so that it
> won't get in the way of programs Emacs invokes?  Or could that break
> some use cases for people who also set their shell in Emacs to the
> MSYS shell?
>

I think for this specific issue (if only it is an issue), there are only 2
options :

1 - do nothing. Possibly find a place to document the fact that under
Windows, emacs will inherit variables from the starting shell and that some
shells
may provide case sensitive environment variables.
2 - remove the case insensitive comparison for WINDOWSNT in
getenv_internal_1 and replace it with a case sensitive one because some
shells may
provide case sensitive environment variables . This will result in handling
case sensitive environment variables even under Windows. I guess it would
need some testing to ensure
everything works as expected, under MSYS2 or Cygwin.
3 - apply the fix I offered (or another equivalent one ?)  because it makes
the handling of environment variables case symetrical for setenv and
getenv, and both are case insensitive.

I think option 1 is not an option because the scenario I have shown
initially appears as inconsistant.
So it leaves option 2 and 3, depending on wether you want  case sensitive
or case insensitive environment variables.



> > My opinion (but I may well be alone) is that Emacs/win32 fiddles too
> much with those unix-like environments.
> > This works most of the time, but it also sometimes creates surprising
> situations.
>
> Environment variables are not limited to Unix, so I'm not sure why you
> think it's Unix-like.
>

I was speaking more generally. I'll try to find time to gather the various
places (mostly elpa packages) I have found where
Emacs/win32 tries to  behave as Emacs/unix but should avoid it. Sometimes
because the wrong path
is parsed (mixture between paths syntax), sometimes because when sh.exe is
found, some Unix machinery
starts but can't complete. That is another story.

Fabrice

[-- Attachment #2: Type: text/html, Size: 4096 bytes --]

  reply	other threads:[~2017-07-27 16:35 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-11 20:33 Emacs 25.2, win64, env vars Fabrice Popineau
2017-06-11 21:33 ` Noam Postavsky
2017-06-12  4:40   ` Fabrice Popineau
2017-07-10 17:08     ` Eli Zaretskii
2017-07-11  9:17       ` Fabrice Popineau
2017-07-11 14:31         ` Noam Postavsky
2017-07-11 14:43         ` Eli Zaretskii
2017-07-11 16:24           ` Fabrice Popineau
2017-07-11 16:30             ` Eli Zaretskii
2017-07-11 18:48               ` Fabrice Popineau
2017-07-22  7:07             ` Eli Zaretskii
2017-07-22 20:02               ` Fabrice Popineau
2017-07-23 14:48                 ` Eli Zaretskii
2017-07-24 20:34                   ` Fabrice Popineau
2017-07-24 21:20                     ` Noam Postavsky
2017-07-25 14:16                     ` Eli Zaretskii
2017-07-27 16:35                       ` Fabrice Popineau [this message]
2017-07-27 16:48                         ` Stefan Monnier
2017-07-27 18:54                         ` Óscar Fuentes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAFgFV9MeOqmb72-o24MiTJoWkRUcbt82uxYpECxhW0TkqnCPtA@mail.gmail.com \
    --to=fabrice.popineau@gmail.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=npostavs@users.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).