From: Dennis McCunney <DMcCunney@roper.com>
To: 'Don Baker' <dbaker@mcc.com>
Cc: cygwin@sourceware.cygnus.com
Subject: RE: Bug in B20.1 make with mixed case environment variables
Date: Thu, 24 Jun 1999 13:29:00 -0000 [thread overview]
Message-ID: <65CAA822B707D211AD430008C7F40FED1F853C@EXCHANGERSW2> (raw)
> -----Original Message-----
> From: Don Baker [ mailto:dbaker@mcc.com ]
> Sent: Thursday, June 24, 1999 1:14 PM
> To: cygwin@sourceware.cygnus.com
> Cc: dbaker@mcc.com
> Subject: Bug in B20.1 make with mixed case environment variables
>
> B20.1 uses GNU make 3.75 which seems to have a bug or mis-feature
> where (DOS) environment variable names are converted to upper case
> when made into makefile variables. (I believe that GNU make 3.77
> fixes this problem, so upgrading may be all that's necessary.
> Unfortunately, I don't know the exact lineage of the make 3.77
> that I have.)
>
> From a DOS shell, set an environment variable with lower case
> letters:
>
> set foo=hello
>
> Then run make on the following makefile:
>
> all:
> echo $(foo)
>
> The echo is empty, unless the makefile variable is changed
> to all upper case, where "hello" is printed. This problem
> does not seem to occur if the environment variable is set
> in bash. (Bash, however has all of the DOS environement
> variables converted to upper case.)
>
> Thanks for looking into this problem.
I don't think this is a Cygwin problem. The issue is that _DOS_
automatically uppercases environment variables, and the trick is getting it
to not do so. There are some old DOS tricks based on this quirk, like using
the PATH command to upercase something, as in:
: upper.bat
: upper case up to 9 arguments on the command line
if "%1"=="" goto error
set OLDPATH=%PATH%
PATH %1 %2 %3 %4 %5 %6 %7 %8 %9
set VAR=%PATH%
PATH %OLDPATH%
echo %VAR
goto end
:error
No command line parameter specified!
:end
Placing the above in a batch file called upper.bat and running it will
uppercase up to 9 parameters passed on the command line.
If bash is run as a sub-shell, it inherits the environment from the primary
DOS shell (COMMAND.COM or CMD.EXE) and the variable names it gets are upper
cased when it gets them.
If you set a variable in bash in mixed case or lower case, bash _doesn't_
twiddle the case, so it will appear as you set it.
If you set your variables in bash and run make from there you shouldn't see
an issue. If you do it from DOS, I'm not sure what kind of a fix is
possible, since there's no good way to know what the case was supposed to be
before DOS twiddled it.
If the 3.77 version of make has an option to ignore case in variables, that
would work, though it would break anything that relied on the same variable
names in different cases being treated as different variables. (I wouldn't
create variables that relied on that, but someone might have a valid reason
to do it.)
> ------------------------------------------------------------
> Don Baker, Member of the Technical Staff
> MCC, 3500 West Balcones Center Dr., Austin, Texas 78759-6509
> dbaker@mcc.com * Phone: (512) 338-3362 * Fax: (512) 338-3890
______________________
Dennis McCunney
Technical Manager
Manhattan Phone Center
115 E 23 St, 11 Fl
NY NY 10010
212 387 7550 Voice
212 387 8180 Fax
dmccunney@roper.com
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com
WARNING: multiple messages have this Message-ID
From: Dennis McCunney <DMcCunney@roper.com>
To: 'Don Baker' <dbaker@mcc.com>
Cc: cygwin@sourceware.cygnus.com
Subject: RE: Bug in B20.1 make with mixed case environment variables
Date: Wed, 30 Jun 1999 22:10:00 -0000 [thread overview]
Message-ID: <65CAA822B707D211AD430008C7F40FED1F853C@EXCHANGERSW2> (raw)
Message-ID: <19990630221000.yDLIvDvKFkMBKmAJOk2sVKev2VhRpChCKyiL6pw4tEM@z> (raw)
> -----Original Message-----
> From: Don Baker [ mailto:dbaker@mcc.com ]
> Sent: Thursday, June 24, 1999 1:14 PM
> To: cygwin@sourceware.cygnus.com
> Cc: dbaker@mcc.com
> Subject: Bug in B20.1 make with mixed case environment variables
>
> B20.1 uses GNU make 3.75 which seems to have a bug or mis-feature
> where (DOS) environment variable names are converted to upper case
> when made into makefile variables. (I believe that GNU make 3.77
> fixes this problem, so upgrading may be all that's necessary.
> Unfortunately, I don't know the exact lineage of the make 3.77
> that I have.)
>
> From a DOS shell, set an environment variable with lower case
> letters:
>
> set foo=hello
>
> Then run make on the following makefile:
>
> all:
> echo $(foo)
>
> The echo is empty, unless the makefile variable is changed
> to all upper case, where "hello" is printed. This problem
> does not seem to occur if the environment variable is set
> in bash. (Bash, however has all of the DOS environement
> variables converted to upper case.)
>
> Thanks for looking into this problem.
I don't think this is a Cygwin problem. The issue is that _DOS_
automatically uppercases environment variables, and the trick is getting it
to not do so. There are some old DOS tricks based on this quirk, like using
the PATH command to upercase something, as in:
: upper.bat
: upper case up to 9 arguments on the command line
if "%1"=="" goto error
set OLDPATH=%PATH%
PATH %1 %2 %3 %4 %5 %6 %7 %8 %9
set VAR=%PATH%
PATH %OLDPATH%
echo %VAR
goto end
:error
No command line parameter specified!
:end
Placing the above in a batch file called upper.bat and running it will
uppercase up to 9 parameters passed on the command line.
If bash is run as a sub-shell, it inherits the environment from the primary
DOS shell (COMMAND.COM or CMD.EXE) and the variable names it gets are upper
cased when it gets them.
If you set a variable in bash in mixed case or lower case, bash _doesn't_
twiddle the case, so it will appear as you set it.
If you set your variables in bash and run make from there you shouldn't see
an issue. If you do it from DOS, I'm not sure what kind of a fix is
possible, since there's no good way to know what the case was supposed to be
before DOS twiddled it.
If the 3.77 version of make has an option to ignore case in variables, that
would work, though it would break anything that relied on the same variable
names in different cases being treated as different variables. (I wouldn't
create variables that relied on that, but someone might have a valid reason
to do it.)
> ------------------------------------------------------------
> Don Baker, Member of the Technical Staff
> MCC, 3500 West Balcones Center Dr., Austin, Texas 78759-6509
> dbaker@mcc.com * Phone: (512) 338-3362 * Fax: (512) 338-3890
______________________
Dennis McCunney
Technical Manager
Manhattan Phone Center
115 E 23 St, 11 Fl
NY NY 10010
212 387 7550 Voice
212 387 8180 Fax
dmccunney@roper.com
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com
next reply other threads:[~1999-06-24 13:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-06-24 13:29 Dennis McCunney [this message]
1999-06-30 22:10 ` Dennis McCunney
-- strict thread matches above, loose matches on Subject: below --
1999-06-24 10:39 Earnie Boyd
1999-06-30 22:10 ` Earnie Boyd
1999-06-24 10:14 Don Baker
1999-06-30 22:10 ` Don Baker
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=65CAA822B707D211AD430008C7F40FED1F853C@EXCHANGERSW2 \
--to=dmccunney@roper.com \
--cc=cygwin@sourceware.cygnus.com \
--cc=dbaker@mcc.com \
/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.
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).